Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите [Решено] Зарядка джетпаков из мода SimplyJetpack плагином.

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

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

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Этот мод полноценно функционирует только в комплекте с модами ThermalExpansion и CoFHCore, которые себе ставить я по ряду причин не хочу. Решил прикрутить к своему серверу без них, так как очень понравились идея и реализация.

    Потратил несколько часов на приведение его в божеский вид.
    Полностью исправил ошибки и баги русификации (пришлось даже один класс отредактировать InClassTranslator'ом).
    Неработоспособность крафтов без недостающих модов реализовал в своем отдельном моде.
    Немало повозился с конфигом - он, надо заметить, не безгеморройный.
    Заказал перерисовку некоторых текстур, так как в комплекте идет смесь из 32- и 16-пиксельных.

    Сейчас все работает, все предметы крафтятся.

    Выглядит предмет так:
    [​IMG]

    Вторая строчка показывает остаток энергии. Если он равен 000000, то джетпак полностью разряжен.

    Полазил в коде мода и нашел блок, где вся эта хрень вписывается в предмет:
    Код:
       public void addInformation(ItemStack itemStack, EntityPlayer player, List list, int energyStored) {
          list.add(StringUtils.getChargeText(this.tier == 9001, energyStored, this.energyCapacity));
          if(StringUtils.canShowDetails()) {
             list.add(StringUtils.getStateText(this.isOn(itemStack)));
             list.add(StringUtils.getHoverModeText(this.isHoverModeOn(itemStack)));
             int currentTickEnergy = this.isHoverModeOn(itemStack)?this.energyPerTickHover:this.energyPerTick;
             list.add(StringUtils.getEnergyUsageText(currentTickEnergy));
             list.add(StringUtils.getArmoredText(this.isArmored()));
             list.add(StringUtils.getParticlesText(this.getParticleType(itemStack)));
             list.add("§a" + StringUtils.translate("tooltip.jetpack.description.1"));
             list.add("§a" + StringUtils.translate("tooltip.jetpack.description.2"));
             if(this.hasArmoredVersion() && SJConfig.enableCraftingArmorPlating) {
                list.add(StringUtils.getArmorText(this.isArmored()));
                if(!this.isArmored()) {
                   list.add(StringUtils.getRequiredArmorText(this.getPlatingMeta() - 120));
                }
             }
          } else {
             list.add(StringUtils.getShiftText());
          }
    
       }
    

    Осталось понять, как плагином отредактировать в предмете строчку, которую редактирует в моде эта строка:
    list.add(StringUtils.getEnergyUsageText(currentTickEnergy));

    Есть мысли?
     
    Последнее редактирование: 5 сен 2016
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Разве там не ic2 api юзается для таких вещей?
     
  4. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Я не знаю, что там юзается, но IC2 у меня нет. Я так понимаю, что в самом предмете (джетпаке) есть какой-то параметр (тег?), который меняется при заправке или расходе энергии. Я думаю, что плагином этот тег можно редактировать. Только вот как? Куда копать? NBT теги?
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну тогда там есть свой апи с энергией. Я уже давно не смотрел индастрил моды.
     
  6. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Вроде это не индастриал. Там мод CoFHCore. В нем есть API, который используют при написании модов. Но мне-то нужно написать плагин. Например, кликаю пустым джетпаком по камню - и джетпак снова полный. Плагин же нельзя написать, используя модовый API? Или можно?[DOUBLEPOST=1473078848,1473071465][/DOUBLEPOST]Да, это действительно NBT-теги. Своим модом научился редактировать количество энергии безо всяких API (если код интересен - могу показать). Теперь мне нужно научиться редактировать нужный мне тег плагином.[DOUBLEPOST=1473087924][/DOUBLEPOST]Всё сделал, всё работает.

    [​IMG]
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Та хоть понимаешь что такое api? Это набор паблик функций, которые можно юзать от куда угодно и чем угодно.
     
  8. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Да, понимаю. Даже сам написал пару простеньких...
    В данной ситуации вопрос решился редактированием NBT-тегов, что на порядок проще, чем копаться в API.
     

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