1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как создать собственное зачарование через плагин?

Тема в разделе "Разработка плагинов для новичков", создана пользователем FiGuRt, 20 ноя 2023.

  1. Автор темы
    FiGuRt

    FiGuRt Новичок

    Баллы:
    16
    Хочу создать собственное зачарование, но не знаю как его вообще объявить/зарегистрировать...? В инете на эту тему ничего найти не могу, может ищу неправильно, хз.
     
  2. Alone Dev

    Alone Dev Новичок

    Баллы:
    6
    Вообще зачары создаются наследованием от Enchantment. Под какую версию то нужно?
     
  3. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Создаёшь класс или несколько классов, которые наследуют любой из двух баккитовских классов:
    - EnchantmentWrapper - часть параметров можно наследовать у другого зачарования
    - Enchantment - придется указать все характеристики самостоятельно

    Затем создаёшь объект зачарования и регистрируешь таким образом:
    PHP:
    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(nulltrue);
            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;
    }
     
    Последнее редактирование: 25 ноя 2023

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