diff options
author | repo-alt <wvk17@yandex.ru> | 2022-08-19 19:22:17 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-19 18:22:17 +0200 |
commit | 77f5016dd0e198724a31a77e334ca069199eacdb (patch) | |
tree | 96a09fa4da882b04bffa504d63dea98f7a20bcc6 /src/main/java/gregtech/api/net | |
parent | 976c03c765e679cec496597255b1b5dd0fcd6a3e (diff) | |
download | GT5-Unofficial-77f5016dd0e198724a31a77e334ca069199eacdb.tar.gz GT5-Unofficial-77f5016dd0e198724a31a77e334ca069199eacdb.tar.bz2 GT5-Unofficial-77f5016dd0e198724a31a77e334ca069199eacdb.zip |
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 <sampo.vanninen@aalto.fi>
Diffstat (limited to 'src/main/java/gregtech/api/net')
-rw-r--r-- | src/main/java/gregtech/api/net/GT_Packet_SetConfigurationCircuit_Bus.java | 61 |
1 files changed, 61 insertions, 0 deletions
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)); + } +} |