- 1,202
- 31
- 185
Сразу к делу
Класс где состоит проблема
Проблема в методе readFromNBT()
Не сохраняет итемстак после повторного открытия гуи
Думаю, что проблема в листе: NBTTagList var2 = var1.getTagList("ItemInventory", 0);
Это я портировал с 1.5.2
Оригинал код:
И он работает на 1.5.2
Но на 1.7.10 к методу getTagList() стала требоваться интегер переменная, но я не знаю, за что она отвечает, поставил на рандоме lmao
Из-за этого, скорее всего и не сохраняется мой стак при повторном открытии
Помогите, шо и как преобразовать, я не могу допереть
Класс где состоит проблема
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.7.10 к методу getTagList() стала требоваться интегер переменная, но я не знаю, за что она отвечает, поставил на рандоме lmao
Из-за этого, скорее всего и не сохраняется мой стак при повторном открытии
Помогите, шо и как преобразовать, я не могу допереть