Дополнительная вкладка в инвентаре

Версия Minecraft
1.8.9
Цель:
  • Сделать дополнительную вкладку в инвентаре, куда можно будет класть только зелья.
  • Запретить класть зелья в обычный инвентарь, не считая тулбара (иначе во вкладке нет смысла, в контексте пвп сервера).
  1. В условиях открытого мира, подготавливаясь к пвп, приходится жертвовать утилити- предметами типа блоков, кирок и т.д. ради того, чтобы взять больше зелий, быть сильнее в пвп;
  2. Убивая кого- то в пвп, зачастую дропается очень много зелий, что мешает быстро и комфортно подобрать ценный дроп.
Хоть дополнительная влкадка зелий и не решает полностью второй проблемы, но, я думаю, решение первой проблемы уже даст значительный прирост к комфорту игры.

Основные проблемы:
  • Как запретить класть зелья в основной инвентарь из сундуков, печек, воронок, вагонеток, диспенсеров и т.д.
  • Как сделать переключение между вкладок - полностью заменять GUI всего вышеперечисленного или же можно сделать что- то на подобии оверлея, который будет рендерить переключение между вкладками поверх и изменять содержимое оригинального GUI.


Я ни разу не работал ни с рефлексией, ни с хуками, так что не знаю, на что они способны. Хотелось бы узнать, на сколько это сложная задача используя те самые инструменты, и вообще, примерно, какие были бы основные шаги


Когда я только начинал заниматься моддингом и вообще программировать на джаве, я начал именно с этой дополнительной вкладки, но вскоре понял, что это очень сложная задача, да и к тому же это не основная фишка моего проекта, так что я отложил это. В тот раз я смог добиться просто дополнительной вкладки в обычном инвентаре, создав два новых GuiScreen и GuiContainer, по паре для каждой вкладки и один IInventory для вкладки зелий, для первой я использовал IInventory из EntityPlayer. Открывал я это все через новый байдинг, хотя проще и лучше было бы использовать GuiOpenEvent. Хранил я вкладку зелий в ExtendedEntityProperty. Ну и конечно добавил лисенеры инветов для дропа этого интвентаря, поднятия вещей и всякого такого. Все было более- менее, правда, хоть я и не мог класть зелья в основной инвентарь из хотбара, но через сукдуки, печи и т.д. - мог. Ну и, конечно же, единственный способ положить зелья в соответствующую вкладку из сундука был либо выбросить их и поднять, либо перекладывать через хотбар.
 
Последнее редактирование:
1,417
44
594
Как запретить класть зелья в основной инвентарь из сундуков, печек, воронок, вагонеток, диспенсеров и т.д.
Хукаешь их инвентерь и делаешь проверку что-то на подобии
if(this.getSlotIndex() == 1/*ID слота*/ && this.getStack() != null /*что-то кладут*/ && this.getStack().getItem() instanceof class/*класс зелий(не помню)*/) {
  • Как сделать переключение между вкладок - полностью заменять GUI всего вышеперечисленного или же можно сделать что- то на подобии оверлея, который будет рендерить переключение между вкладками поверх и изменять содержимое оригинального GUI.
Проще, наверное, создать свой инвентарь, в котором и будет эта вкладка, и заменить открытие обычного инвентаря на твой. Переключение можно сделать через обычную переменную. Например int list =0; в методе отрисовки ГУИ, вроде, можно сохранять содержимое инвентаря в нбт. Когда происходит нажатие на кнопку, то делаем list =1; и, ввроде все.
Java:
if(list==0){
//Рендерим обычный инвентарь
// не забываем про кнопку
}
if(list==1){
//рендерим второй инвентарь зелий
}
Также потребуется при смерти массивчиком пробегаться по своему инвентарю, чтобы спаунились вещи и из него.
 
Сверху