From 2556dfb92a7c7c73a72caa7d72129cef47b017ea Mon Sep 17 00:00:00 2001 From: BlueWeabo Date: Wed, 8 Feb 2023 07:07:27 +0200 Subject: Mte inventory block (#1692) MTE Inventory Upgrade * inventories saved to nbt in controller * bump up ModularUI to fix labels * inventory renaming * fix inventories not syncing * more nbt saving and loading * unregister inventory on block break * example of a block being made from the same class * clear UpgradeCasing list every structure check * fix inventory halving to 0 * sync inventory name for upgrade block * switch to its own method of sending client data --------- Co-authored-by: Jason Mitchell --- .../machine/MultiTileBasicMachine.java | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'src/main/java/gregtech/api/multitileentity/machine') diff --git a/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java b/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java index b3605d579b..3739854893 100644 --- a/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java +++ b/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java @@ -29,6 +29,8 @@ import gregtech.api.util.GT_Utility; public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { + protected static final IItemHandlerModifiable EMPTY_INVENTORY = new ItemStackHandler(0); + private static final String TEXTURE_LOCATION = "multitileentity/machines/"; public IIconContainer[] mTexturesInactive = emptyIconContainerArray; public IIconContainer[] mTexturesActive = emptyIconContainerArray; @@ -39,8 +41,8 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { protected FluidTankGT[] mTanksInput = GT_Values.emptyFluidTankGT, mTanksOutput = GT_Values.emptyFluidTankGT; protected FluidStack[] mOutputFluids = GT_Values.emptyFluidStack; - protected final IItemHandlerModifiable mInputInventory = new ItemStackHandler(17); - protected final IItemHandlerModifiable mOutputInventory = new ItemStackHandler(15); + protected IItemHandlerModifiable mInputInventory = EMPTY_INVENTORY; + protected IItemHandlerModifiable mOutputInventory = EMPTY_INVENTORY; protected boolean mOutputInventoryChanged = false; @Override @@ -99,8 +101,10 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { if (aNBT.hasKey(NBT.ACTIVE)) mActive = aNBT.getBoolean(NBT.ACTIVE); /* Inventories */ - loadInventory(aNBT, NBT.INV_INPUT_SIZE, NBT.INV_INPUT_LIST); - loadInventory(aNBT, NBT.INV_OUTPUT_SIZE, NBT.INV_OUTPUT_LIST); + mInputInventory = new ItemStackHandler(Math.max(aNBT.getInteger(NBT.INV_INPUT_SIZE), 0)); + mOutputInventory = new ItemStackHandler(Math.max(aNBT.getInteger(NBT.INV_OUTPUT_SIZE), 0)); + loadInventory(aNBT, mInputInventory, NBT.INV_INPUT_LIST); + loadInventory(aNBT, mOutputInventory, NBT.INV_OUTPUT_LIST); /* Tanks */ long tCapacity = 1000; @@ -120,15 +124,12 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { mOutputFluids[i] = FluidStack.loadFluidStackFromNBT(aNBT.getCompoundTag(NBT.FLUID_OUT + "." + i)); } - protected void loadInventory(NBTTagCompound aNBT, String sizeTag, String invListTag) { - final IItemHandlerModifiable inv = mInputInventory; - if (inv != null) { - final NBTTagList tList = aNBT.getTagList(invListTag, 10); - for (int i = 0; i < tList.tagCount(); i++) { - final NBTTagCompound tNBT = tList.getCompoundTagAt(i); - final int tSlot = tNBT.getShort("s"); - if (tSlot >= 0 && tSlot < inv.getSlots()) inv.setStackInSlot(tSlot, GT_Utility.loadItem(tNBT)); - } + protected void loadInventory(NBTTagCompound aNBT, IItemHandlerModifiable inv, String invListTag) { + final NBTTagList tList = aNBT.getTagList(invListTag, 10); + for (int i = 0; i < tList.tagCount(); i++) { + final NBTTagCompound tNBT = tList.getCompoundTagAt(i); + final int tSlot = tNBT.getShort("s"); + if (tSlot >= 0 && tSlot < inv.getSlots()) inv.setStackInSlot(tSlot, GT_Utility.loadItem(tNBT)); } } -- cgit