diff options
| author | BlueWeabo <ilia.iliev2005@gmail.com> | 2023-02-08 07:07:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-07 21:07:27 -0800 |
| commit | 2556dfb92a7c7c73a72caa7d72129cef47b017ea (patch) | |
| tree | fd1a90d04e5b64ca5eb6a7434bdd5e0f6c04e952 /src/main/java/gregtech/api/multitileentity/multiblock/casing | |
| parent | 6ea8fe534145b64866e4da79816b25262174d16f (diff) | |
| download | GT5-Unofficial-2556dfb92a7c7c73a72caa7d72129cef47b017ea.tar.gz GT5-Unofficial-2556dfb92a7c7c73a72caa7d72129cef47b017ea.tar.bz2 GT5-Unofficial-2556dfb92a7c7c73a72caa7d72129cef47b017ea.zip | |
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 <mitchej+github@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity/multiblock/casing')
3 files changed, 137 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/casing/AdvancedCasing.java b/src/main/java/gregtech/api/multitileentity/multiblock/casing/AdvancedCasing.java new file mode 100644 index 0000000000..704cf9eb45 --- /dev/null +++ b/src/main/java/gregtech/api/multitileentity/multiblock/casing/AdvancedCasing.java @@ -0,0 +1,36 @@ +package gregtech.api.multitileentity.multiblock.casing; + +import net.minecraft.nbt.NBTTagCompound; + +import gregtech.api.enums.GT_Values; +import gregtech.api.multitileentity.interfaces.IMultiBlockController; +import gregtech.api.multitileentity.multiblock.base.MultiBlockPart; + +public abstract class AdvancedCasing extends MultiBlockPart { + + protected int mTier = 0; + + @Override + public int getPartTier() { + return mTier; + } + + @Override + public void setTarget(IMultiBlockController aTarget, int aAllowedModes) { + super.setTarget(aTarget, aAllowedModes); + if (mTarget != null) customWork(mTarget); + } + + @Override + public void readMultiTileNBT(NBTTagCompound aNBT) { + super.readMultiTileNBT(aNBT); + mTier = aNBT.getInteger(GT_Values.NBT.TIER); + } + + @Override + public void writeMultiTileNBT(NBTTagCompound aNBT) { + super.writeMultiTileNBT(aNBT); + } + + protected abstract void customWork(IMultiBlockController aTarget); +} diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/casing/BasicCasing.java b/src/main/java/gregtech/api/multitileentity/multiblock/casing/BasicCasing.java new file mode 100644 index 0000000000..84f1442a88 --- /dev/null +++ b/src/main/java/gregtech/api/multitileentity/multiblock/casing/BasicCasing.java @@ -0,0 +1,7 @@ +package gregtech.api.multitileentity.multiblock.casing; + +import gregtech.api.multitileentity.multiblock.base.MultiBlockPart; + +public class BasicCasing extends MultiBlockPart { + /* Nothing */ +} diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/casing/InventoryUpgrade.java b/src/main/java/gregtech/api/multitileentity/multiblock/casing/InventoryUpgrade.java new file mode 100644 index 0000000000..a0043bdf39 --- /dev/null +++ b/src/main/java/gregtech/api/multitileentity/multiblock/casing/InventoryUpgrade.java @@ -0,0 +1,94 @@ +package gregtech.api.multitileentity.multiblock.casing; + +import java.util.UUID; + +import net.minecraft.nbt.NBTTagCompound; + +import com.gtnewhorizons.modularui.api.screen.ModularWindow.Builder; +import com.gtnewhorizons.modularui.api.screen.UIBuildContext; +import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget; + +import gregtech.api.enums.GT_Values.NBT; +import gregtech.api.multitileentity.interfaces.IMultiBlockController; + +public class InventoryUpgrade extends AdvancedCasing { + + public UUID mInventoryID; + public static final int INPUT = 0; + public static final int OUTPUT = 1; + public static final int BOTH = 2; + private String mInventoryName = "inventory"; + private int mInventorySize; + private int mType = BOTH; + + public String getInventoryName() { + return mInventoryName; + } + + public void setInventoryName(String aInventoryName) { + mInventoryName = aInventoryName; + } + + @Override + protected void customWork(IMultiBlockController aTarget) { + int tInvSize = mInventorySize; + if (mType == BOTH) { + tInvSize /= 2; + } + aTarget.registerInventory(mInventoryName, mInventoryID.toString(), tInvSize, mType); + } + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.inventory"; + } + + @Override + public void readMultiTileNBT(NBTTagCompound aNBT) { + super.readMultiTileNBT(aNBT); + if (aNBT.hasKey(NBT.UPGRADE_INVENTORY_UUID)) { + mInventoryID = UUID.fromString(aNBT.getString(NBT.UPGRADE_INVENTORY_UUID)); + } else { + mInventoryID = UUID.randomUUID(); + } + mInventorySize = aNBT.getInteger(NBT.UPGRADE_INVENTORY_SIZE); + mInventoryName = aNBT.getString(NBT.UPGRADE_INVENTORY_NAME); + + } + + @Override + public void writeMultiTileNBT(NBTTagCompound aNBT) { + super.writeMultiTileNBT(aNBT); + aNBT.setString(NBT.UPGRADE_INVENTORY_UUID, mInventoryID.toString()); + aNBT.setString(NBT.UPGRADE_INVENTORY_NAME, mInventoryName); + } + + @Override + protected void onBaseTEDestroyed() { + super.onBaseTEDestroyed(); + unregisterInventories(); + } + + private void unregisterInventories() { + final IMultiBlockController controller = getTarget(false); + if (controller != null) { + controller.unregisterInventory(mInventoryName, mInventoryID.toString(), mType); + } + } + + @Override + public boolean hasGui(byte aSide) { + return true; + } + + @Override + public void addUIWidgets(Builder builder, UIBuildContext buildContext) { + builder.widget(new TextFieldWidget().setGetter(() -> mInventoryName).setSetter((val) -> { + mInventoryName = val; + final IMultiBlockController controller = getTarget(false); + if (controller != null) { + controller.changeInventoryName(mInventoryName, mInventoryID.toString(), mType); + } + }).setSize(100, 25).setPos(50, 30)); + } +} |
