From 8622811b9b8cd1447d08f5ee1654d18e01098536 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 6 Jan 2019 20:47:14 +0800 Subject: Close #6 --- src/main/java/me/shedaniel/gui/ConfigGui.java | 3 ++ src/main/java/me/shedaniel/gui/GuiItemList.java | 22 +++++-------- .../java/me/shedaniel/gui/REIRenderHelper.java | 10 +----- src/main/java/me/shedaniel/gui/RecipeGui.java | 1 + src/main/java/me/shedaniel/gui/widget/TextBox.java | 11 +++++-- .../blastfurnace/VanillaBlastFurnaceCategory.java | 38 +++++++++++++++++++++- .../blastfurnace/VanillaBlastFurnaceRecipe.java | 5 +++ .../plugin/crafting/VanillaCraftingCategory.java | 2 +- .../plugin/furnace/VanillaFurnaceCategory.java | 37 +++++++++++++++++++-- .../plugin/furnace/VanillaFurnaceRecipe.java | 7 ++++ .../plugin/smoker/VanillaSmokerCategory.java | 37 ++++++++++++++++++++- .../plugin/smoker/VanillaSmokerRecipe.java | 5 +++ 12 files changed, 148 insertions(+), 30 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/gui/ConfigGui.java b/src/main/java/me/shedaniel/gui/ConfigGui.java index ab97be55f..266347adf 100644 --- a/src/main/java/me/shedaniel/gui/ConfigGui.java +++ b/src/main/java/me/shedaniel/gui/ConfigGui.java @@ -7,6 +7,7 @@ import me.shedaniel.gui.widget.KeyBindButton; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import java.io.IOException; @@ -91,6 +92,7 @@ public class ConfigGui extends Gui { @Override public void draw(int int_1, int int_2, float float_1) { + GuiLighting.disable(); this.text = I18n.translate("text.rei.list_ordering_button", I18n.translate(Core.config.itemListOrdering.getNameTranslationKey()), I18n.translate(Core.config.isAscending ? "ordering.rei.ascending" : "ordering.rei.descending")); super.draw(int_1, int_2, float_1); @@ -102,6 +104,7 @@ public class ConfigGui extends Gui { public void draw(int mouseX, int mouseY, float partialTicks) { drawBackground(); super.draw(mouseX, mouseY, partialTicks); + GuiLighting.disable(); String text = I18n.translate("key.rei.recipe") + ": "; drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 25 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 30 + 6, -1); text = I18n.translate("key.rei.use") + ": "; diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java index 06bbd0104..18ea59d9b 100755 --- a/src/main/java/me/shedaniel/gui/GuiItemList.java +++ b/src/main/java/me/shedaniel/gui/GuiItemList.java @@ -129,7 +129,7 @@ public class GuiItemList extends Drawable { } private void fillSlots() { - page = MathHelper.clamp(page, 0, (int) Math.floor(view.size() / displaySlots.size())); + page = MathHelper.clamp(page, 0, MathHelper.ceil(view.size() / displaySlots.size())); int firstSlot = page * displaySlots.size(); for(int i = 0; i < displaySlots.size(); i++) { if (firstSlot + i < view.size() && firstSlot + i >= 0) { @@ -184,33 +184,27 @@ public class GuiItemList extends Drawable { public void draw() { if (!visible) return; - if (needsResize == true) - resize(); - if (oldGuiLeft != ((IMixinContainerGui) overlayedGui).getGuiLeft()) + if (needsResize == true || oldGuiLeft != ((IMixinContainerGui) overlayedGui).getGuiLeft()) resize(); GlStateManager.pushMatrix(); updateButtons(); controls.forEach(Control::draw); - String header = String.format("%s/%s", page + 1, ((int) Math.floor(view.size() / displaySlots.size())) + 1); + String header = String.format("%s/%s", page + 1, MathHelper.ceil(view.size() / displaySlots.size()) + 1); MinecraftClient.getInstance().fontRenderer.drawWithShadow(header, rect.x + (rect.width / 2) - (MinecraftClient.getInstance().fontRenderer.getStringWidth(header) / 2), rect.y + 10, -1); GlStateManager.popMatrix(); } private void updateButtons() { - if (page == 0) - buttonLeft.setEnabled(false); - else - buttonLeft.setEnabled(true); - if (displaySlots.size() + displaySlots.size() * page >= view.size()) - buttonRight.setEnabled(false); - else - buttonRight.setEnabled(true); + buttonLeft.setEnabled(MathHelper.ceil(view.size() / displaySlots.size()) > 1); + buttonRight.setEnabled(MathHelper.ceil(view.size() / displaySlots.size()) > 1); } public boolean btnRightClicked(int button) { if (button == 0) { page++; + if (page > MathHelper.ceil(view.size() / displaySlots.size())) + page = 0; fillSlots(); return true; } @@ -220,6 +214,8 @@ public class GuiItemList extends Drawable { public boolean btnLeftClicked(int button) { if (button == 0) { page--; + if (page < 0) + page = MathHelper.ceil(view.size() / displaySlots.size()); fillSlots(); return true; } diff --git a/src/main/java/me/shedaniel/gui/REIRenderHelper.java b/src/main/java/me/shedaniel/gui/REIRenderHelper.java index 985eb721f..99f22c120 100755 --- a/src/main/java/me/shedaniel/gui/REIRenderHelper.java +++ b/src/main/java/me/shedaniel/gui/REIRenderHelper.java @@ -1,6 +1,5 @@ package me.shedaniel.gui; -import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.ClientListener; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.IFocusable; @@ -99,15 +98,8 @@ public class REIRenderHelper { private static void renderTooltips() { - GlStateManager.pushMatrix(); - GlStateManager.enableLighting(); - for(TooltipData tooltipData : tooltipsToRender) { - getOverlayedGui().drawTooltip(tooltipData.text, tooltipData.x, tooltipData.y); - } - GlStateManager.disableLighting(); + tooltipsToRender.forEach(tooltipData -> getOverlayedGui().drawTooltip(tooltipData.text, tooltipData.x, tooltipData.y)); tooltipsToRender.clear(); - GlStateManager.popMatrix(); - } public static boolean mouseClick(int x, int y, int button) { diff --git a/src/main/java/me/shedaniel/gui/RecipeGui.java b/src/main/java/me/shedaniel/gui/RecipeGui.java index 7f655c23f..11731b120 100755 --- a/src/main/java/me/shedaniel/gui/RecipeGui.java +++ b/src/main/java/me/shedaniel/gui/RecipeGui.java @@ -83,6 +83,7 @@ public class RecipeGui extends ContainerGui { drawBackground(); super.draw(mouseX, mouseY, partialTicks); int y = (int) ((mainWindow.getScaledHeight() / 2 - this.guiHeight / 2)); + GuiLighting.disable(); drawStringCentered(this.fontRenderer, selectedCategory.getDisplayName(), left + guiWidth / 2, y + 11, -1); drawStringCentered(this.fontRenderer, String.format("%d/%d", 1 + getCurrentPage(), getTotalPages()), left + guiWidth / 2, y + 34, -1); controls.forEach(Control::draw); diff --git a/src/main/java/me/shedaniel/gui/widget/TextBox.java b/src/main/java/me/shedaniel/gui/widget/TextBox.java index 849e52c8c..6329c5c23 100755 --- a/src/main/java/me/shedaniel/gui/widget/TextBox.java +++ b/src/main/java/me/shedaniel/gui/widget/TextBox.java @@ -2,6 +2,7 @@ package me.shedaniel.gui.widget; import me.shedaniel.gui.REIRenderHelper; import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.render.GuiLighting; import java.awt.*; @@ -30,6 +31,7 @@ public class TextBox extends Control implements IFocusable { @Override public void draw() { + GuiLighting.disable(); textField.render(0, 0, 0); } @@ -44,6 +46,11 @@ public class TextBox extends Control implements IFocusable { } protected boolean doMouseClick(int button) { + if (button == 1) { + textField.setText(""); + REIRenderHelper.updateSearch(); + return true; + } Point mouseLoc = REIRenderHelper.getMouseLoc(); if (!hasFocus()) setFocused(true); @@ -52,10 +59,8 @@ public class TextBox extends Control implements IFocusable { protected boolean onKeyPressed(int first, int second, int third) { boolean handled = textField.keyPressed(first, second, third); - if (handled) { + if (handled) REIRenderHelper.updateSearch(); - } - return handled; } diff --git a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java index 159d274ae..48a977eb3 100755 --- a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java +++ b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java @@ -1,12 +1,21 @@ package me.shedaniel.plugin.blastfurnace; +import me.shedaniel.api.DisplayCategoryCraftable; import me.shedaniel.api.IDisplayCategory; +import me.shedaniel.gui.RecipeGui; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; +import me.shedaniel.gui.widget.SmallButton; import me.shedaniel.gui.widget.WidgetArrow; +import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui; +import me.shedaniel.plugin.smoker.VanillaSmokerRecipe; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlastFurnaceBlockEntity; import net.minecraft.block.entity.SmokerBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.BlastFurnaceGui; +import net.minecraft.client.gui.container.SmokerGui; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -16,7 +25,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class VanillaBlastFurnaceCategory implements IDisplayCategory { +public class VanillaBlastFurnaceCategory implements DisplayCategoryCraftable { private List recipes; @Override @@ -87,4 +96,31 @@ public class VanillaBlastFurnaceCategory implements IDisplayCategory guiClass, VanillaBlastFurnaceRecipe recipe) { + return guiClass.isAssignableFrom(BlastFurnaceGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, VanillaBlastFurnaceRecipe recipe) { + if (!gui.getClass().isAssignableFrom(BlastFurnaceGui.class)) + return false; + ((IMixinRecipeBookGui) (((BlastFurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return false; + } + + @Override + public void registerAutoCraftButton(List control, RecipeGui recipeGui, Gui parentGui, VanillaBlastFurnaceRecipe recipe, int number) { + SmallButton button = new SmallButton(128, 75 + 6 + 26 + number * 75, 10, 10, "+"); + button.setOnClick(mouse -> { + recipeGui.close(); + MinecraftClient.getInstance().openGui(parentGui); + return canAutoCraftHere(parentGui.getClass(), recipe) && performAutoCraft(parentGui, recipe); + }); + button.setEnabled(canAutoCraftHere(parentGui.getClass(), recipe)); + control.add(button); + } + } diff --git a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java index 6554420c3..dad285c71 100755 --- a/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java +++ b/src/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java @@ -44,4 +44,9 @@ public class VanillaBlastFurnaceRecipe implements IRecipe { input.add(BlastFurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); return input; } + + public BlastingRecipe getRecipe() { + return recipe; + } + } diff --git a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java index 2c6d48a08..50fa4ad1e 100755 --- a/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java +++ b/src/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java @@ -132,6 +132,7 @@ public class VanillaCraftingCategory implements DisplayCategoryCraftable control, RecipeGui recipeGui, Gui parentGui, VanillaCraftingRecipe recipe, int number) { SmallButton button = new SmallButton(78, 75 + 6 + 36 + number * 75, 10, 10, "+"); button.setOnClick(mouse -> { - System.out.println(parentGui.getClass().getName()); recipeGui.close(); MinecraftClient.getInstance().openGui(parentGui); return canAutoCraftHere(parentGui.getClass(), recipe) && performAutoCraft(parentGui, recipe); diff --git a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java index 12e7d2324..0603bb444 100755 --- a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java +++ b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java @@ -1,11 +1,17 @@ package me.shedaniel.plugin.furnace; -import me.shedaniel.api.IDisplayCategory; +import me.shedaniel.api.DisplayCategoryCraftable; +import me.shedaniel.gui.RecipeGui; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; +import me.shedaniel.gui.widget.SmallButton; import me.shedaniel.gui.widget.WidgetArrow; +import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.block.entity.FurnaceBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.FurnaceGui; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,7 +21,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class VanillaFurnaceCategory implements IDisplayCategory { +public class VanillaFurnaceCategory implements DisplayCategoryCraftable { private List recipes; @Override @@ -86,4 +92,31 @@ public class VanillaFurnaceCategory implements IDisplayCategory guiClass, VanillaFurnaceRecipe recipe) { + return guiClass.isAssignableFrom(FurnaceGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, VanillaFurnaceRecipe recipe) { + if (!gui.getClass().isAssignableFrom(FurnaceGui.class)) + return false; + ((IMixinRecipeBookGui) (((FurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return false; + } + + @Override + public void registerAutoCraftButton(List control, RecipeGui recipeGui, Gui parentGui, VanillaFurnaceRecipe recipe, int number) { + SmallButton button = new SmallButton(128, 75 + 6 + 26 + number * 75, 10, 10, "+"); + button.setOnClick(mouse -> { + recipeGui.close(); + MinecraftClient.getInstance().openGui(parentGui); + return canAutoCraftHere(parentGui.getClass(), recipe) && performAutoCraft(parentGui, recipe); + }); + button.setEnabled(canAutoCraftHere(parentGui.getClass(), recipe)); + control.add(button); + } + } diff --git a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java index 0e7d00dd5..c207c386a 100755 --- a/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java +++ b/src/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java @@ -5,6 +5,7 @@ import net.minecraft.block.entity.FurnaceBlockEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; import net.minecraft.recipe.smelting.SmeltingRecipe; import java.util.Arrays; @@ -13,6 +14,7 @@ import java.util.List; import java.util.stream.Collectors; public class VanillaFurnaceRecipe implements IRecipe { + private final SmeltingRecipe recipe; @Override @@ -41,4 +43,9 @@ public class VanillaFurnaceRecipe implements IRecipe { input.add(FurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); return input; } + + public Recipe getRecipe() { + return recipe; + } + } diff --git a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java index 477578e6a..862d5ba35 100755 --- a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java +++ b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java @@ -1,11 +1,19 @@ package me.shedaniel.plugin.smoker; +import me.shedaniel.api.DisplayCategoryCraftable; import me.shedaniel.api.IDisplayCategory; +import me.shedaniel.gui.RecipeGui; import me.shedaniel.gui.widget.Control; import me.shedaniel.gui.widget.REISlot; +import me.shedaniel.gui.widget.SmallButton; import me.shedaniel.gui.widget.WidgetArrow; +import me.shedaniel.listenerdefinitions.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.block.entity.SmokerBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.container.FurnaceGui; +import net.minecraft.client.gui.container.SmokerGui; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -15,7 +23,7 @@ import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; -public class VanillaSmokerCategory implements IDisplayCategory { +public class VanillaSmokerCategory implements DisplayCategoryCraftable { private List recipes; @Override @@ -86,4 +94,31 @@ public class VanillaSmokerCategory implements IDisplayCategory guiClass, VanillaSmokerRecipe recipe) { + return guiClass.isAssignableFrom(SmokerGui.class); + } + + @Override + public boolean performAutoCraft(Gui gui, VanillaSmokerRecipe recipe) { + if (!gui.getClass().isAssignableFrom(SmokerGui.class)) + return false; + ((IMixinRecipeBookGui) (((SmokerGui) gui).getRecipeBookGui())).getGhostSlots().reset(); + MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); + return false; + } + + @Override + public void registerAutoCraftButton(List control, RecipeGui recipeGui, Gui parentGui, VanillaSmokerRecipe recipe, int number) { + SmallButton button = new SmallButton(128, 75 + 6 + 26 + number * 75, 10, 10, "+"); + button.setOnClick(mouse -> { + recipeGui.close(); + MinecraftClient.getInstance().openGui(parentGui); + return canAutoCraftHere(parentGui.getClass(), recipe) && performAutoCraft(parentGui, recipe); + }); + button.setEnabled(canAutoCraftHere(parentGui.getClass(), recipe)); + control.add(button); + } + } diff --git a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java index 4eadd9db1..4ff98077a 100755 --- a/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java +++ b/src/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java @@ -41,4 +41,9 @@ public class VanillaSmokerRecipe implements IRecipe { input.add(SmokerBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); return input; } + + public SmokingRecipe getRecipe() { + return recipe; + } + } -- cgit