From 77f5016dd0e198724a31a77e334ca069199eacdb Mon Sep 17 00:00:00 2001 From: repo-alt Date: Fri, 19 Aug 2022 19:22:17 +0300 Subject: ME input bus, gives the multiblock direct access to the 16 selected item types (#1271) * ME input bus, gives the multiblock direct access to the 16 selected item types * Reworked GUI to match the normal interface * Don't need to duplicate shadow slots Sync can (better) be done in `endRecipeProcessing`, in case some multi doesn't call `updateSlots` or does it at the wrong time * Clarify name, to distinguish from the (future) Buffering and Crafting buses * Make the GUI 4x4 again * Make the 4x4 GUI actually work * Make ghost item show item amount * Remove unimplemented code remnants Co-authored-by: Sampsa --- .../net/GT_Packet_SetConfigurationCircuit_Bus.java | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/main/java/gregtech/api/net/GT_Packet_SetConfigurationCircuit_Bus.java (limited to 'src/main/java/gregtech/api/net') diff --git a/src/main/java/gregtech/api/net/GT_Packet_SetConfigurationCircuit_Bus.java b/src/main/java/gregtech/api/net/GT_Packet_SetConfigurationCircuit_Bus.java new file mode 100644 index 0000000000..06344f1656 --- /dev/null +++ b/src/main/java/gregtech/api/net/GT_Packet_SetConfigurationCircuit_Bus.java @@ -0,0 +1,61 @@ +package gregtech.api.net; + +import com.google.common.io.ByteArrayDataInput; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import net.minecraftforge.common.DimensionManager; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import gregtech.common.gui.GT_Container_InputBus_ME; + +public class GT_Packet_SetConfigurationCircuit_Bus extends GT_Packet_SetConfigurationCircuit { + public GT_Packet_SetConfigurationCircuit_Bus() { + super(); + } + + public GT_Packet_SetConfigurationCircuit_Bus(IGregTechTileEntity tile, ItemStack circuit) { + super(tile, circuit); + } + + public GT_Packet_SetConfigurationCircuit_Bus(int x, short y, int z, ItemStack circuit) { + super(x, y, z, circuit); + } + + @Override + public byte getPacketID() { + return 18; + } + @Override + public void process(IBlockAccess aWorld) { + World world = DimensionManager.getWorld(dimId); + if (world == null) return; + TileEntity tile = world.getTileEntity(mX, mY, mZ); + if (!(tile instanceof IGregTechTileEntity) || ((IGregTechTileEntity) tile).isDead()) + return; + IMetaTileEntity mte = ((IGregTechTileEntity) tile).getMetaTileEntity(); + if (!(mte instanceof GT_MetaTileEntity_Hatch)) return; + GT_MetaTileEntity_Hatch hatch = (GT_MetaTileEntity_Hatch) mte; + GregTech_API.getConfigurationCircuitList(hatch.mTier).stream() + .filter(stack -> GT_Utility.areStacksEqual(stack, circuit)) + .findFirst() + .ifPresent(stack -> ((IGregTechTileEntity) tile).setInventorySlotContents(hatch.getCircuitSlot(), stack)); + } + + @Override + public GT_Packet_New decode(ByteArrayDataInput aData) { + return new GT_Packet_SetConfigurationCircuit_Bus( + aData.readInt(), + aData.readShort(), + aData.readInt(), + ISerializableObject.readItemStackFromGreggyByteBuf(aData)); + } +} -- cgit