diff --git a/src/main/java/codechicken/nei/api/ShortcutInputHandler.java b/src/main/java/codechicken/nei/api/ShortcutInputHandler.java new file mode 100644 index 00000000..50de984f --- /dev/null +++ b/src/main/java/codechicken/nei/api/ShortcutInputHandler.java @@ -0,0 +1,119 @@ +package codechicken.nei.api; + +import codechicken.nei.ItemPanels; +import codechicken.nei.LayoutManager; +import codechicken.nei.NEIClientConfig; +import codechicken.nei.NEIClientUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.GuiCraftingRecipe; +import codechicken.nei.recipe.GuiRecipe; +import codechicken.nei.recipe.GuiUsageRecipe; +import java.util.List; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; +import org.lwjgl.input.Mouse; + +public abstract class ShortcutInputHandler { + + public static boolean handleKeyEvent(ItemStack stackover) { + + if (NEIClientConfig.isKeyHashDown("gui.overlay_hide")) { + return hideOverlayRecipe(); + } + + if (stackover == null) { + return false; + } + + stackover = stackover.copy(); + + if (NEIClientConfig.isKeyHashDown("gui.overlay")) { + return openOverlayRecipe(stackover, false); + } + + if (NEIClientConfig.isKeyHashDown("gui.overlay_use")) { + return openOverlayRecipe(stackover, true); + } + + if (NEIClientConfig.isKeyHashDown("gui.recipe")) { + return GuiCraftingRecipe.openRecipeGui("item", stackover); + } + + if (NEIClientConfig.isKeyHashDown("gui.usage")) { + return GuiUsageRecipe.openRecipeGui("item", stackover); + } + + if (NEIClientConfig.isKeyHashDown("gui.bookmark")) { + return saveRecipeInBookmark(stackover, false, false); + } + + if (NEIClientConfig.isKeyHashDown("gui.bookmark_recipe")) { + return saveRecipeInBookmark(stackover, true, false); + } + + if (NEIClientConfig.isKeyHashDown("gui.bookmark_count")) { + return saveRecipeInBookmark(stackover, false, true); + } + + if (NEIClientConfig.isKeyHashDown("gui.bookmark_recipe_count")) { + return saveRecipeInBookmark(stackover, true, true); + } + + return false; + } + + public static boolean handleMouseClick(ItemStack stackover) { + + if (stackover != null) { + final int button = Mouse.getEventButton(); + stackover = stackover.copy(); + + if (button == 0) { + return GuiCraftingRecipe.openRecipeGui("item", stackover); + } else if (button == 1) { + return GuiUsageRecipe.openRecipeGui("item", stackover); + } + } + + return false; + } + + private static boolean hideOverlayRecipe() { + + if (LayoutManager.overlayRenderer != null) { + LayoutManager.overlayRenderer = null; + return true; + } + + return false; + } + + private static boolean openOverlayRecipe(ItemStack stack, boolean shift) { + final GuiContainer gui = NEIClientUtils.getGuiContainer(); + + if (gui == null || gui instanceof GuiRecipe) { + return false; + } + + return GuiCraftingRecipe.openRecipeGui("item", true, shift, stack); + } + + private static boolean saveRecipeInBookmark(ItemStack stack, boolean saveIngredients, boolean saveStackSize) { + + if (stack != null) { + final GuiContainer gui = NEIClientUtils.getGuiContainer(); + List ingredients = null; + String handlerName = ""; + + if (gui instanceof GuiRecipe) { + ingredients = ((GuiRecipe) gui).getFocusedRecipeIngredients(); + handlerName = ((GuiRecipe) gui).getHandlerName(); + } + + ItemPanels.bookmarkPanel.addOrRemoveItem(stack, handlerName, ingredients, saveIngredients, saveStackSize); + return true; + } + + return false; + } +} diff --git a/src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java b/src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java index 11edbbff..9783e308 100644 --- a/src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java +++ b/src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java @@ -1,12 +1,9 @@ package codechicken.nei.recipe; import codechicken.nei.ItemPanels; -import codechicken.nei.LayoutManager; -import codechicken.nei.NEIClientConfig; -import codechicken.nei.PositionedStack; +import codechicken.nei.api.ShortcutInputHandler; import codechicken.nei.guihook.GuiContainerManager; import codechicken.nei.guihook.IContainerInputHandler; -import java.util.List; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; @@ -14,52 +11,7 @@ public class RecipeItemInputHandler implements IContainerInputHandler { @Override public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyCode) { - - if (NEIClientConfig.isKeyHashDown("gui.overlay_hide")) { - return hideOverlayRecipe(); - } - - ItemStack stackover = GuiContainerManager.getStackMouseOver(gui); - - if (stackover == null) { - return false; - } - - stackover = stackover.copy(); - - if (NEIClientConfig.isKeyHashDown("gui.overlay")) { - return openOverlayRecipe(gui, stackover, false); - } - - if (NEIClientConfig.isKeyHashDown("gui.overlay_use")) { - return openOverlayRecipe(gui, stackover, true); - } - - if (NEIClientConfig.isKeyHashDown("gui.recipe")) { - return GuiCraftingRecipe.openRecipeGui("item", stackover); - } - - if (NEIClientConfig.isKeyHashDown("gui.usage")) { - return GuiUsageRecipe.openRecipeGui("item", stackover); - } - - if (NEIClientConfig.isKeyHashDown("gui.bookmark")) { - return saveRecipeInBookmark(gui, stackover, false, false); - } - - if (NEIClientConfig.isKeyHashDown("gui.bookmark_recipe")) { - return saveRecipeInBookmark(gui, stackover, true, false); - } - - if (NEIClientConfig.isKeyHashDown("gui.bookmark_count")) { - return saveRecipeInBookmark(gui, stackover, false, true); - } - - if (NEIClientConfig.isKeyHashDown("gui.bookmark_recipe_count")) { - return saveRecipeInBookmark(gui, stackover, true, true); - } - - return false; + return ShortcutInputHandler.handleKeyEvent(GuiContainerManager.getStackMouseOver(gui)); } @Override @@ -70,53 +22,7 @@ public class RecipeItemInputHandler implements IContainerInputHandler { ItemStack stackover = GuiContainerManager.getStackMouseOver(gui); - if (stackover != null) { - if (button == 0) { - return GuiCraftingRecipe.openRecipeGui("item", stackover.copy()); - } else if (button == 1) { - return GuiUsageRecipe.openRecipeGui("item", stackover.copy()); - } - } - - return false; - } - - private boolean hideOverlayRecipe() { - - if (LayoutManager.overlayRenderer != null) { - LayoutManager.overlayRenderer = null; - return true; - } - - return false; - } - - private boolean openOverlayRecipe(GuiContainer gui, ItemStack stack, boolean shift) { - - if (gui instanceof GuiRecipe) { - return false; - } - - return GuiCraftingRecipe.openRecipeGui("item", true, shift, stack); - } - - private boolean saveRecipeInBookmark( - GuiContainer gui, ItemStack stack, boolean saveIngredients, boolean saveStackSize) { - - if (stack != null) { - List ingredients = null; - String handlerName = ""; - - if (gui instanceof GuiRecipe) { - ingredients = ((GuiRecipe) gui).getFocusedRecipeIngredients(); - handlerName = ((GuiRecipe) gui).getHandlerName(); - } - - ItemPanels.bookmarkPanel.addOrRemoveItem(stack, handlerName, ingredients, saveIngredients, saveStackSize); - return true; - } - - return false; + return ShortcutInputHandler.handleMouseClick(stackover); } @Override