Сохранение стака в слоте кастомного контейнера

Версия Minecraft
1.7.10
1,195
31
183
Сразу к делу
Класс где состоит проблема
Java:
public class ModifiInventory implements IInventory {

   public static ModifiInventory theMinecraft;
   private String name = "Inventory Item";
   private final ItemStack stack;
   public static final int INV_SIZE = 1;
   ItemStack[] inventory = new ItemStack[5];


   public ModifiInventory(ItemStack var1) {
      theMinecraft = this;
      this.stack = var1;
      if(!this.stack.hasTagCompound()) {
         this.stack.setTagCompound(new NBTTagCompound());
      }

      this.readFromNBT(this.stack.getTagCompound());
   }


@Override
public int getSizeInventory() {
     return this.inventory.length;
}


@Override
public ItemStack getStackInSlot(int var1) {
      return this.inventory[var1];
}


@Override
public ItemStack decrStackSize(int var1, int var2) {
    ItemStack var3 = this.getStackInSlot(var1);
    if(var3 != null) {
       if(var3.stackSize > var2) {
          var3 = var3.splitStack(var2);
          this.markDirty();
       } else {
          this.setInventorySlotContents(var1, (ItemStack)null);
       }
    }

    return var3;
}


@Override
public ItemStack getStackInSlotOnClosing(int var1) {
    ItemStack var2 = this.getStackInSlot(var1);
    this.setInventorySlotContents(var1, (ItemStack)null);
    return var2;
}


@Override
public void setInventorySlotContents(int var1, ItemStack var2) {
    this.inventory[var1] = var2;
    if(var2 != null && var2.stackSize > this.getInventoryStackLimit()) {
       var2.stackSize = this.getInventoryStackLimit();
    }

    this.markDirty();
}


@Override
public String getInventoryName() {
     return this.name;
}


@Override
public boolean hasCustomInventoryName() {
    return this.name.length() > 0;
}


@Override
public int getInventoryStackLimit() {
    return 64;
}


@Override
public void markDirty() {

    for(int var1 = 0; var1 < this.getSizeInventory(); ++var1) {
        if(this.getStackInSlot(var1) != null && this.getStackInSlot(var1).stackSize == 0) {
           this.setInventorySlotContents(var1, (ItemStack)null);
        }
     }

     this.writeToNBT(this.stack.getTagCompound());
    
}


@Override
public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
    // TODO Auto-generated method stub
    return true;
}


@Override
public void openInventory() {
    // TODO Auto-generated method stub
    
}


@Override
public void closeInventory() {
    // TODO Auto-generated method stub
    
}


@Override
public boolean isItemValidForSlot(int var1, ItemStack var2) {
    return !(var2.getItem() instanceof ItemCoal);
}

public void readFromNBT(NBTTagCompound var1) {
    NBTTagList var2 = var1.getTagList("ItemInventory", 0);

    for(int var3 = 0; var3 < var2.tagCount(); ++var3) {
       NBTTagCompound var4 = (NBTTagCompound)var2.getCompoundTagAt(var3);
       int var5 = var4.getInteger("Slot");
       if(var5 >= 0 && var5 < this.getSizeInventory()) {
          this.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
       }
    }

 }

 public void writeToNBT(NBTTagCompound var1) {
    NBTTagList var2 = new NBTTagList();

    for(int var3 = 0; var3 < this.getSizeInventory(); ++var3) {
       if(this.getStackInSlot(var3) != null) {
          NBTTagCompound var4 = new NBTTagCompound();
          var4.setInteger("Slot", var3);
          this.getStackInSlot(var3).writeToNBT(var4);
          var2.appendTag(var4);
       }
    }

    var1.setTag("ItemInventory", var2);
 }
}

Проблема в методе readFromNBT()
Не сохраняет итемстак после повторного открытия гуи
Думаю, что проблема в листе: NBTTagList var2 = var1.getTagList("ItemInventory", 0);
Это я портировал с 1.5.2
Оригинал код:
Java:
public void readFromNBT(NBTTagCompound var1) {
      NBTTagList var2 = var1.getTagList("ItemInventory");

      for(int var3 = 0; var3 < var2.tagCount(); ++var3) {
         NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
         int var5 = var4.getInteger("Slot");
         if(var5 >= 0 && var5 < this.getSizeInventory()) {
            this.setInventorySlotContents(var5, ItemStack.loadItemStackFromNBT(var4));
         }
      }

   }
И он работает на 1.5.2
Но на 1.7.10 к методу getTagList() стала требоваться интегер переменная, но я не знаю, за что она отвечает, поставил на рандоме lmao
Из-за этого, скорее всего и не сохраняется мой стак при повторном открытии
Помогите, шо и как преобразовать, я не могу допереть
 
1,195
31
183
Господи, как? Я до создания проверял класс с этим методом
Там такое
Java:
            if (this.func_150299_b(p_150295_1_) != 9)
            {
                return new NBTTagList();
            }
            else
            {
                NBTTagList nbttaglist = (NBTTagList)this.tagMap.get(p_150295_1_);
                return nbttaglist.tagCount() > 0 && nbttaglist.func_150303_d() != p_150295_2_ ? new NBTTagList() : nbttaglist;
            }
Можете обьяснить как это работает?
Док, лайкусик
 
Сверху