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

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

Тема в разделе "Запросы на разработку плагинов", создана пользователем Самость, 23 июл 2023.

  1. Автор темы
    Самость

    Самость Активный участник

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

    Что я хочу: Чтобы количество требуемого опыта за починку предмета на наковальне не увеличивалось.
     
    Последнее редактирование: 23 июл 2023
  2. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Привет, могу сделать бесплатно.
     
  3. Автор темы
    Самость

    Самость Активный участник

    Баллы:
    61
    Был бы очень признателен
     
  4. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Ладно, для меня это невозможно. Я попробовал, но ничего не работает.
     
  5. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    https://www.mediafire.com/file/b3s42ig2b5ob1d5/LokiPlugin40.jar/file С каждым ремонтом количество опыта не увеличивается.
    Код:
        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);
            }
        }
    
     
  6. Автор темы
    Самость

    Самость Активный участник

    Баллы:
    61
    Спасибо тебе огромное, жаль я додумался прочекать свой же пост только через пол года.
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Можно было мету кастануть в Repairable, к чему такой костыль на рефлексии?
     
  8. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    И получить ClassCastException, когда переименовывают крюк?
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Не ожидал такого глупого вопроса от сторожила.
    Код:
            if(stack.getItemMeta() instanceof Repairable rep) {
               
            }
     
  10. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Java 14? К моему сожалению, я не использовал версии выше 11-й, как и о новом синтаксисе не знал. А вопрос я задал потому, что не увидел предложение замены на паттернматчинг, а вполне конкретное -- убрать проверку. Моя ошибка.
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Уже не помню с какой добавили, это просто укорачивает код, автоматически кастует.
     

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