- 1,015
- 9
- 102
save вызывается при изменении любого слота, а load при открытии инвентаря. Когда кладу предмет в слот, закрываю инвентарь и открываю его обратно - его нет. Когда дебажил понял, что save проходит нормально, но когда наступает load тег Items всегда пустой. В чём может быть проблема?
Код:
public void save(){
NBTTagCompound category = getNotNullCategory(sword);
NBTTagList list = new NBTTagList();
for (int i = 0; i < this.getSizeInventory(); ++i) {
if (!this.getStackInSlot(i).isEmpty()) {
NBTTagCompound stackTag = new NBTTagCompound();
stackTag.setByte("Slot", (byte) i);
this.getStackInSlot(i).writeToNBT(stackTag);
list.appendTag(stackTag);
}
}
category.setTag("Items", list);
sword.getTagCompound().setTag(ExtremeEnergy.NBT_CATEGORY, category);
}
public void load(){
NBTTagCompound category = getNotNullCategory(sword);
NBTTagList list = category.getTagList("Items", 10);
for (int i = 0; i < list.tagCount(); ++i) {
NBTTagCompound stackTag = list.getCompoundTagAt(i);
this.slots[i] = new ItemStack(stackTag);
}
}
public static NBTTagCompound getNotNullCategory(ItemStack stack) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
stack.getTagCompound().setTag(ExtremeEnergy.NBT_CATEGORY, new NBTTagCompound());
}
return stack.getTagCompound().getCompoundTag(ExtremeEnergy.NBT_CATEGORY);
}