Skip to content

Commit

Permalink
Create ShortcutInputHandler api class (#277)
Browse files Browse the repository at this point in the history
* Add RecipeItemInputHandler#lastKeyTyped(ItemStack)

* move shortcut to api

* Update src/main/java/codechicken/nei/api/ShortcutInputHandler.java

Co-authored-by: Vladislav Laetansky <[email protected]>

Co-authored-by: Vladislav Laetansky <[email protected]>
  • Loading branch information
slprime and xchgeax authored Aug 21, 2022
1 parent 0293706 commit 9221434
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 97 deletions.
119 changes: 119 additions & 0 deletions src/main/java/codechicken/nei/api/ShortcutInputHandler.java
Original file line number Diff line number Diff line change
@@ -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<PositionedStack> 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;
}
}
100 changes: 3 additions & 97 deletions src/main/java/codechicken/nei/recipe/RecipeItemInputHandler.java
Original file line number Diff line number Diff line change
@@ -1,65 +1,17 @@
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;

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
Expand All @@ -70,53 +22,7 @@ public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button

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<PositionedStack> 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
Expand Down

0 comments on commit 9221434

Please sign in to comment.