diff options
Diffstat (limited to 'src/client/java/dev/isxander/yacl/gui/TooltipButtonWidget.java')
-rw-r--r-- | src/client/java/dev/isxander/yacl/gui/TooltipButtonWidget.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/client/java/dev/isxander/yacl/gui/TooltipButtonWidget.java b/src/client/java/dev/isxander/yacl/gui/TooltipButtonWidget.java new file mode 100644 index 0000000..b034f4b --- /dev/null +++ b/src/client/java/dev/isxander/yacl/gui/TooltipButtonWidget.java @@ -0,0 +1,30 @@ +package dev.isxander.yacl.gui; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.MultilineText; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class TooltipButtonWidget extends ButtonWidget { + + protected final Screen screen; + protected MultilineText wrappedDescription; + + public TooltipButtonWidget(Screen screen, int x, int y, int width, int height, Text message, Text tooltip, PressAction onPress) { + super(x, y, width, height, message, onPress, DEFAULT_NARRATION_SUPPLIER); + this.screen = screen; + setTooltip(tooltip); + } + + public void renderHoveredTooltip(MatrixStack matrices) { + if (isHovered()) { + YACLScreen.renderMultilineTooltip(matrices, MinecraftClient.getInstance().textRenderer, wrappedDescription, getX() + width / 2, getY() - 4, getY() + height + 4, screen.width, screen.height); + } + } + + public void setTooltip(Text tooltip) { + wrappedDescription = MultilineText.create(MinecraftClient.getInstance().textRenderer, tooltip, screen.width / 3 - 5); + } +} |