diff --git a/src/main/java/pro/cloudnode/smp/enchantbookplus/ConfigEnchantmentEntry.java b/src/main/java/pro/cloudnode/smp/enchantbookplus/ConfigEnchantmentEntry.java index a305ac3..4741ffe 100644 --- a/src/main/java/pro/cloudnode/smp/enchantbookplus/ConfigEnchantmentEntry.java +++ b/src/main/java/pro/cloudnode/smp/enchantbookplus/ConfigEnchantmentEntry.java @@ -219,7 +219,7 @@ public final boolean getMultiplyCostByLevel() { * Get enchantment */ public final Enchantment getEnchantment() { - return Objects.requireNonNull(Registry.ENCHANTMENT.get(NamespacedKey.minecraft(name))); + return Objects.requireNonNull(Registry.ENCHANTMENT.get(Objects.requireNonNull(NamespacedKey.fromString(name)))); } /** @@ -228,7 +228,12 @@ public final Enchantment getEnchantment() { * @param enchantment The enchantment */ public final boolean isEnchantment(final Enchantment enchantment) { - return name.equalsIgnoreCase(enchantment.getKey().getKey()); + if (!enchantment.getKey().getNamespace().equals(NamespacedKey.MINECRAFT)) { + return name.equalsIgnoreCase(enchantment.getKey().getNamespace() + ":" + enchantment.getKey().getKey()); + } + + return name.equalsIgnoreCase(enchantment.getKey().getKey()) + || name.equalsIgnoreCase(enchantment.getKey().getNamespace() + ":" + enchantment.getKey().getKey()); } public static final class AllConfigEnchantmentEntry extends ConfigEnchantmentEntry { @@ -252,7 +257,7 @@ public static AllConfigEnchantmentEntry from(final ConfigEnchantmentEntry config public ConfigEnchantmentEntry enchant(final Enchantment enchantment) { return new ConfigEnchantmentEntry( - enchantment.getKey().getKey(), + enchantment.getKey().getNamespace() + ":" + enchantment.getKey().getKey(), this.maxLevel, maxLevelRelative, cost, diff --git a/src/main/java/pro/cloudnode/smp/enchantbookplus/EnchantBookPlus.java b/src/main/java/pro/cloudnode/smp/enchantbookplus/EnchantBookPlus.java index 695d27e..7bb5615 100644 --- a/src/main/java/pro/cloudnode/smp/enchantbookplus/EnchantBookPlus.java +++ b/src/main/java/pro/cloudnode/smp/enchantbookplus/EnchantBookPlus.java @@ -87,7 +87,7 @@ void reload() { @Override public void onEnable() { - Permissions.init(this); + Permissions.register(this); Objects.requireNonNull(getCommand("enchantbookplus")).setExecutor(new MainCommand(this)); registerEvents(); @@ -99,5 +99,6 @@ public void onEnable() { public void onDisable() { allConfigEnchantment = null; configEnchantments.clear(); + Permissions.unregister(this); } } diff --git a/src/main/java/pro/cloudnode/smp/enchantbookplus/Permissions.java b/src/main/java/pro/cloudnode/smp/enchantbookplus/Permissions.java index fe0c9a7..844b297 100644 --- a/src/main/java/pro/cloudnode/smp/enchantbookplus/Permissions.java +++ b/src/main/java/pro/cloudnode/smp/enchantbookplus/Permissions.java @@ -1,5 +1,6 @@ package pro.cloudnode.smp.enchantbookplus; +import org.bukkit.NamespacedKey; import org.bukkit.Registry; import org.bukkit.enchantments.Enchantment; import org.bukkit.permissions.Permission; @@ -7,27 +8,42 @@ import org.bukkit.plugin.PluginManager; import org.jspecify.annotations.NullMarked; +import java.util.function.Consumer; + @NullMarked public final class Permissions { - public final static String RELOAD = "enchantbookplus.reload"; + public static final String RELOAD = "enchantbookplus.reload"; public static String enchant(final Enchantment enchantment) { - return "enchantbookplus.enchant." + enchantment.getKey().getKey(); + if (enchantment.getKey().getNamespace().equals(NamespacedKey.MINECRAFT)) { + return "enchantbookplus.enchant." + enchantment.getKey().getKey(); + } + + return "enchantbookplus.enchant." + enchantment.getKey().getNamespace() + "." + enchantment.getKey().getKey(); } - public static void init(final EnchantBookPlus plugin) { + public static void register(final EnchantBookPlus plugin) { final PluginManager pm = plugin.getServer().getPluginManager(); + forEach(pm::addPermission); + } + + public static void unregister(final EnchantBookPlus plugin) { + final PluginManager pm = plugin.getServer().getPluginManager(); + forEach(pm::removePermission); + } - pm.addPermission(new Permission( + private static void forEach(final Consumer consumer) { + consumer.accept(new Permission( RELOAD, "Reload plugin config using ‘/enchantbookplus reload’", PermissionDefault.OP )); - for (Enchantment enchantment : Registry.ENCHANTMENT) { - pm.addPermission(new Permission( + for (final Enchantment enchantment : Registry.ENCHANTMENT) { + consumer.accept(new Permission( enchant(enchantment), - "Allow enchanting " + enchantment.getKey() + "above the vanilla level, as configured in the plugin", + "Allow enchanting " + enchantment.getKey() + + " above the vanilla level, as configured in the plugin", PermissionDefault.TRUE )); }