From 3a73cef7b31711812653796cdd190487a461f026 Mon Sep 17 00:00:00 2001 From: 0xSeb Date: Tue, 3 Nov 2015 00:50:37 +0100 Subject: [PATCH] Added all GUIs. Nothing more to do here. Last step: New GUI. And then: Release! Finally =D --- README.md | 1 - .../skate702/craftingkeys/CraftingKeys.java | 24 ++++-- .../craftingkeys/config/ConfigGui.java | 1 + .../craftingkeys/config/ConfigGuiFactory.java | 1 + .../craftingkeys/config/GuiConfig.java | 6 ++ .../craftingkeys/manager/BrewingManager.java | 66 ++++++++++++++++ .../manager/DispenserManager.java | 66 ++++++++++++++++ .../manager/EnchantmentManager.java | 75 +++++++++++++++++++ .../craftingkeys/manager/FurnaceManager.java | 2 +- .../manager/InventoryManager.java | 4 +- .../craftingkeys/manager/VillagerManager.java | 72 ++++++++++++++++++ 11 files changed, 307 insertions(+), 11 deletions(-) create mode 100644 src/main/java/de/skate702/craftingkeys/config/GuiConfig.java create mode 100644 src/main/java/de/skate702/craftingkeys/manager/BrewingManager.java create mode 100644 src/main/java/de/skate702/craftingkeys/manager/DispenserManager.java create mode 100644 src/main/java/de/skate702/craftingkeys/manager/EnchantmentManager.java create mode 100644 src/main/java/de/skate702/craftingkeys/manager/VillagerManager.java diff --git a/README.md b/README.md index c40e8ce..4fe3681 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ Crafting Keys is a modification which adds a lot of new key bindings to minecraf ##Development Progress The whole project had been refactored and is now almost ready to be release. But there are missing a few things: -- Implementing all vanilla guis - Better, all new GUI ## More Information diff --git a/src/main/java/de/skate702/craftingkeys/CraftingKeys.java b/src/main/java/de/skate702/craftingkeys/CraftingKeys.java index aedd569..31d166d 100644 --- a/src/main/java/de/skate702/craftingkeys/CraftingKeys.java +++ b/src/main/java/de/skate702/craftingkeys/CraftingKeys.java @@ -12,13 +12,11 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; 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.manager.*; import de.skate702.craftingkeys.proxies.CraftingKeysProxy; import de.skate702.craftingkeys.util.Logger; import de.skate702.craftingkeys.util.Util; +import net.minecraft.client.gui.GuiEnchantment; import net.minecraft.client.gui.GuiMerchant; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.*; @@ -121,7 +119,9 @@ public class CraftingKeys { } else if (currentScreen instanceof GuiMerchant) { - Logger.warn("onTick()", "Villager not implemented"); + ContainerManager con = VillagerManager.getInstance( + ((GuiMerchant) currentScreen).inventorySlots); + con.acceptKey(); } else if (currentScreen instanceof GuiFurnace) { @@ -131,11 +131,21 @@ public class CraftingKeys { } else if (currentScreen instanceof GuiDispenser) { - Logger.warn("onTick()", "Dispenser not implemented"); + ContainerManager con = DispenserManager.getInstance( + ((GuiDispenser) currentScreen).inventorySlots); + con.acceptKey(); } else if (currentScreen instanceof GuiBrewingStand) { - Logger.warn("onTick()", "BrewingStand not implemented"); + ContainerManager con = BrewingManager.getInstance( + ((GuiBrewingStand) currentScreen).inventorySlots); + con.acceptKey(); + + } else if (currentScreen instanceof GuiEnchantment) { + + ContainerManager con = EnchantmentManager.getInstance( + ((GuiEnchantment) currentScreen).inventorySlots); + con.acceptKey(); } diff --git a/src/main/java/de/skate702/craftingkeys/config/ConfigGui.java b/src/main/java/de/skate702/craftingkeys/config/ConfigGui.java index 9f0fbc3..2a1d7fb 100644 --- a/src/main/java/de/skate702/craftingkeys/config/ConfigGui.java +++ b/src/main/java/de/skate702/craftingkeys/config/ConfigGui.java @@ -13,6 +13,7 @@ import java.util.List; /** * Custom Config Gui for Mod Options inside of Minecraft. */ +@Deprecated public class ConfigGui extends GuiConfig { public ConfigGui(GuiScreen parent) { super(parent, getConfigElements(), diff --git a/src/main/java/de/skate702/craftingkeys/config/ConfigGuiFactory.java b/src/main/java/de/skate702/craftingkeys/config/ConfigGuiFactory.java index 14ef266..1f48d52 100644 --- a/src/main/java/de/skate702/craftingkeys/config/ConfigGuiFactory.java +++ b/src/main/java/de/skate702/craftingkeys/config/ConfigGuiFactory.java @@ -9,6 +9,7 @@ import java.util.Set; /** * A Config Gui Factory which always returns the ConfigGUI-Class. Nothing more to see here, go away! */ +@Deprecated public class ConfigGuiFactory implements IModGuiFactory { @Override public void initialize(Minecraft minecraftInstance) { diff --git a/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java b/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java new file mode 100644 index 0000000..a647b2b --- /dev/null +++ b/src/main/java/de/skate702/craftingkeys/config/GuiConfig.java @@ -0,0 +1,6 @@ +package de.skate702.craftingkeys.config; + +import net.minecraft.client.gui.GuiScreen; + +public class GuiConfig extends GuiScreen { +} diff --git a/src/main/java/de/skate702/craftingkeys/manager/BrewingManager.java b/src/main/java/de/skate702/craftingkeys/manager/BrewingManager.java new file mode 100644 index 0000000..2530c5d --- /dev/null +++ b/src/main/java/de/skate702/craftingkeys/manager/BrewingManager.java @@ -0,0 +1,66 @@ +package de.skate702.craftingkeys.manager; + +import de.skate702.craftingkeys.util.Logger; +import net.minecraft.inventory.Container; + +/** + * Manages a Brewing Stand GUI Inventory. + */ +public class BrewingManager extends ContainerManager { + + private static BrewingManager instance = null; + + /** + * Creates a new Brewing Manager with the given container. + * + * @param container The container from a crafting GUI + */ + private BrewingManager(Container container) { + super(container); + } + + /** + * Returns a Brewing Manager Instance operating on the given container + * + * @param container A container from a GUI + * @return manager-singleton + */ + public static BrewingManager getInstance(Container container) { + if (instance == null) { + instance = new BrewingManager(container); + } else { + instance.container = container; + } + return instance; + } + + @Override + protected int specificKeyToSlotIndex() { + return mapKeyToSlot(-1, 3, -1, 0, 1, 2, -1, -1, -1); + } + + @Override + protected int getInventoryStartIndex() { + return 4; + } + + @Override + protected int getInteractionSlotIndex() { + return -1; + } + + @Override + protected void onInteractionKeyPressed() { + Logger.info("onInteractionKeyPressed()", "Brewing stands have no interaction!"); + } + + @Override + protected int[] getDropSlots() { + return new int[]{0, 1, 2, 3}; + } + + @Override + protected void interact() { + + } +} diff --git a/src/main/java/de/skate702/craftingkeys/manager/DispenserManager.java b/src/main/java/de/skate702/craftingkeys/manager/DispenserManager.java new file mode 100644 index 0000000..f835ed0 --- /dev/null +++ b/src/main/java/de/skate702/craftingkeys/manager/DispenserManager.java @@ -0,0 +1,66 @@ +package de.skate702.craftingkeys.manager; + +import de.skate702.craftingkeys.util.Logger; +import net.minecraft.inventory.Container; + +/** + * Manages a Dispenser GUI Inventory. + */ +public class DispenserManager extends ContainerManager { + + private static DispenserManager instance = null; + + /** + * Creates a new Dispenser Manager with the given container. + * + * @param container The container from a crafting GUI + */ + private DispenserManager(Container container) { + super(container); + } + + /** + * Returns a Dispenser Manager Instance operating on the given container + * + * @param container A container from a GUI + * @return manager-singleton + */ + public static DispenserManager getInstance(Container container) { + if (instance == null) { + instance = new DispenserManager(container); + } else { + instance.container = container; + } + return instance; + } + + @Override + protected int specificKeyToSlotIndex() { + return mapKeyToSlot(0, 1, 2, 3, 4, 5, 6, 7, 8); + } + + @Override + protected int getInventoryStartIndex() { + return 9; + } + + @Override + protected int getInteractionSlotIndex() { + return -1; + } + + @Override + protected void onInteractionKeyPressed() { + Logger.info("onInteractionKeyPressed()", "Dispenser have no interaction!"); + } + + @Override + protected int[] getDropSlots() { + return new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8}; + } + + @Override + protected void interact() { + + } +} diff --git a/src/main/java/de/skate702/craftingkeys/manager/EnchantmentManager.java b/src/main/java/de/skate702/craftingkeys/manager/EnchantmentManager.java new file mode 100644 index 0000000..f935337 --- /dev/null +++ b/src/main/java/de/skate702/craftingkeys/manager/EnchantmentManager.java @@ -0,0 +1,75 @@ +package de.skate702.craftingkeys.manager; + +import de.skate702.craftingkeys.util.Logger; +import net.minecraft.inventory.Container; + +/** + * Manages a Enchantment Table GUI Inventory. + */ +public class EnchantmentManager extends ContainerManager { + + private static EnchantmentManager instance = null; + + /** + * Creates a new Enchantment Manager with the given container. + * + * @param container The container from a crafting GUI + */ + private EnchantmentManager(Container container) { + super(container); + } + + /** + * Returns a Enchantment Manager Instance operating on the given container + * + * @param container A container from a GUI + * @return manager-singleton + */ + public static EnchantmentManager getInstance(Container container) { + if (instance == null) { + instance = new EnchantmentManager(container); + } else { + instance.container = container; + } + return instance; + } + + @Override + protected int specificKeyToSlotIndex() { + return mapKeyToSlot(-1, 0, -1, -1, 0, -1, -1, -1, -1); + // return mapKeyToSlot(-1, 0, 1, -1, 0, 1, -1, -1, -1); + + } + + @Override + protected int getInventoryStartIndex() { + return 1; + // return 2; + } + + @Override + protected int getInteractionSlotIndex() { + return 0; + } + + @Override + protected int[] getDropSlots() { + return new int[]{0}; + // return new int[] {0, 1}; + } + + @Override + protected void interact() { + clickOnItem(); + } + + /** + * Sends a click on the enchanted item + */ + private void clickOnItem() { + + Logger.info("clickOnCraftingOutput()", "Clicked on Crafing Output."); + leftClick(0); + + } +} diff --git a/src/main/java/de/skate702/craftingkeys/manager/FurnaceManager.java b/src/main/java/de/skate702/craftingkeys/manager/FurnaceManager.java index 9ad037f..1f9630b 100644 --- a/src/main/java/de/skate702/craftingkeys/manager/FurnaceManager.java +++ b/src/main/java/de/skate702/craftingkeys/manager/FurnaceManager.java @@ -66,7 +66,7 @@ public class FurnaceManager extends ContainerManager { */ private void clickOnFurnaceOutput() { - Logger.info("clickOnFurnaceOutput()", "Clicked on Crafing Output."); + Logger.info("clickOnFurnaceOutput()", "Clicked on Furnace Output."); rightClick(2); } diff --git a/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java b/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java index c6f600e..2cdc779 100644 --- a/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java +++ b/src/main/java/de/skate702/craftingkeys/manager/InventoryManager.java @@ -11,7 +11,7 @@ public class InventoryManager extends ContainerManager { private static InventoryManager instance = null; /** - * Creates a new Crafting Manager with the given container. + * Creates a new Inventory Manager with the given container. * * @param container The container from a crafting GUI */ @@ -20,7 +20,7 @@ public class InventoryManager extends ContainerManager { } /** - * Returns a Crafting Manager Instance operating on the given container + * Returns a Inventory Manager Instance operating on the given container * * @param container A container from a GUI * @return manager-singleton diff --git a/src/main/java/de/skate702/craftingkeys/manager/VillagerManager.java b/src/main/java/de/skate702/craftingkeys/manager/VillagerManager.java new file mode 100644 index 0000000..3a47304 --- /dev/null +++ b/src/main/java/de/skate702/craftingkeys/manager/VillagerManager.java @@ -0,0 +1,72 @@ +package de.skate702.craftingkeys.manager; + + +import de.skate702.craftingkeys.util.Logger; +import net.minecraft.inventory.Container; + +/** + * Manages a Villager GUI Inventory. + */ +public class VillagerManager extends ContainerManager { + + private static VillagerManager instance = null; + + /** + * Creates a new Villager Manager with the given container. + * + * @param container The container from a crafting GUI + */ + private VillagerManager(Container container) { + super(container); + } + + /** + * Returns a Villager Manager Instance operating on the given container + * + * @param container A container from a GUI + * @return manager-singleton + */ + public static VillagerManager getInstance(Container container) { + if (instance == null) { + instance = new VillagerManager(container); + } else { + instance.container = container; + } + return instance; + } + + @Override + protected int specificKeyToSlotIndex() { + return mapKeyToSlot(-1, 0, 1, -1, 0, 1, -1, -1, -1); + } + + @Override + protected int getInventoryStartIndex() { + return 3; + } + + @Override + protected int getInteractionSlotIndex() { + return 2; + } + + @Override + protected int[] getDropSlots() { + return new int[]{0, 1}; + } + + @Override + protected void interact() { + clickOnVillagerOutput(); + } + + /** + * Sends a click on the furnace output + */ + private void clickOnVillagerOutput() { + + Logger.info("clickOnVillagerOutput()", "Clicked on Villager Output."); + leftClick(2); + + } +}