From fdde96ab6fef30064b67e28390008ee4ba455655 Mon Sep 17 00:00:00 2001 From: Maxim Date: Sat, 22 Apr 2023 17:38:49 +0200 Subject: MuTE overhaul and ACR (#1883) * complex controller start * Added methods to get input fluids and items * Added logic to complex parallel mute * Added ACR and fixed many, many, many, many bugs * Added void protection setting to checkRecipe * do not init nbt, if mteID and mteRegistry are the same * Improved GUI design * Force structure check when pressing power switch * ACR Textures * Added T1 structure * Added perfect OC * Added WAILA * fix mutes resetting their nbt * Fix ACR GUI * fix npe * Added void protection for MuTEs * Fixed ACR starting recipe while another one is ongoing * nbt saving * maybe fix structure breaking * Fix complex machine disabling on startup * correctly update input tanks * move casings over * Changed logic of casings to change mode and facing in one go by sneaking * Fixed the casing target not resetting * Added side only annotations * don't leave it empty * Added power logic and tiered blocks to ACR * Change facing to wrench side if casing mode is currently none * lasers anyone? * Added ACR item chaining * Remove unncessary item lists * Use HashSet for process whitelists * Optimize list capacities * Fix potential recipe voiding bug * Rename methods for consistancy * Fix NPE * Duct tape fix structure check * allow MuTEs to connect to cables * Added separate tank inventories for input separation (#1887) * Fixed unregistering tank function * Fixed input busses not being automatable * Added fluid chaining * Fixed saving of input tanks * Forbid inventory registering with empty name * Display all input tanks in controller GUI * Fixed fluid hatch GUI height * Reset casing lists when checking the structure * Make inventory GUI size consistant * Make use of the tooltip cache * rename thing clean up * Forgot to put tooltip into map * Added tooltip to ACR * Reset whitelists when one whitelist window was opened * Refined scanner string * Fixed progress times * Fixed MuTE not consuming fluids * Properly register controller inventories * switch to ForgeDirection * switch to new Renderer * Added missing contains check on registerInventory * Fixed output tanks not registering * Fixed upgrade tank loading * fix machines not having active/inactive textures * fix overlays not loading correctly * Don't register controller directly * Remove magic strings all * fix active not setting to inactive * allow glow * item renderer * fix glow * MuTE improved hatch GUI and fluid output locking (#1889) * Allow output hatches to be fluid locked * Reworked hatch GUI * Check target before trying to open GUI * Make ACR GUI easier to look at * fix covers not rendering on mutes * fix covers not displaying above the item/fluid in/out * new folder texture structure * Reduce network traffic caused by covers * Fixed WAILA fluid locking display * Don't save everything to the itemstack NBT * Added possibility to save NBT of MuTE to its itemstack * fix textures, but make sacrifices * mah textures * Removed the need for all textures to be present * Added glow texture for active coke oven * Removed unncesssary upgrade casing textures * shorten nbt tags --------- Co-authored-by: BlueWeabo <76872108+BlueWeabo@users.noreply.github.com> Co-authored-by: Martin Robertz Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../tileentities/casings/functional/Conveyor.java | 16 +++ .../tileentities/casings/functional/Emitter.java | 16 +++ .../casings/functional/FieldGenerator.java | 16 +++ .../tileentities/casings/functional/Motor.java | 16 +++ .../casings/functional/MotorCasing.java | 11 --- .../tileentities/casings/functional/Piston.java | 16 +++ .../tileentities/casings/functional/Pump.java | 16 +++ .../tileentities/casings/functional/RobotArm.java | 16 +++ .../tileentities/casings/functional/Sensor.java | 16 +++ .../tileentities/casings/upgrade/Inventory.java | 108 +++++++++++++++++++++ .../casings/upgrade/InventoryUpgrade.java | 108 --------------------- 11 files changed, 236 insertions(+), 119 deletions(-) create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/Conveyor.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/Emitter.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/FieldGenerator.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/Motor.java delete mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/MotorCasing.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/Piston.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/Pump.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/RobotArm.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/functional/Sensor.java create mode 100644 src/main/java/gregtech/common/tileentities/casings/upgrade/Inventory.java delete mode 100644 src/main/java/gregtech/common/tileentities/casings/upgrade/InventoryUpgrade.java (limited to 'src/main/java/gregtech/common/tileentities/casings') diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/Conveyor.java b/src/main/java/gregtech/common/tileentities/casings/functional/Conveyor.java new file mode 100644 index 0000000000..31dea4cf38 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/Conveyor.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class Conveyor extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.conveyor"; + } + + @Override + public float getPartModifier() { + return 1.1f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/Emitter.java b/src/main/java/gregtech/common/tileentities/casings/functional/Emitter.java new file mode 100644 index 0000000000..cce660ace4 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/Emitter.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class Emitter extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.emitter"; + } + + @Override + public float getPartModifier() { + return 1.3f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/FieldGenerator.java b/src/main/java/gregtech/common/tileentities/casings/functional/FieldGenerator.java new file mode 100644 index 0000000000..3787d45af8 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/FieldGenerator.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class FieldGenerator extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.field.generator"; + } + + @Override + public float getPartModifier() { + return 2f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/Motor.java b/src/main/java/gregtech/common/tileentities/casings/functional/Motor.java new file mode 100644 index 0000000000..cddb293cc2 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/Motor.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class Motor extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.motor"; + } + + @Override + public float getPartModifier() { + return 1; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/MotorCasing.java b/src/main/java/gregtech/common/tileentities/casings/functional/MotorCasing.java deleted file mode 100644 index 32a53d418a..0000000000 --- a/src/main/java/gregtech/common/tileentities/casings/functional/MotorCasing.java +++ /dev/null @@ -1,11 +0,0 @@ -package gregtech.common.tileentities.casings.functional; - -import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; - -public class MotorCasing extends FunctionalCasing { - - @Override - public String getTileEntityName() { - return "gt.multitileentity.multiblock.functional.motor"; - } -} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/Piston.java b/src/main/java/gregtech/common/tileentities/casings/functional/Piston.java new file mode 100644 index 0000000000..2255fbf8a2 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/Piston.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class Piston extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.piston"; + } + + @Override + public float getPartModifier() { + return 1.1f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/Pump.java b/src/main/java/gregtech/common/tileentities/casings/functional/Pump.java new file mode 100644 index 0000000000..3acddbe9dc --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/Pump.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class Pump extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.pump"; + } + + @Override + public float getPartModifier() { + return 1.1f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/RobotArm.java b/src/main/java/gregtech/common/tileentities/casings/functional/RobotArm.java new file mode 100644 index 0000000000..2273705397 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/RobotArm.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class RobotArm extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.robot.arm"; + } + + @Override + public float getPartModifier() { + return 1.5f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/functional/Sensor.java b/src/main/java/gregtech/common/tileentities/casings/functional/Sensor.java new file mode 100644 index 0000000000..e88060e902 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/functional/Sensor.java @@ -0,0 +1,16 @@ +package gregtech.common.tileentities.casings.functional; + +import gregtech.api.multitileentity.multiblock.casing.FunctionalCasing; + +public class Sensor extends FunctionalCasing { + + @Override + public String getTileEntityName() { + return "gt.multitileentity.multiblock.functional.sensor"; + } + + @Override + public float getPartModifier() { + return 1.3f; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/upgrade/Inventory.java b/src/main/java/gregtech/common/tileentities/casings/upgrade/Inventory.java new file mode 100644 index 0000000000..c153e6c1c5 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/casings/upgrade/Inventory.java @@ -0,0 +1,108 @@ +package gregtech.common.tileentities.casings.upgrade; + +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; +import gregtech.api.multitileentity.multiblock.casing.UpgradeCasing; +import gregtech.api.net.GT_Packet_MultiTileEntity; + +public class Inventory extends UpgradeCasing { + + 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)); + } + + @Override + public GT_Packet_MultiTileEntity getClientDataPacket() { + final GT_Packet_MultiTileEntity packet = super.getClientDataPacket(); + String name = getInventoryName(); + packet.setInventoryName(name); + return packet; + } +} diff --git a/src/main/java/gregtech/common/tileentities/casings/upgrade/InventoryUpgrade.java b/src/main/java/gregtech/common/tileentities/casings/upgrade/InventoryUpgrade.java deleted file mode 100644 index 06bb75c62f..0000000000 --- a/src/main/java/gregtech/common/tileentities/casings/upgrade/InventoryUpgrade.java +++ /dev/null @@ -1,108 +0,0 @@ -package gregtech.common.tileentities.casings.upgrade; - -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; -import gregtech.api.multitileentity.multiblock.casing.UpgradeCasing; -import gregtech.api.net.GT_Packet_MultiTileEntity; - -public class InventoryUpgrade extends UpgradeCasing { - - 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)); - } - - @Override - public GT_Packet_MultiTileEntity getClientDataPacket() { - final GT_Packet_MultiTileEntity packet = super.getClientDataPacket(); - String name = getInventoryName(); - packet.setInventoryName(name); - return packet; - } -} -- cgit