From 4d5af85215069dd0c8053e89510c88daa43c278d Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Fri, 18 Dec 2015 12:31:37 +0100 Subject: [PATCH] make the specimen slot work and some small improvements --- .../container/ContainerDrive.java | 2 +- .../container/ContainerImporter.java | 2 +- .../storagecraft/container/ContainerSC.java | 18 ++++++++++ .../slot/SlotItemFilter.java | 2 +- .../container/slot/SlotSpecimen.java | 31 +++++++++++++++++ .../java/storagecraft/gui/GuiImporter.java | 33 ++++++++++++------- .../inventory/slot/SlotSpecimen.java | 11 ------- .../java/storagecraft/tile/TileImporter.java | 1 + 8 files changed, 74 insertions(+), 26 deletions(-) rename src/main/java/storagecraft/{inventory => container}/slot/SlotItemFilter.java (88%) create mode 100644 src/main/java/storagecraft/container/slot/SlotSpecimen.java delete mode 100644 src/main/java/storagecraft/inventory/slot/SlotSpecimen.java diff --git a/src/main/java/storagecraft/container/ContainerDrive.java b/src/main/java/storagecraft/container/ContainerDrive.java index f1d9bd255..85df5cfb1 100644 --- a/src/main/java/storagecraft/container/ContainerDrive.java +++ b/src/main/java/storagecraft/container/ContainerDrive.java @@ -2,7 +2,7 @@ package storagecraft.container; import net.minecraft.entity.player.EntityPlayer; import storagecraft.SCItems; -import storagecraft.inventory.slot.SlotItemFilter; +import storagecraft.container.slot.SlotItemFilter; import storagecraft.tile.TileDrive; public class ContainerDrive extends ContainerSC { diff --git a/src/main/java/storagecraft/container/ContainerImporter.java b/src/main/java/storagecraft/container/ContainerImporter.java index 4f1774549..ec9bb26d1 100644 --- a/src/main/java/storagecraft/container/ContainerImporter.java +++ b/src/main/java/storagecraft/container/ContainerImporter.java @@ -1,7 +1,7 @@ package storagecraft.container; import net.minecraft.entity.player.EntityPlayer; -import storagecraft.inventory.slot.SlotSpecimen; +import storagecraft.container.slot.SlotSpecimen; import storagecraft.tile.TileImporter; public class ContainerImporter extends ContainerSC { diff --git a/src/main/java/storagecraft/container/ContainerSC.java b/src/main/java/storagecraft/container/ContainerSC.java index 49d77df0b..dcca9eada 100644 --- a/src/main/java/storagecraft/container/ContainerSC.java +++ b/src/main/java/storagecraft/container/ContainerSC.java @@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import storagecraft.container.slot.SlotSpecimen; public class ContainerSC extends Container { private EntityPlayer player; @@ -34,6 +35,23 @@ public class ContainerSC extends Container { } } + @Override + public ItemStack slotClick(int id, int clickedButton, int mode, EntityPlayer player) { + Slot slot = id >= 0 ? getSlot(id) : null; + + if (slot instanceof SlotSpecimen) { + if (clickedButton == 2) { + slot.putStack(null); + } else { + slot.putStack(player.inventory.getItemStack() == null ? null : player.inventory.getItemStack().copy()); + } + + return player.inventory.getItemStack(); + } + + return super.slotClick(id, clickedButton, mode, player); + } + @Override public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { return null; diff --git a/src/main/java/storagecraft/inventory/slot/SlotItemFilter.java b/src/main/java/storagecraft/container/slot/SlotItemFilter.java similarity index 88% rename from src/main/java/storagecraft/inventory/slot/SlotItemFilter.java rename to src/main/java/storagecraft/container/slot/SlotItemFilter.java index 49a109e06..66543917c 100644 --- a/src/main/java/storagecraft/inventory/slot/SlotItemFilter.java +++ b/src/main/java/storagecraft/container/slot/SlotItemFilter.java @@ -1,4 +1,4 @@ -package storagecraft.inventory.slot; +package storagecraft.container.slot; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; diff --git a/src/main/java/storagecraft/container/slot/SlotSpecimen.java b/src/main/java/storagecraft/container/slot/SlotSpecimen.java new file mode 100644 index 000000000..93a5bd704 --- /dev/null +++ b/src/main/java/storagecraft/container/slot/SlotSpecimen.java @@ -0,0 +1,31 @@ +package storagecraft.container.slot; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotSpecimen extends Slot { + public SlotSpecimen(IInventory inventory, int id, int x, int y) { + super(inventory, id, x, y); + } + + @Override + public boolean canTakeStack(EntityPlayer player) { + return false; + } + + @Override + public boolean isItemValid(ItemStack stack) { + return true; + } + + @Override + public void putStack(ItemStack stack) { + if (stack != null) { + stack.stackSize = 1; + } + + super.putStack(stack); + } +} diff --git a/src/main/java/storagecraft/gui/GuiImporter.java b/src/main/java/storagecraft/gui/GuiImporter.java index da60d2c19..b2bc9bfa5 100644 --- a/src/main/java/storagecraft/gui/GuiImporter.java +++ b/src/main/java/storagecraft/gui/GuiImporter.java @@ -47,11 +47,23 @@ public class GuiImporter extends GuiContainer { compareFlags = importer.getCompareFlags(); - compareNBT.displayString = StatCollector.translateToLocal("misc.storagecraft:compareNBT") + ": "; - compareNBT.displayString += ((compareFlags & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT) ? StatCollector.translateToLocal("misc.storagecraft:on") : StatCollector.translateToLocal("misc.storagecraft:off"); + compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT); + compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE); + } - compareDamage.displayString = StatCollector.translateToLocal("misc.storagecraft:compareDamage") + ": "; - compareDamage.displayString += ((compareFlags & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE) ? StatCollector.translateToLocal("misc.storagecraft:on") : StatCollector.translateToLocal("misc.storagecraft:off"); + private String getTextForCompareToggle(String which, int flag) { + StringBuilder builder = new StringBuilder(); + + builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which)); + builder.append(": "); + + if ((compareFlags & flag) == flag) { + builder.append(StatCollector.translateToLocal("misc.storagecraft:on")); + } else { + builder.append(StatCollector.translateToLocal("misc.storagecraft:off")); + } + + return builder.toString(); } @Override @@ -66,20 +78,17 @@ public class GuiImporter extends GuiContainer { @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 87, 4210752); + fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 89, 4210752); } @Override protected void actionPerformed(GuiButton button) { int flags = compareFlags; - switch (button.id) { - case 0: - flags ^= InventoryUtils.COMPARE_NBT; - break; - case 1: - flags ^= InventoryUtils.COMPARE_DAMAGE; - break; + if (button.id == compareNBT.id) { + flags ^= InventoryUtils.COMPARE_NBT; + } else if (button.id == compareDamage.id) { + flags ^= InventoryUtils.COMPARE_DAMAGE; } SC.NETWORK.sendToServer(new MessageImporterUpdate(importer.xCoord, importer.yCoord, importer.zCoord, flags)); diff --git a/src/main/java/storagecraft/inventory/slot/SlotSpecimen.java b/src/main/java/storagecraft/inventory/slot/SlotSpecimen.java deleted file mode 100644 index 493e1f105..000000000 --- a/src/main/java/storagecraft/inventory/slot/SlotSpecimen.java +++ /dev/null @@ -1,11 +0,0 @@ -package storagecraft.inventory.slot; - -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; - -// @TODO: Correct behaviour -public class SlotSpecimen extends Slot { - public SlotSpecimen(IInventory inventory, int id, int x, int y) { - super(inventory, id, x, y); - } -} diff --git a/src/main/java/storagecraft/tile/TileImporter.java b/src/main/java/storagecraft/tile/TileImporter.java index e5aaf4d25..e51794820 100644 --- a/src/main/java/storagecraft/tile/TileImporter.java +++ b/src/main/java/storagecraft/tile/TileImporter.java @@ -40,6 +40,7 @@ public class TileImporter extends TileMachine implements IInventory { if (slot != null && canImport(slot)) { if (getController().push(slot.copy())) { connectedInventory.setInventorySlotContents(currentSlot, null); + connectedInventory.markDirty(); } }