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

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

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

FiGuRt

Участник
Пользователь
Баллы
31
Хочу создать собственное зачарование, но не знаю как его вообще объявить/зарегистрировать...? В инете на эту тему ничего найти не могу, может ищу неправильно, хз.
 
Вообще зачары создаются наследованием от Enchantment. Под какую версию то нужно?
 
Создаёшь класс или несколько классов, которые наследуют любой из двух баккитовских классов:
- 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(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;
}
 
Последнее редактирование:

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

Назад
Верх