From fca0cd88625d59e05dc1f0c54fac5dcd232ae28e Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 9 Jan 2019 15:55:50 +0800 Subject: Better Button --- src/main/java/me/shedaniel/config/REIConfig.java | 2 +- src/main/java/me/shedaniel/gui/GuiItemList.java | 6 +- src/main/java/me/shedaniel/gui/widget/Control.java | 12 ++++ .../gui/widget/CraftableToggleButton.java | 76 ++++++++++++++++++++++ src/main/java/me/shedaniel/gui/widget/Tab.java | 1 + 5 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 src/main/java/me/shedaniel/gui/widget/CraftableToggleButton.java (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/config/REIConfig.java b/src/main/java/me/shedaniel/config/REIConfig.java index c9e2efe47..06dfbfc8d 100644 --- a/src/main/java/me/shedaniel/config/REIConfig.java +++ b/src/main/java/me/shedaniel/config/REIConfig.java @@ -17,6 +17,6 @@ public class REIConfig { public boolean centreSearchBox = false; public REIItemListOrdering itemListOrdering = REIItemListOrdering.REGISTRY; public boolean isAscending = true; - public boolean enableCraftableOnlyButton = false; + public boolean enableCraftableOnlyButton = true; } diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java index 153758ab9..e62f21490 100755 --- a/src/main/java/me/shedaniel/gui/GuiItemList.java +++ b/src/main/java/me/shedaniel/gui/GuiItemList.java @@ -5,10 +5,8 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.ClientListener; import me.shedaniel.Core; import me.shedaniel.config.REIItemListOrdering; +import me.shedaniel.gui.widget.*; import me.shedaniel.gui.widget.Button; -import me.shedaniel.gui.widget.Control; -import me.shedaniel.gui.widget.REISlot; -import me.shedaniel.gui.widget.TextBox; import me.shedaniel.impl.REIRecipeManager; import me.shedaniel.listenerdefinitions.IMixinContainerGui; import net.fabricmc.fabric.client.itemgroup.FabricCreativeGuiComponents; @@ -106,7 +104,7 @@ public class GuiItemList extends Drawable { searchBox = new TextBox(getSearchBoxArea()); searchBox.setText(savedText); if (Core.config.enableCraftableOnlyButton) { - Button buttonCraftableOnly = new Button(getCraftableToggleArea(), ""); + CraftableToggleButton buttonCraftableOnly = new CraftableToggleButton(getCraftableToggleArea()); buttonCraftableOnly.setOnClick(i -> { Core.runtimeConfig.craftableOnly = !Core.runtimeConfig.craftableOnly; REIRenderHelper.updateSearch(); diff --git a/src/main/java/me/shedaniel/gui/widget/Control.java b/src/main/java/me/shedaniel/gui/widget/Control.java index 18e89113f..d549e05f2 100755 --- a/src/main/java/me/shedaniel/gui/widget/Control.java +++ b/src/main/java/me/shedaniel/gui/widget/Control.java @@ -104,6 +104,18 @@ public abstract class Control extends Drawable { lvt_9_1_.draw(); } + public void drawTexturedRect(int int_1, int int_2, int int_3, int int_4, int int_5, int int_6, double zOffset) { + float float_1 = 0.00390625F; + float float_2 = 0.00390625F; + Tessellator tessellator_1 = Tessellator.getInstance(); + BufferBuilder bufferBuilder_1 = tessellator_1.getBufferBuilder(); + bufferBuilder_1.begin(7, VertexFormats.POSITION_UV); + bufferBuilder_1.vertex((double)(int_1 + 0), (double)(int_2 + int_6), zOffset).texture((double)((float)(int_3 + 0) * 0.00390625F), (double)((float)(int_4 + int_6) * 0.00390625F)).next(); + bufferBuilder_1.vertex((double)(int_1 + int_5), (double)(int_2 + int_6), zOffset).texture((double)((float)(int_3 + int_5) * 0.00390625F), (double)((float)(int_4 + int_6) * 0.00390625F)).next(); + bufferBuilder_1.vertex((double)(int_1 + int_5), (double)(int_2 + 0), zOffset).texture((double)((float)(int_3 + int_5) * 0.00390625F), (double)((float)(int_4 + 0) * 0.00390625F)).next(); + bufferBuilder_1.vertex((double)(int_1 + 0), (double)(int_2 + 0), zOffset).texture((double)((float)(int_3 + 0) * 0.00390625F), (double)((float)(int_4 + 0) * 0.00390625F)).next(); + tessellator_1.draw(); + } public void tick() { } diff --git a/src/main/java/me/shedaniel/gui/widget/CraftableToggleButton.java b/src/main/java/me/shedaniel/gui/widget/CraftableToggleButton.java new file mode 100644 index 000000000..a91f6a476 --- /dev/null +++ b/src/main/java/me/shedaniel/gui/widget/CraftableToggleButton.java @@ -0,0 +1,76 @@ +package me.shedaniel.gui.widget; + +import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.Core; +import me.shedaniel.gui.REIRenderHelper; +import net.minecraft.block.Blocks; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.FontRenderer; +import net.minecraft.client.render.GuiLighting; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; + +import java.awt.*; +import java.util.Arrays; + +public class CraftableToggleButton extends Control { + + private ItemRenderer itemRenderer; + private final ItemStack itemStack; + //protected float zLevel; + protected static final Identifier BUTTON_TEXTURES = new Identifier("textures/gui/widgets.png"); + protected static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); + + public CraftableToggleButton(Rectangle rect) { + super(rect); + this.itemStack = new ItemStack(Blocks.CRAFTING_TABLE.getItem()); + this.itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + } + + @Override + public void draw() { + GlStateManager.pushMatrix(); + GlStateManager.disableLighting(); + MinecraftClient lvt_4_1_ = MinecraftClient.getInstance(); + FontRenderer lvt_5_1_ = lvt_4_1_.fontRenderer; + lvt_4_1_.getTextureManager().bindTexture(BUTTON_TEXTURES); + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + int hoverState = (byte) 0; + if (this.isEnabled()) { + if (!this.isHighlighted()) + hoverState = (byte) 1; + else + hoverState = (byte) 2; + } + + GlStateManager.enableBlend(); + GlStateManager.blendFuncSeparate(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcBlendFactor.ONE, GlStateManager.DstBlendFactor.ZERO); + GlStateManager.blendFunc(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA); + this.drawTexturedRect(rect.x, rect.y, 0, 46 + hoverState * 20, rect.width / 2, rect.height, 0); + this.drawTexturedRect(rect.x + rect.width / 2, rect.y, 200 - rect.width / 2, 46 + hoverState * 20, rect.width / 2, rect.height, 0); + + GuiLighting.enableForItems(); + //this.zLevel = 100.0F; + //this.itemRenderer.zOffset = 100.0F; + this.itemRenderer.zOffset = 0.0F; + this.itemRenderer.renderItemAndGlowInGui(itemStack, rect.x + 2, rect.y + 2); + GlStateManager.disableLighting(); + //this.zLevel = 0.0F; + this.itemRenderer.zOffset = 0.0F; + GuiLighting.disable(); + lvt_4_1_.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + this.drawTexturedRect(rect.x, rect.y, (72 + (Core.runtimeConfig.craftableOnly ? 0 : 20)), 222, 20, 20, 100); + GlStateManager.popMatrix(); + if (isHighlighted()) + drawTooltip(); + } + + private void drawTooltip() { + Point mouse = REIRenderHelper.getMouseLoc(); + REIRenderHelper.addToolTip(Arrays.asList(I18n.translate(Core.runtimeConfig.craftableOnly ? "text.rei.showing_craftable" : "text.rei.showing_all")), mouse.x, mouse.y); + } + +} \ No newline at end of file diff --git a/src/main/java/me/shedaniel/gui/widget/Tab.java b/src/main/java/me/shedaniel/gui/widget/Tab.java index 5f5e931df..f7d3dbb15 100644 --- a/src/main/java/me/shedaniel/gui/widget/Tab.java +++ b/src/main/java/me/shedaniel/gui/widget/Tab.java @@ -97,4 +97,5 @@ public class Tab extends Control { Point mouse = REIRenderHelper.getMouseLoc(); REIRenderHelper.addToolTip(toolTip, mouse.x, mouse.y); } + } -- cgit