diff --git a/Core/pom.xml b/Core/pom.xml
index 685c3d6..27dffd8 100644
--- a/Core/pom.xml
+++ b/Core/pom.xml
@@ -5,7 +5,7 @@
ExcellentEnchants
su.nightexpress.excellentenchants
- 3.5.4
+ 3.5.5
4.0.0
@@ -81,27 +81,27 @@
su.nightexpress.excellentenchants
NMS
- 3.5.4
+ 3.5.5
su.nightexpress.excellentenchants
V1_17_R1
- 3.5.4
+ 3.5.5
su.nightexpress.excellentenchants
V1_18_R2
- 3.5.4
+ 3.5.5
su.nightexpress.excellentenchants
V1_19_R3
- 3.5.4
+ 3.5.5
su.nightexpress.excellentenchants
V1_20_R1
- 3.5.4
+ 3.5.5
diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/config/Config.java b/Core/src/main/java/su/nightexpress/excellentenchants/config/Config.java
index 0003f82..7e0aa92 100644
--- a/Core/src/main/java/su/nightexpress/excellentenchants/config/Config.java
+++ b/Core/src/main/java/su/nightexpress/excellentenchants/config/Config.java
@@ -60,6 +60,10 @@ public class Config {
"Use '" + Placeholders.GENERIC_AMOUNT + "' placeholder for amount of charges.")
.setWriter((cfg, path, map) -> map.forEach((perc, str) -> cfg.set(path + "." + perc, str)));
+ public static final JOption ENCHANTMENTS_CHARGES_COMPARE_TYPE_ONLY = JOption.create("Enchantments.Charges.Compare_Material_Only", false,
+ "When enabled, only item material will be checked to determine if item can be used as an enchantment fuel.",
+ "When disabled (default), it will compare the whole item meta including name, lore, model data etc.");
+
public static final JOption ENCHANTMENTS_CHARGES_FUEL_ITEM = JOption.create("Enchantments.Charges.Fuel_Item",
new ItemStack(Material.LAPIS_LAZULI),
"Default item used to recharge item's enchantments on anvils.",
diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java
index 4fbe20b..28ebee4 100644
--- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java
+++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java
@@ -333,6 +333,9 @@ public abstract class ExcellentEnchant extends Enchantment implements IEnchantme
}
public boolean isChargesFuel(@NotNull ItemStack item) {
+ if (Config.ENCHANTMENTS_CHARGES_COMPARE_TYPE_ONLY.get()) {
+ return item.getType() == this.getChargesFuel().getType();
+ }
return item.isSimilar(this.getChargesFuel());
}
diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java
index f3cb69f..fe145a8 100644
--- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java
+++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/listener/EnchantHandlerListener.java
@@ -27,6 +27,7 @@ import su.nexmedia.engine.utils.EntityUtil;
import su.nightexpress.excellentenchants.ExcellentEnchants;
import su.nightexpress.excellentenchants.api.enchantment.meta.Arrowed;
import su.nightexpress.excellentenchants.api.enchantment.type.*;
+import su.nightexpress.excellentenchants.config.Config;
import su.nightexpress.excellentenchants.enchantment.EnchantManager;
import su.nightexpress.excellentenchants.enchantment.util.EnchantDropContainer;
import su.nightexpress.excellentenchants.enchantment.util.EnchantUtils;
@@ -97,7 +98,7 @@ public class EnchantHandlerListener extends AbstractListener
combatEnchant.consumeChargesNoUpdate(weapon, level);
}
});
- EnchantUtils.updateDisplay(weapon);
+ EnchantUtils.updateChargesDisplay(weapon);
}
private void handleCombatArmorEnchants(@NotNull EntityDamageByEntityEvent e,
@@ -116,7 +117,7 @@ public class EnchantHandlerListener extends AbstractListener
combatEnchant.consumeChargesNoUpdate(armor, level);
}
});
- EnchantUtils.updateDisplay(armor);
+ EnchantUtils.updateChargesDisplay(armor);
}
}
@@ -128,7 +129,7 @@ public class EnchantHandlerListener extends AbstractListener
enchant.consumeChargesNoUpdate(item, level);
}
});
- EnchantUtils.updateDisplay(item);
+ EnchantUtils.updateChargesDisplay(item);
});
}
@@ -165,7 +166,7 @@ public class EnchantHandlerListener extends AbstractListener
bowEnchant.consumeChargesNoUpdate(bow, level);
}
});
- EnchantUtils.updateDisplay(bow);
+ EnchantUtils.updateChargesDisplay(bow);
if (e.getProjectile() instanceof Projectile projectile) {
this.setSourceWeapon(projectile, bow);
@@ -208,7 +209,7 @@ public class EnchantHandlerListener extends AbstractListener
interEnchant.consumeChargesNoUpdate(item, level);
}
});
- EnchantUtils.updateDisplay(item);
+ EnchantUtils.updateChargesDisplay(item);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
@@ -225,7 +226,7 @@ public class EnchantHandlerListener extends AbstractListener
enchant.consumeChargesNoUpdate(item, level);
}
});
- EnchantUtils.updateDisplay(item);
+ EnchantUtils.updateChargesDisplay(item);
}
// ---------------------------------------------------------------
@@ -242,7 +243,9 @@ public class EnchantHandlerListener extends AbstractListener
deathEnchant.consumeChargesNoUpdate(item, level);
}
}));
- EnchantUtils.updateDisplay(item);
+ if (Config.ENCHANTMENTS_CHARGES_ENABLED.get()) {
+ EnchantUtils.updateChargesDisplay(item);
+ }
});
Player killer = entity.getKiller();
@@ -257,7 +260,7 @@ public class EnchantHandlerListener extends AbstractListener
deathEnchant.consumeChargesNoUpdate(weapon, level);
}
});
- EnchantUtils.updateDisplay(weapon);
+ EnchantUtils.updateChargesDisplay(weapon);
}
// Handle BlockBreak enchantments.
@@ -275,7 +278,7 @@ public class EnchantHandlerListener extends AbstractListener
blockEnchant.consumeChargesNoUpdate(tool, level);
}
});
- EnchantUtils.updateDisplay(tool);
+ EnchantUtils.updateChargesDisplay(tool);
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -293,7 +296,7 @@ public class EnchantHandlerListener extends AbstractListener
enchant.consumeChargesNoUpdate(tool, level);
}
});
- EnchantUtils.updateDisplay(tool);
+ EnchantUtils.updateChargesDisplay(tool);
BlockState state = e.getBlockState();
World world = state.getWorld();
diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java
index 8e61b11..a7e1980 100644
--- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java
+++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java
@@ -124,7 +124,7 @@ public class EnchantmentsListMenu extends ConfigMenu implemen
if (lore == null) lore = new ArrayList<>();
List conflicts = enchant.getConflicts().isEmpty() ? Collections.emptyList() : new ArrayList<>(this.enchantLoreConflicts);
- List conflictNames = enchant.getConflicts().stream().map(EnchantUtils::getLocalized).toList();
+ List conflictNames = enchant.getConflicts().stream().map(EnchantUtils::getLocalized).filter(Objects::nonNull).toList();
conflicts = StringUtil.replace(conflicts, Placeholders.ENCHANTMENT_NAME, true, conflictNames);
List charges = enchant.isChargesEnabled() ? new ArrayList<>(this.enchantLoreCharges) : Collections.emptyList();
diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java
index 746a549..9aa5a55 100644
--- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java
+++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java
@@ -45,10 +45,10 @@ public class EnchantUtils {
return NamespacedKey.minecraft(id.toLowerCase());
}
- @NotNull
+ @Nullable
public static String getLocalized(@NotNull String keyRaw) {
Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(keyRaw));
- return enchantment == null ? "null" : getLocalized(enchantment);
+ return enchantment == null ? null : getLocalized(enchantment);
}
@NotNull
@@ -175,6 +175,12 @@ public class EnchantUtils {
item.setItemMeta(meta);
}
+ public static void updateChargesDisplay(@NotNull ItemStack item) {
+ if (Config.ENCHANTMENTS_CHARGES_ENABLED.get()) {
+ updateDisplay(item);
+ }
+ }
+
public static boolean updateDisplay(@NotNull ItemStack item) {
if (Config.ENCHANTMENTS_DISPLAY_MODE.get() != 1) return false;
@@ -399,7 +405,7 @@ public class EnchantUtils {
}
}
});
- EnchantUtils.updateDisplay(item);
+ EnchantUtils.updateChargesDisplay(item);
});
}
}
diff --git a/NMS/pom.xml b/NMS/pom.xml
index 7ee132a..2c0c747 100644
--- a/NMS/pom.xml
+++ b/NMS/pom.xml
@@ -5,7 +5,7 @@
ExcellentEnchants
su.nightexpress.excellentenchants
- 3.5.4
+ 3.5.5
4.0.0
diff --git a/V1_17_R1/pom.xml b/V1_17_R1/pom.xml
index 644d8f2..3b104fa 100644
--- a/V1_17_R1/pom.xml
+++ b/V1_17_R1/pom.xml
@@ -5,7 +5,7 @@
ExcellentEnchants
su.nightexpress.excellentenchants
- 3.5.4
+ 3.5.5
4.0.0
@@ -26,7 +26,7 @@
su.nightexpress.excellentenchants
NMS
- 3.5.4
+ 3.5.5
diff --git a/V1_18_R2/pom.xml b/V1_18_R2/pom.xml
index 79c49b1..9c59476 100644
--- a/V1_18_R2/pom.xml
+++ b/V1_18_R2/pom.xml
@@ -5,7 +5,7 @@
ExcellentEnchants
su.nightexpress.excellentenchants
- 3.5.4
+ 3.5.5
4.0.0
@@ -26,7 +26,7 @@
su.nightexpress.excellentenchants
NMS
- 3.5.4
+ 3.5.5
diff --git a/V1_19_R3/pom.xml b/V1_19_R3/pom.xml
index 26110ed..29c4c8f 100644
--- a/V1_19_R3/pom.xml
+++ b/V1_19_R3/pom.xml
@@ -5,7 +5,7 @@
ExcellentEnchants
su.nightexpress.excellentenchants
- 3.5.4
+ 3.5.5
4.0.0
@@ -26,7 +26,7 @@
su.nightexpress.excellentenchants
NMS
- 3.5.4
+ 3.5.5
diff --git a/V1_20_R1/pom.xml b/V1_20_R1/pom.xml
index 0921015..b2b86c8 100644
--- a/V1_20_R1/pom.xml
+++ b/V1_20_R1/pom.xml
@@ -5,7 +5,7 @@
ExcellentEnchants
su.nightexpress.excellentenchants
- 3.5.4
+ 3.5.5
4.0.0
@@ -26,7 +26,7 @@
su.nightexpress.excellentenchants
NMS
- 3.5.4
+ 3.5.5
diff --git a/pom.xml b/pom.xml
index e15dd08..7af8f5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
su.nightexpress.excellentenchants
ExcellentEnchants
pom
- 3.5.4
+ 3.5.5
Core
NMS