SmallButton.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package me.shedaniel.gui.widget;
  2. import com.mojang.blaze3d.platform.GlStateManager;
  3. import me.shedaniel.gui.REIRenderHelper;
  4. import net.minecraft.client.MinecraftClient;
  5. import net.minecraft.client.font.FontRenderer;
  6. import net.minecraft.client.gui.ContainerGui;
  7. import net.minecraft.client.gui.Gui;
  8. import net.minecraft.util.Identifier;
  9. import java.awt.*;
  10. import java.util.Arrays;
  11. import java.util.List;
  12. import java.util.function.Function;
  13. public class SmallButton extends Control {
  14. private String buttonText;
  15. private Function<Boolean, String> toolTipSupplier;
  16. protected static final Identifier BUTTON_TEXTURES = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
  17. public SmallButton(int x, int y, int width, int height, String buttonText, Function<Boolean, String> toolTipSupplier) {
  18. super(x, y, width, height);
  19. this.buttonText = buttonText;
  20. this.toolTipSupplier = toolTipSupplier;
  21. }
  22. public SmallButton(Rectangle rect, String buttonText, Function<Boolean, String> toolTipSupplier) {
  23. super(rect);
  24. this.buttonText = buttonText;
  25. this.toolTipSupplier = toolTipSupplier;
  26. }
  27. public void setString(String text) {
  28. buttonText = text;
  29. }
  30. @Override
  31. public void draw() {
  32. GlStateManager.pushMatrix();
  33. GlStateManager.disableLighting();
  34. ContainerGui gui = REIRenderHelper.getOverlayedGui();
  35. MinecraftClient lvt_4_1_ = MinecraftClient.getInstance();
  36. FontRenderer lvt_5_1_ = lvt_4_1_.fontRenderer;
  37. lvt_4_1_.getTextureManager().bindTexture(BUTTON_TEXTURES);
  38. GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
  39. int hoverState = (byte) 0;
  40. if (this.isEnabled()) {
  41. if (!this.isHighlighted())
  42. hoverState = (byte) 1;
  43. else
  44. hoverState = (byte) 2;
  45. }
  46. GlStateManager.enableBlend();
  47. GlStateManager.blendFuncSeparate(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcBlendFactor.ONE, GlStateManager.DstBlendFactor.ZERO);
  48. GlStateManager.blendFunc(GlStateManager.SrcBlendFactor.SRC_ALPHA, GlStateManager.DstBlendFactor.ONE_MINUS_SRC_ALPHA);
  49. gui.drawTexturedRect(rect.x, rect.y, 18 + 44, 222 + hoverState * 10, rect.width, rect.height);
  50. int lvt_7_1_ = 14737632;
  51. gui.drawStringCentered(lvt_5_1_, this.buttonText, rect.x + rect.width / 2, rect.y + (rect.height - 8) / 2, lvt_7_1_);
  52. GlStateManager.enableLighting();
  53. GlStateManager.popMatrix();
  54. String ttS = toolTipSupplier.apply(isEnabled());
  55. if (isHighlighted() && ttS != "") {
  56. List<String> toolTip = Arrays.asList(ttS.split("\n"));
  57. if (toolTip != null && toolTip.size() != 0)
  58. gui.drawTooltip(toolTip, REIRenderHelper.getMouseLoc().x, REIRenderHelper.getMouseLoc().y);
  59. }
  60. }
  61. }