Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Проблема в создании зачарований

Метки:
Теги Теги
зачарования чары

kolis1on

Активный участник
Пользователь
Баллы
76
Вообщем пытаюсь создать кастомное зачарование.

Есть такой класс 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(), он никак не работает. Но сам чар успешно регистрируеться
 
BukkitAPI не позволяет нормально регать новые зачарования, даже если получится то его имя не будет отображено на клиенте, потому что на клиенте нету такого зачарования.
Когдато я пытался добавить свой чар.
Могу посоветовать использовать плагин EcoEnchants для кастомных чаров, он работает на пакетах и nms и зачарования можно получить всеми ванильными способами
 
BukkitAPI не позволяет нормально регать новые зачарования, даже если получится то его имя не будет отображено на клиенте, потому что на клиенте нету такого зачарования.
Когдато я пытался добавить свой чар.
Могу посоветовать использовать плагин EcoEnchants для кастомных чаров, он работает на пакетах и nms и зачарования можно получить всеми ванильными способами
А есть вариант использовать стороннее API для создания заварований?
 
А есть вариант использовать стороннее API для создания заварований?
Можешь попробовать использовать EcoEnchants как API, Но он на котлине и доков к нему нет, но есть открытый код на github
 

Поделиться этой страницей

Назад
Верх