- Баллы
- 76
Вообщем пытаюсь создать кастомное зачарование.
Есть такой класс EnchantmentWrapper
А так же класс с зачарованием
В главном класе вызываю метод
CustomEnchants.register();
Но пробелма в том что как бы я не пытался зачарить через команду либо же добавлять чар с помощью addUnsafedEnchant(), он никак не работает. Но сам чар успешно регистрируеться
Есть такой класс EnchantmentWrapper
Код:
package org.kolis1on.enchants;
import org.bukkit.ChatColor;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.enchantments.EnchantmentTarget;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class EnchantmentWrapper extends Enchantment {
private final String name;
private final int maxLvl;
private final EnchantmentTarget target;
public EnchantmentWrapper(String namespace, String name, int maxLvl, EnchantmentTarget target) {
super(NamespacedKey.minecraft(namespace));
this.name = name;
this.maxLvl = maxLvl;
this.target = target;
}
@Override
public String getName() {
return this.name;
}
@Override
public int getMaxLevel() {
return maxLvl;
}
@Override
public int getStartLevel() {
return 1;
}
@Override
public EnchantmentTarget getItemTarget() {
return target;
}
@Override
public boolean isTreasure() {
return false;
}
@Override
public boolean isCursed() {
return false;
}
@Override
public boolean conflictsWith(Enchantment enchantment) {
return false;
}
@Override
public boolean canEnchantItem(ItemStack itemStack) {
return true;
}
}
Код:
package org.kolis1on.enchants.enchants;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.enchantments.EnchantmentTarget;
import org.kolis1on.enchants.EnchantmentWrapper;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.stream.Collectors;
public class CustomEnchants {
public static final Enchantment LAVA_WALKER = new EnchantmentWrapper("lava_walker", "Лаваход", 1, EnchantmentTarget.ARMOR_FEET );
public static void register(){
boolean registered = Arrays.stream(Enchantment.values()).collect(Collectors.toList()).contains(LAVA_WALKER);
if(!registered){
registerEnchantment(LAVA_WALKER);
}
}
public static void registerEnchantment(Enchantment enchantment){
boolean registered = true;
try{
Field f = Enchantment.class.getDeclaredField("acceptingNew");
f.setAccessible(true);
f.set(null, true);
Enchantment.registerEnchantment(LAVA_WALKER);
}
catch(Exception e){
registered = false;
e.printStackTrace();
}
if(registered){
System.out.println("Enchant successfully register");
}
}
}
В главном класе вызываю метод
CustomEnchants.register();
Но пробелма в том что как бы я не пытался зачарить через команду либо же добавлять чар с помощью addUnsafedEnchant(), он никак не работает. Но сам чар успешно регистрируеться