Хочу создать предмет который будет иметь интерфейс, кароче примитивную сумку, чтобы не запариваться и придумать что то правильно решил сделать отдельный враппер под ItemStack чтобы можно переиспользовать в будущем, но проблема в том, що как только предметы попадут в слоты "предмета" при следующем открытии их не будет
Дебажил до момента записи нбт, запись идет в стак, после открытия нбт пустое
Смотрел разные реализации, в драконике, термал, таумкрафт, все используют сильно модульные класы, что приводит к непониманию
Код враппера public class ItemStackInventory implements IInventory { private final Entit - Pastebin.com
В предмете, дабы сильно не мудрить решил сделать "заглушкой" оно работает, и не крашит, мне этого достаточно
Пытался и хранить еще и само нбт может оно как сбрасывается, и в него записывать, сохранять при любом действии, не помогло
Есть предположение что мне передается левый стак, который не правильный, потому что логи в onUpdate пустые при любых действиях или надо писать свой контейнер, и в нем уже сохранять при закрытии, но мне кажется бред что setInventorySlotContents с обновлением нбт не сохраняет, а при контейнере будет..
Тестил только в локале, чтобы без синхронизации
При закрытии сохраняет
[Server thread/INFO] [STDOUT]: [.api.ItemStackInventory:closeInventory:121]: {Items:[0:{Slot:21b,id:225s,Count:1b,Damage:0s},1:{Slot:30b,id:225s,Count:1b,Damage:0s}]}
Но как только начинаю открывать,
[Server thread/INFO] [STDOUT]: [
nUpdate:81]: {}
[Client thread/INFO] [STDOUT]: [
nUpdate:81]: {}
Дебажил до момента записи нбт, запись идет в стак, после открытия нбт пустое
Смотрел разные реализации, в драконике, термал, таумкрафт, все используют сильно модульные класы, что приводит к непониманию
Код враппера public class ItemStackInventory implements IInventory { private final Entit - Pastebin.com
В предмете, дабы сильно не мудрить решил сделать "заглушкой" оно работает, и не крашит, мне этого достаточно
Java:
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && player.isSneaking()) {
ItemStack currentItem = player.inventory.getCurrentItem();
if (currentItem != null) {
if (currentItem.getItem() == this) {
ItemStackInventory inventory = new ItemStackInventory(player, currentItem, 36);
player.displayGUIChest(inventory);
}
}
}
return stack;
}
Пытался и хранить еще и само нбт может оно как сбрасывается, и в него записывать, сохранять при любом действии, не помогло
Есть предположение что мне передается левый стак, который не правильный, потому что логи в onUpdate пустые при любых действиях или надо писать свой контейнер, и в нем уже сохранять при закрытии, но мне кажется бред что setInventorySlotContents с обновлением нбт не сохраняет, а при контейнере будет..
Тестил только в локале, чтобы без синхронизации
При закрытии сохраняет
[Server thread/INFO] [STDOUT]: [.api.ItemStackInventory:closeInventory:121]: {Items:[0:{Slot:21b,id:225s,Count:1b,Damage:0s},1:{Slot:30b,id:225s,Count:1b,Damage:0s}]}
Но как только начинаю открывать,
[Server thread/INFO] [STDOUT]: [
[Client thread/INFO] [STDOUT]: [