Создание своего gui-фильтра предметов

Версия Minecraft
1.12.2
API
Forge
17
3
1
Так как я новичек в создании gui, да и в целом в моддинге, прошу мне помочь реализовать мою задачу.
Коротко о том, что мне нужно сделать:
1. Создать копию gui-сундука(большого).
2. При попытке поместить предмет в слот моего gui, предмет полностью не будет помещен в него, а только скопируется, при этом оставшись в курсоре.
3. Если в слоте уже будет другой предмет, он перезапишется на новый.
4. Если кликнуть на слот без предмета, то он станет пустым.

Подобные фильтры предметов есть в индустриальных модах, таких как BuildCraft, ThermalExpansion, Forestry и прочих.

Насколько я понял из сурсов обычного сундука, предметы помещенные в него отправляются на сервер, и хранятся там. Мне же нужно хранить их только на клиенте. Да и вообще, у меня мод полностью клиентский. Как сериализовать объект класса ItemStack в строку мне известно(методом item.serializeNBT().toString()). Сохранить его потом можно будет в какой-то конфиг, или json файл. А вот как потом обратно строку с NBT переделать в ItemStack для меня пока загадка.

Как я понимаю, сперва нужно переопределить класс дефолтного gui сундука и внести в него нужные правки. Но как я не пытался это сделать, мне так и не удалось отобразить этот мой gui. По этому прошу помощи у вас. Дайте пожалуйста пример, что именно нужно переопределять, и как отобразить этот новосозданный gui.
 

Sainthozier

Стрелочник
623
11
369
хранить их только на клиенте
Мне кажется, что ты не до конца осознаешь, что это значит.

А вот как потом обратно строку с NBT переделать в ItemStack
Можешь заюзать gson и написать свой тайп адаптер для сериализации/десериализации ItemStack.
 
Сверху