From 7a18bed394626294a240477b0a5177b279171fd9 Mon Sep 17 00:00:00 2001 From: asdflj <854865755@qq.com> Date: Thu, 17 Nov 2022 09:47:50 +0800 Subject: [PATCH] fluid packet decoder add slot restricted input --- .../ContainerFluidPacketDecoder.java | 6 +++-- .../github/common/item/ItemFluidPacket.java | 4 ++++ .../common/tile/TileFluidPacketDecoder.java | 2 +- .../inventory/slot/FCSlotRestrictedInput.java | 23 +++++++++++++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/glodblock/github/inventory/slot/FCSlotRestrictedInput.java diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPacketDecoder.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPacketDecoder.java index 94adedee..39c14c12 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPacketDecoder.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPacketDecoder.java @@ -1,15 +1,17 @@ package com.glodblock.github.client.gui.container; import appeng.container.AEBaseContainer; -import appeng.container.slot.SlotNormal; import com.glodblock.github.common.tile.TileFluidPacketDecoder; +import com.glodblock.github.inventory.slot.FCSlotRestrictedInput; import net.minecraft.entity.player.InventoryPlayer; +import static com.glodblock.github.loader.ItemAndBlockHolder.PACKET; + public class ContainerFluidPacketDecoder extends AEBaseContainer { public ContainerFluidPacketDecoder(InventoryPlayer ipl, TileFluidPacketDecoder tile) { super(ipl, tile); - addSlotToContainer(new SlotNormal(tile.getInventory(), 0, 80, 35)); + addSlotToContainer(new FCSlotRestrictedInput(PACKET.stack(), tile.getInventory(), 0, 80, 35, ipl)); bindPlayerInventory(ipl, 0, 84); } diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidPacket.java b/src/main/java/com/glodblock/github/common/item/ItemFluidPacket.java index 7cd67416..42c7065b 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidPacket.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidPacket.java @@ -136,4 +136,8 @@ public class ItemFluidPacket extends Item { GameRegistry.registerItem(this, NameConst.ITEM_FLUID_PACKET, FluidCraft.MODID); return this; } + + public ItemStack stack() { + return new ItemStack(this, 1); + } } diff --git a/src/main/java/com/glodblock/github/common/tile/TileFluidPacketDecoder.java b/src/main/java/com/glodblock/github/common/tile/TileFluidPacketDecoder.java index b423e26c..897e76af 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileFluidPacketDecoder.java +++ b/src/main/java/com/glodblock/github/common/tile/TileFluidPacketDecoder.java @@ -158,6 +158,6 @@ public class TileFluidPacketDecoder extends AENetworkTile implements IGridTickab @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { - return inventory.isItemValidForSlot(slot, stack); + return stack.getItem() instanceof ItemFluidPacket; } } diff --git a/src/main/java/com/glodblock/github/inventory/slot/FCSlotRestrictedInput.java b/src/main/java/com/glodblock/github/inventory/slot/FCSlotRestrictedInput.java new file mode 100644 index 00000000..26c066dd --- /dev/null +++ b/src/main/java/com/glodblock/github/inventory/slot/FCSlotRestrictedInput.java @@ -0,0 +1,23 @@ +package com.glodblock.github.inventory.slot; + +import appeng.container.slot.SlotRestrictedInput; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +public class FCSlotRestrictedInput extends SlotRestrictedInput { + private ItemStack valid; + + public FCSlotRestrictedInput(ItemStack valid, IInventory i, int slotIndex, int x, int y, InventoryPlayer p) { + super(PlacableItemType.INSCRIBER_PLATE, i, slotIndex, x, y, p); + this.valid = valid; + } + + @Override + public boolean isItemValid(final ItemStack i) { + if (i.getItem().getClass().isAssignableFrom(valid.getItem().getClass())) { + return true; + } + return false; + } +}