From 62a899a890a76b265121ddfa158bbb95e6f5e55a Mon Sep 17 00:00:00 2001 From: Guntram Blohm Date: Tue, 27 Jun 2017 17:00:20 +0200 Subject: [PATCH] updated to mc 1.12 / forge 2375; made some stuff configurable, better focus handling --- build.gradle | 2 +- .../easiercrafting/ConfigurationHandler.java | 16 ++++++--- .../mcmod/easiercrafting/EasierCrafting.java | 3 +- .../easiercrafting/ExtendedGuiCrafting.java | 13 +++++-- .../easiercrafting/ExtendedGuiInventory.java | 14 ++++++-- .../mcmod/easiercrafting/GuiConfig.java | 16 +++++++++ .../mcmod/easiercrafting/GuiFactory.java | 28 +++++++++++++++ .../easiercrafting/OpenCraftEventHandler.java | 4 +-- .../mcmod/easiercrafting/RecipeBook.java | 36 +++++++++++-------- 9 files changed, 105 insertions(+), 27 deletions(-) create mode 100644 src/main/java/de/guntram/mcmod/easiercrafting/GuiConfig.java create mode 100644 src/main/java/de/guntram/mcmod/easiercrafting/GuiFactory.java diff --git a/build.gradle b/build.gradle index 8673f71..783f614 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. -version = "1.12-forge14.21.0.2375-1.0" +version = "1.12-forge14.21.0.2375-1.1" group = "de.guntram.mcmod.easiercrafting" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "easiercrafting" diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/ConfigurationHandler.java b/src/main/java/de/guntram/mcmod/easiercrafting/ConfigurationHandler.java index 8016d96..f40bb95 100644 --- a/src/main/java/de/guntram/mcmod/easiercrafting/ConfigurationHandler.java +++ b/src/main/java/de/guntram/mcmod/easiercrafting/ConfigurationHandler.java @@ -12,7 +12,9 @@ public class ConfigurationHandler { private Configuration config; private String configFileName; + private boolean autoFocusSearch; private int autoUpdateRecipeTimer; + private boolean allowRecipeBook; public static ConfigurationHandler getInstance() { if (instance==null) @@ -36,11 +38,9 @@ public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) { } private void loadConfig() { -// allowUpload=config.getBoolean("Allow Upload", Configuration.CATEGORY_CLIENT, allowUpload, "Allow Upload to central database"); -// allowDownload=config.getBoolean("Allow Download", Configuration.CATEGORY_CLIENT, allowDownload, "Allow Download from central database (only if Upload is enabled as well)"); -// saveEveryXMinutes=config.getInt("Save every X minutes", Configuration.CATEGORY_CLIENT, 1, 1, 60, "How often sign data will be saved locally"); -// uploadEveryXMinutes=config.getInt("Upload every X minutes", Configuration.CATEGORY_CLIENT, 5, 5, 60, "How often sign data will be uploaded"); autoUpdateRecipeTimer=config.getInt("Auto update recipe timer", Configuration.CATEGORY_CLIENT, 5, 0, 300, "Update recipe list after this many seconds after last click"); + autoFocusSearch=config.getBoolean("Auto focus search text", Configuration.CATEGORY_CLIENT, false, "Automatically focus the search box when opening craft GUI"); + allowRecipeBook=config.getBoolean("Allow MC internal recipe book", Configuration.CATEGORY_CLIENT, true, "Allow opening the MC internal recipe book (since 1.12)"); if (config.hasChanged()) config.save(); @@ -57,4 +57,12 @@ public static String getConfigFileName() { public static int getAutoUpdateRecipeTimer() { return getInstance().autoUpdateRecipeTimer; } + + public static boolean getAutoFocusSearch() { + return getInstance().autoFocusSearch; + } + + public static boolean getAllowMinecraftRecipeBook() { + return getInstance().allowRecipeBook; + } } diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/EasierCrafting.java b/src/main/java/de/guntram/mcmod/easiercrafting/EasierCrafting.java index 00b0cf5..fccdd50 100644 --- a/src/main/java/de/guntram/mcmod/easiercrafting/EasierCrafting.java +++ b/src/main/java/de/guntram/mcmod/easiercrafting/EasierCrafting.java @@ -9,13 +9,14 @@ @Mod(modid = EasierCrafting.MODID, version = EasierCrafting.VERSION, clientSideOnly = true, + guiFactory = "de.guntram.mcmod.easiercrafting.GuiFactory", acceptedMinecraftVersions = "[1.12]" ) public class EasierCrafting { static final String MODID="easiercrafting"; - static final String VERSION="1.0"; + static final String VERSION="1.1"; @EventHandler public void init(FMLInitializationEvent event) { diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiCrafting.java b/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiCrafting.java index e9229bf..643fff3 100644 --- a/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiCrafting.java +++ b/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiCrafting.java @@ -12,6 +12,13 @@ class ExtendedGuiCrafting extends GuiCrafting { public ExtendedGuiCrafting(InventoryPlayer playerInv, World worldIn) { super(playerInv, worldIn); } + + @Override + public void initGui() { + super.initGui(); + if (!ConfigurationHandler.getAllowMinecraftRecipeBook()) + this.buttonList.clear(); + } void setRecipeBook(RecipeBook recipeBook) { this.recipeBook=recipeBook; @@ -26,14 +33,16 @@ protected void drawGuiContainerForegroundLayer(final int mouseX, final int mouse @Override protected void mouseClicked(final int mouseX, final int mouseY, final int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); - recipeBook.mouseClicked(mouseX, mouseY, mouseButton); + recipeBook.mouseClicked(mouseX, mouseY, mouseButton, guiLeft, guiTop); } @Override public void keyTyped(char c, int i) throws IOException { if (c==27) super.keyTyped(c, i); + else if (recipeBook.keyTyped(c, i)) + ; else - recipeBook.keyTyped(c, i); + super.keyTyped(c, i); } } diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiInventory.java b/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiInventory.java index faf8acc..8e5c8cf 100644 --- a/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiInventory.java +++ b/src/main/java/de/guntram/mcmod/easiercrafting/ExtendedGuiInventory.java @@ -1,6 +1,7 @@ package de.guntram.mcmod.easiercrafting; import java.io.IOException; +import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiInventory; import net.minecraft.entity.player.EntityPlayer; @@ -11,6 +12,13 @@ public class ExtendedGuiInventory extends GuiInventory { public ExtendedGuiInventory(EntityPlayer player) { super(player); } + + @Override + public void initGui() { + super.initGui(); + if (!ConfigurationHandler.getAllowMinecraftRecipeBook()) + this.buttonList.clear(); + } void setRecipeBook(RecipeBook recipeBook) { this.recipeBook=recipeBook; @@ -25,14 +33,16 @@ protected void drawGuiContainerForegroundLayer(final int mouseX, final int mouse @Override protected void mouseClicked(final int mouseX, final int mouseY, final int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); - recipeBook.mouseClicked(mouseX, mouseY, mouseButton); + recipeBook.mouseClicked(mouseX, mouseY, mouseButton, guiLeft, guiTop); } @Override public void keyTyped(char c, int i) throws IOException { if (c==27) super.keyTyped(c, i); + else if (recipeBook.keyTyped(c, i)) + ; else - recipeBook.keyTyped(c, i); + super.keyTyped(c, i); } } diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/GuiConfig.java b/src/main/java/de/guntram/mcmod/easiercrafting/GuiConfig.java new file mode 100644 index 0000000..f50b11f --- /dev/null +++ b/src/main/java/de/guntram/mcmod/easiercrafting/GuiConfig.java @@ -0,0 +1,16 @@ +package de.guntram.mcmod.easiercrafting; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.common.config.ConfigElement; +import static net.minecraftforge.common.config.Configuration.CATEGORY_CLIENT; + +public class GuiConfig extends net.minecraftforge.fml.client.config.GuiConfig { + public GuiConfig(GuiScreen parent) { + super(parent, + new ConfigElement(ConfigurationHandler.getConfig().getCategory(CATEGORY_CLIENT)).getChildElements(), + EasierCrafting.MODID, + false, + false, + "Easier Crafting configuration"); + } +} diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/GuiFactory.java b/src/main/java/de/guntram/mcmod/easiercrafting/GuiFactory.java new file mode 100644 index 0000000..5d49118 --- /dev/null +++ b/src/main/java/de/guntram/mcmod/easiercrafting/GuiFactory.java @@ -0,0 +1,28 @@ +package de.guntram.mcmod.easiercrafting; + +import java.util.Set; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.fml.client.IModGuiFactory; + +public class GuiFactory implements IModGuiFactory { + + @Override + public boolean hasConfigGui() { + return true; + } + + @Override + public void initialize(final Minecraft minecraftInstance) { + } + + @Override + public GuiScreen createConfigGui(GuiScreen parentScreen) { + return new GuiConfig(parentScreen); + } + + @Override + public Set runtimeGuiCategories() { + return null; + } +} diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/OpenCraftEventHandler.java b/src/main/java/de/guntram/mcmod/easiercrafting/OpenCraftEventHandler.java index 2f1875f..79e0214 100644 --- a/src/main/java/de/guntram/mcmod/easiercrafting/OpenCraftEventHandler.java +++ b/src/main/java/de/guntram/mcmod/easiercrafting/OpenCraftEventHandler.java @@ -34,8 +34,8 @@ public void guiOpenEvent(GuiOpenEvent event) { egi.setRecipeBook(new RecipeBook(egi, 1, 2, 0, 9)); event.setGui(egi); } else { - if (event.getGui() != null) - System.out.println("opened "+event.getGui().getClass().getCanonicalName()); +// if (event.getGui() != null) +// System.out.println("opened "+event.getGui().getClass().getCanonicalName()); } } } diff --git a/src/main/java/de/guntram/mcmod/easiercrafting/RecipeBook.java b/src/main/java/de/guntram/mcmod/easiercrafting/RecipeBook.java index bd5f62b..825024e 100644 --- a/src/main/java/de/guntram/mcmod/easiercrafting/RecipeBook.java +++ b/src/main/java/de/guntram/mcmod/easiercrafting/RecipeBook.java @@ -2,7 +2,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; @@ -78,7 +77,7 @@ void drawRecipeList(FontRenderer fontRenderer, RenderItem itemRenderer, // We can't do this in the constructor as we don't yet know various stuff there. if (pattern==null) { pattern=new GuiTextField(1, fontRenderer, xOffset, 0, 150, 20); - pattern.setFocused(true); + pattern.setFocused(ConfigurationHandler.getAutoFocusSearch()); } if (recipeUpdateTime!=0 && System.currentTimeMillis() > recipeUpdateTime) { @@ -348,10 +347,11 @@ class InputCount { int items; } - public void mouseClicked(int mouseX, int mouseY, int mouseButton) { - // don't do this, have the pattern in focus all the time -// if (pattern!=null) -// pattern.mouseClicked(mouseX, mouseY, mouseButton); + public void mouseClicked(int mouseX, int mouseY, int mouseButton, int guiLeft, int guiTop) { + if (pattern!=null) { + //System.out.println("x="+(mouseX-guiLeft)+", y="+(mouseY-guiTop)+"; patternx="+pattern.x+", patterny="+pattern.y); + pattern.mouseClicked(mouseX-guiLeft, mouseY-guiTop, mouseButton); + } // we assume the mouse is clicked where it was when we updated the screen last ... if (underMouse==null) @@ -416,21 +416,22 @@ public void mouseClicked(int mouseX, int mouseY, int mouseButton) { maxCraftableStacks=1; } - //System.out.println("Crafting "+maxCraftableStacks+" items"); + int rowadjust=0; for (int craftslot=0; craftslot0 && slot<36; slot++) { Slot invitem=container.inventorySlots.getSlot(slot+firstInventorySlotNo); ItemStack slotcontent=invitem.getStack(); if (canActAsIngredient(ingr, slotcontent)) { // TODO: && (isempty(craftslot) || ismergeable(slot,craftslot)) - transfer(slot+firstInventorySlotNo, craftslot+firstCraftSlot, remaining); + transfer(slot+firstInventorySlotNo, craftslot+firstCraftSlot+rowadjust, remaining); remaining=maxCraftableStacks-container.inventorySlots.getSlot(craftslot+firstCraftSlot).getStack().getCount(); } } + if (underMouse instanceof ShapedRecipes && ((craftslot+1)%((ShapedRecipes)underMouse).recipeWidth)==0) { + rowadjust+=gridSize-((ShapedRecipes)underMouse).recipeWidth; + } } if (mouseButton==0) { @@ -439,11 +440,17 @@ public void mouseClicked(int mouseX, int mouseY, int mouseButton) { } } - public void keyTyped(char c, int i) throws IOException { - if (c=='\r' || c=='\n') + public boolean keyTyped(char c, int i) throws IOException { + if (c=='\r' || c=='\n') { updatePatternMatch(); - else //tif (pattern.isFocused()) + pattern.setFocused(false); + return true; + } else if (pattern.isFocused()) { pattern.textboxKeyTyped(c, i); + return true; + } else { + return false; + } } @@ -491,8 +498,7 @@ private void transfer(int from, int to, int amount) { private void slotClick(int slot, int mouseButton, ClickType clickType) { Minecraft mc=Minecraft.getMinecraft(); - System.out.println("Clicking slot "+slot+" "+(mouseButton==0 ? "left" : "right")+" type:"+clickType.toString()); + // System.out.println("Clicking slot "+slot+" "+(mouseButton==0 ? "left" : "right")+" type:"+clickType.toString()); mc.playerController.windowClick(mc.player.openContainer.windowId, slot, mouseButton, clickType, mc.player); } - }