From 4860972befe5b1f8df2a1c214c6a43e750162308 Mon Sep 17 00:00:00 2001 From: 0xSeb Date: Mon, 2 Nov 2015 22:29:08 +0100 Subject: [PATCH] Added InventoryManager. New supported GUI in about 10 minutes. Yes, adding new GUIs IS fun :D --- .../skate702/craftingkeys/CraftingKeys.java | 5 +- .../manager/InventoryManager.java | 72 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java diff --git a/src/main/java/de/skate702/craftingkeys/CraftingKeys.java b/src/main/java/de/skate702/craftingkeys/CraftingKeys.java index 6304cf7..aedd569 100644 --- a/src/main/java/de/skate702/craftingkeys/CraftingKeys.java +++ b/src/main/java/de/skate702/craftingkeys/CraftingKeys.java @@ -15,6 +15,7 @@ import de.skate702.craftingkeys.config.Config; import de.skate702.craftingkeys.manager.ContainerManager; import de.skate702.craftingkeys.manager.CraftingManager; import de.skate702.craftingkeys.manager.FurnaceManager; +import de.skate702.craftingkeys.manager.InventoryManager; import de.skate702.craftingkeys.proxies.CraftingKeysProxy; import de.skate702.craftingkeys.util.Logger; import de.skate702.craftingkeys.util.Util; @@ -114,7 +115,9 @@ public class CraftingKeys { } else if (currentScreen instanceof GuiInventory) { - Logger.warn("onTick()", "Inventory not implemented"); + ContainerManager con = InventoryManager.getInstance( + ((GuiInventory) currentScreen).inventorySlots); + con.acceptKey(); } else if (currentScreen instanceof GuiMerchant) { diff --git a/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java b/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java new file mode 100644 index 0000000..c6f600e --- /dev/null +++ b/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java @@ -0,0 +1,72 @@ +package de.skate702.craftingkeys.manager; + +import de.skate702.craftingkeys.util.Logger; +import net.minecraft.inventory.Container; + +/** + * Manages a Inventory GUI Inventory. + */ +public class InventoryManager extends ContainerManager { + + private static InventoryManager instance = null; + + /** + * Creates a new Crafting Manager with the given container. + * + * @param container The container from a crafting GUI + */ + private InventoryManager(Container container) { + super(container); + } + + /** + * Returns a Crafting Manager Instance operating on the given container + * + * @param container A container from a GUI + * @return manager-singleton + */ + public static InventoryManager getInstance(Container container) { + if (instance == null) { + instance = new InventoryManager(container); + } else { + instance.container = container; + } + return instance; + } + + @Override + protected int specificKeyToSlotIndex() { + + return mapKeyToSlot(-1, 1, 2, -1, 3, 4, -1, -1, -1); + } + + @Override + protected int getInventoryStartIndex() { + return 9; + } + + @Override + protected int getInteractionSlotIndex() { + return 0; + } + + @Override + protected int[] getDropSlots() { + return new int[]{1, 2, 3, 4}; + } + + @Override + protected void interact() { + clickOnCraftingOutput(); + } + + /** + * Sends a click on the crafting output + */ + private void clickOnCraftingOutput() { + + Logger.info("clickOnCraftingOutput()", "Clicked on Crafing Output."); + leftClick(0); + + } +}