Selaa lähdekoodia

Better Button

Unknown 6 vuotta sitten
vanhempi
sitoutus
7b911e53da

+ 1 - 1
build.gradle

@@ -6,7 +6,7 @@ sourceCompatibility = 1.8
 targetCompatibility = 1.8
 
 archivesBaseName = "RoughlyEnoughItems"
-version = "1.5.1-18"
+version = "1.5.1-19"
 
 minecraft {
 }

+ 1 - 1
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;
     
 }

+ 2 - 4
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();

+ 12 - 0
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() {
     }

+ 76 - 0
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);
+    }
+    
+}

+ 1 - 0
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);
     }
+    
 }

+ 3 - 1
src/main/resources/assets/roughlyenoughitems/lang/en_us.json

@@ -31,5 +31,7 @@
   "text.auto_craft.wrong_gui": "§cCan't auto craft in this inventory!",
   "text.auto_craft.crafting.too_small": "§cThis inventory is too small!",
   "text.rei.enable_craftable_only.button": "Craftable Only: %s%b",
-  "text.rei.enable_craftable_only.tooltip": "Please resize the window after editing\nthis config to apply the changes"
+  "text.rei.enable_craftable_only.tooltip": "Please resize the window after editing\nthis config to apply the changes",
+  "text.rei.showing_craftable": "Showing Craftable",
+  "text.rei.showing_all": "Showing All"
 }

BIN
src/main/resources/assets/roughlyenoughitems/textures/gui/recipecontainer.png