aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/multitileentity/multiblock/casing
diff options
context:
space:
mode:
authorBlueWeabo <ilia.iliev2005@gmail.com>2023-02-08 07:07:27 +0200
committerGitHub <noreply@github.com>2023-02-07 21:07:27 -0800
commit2556dfb92a7c7c73a72caa7d72129cef47b017ea (patch)
treefd1a90d04e5b64ca5eb6a7434bdd5e0f6c04e952 /src/main/java/gregtech/api/multitileentity/multiblock/casing
parent6ea8fe534145b64866e4da79816b25262174d16f (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/casing/AdvancedCasing.java36
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/casing/BasicCasing.java7
-rw-r--r--src/main/java/gregtech/api/multitileentity/multiblock/casing/InventoryUpgrade.java94
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));
+ }
+}