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

Починка предметов на наковальне без повышения цены

Самость

Активный участник
Баллы
61
Версия сервера: Надо чтобы работало под 1.20.1

Что я хочу: Чтобы количество требуемого опыта за починку предмета на наковальне не увеличивалось.
 
Последнее редактирование:
Версия сервера: Надо чтобы работало под 1.20.1

Что я хочу: Чтобы количество требуемого опыта за починку предмета на наковальне не увеличивалось.
https://www.mediafire.com/file/b3s42ig2b5ob1d5/LokiPlugin40.jar/file С каждым ремонтом количество опыта не увеличивается.
Ладно, для меня это невозможно. Я попробовал, но ничего не работает.
Java:
    private static Repairable getRepairable(ItemStack is) {
        if(is == null)
            return null;
        if(!is.hasItemMeta())
            return null;
        ItemMeta im = is.getItemMeta();
        if(!Repairable.class.isInstance(im))
            return null;
        return (Repairable) im;
    }
    @EventHandler
    public void onAnvil(PrepareAnvilEvent e) {
        ItemStack res = e.getResult();
        Repairable r = getRepairable(res);
        if(r == null)
            return;
        Repairable source = getRepairable(e.getInventory().getItem(0));
        if(source != null) {
            r.setRepairCost(source.getRepairCost());
            res.setItemMeta((ItemMeta) r);
            e.setResult(res);
        }
    }
 
https://www.mediafire.com/file/b3s42ig2b5ob1d5/LokiPlugin40.jar/file С каждым ремонтом количество опыта не увеличивается.

Java:
    private static Repairable getRepairable(ItemStack is) {
        if(is == null)
            return null;
        if(!is.hasItemMeta())
            return null;
        ItemMeta im = is.getItemMeta();
        if(!Repairable.class.isInstance(im))
            return null;
        return (Repairable) im;
    }
    @EventHandler
    public void onAnvil(PrepareAnvilEvent e) {
        ItemStack res = e.getResult();
        Repairable r = getRepairable(res);
        if(r == null)
            return;
        Repairable source = getRepairable(e.getInventory().getItem(0));
        if(source != null) {
            r.setRepairCost(source.getRepairCost());
            res.setItemMeta((ItemMeta) r);
            e.setResult(res);
        }
    }
Можно было мету кастануть в Repairable, к чему такой костыль на рефлексии?
 
Не ожидал такого глупого вопроса от сторожила.
Код:
        if(stack.getItemMeta() instanceof Repairable rep) {
          
        }
Java 14? К моему сожалению, я не использовал версии выше 11-й, как и о новом синтаксисе не знал. А вопрос я задал потому, что не увидел предложение замены на паттернматчинг, а вполне конкретное -- убрать проверку. Моя ошибка.
 
Java 14? К моему сожалению, я не использовал версии выше 11-й, как и о новом синтаксисе не знал. А вопрос я задал потому, что не увидел предложение замены на паттернматчинг, а вполне конкретное -- убрать проверку. Моя ошибка.
Уже не помню с какой добавили, это просто укорачивает код, автоматически кастует.
 

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

Назад
Верх