public void onEnable() {
if (startAcceptingEnchantmentsRegistrations()) {
Enchantment enchantment1 = registerEnchantment(new MyCoolEnchantment());
Enchantment enchantment2 = registerEnchantment(new MyAmazingEnchantment());
} else {
this.getLogger().severe("Не удалось зарегистрировать энчанты, ядро не поддерживается");
}
}
public static boolean startAcceptingEnchantmentsRegistrations() {
try {
Field acceptingNewField = Enchantment.class.getDeclaredField("acceptingNew");
acceptingNewField.setAccessible(true);
acceptingNewField.set(null, true);
return true;
} catch (Throwable ignored) {
return false;
}
}
@NonNull
public static Enchantment registerEnchantment(@NonNull Enchantment enchantment) {
Enchantment existingEnchantment;
existingEnchantment = Enchantment.getByKey(enchantment.getKey());
if (existingEnchantment != null) return existingEnchantment;
//noinspection deprecation
existingEnchantment = Enchantment.getByName(enchantment.getName());
if (existingEnchantment != null) return existingEnchantment;
Enchantment.registerEnchantment(enchantment);
return enchantment;
}