diff --git a/Essentials/src/com/earth2me/essentials/Enchantments.java b/Essentials/src/com/earth2me/essentials/Enchantments.java index 016c47d81..05990f152 100644 --- a/Essentials/src/com/earth2me/essentials/Enchantments.java +++ b/Essentials/src/com/earth2me/essentials/Enchantments.java @@ -1,7 +1,5 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.NumberUtil; - import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; @@ -15,6 +13,7 @@ import java.util.Set; public class Enchantments { private static final Map ENCHANTMENTS = new HashMap(); private static final Map ALIASENCHANTMENTS = new HashMap(); + private static boolean isFlat; static { ENCHANTMENTS.put("alldamage", Enchantment.DAMAGE_ALL); @@ -231,14 +230,22 @@ public class Enchantments { ALIASENCHANTMENTS.put("channel", channelling); } } catch (IllegalArgumentException ignored) {} + + try { + Class namespacedKeyClass = Class.forName("org.bukkit.NamespacedKey"); + Class enchantmentClass = Class.forName("org.bukkit.enchantments.Enchantment"); + enchantmentClass.getDeclaredMethod("getByKey", namespacedKeyClass); + isFlat = true; + } catch (ClassNotFoundException | NoSuchMethodException e) { + isFlat = false; + } } public static Enchantment getByName(String name) { Enchantment enchantment = null; - try { - // 1.13+ only + if (isFlat) { // 1.13+ only enchantment = Enchantment.getByKey(NamespacedKey.minecraft(name.toLowerCase())); - } catch (NoSuchMethodError ignored) {} + } if (enchantment == null) { enchantment = Enchantment.getByName(name.toUpperCase());