From 9810a5c00d566c5a526f832636ed19ed56b784a4 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Sat, 7 May 2022 13:38:33 +0200 Subject: [PATCH] GuiLabel backport --- .../com/falsepattern/lib/compat/GuiLabel.java | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 src/main/java/com/falsepattern/lib/compat/GuiLabel.java diff --git a/src/main/java/com/falsepattern/lib/compat/GuiLabel.java b/src/main/java/com/falsepattern/lib/compat/GuiLabel.java new file mode 100644 index 0000000..24264ae --- /dev/null +++ b/src/main/java/com/falsepattern/lib/compat/GuiLabel.java @@ -0,0 +1,106 @@ +package com.falsepattern.lib.compat; + +import com.google.common.collect.Lists; +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.resources.I18n; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class GuiLabel extends Gui +{ + protected int width; + protected int height; + public int x; + public int y; + private final List labels; + public int id; + private boolean centered; + public boolean visible = true; + private final boolean labelBgEnabled; + private final int textColor; + private final int backColor; + private final int ulColor; + private final int brColor; + private final FontRenderer fontRenderer; + private final int border; + + public GuiLabel(FontRenderer fontRendererObj, int p_i45540_2_, int p_i45540_3_, int p_i45540_4_, int p_i45540_5_, int p_i45540_6_, int p_i45540_7_) + { + this.fontRenderer = fontRendererObj; + this.id = p_i45540_2_; + this.x = p_i45540_3_; + this.y = p_i45540_4_; + this.width = p_i45540_5_; + this.height = p_i45540_6_; + this.labels = Lists.newArrayList(); + this.centered = false; + this.labelBgEnabled = false; + this.textColor = p_i45540_7_; + this.backColor = -1; + this.ulColor = -1; + this.brColor = -1; + this.border = 0; + } + + public void addLine(String p_175202_1_) + { + this.labels.add(I18n.format(p_175202_1_)); + } + + /** + * Sets the Label to be centered + */ + public GuiLabel setCentered() + { + this.centered = true; + return this; + } + + public void drawLabel(Minecraft mc, int mouseX, int mouseY) + { + if (this.visible) + { + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + this.drawLabelBackground(mc, mouseX, mouseY); + int i = this.y + this.height / 2 + this.border / 2; + int j = i - this.labels.size() * 10 / 2; + + for (int k = 0; k < this.labels.size(); ++k) + { + if (this.centered) + { + this.drawCenteredString(this.fontRenderer, this.labels.get(k), this.x + this.width / 2, j + k * 10, this.textColor); + } + else + { + this.drawString(this.fontRenderer, this.labels.get(k), this.x, j + k * 10, this.textColor); + } + } + } + } + + protected void drawLabelBackground(Minecraft mcIn, int mouseX, int mouseY) + { + if (this.labelBgEnabled) + { + int i = this.width + this.border * 2; + int j = this.height + this.border * 2; + int k = this.x - this.border; + int l = this.y - this.border; + drawRect(k, l, k + i, l + j, this.backColor); + this.drawHorizontalLine(k, k + i, l, this.ulColor); + this.drawHorizontalLine(k, k + i, l + j, this.brColor); + this.drawVerticalLine(k, l, l + j, this.ulColor); + this.drawVerticalLine(k + i, l, l + j, this.brColor); + } + } +} \ No newline at end of file