aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/gui/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/java/dev/isxander/yacl/gui/controllers')
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ActionController.java14
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/BooleanController.java47
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ColorController.java24
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java76
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java61
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ListEntryWidget.java34
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/TickBoxController.java22
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/CyclingControllerElement.java10
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/CyclingListController.java10
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/EnumController.java22
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/DoubleSliderController.java12
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/FloatSliderController.java12
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/IntegerSliderController.java12
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/LongSliderController.java12
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java40
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/IStringController.java6
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java80
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/DoubleFieldController.java7
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/FloatFieldController.java7
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/IntegerFieldController.java6
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/LongFieldController.java6
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/NumberFieldController.java12
22 files changed, 266 insertions, 266 deletions
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/ActionController.java b/src/client/java/dev/isxander/yacl/gui/controllers/ActionController.java
index 7666dff..e57cdd2 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/ActionController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/ActionController.java
@@ -1,12 +1,12 @@
package dev.isxander.yacl.gui.controllers;
+import com.mojang.blaze3d.platform.InputConstants;
import dev.isxander.yacl.api.ButtonOption;
import dev.isxander.yacl.api.Controller;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
-import net.minecraft.client.util.InputUtil;
-import net.minecraft.text.Text;
+import net.minecraft.network.chat.Component;
import java.util.function.BiConsumer;
@@ -15,10 +15,10 @@ import java.util.function.BiConsumer;
* and renders a {@link} Text on the right.
*/
public class ActionController implements Controller<BiConsumer<YACLScreen, ButtonOption>> {
- public static final Text DEFAULT_TEXT = Text.translatable("yacl.control.action.execute");
+ public static final Component DEFAULT_TEXT = Component.translatable("yacl.control.action.execute");
private final ButtonOption option;
- private final Text text;
+ private final Component text;
/**
* Constructs an action controller
@@ -36,7 +36,7 @@ public class ActionController implements Controller<BiConsumer<YACLScreen, Butto
* @param option bound option
* @param text text to display
*/
- public ActionController(ButtonOption option, Text text) {
+ public ActionController(ButtonOption option, Component text) {
this.option = option;
this.text = text;
@@ -54,7 +54,7 @@ public class ActionController implements Controller<BiConsumer<YACLScreen, Butto
* {@inheritDoc}
*/
@Override
- public Text formatValue() {
+ public Component formatValue() {
return text;
}
@@ -94,7 +94,7 @@ public class ActionController implements Controller<BiConsumer<YACLScreen, Butto
return false;
}
- if (keyCode == InputUtil.GLFW_KEY_ENTER || keyCode == InputUtil.GLFW_KEY_SPACE || keyCode == InputUtil.GLFW_KEY_KP_ENTER) {
+ if (keyCode == InputConstants.KEY_RETURN || keyCode == InputConstants.KEY_SPACE || keyCode == InputConstants.KEY_NUMPADENTER) {
executeAction();
return true;
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/BooleanController.java b/src/client/java/dev/isxander/yacl/gui/controllers/BooleanController.java
index 3a8e5c3..d97b418 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/BooleanController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/BooleanController.java
@@ -1,41 +1,40 @@
package dev.isxander.yacl.gui.controllers;
+import com.mojang.blaze3d.platform.InputConstants;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.yacl.api.Controller;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
-import net.minecraft.client.util.InputUtil;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.screen.ScreenTexts;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
-import org.lwjgl.glfw.GLFW;
+import net.minecraft.ChatFormatting;
+import net.minecraft.network.chat.CommonComponents;
+import net.minecraft.network.chat.Component;
import java.util.function.Function;
/**
- * This controller renders a simple formatted {@link Text}
+ * This controller renders a simple formatted {@link Component}
*/
public class BooleanController implements Controller<Boolean> {
- public static final Function<Boolean, Text> ON_OFF_FORMATTER = (state) ->
+ public static final Function<Boolean, Component> ON_OFF_FORMATTER = (state) ->
state
- ? ScreenTexts.ON
- : ScreenTexts.OFF;
+ ? CommonComponents.OPTION_ON
+ : CommonComponents.OPTION_OFF;
- public static final Function<Boolean, Text> TRUE_FALSE_FORMATTER = (state) ->
+ public static final Function<Boolean, Component> TRUE_FALSE_FORMATTER = (state) ->
state
- ? Text.translatable("yacl.control.boolean.true")
- : Text.translatable("yacl.control.boolean.false");
+ ? Component.translatable("yacl.control.boolean.true")
+ : Component.translatable("yacl.control.boolean.false");
- public static final Function<Boolean, Text> YES_NO_FORMATTER = (state) ->
+ public static final Function<Boolean, Component> YES_NO_FORMATTER = (state) ->
state
- ? ScreenTexts.YES
- : ScreenTexts.NO;
+ ? CommonComponents.GUI_YES
+ : CommonComponents.GUI_NO;
private final Option<Boolean> option;
- private final Function<Boolean, Text> valueFormatter;
+ private final Function<Boolean, Component> valueFormatter;
private final boolean coloured;
/**
@@ -63,10 +62,10 @@ public class BooleanController implements Controller<Boolean> {
* Constructs a tickbox controller
*
* @param option bound option
- * @param valueFormatter format value into any {@link Text}
+ * @param valueFormatter format value into any {@link Component}
* @param coloured value format is green or red depending on the state
*/
- public BooleanController(Option<Boolean> option, Function<Boolean, Text> valueFormatter, boolean coloured) {
+ public BooleanController(Option<Boolean> option, Function<Boolean, Component> valueFormatter, boolean coloured) {
this.option = option;
this.valueFormatter = valueFormatter;
this.coloured = coloured;
@@ -84,7 +83,7 @@ public class BooleanController implements Controller<Boolean> {
* {@inheritDoc}
*/
@Override
- public Text formatValue() {
+ public Component formatValue() {
return valueFormatter.apply(option().pendingValue());
}
@@ -109,7 +108,7 @@ public class BooleanController implements Controller<Boolean> {
}
@Override
- protected void drawHoveredControl(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ protected void drawHoveredControl(PoseStack matrices, int mouseX, int mouseY, float delta) {
}
@@ -133,9 +132,9 @@ public class BooleanController implements Controller<Boolean> {
}
@Override
- protected Text getValueText() {
+ protected Component getValueText() {
if (control.coloured()) {
- return super.getValueText().copy().formatted(control.option().pendingValue() ? Formatting.GREEN : Formatting.RED);
+ return super.getValueText().copy().withStyle(control.option().pendingValue() ? ChatFormatting.GREEN : ChatFormatting.RED);
}
return super.getValueText();
@@ -147,7 +146,7 @@ public class BooleanController implements Controller<Boolean> {
return false;
}
- if (keyCode == InputUtil.GLFW_KEY_ENTER || keyCode == InputUtil.GLFW_KEY_SPACE || keyCode == InputUtil.GLFW_KEY_KP_ENTER) {
+ if (keyCode == InputConstants.KEY_RETURN || keyCode == InputConstants.KEY_SPACE || keyCode == InputConstants.KEY_NUMPADENTER) {
toggleSetting();
return true;
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/ColorController.java b/src/client/java/dev/isxander/yacl/gui/controllers/ColorController.java
index 9626a9e..473407b 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/ColorController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/ColorController.java
@@ -1,6 +1,7 @@
package dev.isxander.yacl.gui.controllers;
import com.google.common.collect.ImmutableList;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.api.utils.MutableDimension;
@@ -8,11 +9,10 @@ import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.gui.controllers.string.IStringController;
import dev.isxander.yacl.gui.controllers.string.StringControllerElement;
-import net.minecraft.client.gui.DrawableHelper;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.text.MutableText;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.client.gui.GuiComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.MutableComponent;
import java.awt.Color;
import java.util.List;
@@ -62,11 +62,11 @@ public class ColorController implements IStringController<Color> {
}
@Override
- public Text formatValue() {
- MutableText text = Text.literal("#");
- text.append(Text.literal(toHex(option().pendingValue().getRed())).formatted(Formatting.RED));
- text.append(Text.literal(toHex(option().pendingValue().getGreen())).formatted(Formatting.GREEN));
- text.append(Text.literal(toHex(option().pendingValue().getBlue())).formatted(Formatting.BLUE));
+ public Component formatValue() {
+ MutableComponent text = Component.literal("#");
+ text.append(Component.literal(toHex(option().pendingValue().getRed())).withStyle(ChatFormatting.RED));
+ text.append(Component.literal(toHex(option().pendingValue().getGreen())).withStyle(ChatFormatting.GREEN));
+ text.append(Component.literal(toHex(option().pendingValue().getBlue())).withStyle(ChatFormatting.BLUE));
if (allowAlpha()) text.append(toHex(option().pendingValue().getAlpha()));
return text;
}
@@ -114,13 +114,13 @@ public class ColorController implements IStringController<Color> {
}
@Override
- protected void drawValueText(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ protected void drawValueText(PoseStack matrices, int mouseX, int mouseY, float delta) {
if (isHovered()) {
colorPreviewDim.move(-inputFieldBounds.width() - 5, 0);
super.drawValueText(matrices, mouseX, mouseY, delta);
}
- DrawableHelper.fill(matrices, colorPreviewDim.x(), colorPreviewDim.y(), colorPreviewDim.xLimit(), colorPreviewDim.yLimit(), colorController.option().pendingValue().getRGB());
+ GuiComponent.fill(matrices, colorPreviewDim.x(), colorPreviewDim.y(), colorPreviewDim.xLimit(), colorPreviewDim.yLimit(), colorController.option().pendingValue().getRGB());
drawOutline(matrices, colorPreviewDim.x(), colorPreviewDim.y(), colorPreviewDim.xLimit(), colorPreviewDim.yLimit(), 1, 0xFF000000);
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java b/src/client/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java
index ae54ca4..90c0e20 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java
@@ -1,27 +1,27 @@
package dev.isxander.yacl.gui.controllers;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.yacl.api.Controller;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.gui.utils.GuiUtils;
-import net.minecraft.client.font.MultilineText;
-import net.minecraft.client.gui.DrawableHelper;
-import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
-import net.minecraft.client.gui.screen.narration.NarrationPart;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
+import net.minecraft.ChatFormatting;
+import net.minecraft.client.gui.GuiComponent;
+import net.minecraft.client.gui.components.MultiLineLabel;
+import net.minecraft.client.gui.narration.NarratedElementType;
+import net.minecraft.client.gui.narration.NarrationElementOutput;
+import net.minecraft.network.chat.Component;
public abstract class ControllerWidget<T extends Controller<?>> extends AbstractWidget {
protected final T control;
- protected MultilineText wrappedTooltip;
+ protected MultiLineLabel wrappedTooltip;
protected final YACLScreen screen;
protected boolean focused = false;
protected boolean hovered = false;
- protected final Text modifiedOptionName;
+ protected final Component modifiedOptionName;
protected final String optionNameString;
public ControllerWidget(T control, YACLScreen screen, Dimension<Integer> dim) {
@@ -30,22 +30,22 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
this.screen = screen;
control.option().addListener((opt, pending) -> updateTooltip());
updateTooltip();
- this.modifiedOptionName = control.option().name().copy().formatted(Formatting.ITALIC);
+ this.modifiedOptionName = control.option().name().copy().withStyle(ChatFormatting.ITALIC);
this.optionNameString = control.option().name().getString().toLowerCase();
}
@Override
- public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
hovered = isMouseOver(mouseX, mouseY);
- Text name = control.option().changed() ? modifiedOptionName : control.option().name();
- Text shortenedName = Text.literal(GuiUtils.shortenString(name.getString(), textRenderer, getDimension().width() - getControlWidth() - getXPadding() - 7, "...")).fillStyle(name.getStyle());
+ Component name = control.option().changed() ? modifiedOptionName : control.option().name();
+ Component shortenedName = Component.literal(GuiUtils.shortenString(name.getString(), textRenderer, getDimension().width() - getControlWidth() - getXPadding() - 7, "...")).setStyle(name.getStyle());
drawButtonRect(matrices, getDimension().x(), getDimension().y(), getDimension().xLimit(), getDimension().yLimit(), isHovered(), isAvailable());
- matrices.push();
+ matrices.pushPose();
matrices.translate(getDimension().x() + getXPadding(), getTextY(), 0);
- textRenderer.drawWithShadow(matrices, shortenedName, 0, 0, getValueColor());
- matrices.pop();
+ textRenderer.drawShadow(matrices, shortenedName, 0, 0, getValueColor());
+ matrices.popPose();
drawValueText(matrices, mouseX, mouseY, delta);
if (isHovered()) {
@@ -54,26 +54,26 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
}
@Override
- public void postRender(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ public void postRender(PoseStack matrices, int mouseX, int mouseY, float delta) {
if (hovered || focused) {
YACLScreen.renderMultilineTooltip(matrices, textRenderer, wrappedTooltip, getDimension().centerX(), getDimension().y() - 5, getDimension().yLimit() + 5, screen.width, screen.height);
}
}
- protected void drawHoveredControl(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ protected void drawHoveredControl(PoseStack matrices, int mouseX, int mouseY, float delta) {
}
- protected void drawValueText(MatrixStack matrices, int mouseX, int mouseY, float delta) {
- Text valueText = getValueText();
- matrices.push();
- matrices.translate(getDimension().xLimit() - textRenderer.getWidth(valueText) - getXPadding(), getTextY(), 0);
- textRenderer.drawWithShadow(matrices, valueText, 0, 0, getValueColor());
- matrices.pop();
+ protected void drawValueText(PoseStack matrices, int mouseX, int mouseY, float delta) {
+ Component valueText = getValueText();
+ matrices.pushPose();
+ matrices.translate(getDimension().xLimit() - textRenderer.width(valueText) - getXPadding(), getTextY(), 0);
+ textRenderer.drawShadow(matrices, valueText, 0, 0, getValueColor());
+ matrices.popPose();
}
private void updateTooltip() {
- this.wrappedTooltip = MultilineText.create(textRenderer, control.option().tooltip(), screen.width / 3 * 2 - 10);
+ this.wrappedTooltip = MultiLineLabel.create(textRenderer, control.option().tooltip(), screen.width / 3 * 2 - 10);
}
protected int getControlWidth() {
@@ -87,7 +87,7 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
protected abstract int getHoveredControlWidth();
protected int getUnhoveredControlWidth() {
- return textRenderer.getWidth(getValueText());
+ return textRenderer.width(getValueText());
}
protected int getXPadding() {
@@ -98,7 +98,7 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
return 2;
}
- protected Text getValueText() {
+ protected Component getValueText() {
return control.formatValue();
}
@@ -115,15 +115,15 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
return true;
}
- protected void drawOutline(MatrixStack matrices, int x1, int y1, int x2, int y2, int width, int color) {
- DrawableHelper.fill(matrices, x1, y1, x2, y1 + width, color);
- DrawableHelper.fill(matrices, x2, y1, x2 - width, y2, color);
- DrawableHelper.fill(matrices, x1, y2, x2, y2 - width, color);
- DrawableHelper.fill(matrices, x1, y1, x1 + width, y2, color);
+ protected void drawOutline(PoseStack matrices, int x1, int y1, int x2, int y2, int width, int color) {
+ GuiComponent.fill(matrices, x1, y1, x2, y1 + width, color);
+ GuiComponent.fill(matrices, x2, y1, x2 - width, y2, color);
+ GuiComponent.fill(matrices, x1, y2, x2, y2 - width, color);
+ GuiComponent.fill(matrices, x1, y1, x1 + width, y2, color);
}
protected float getTextY() {
- return getDimension().y() + getDimension().height() / 2f - textRenderer.fontHeight / 2f;
+ return getDimension().y() + getDimension().height() / 2f - textRenderer.lineHeight / 2f;
}
@Override
@@ -146,13 +146,13 @@ public abstract class ControllerWidget<T extends Controller<?>> extends Abstract
}
@Override
- public SelectionType getType() {
- return focused ? SelectionType.FOCUSED : isHovered() ? SelectionType.HOVERED : SelectionType.NONE;
+ public NarrationPriority narrationPriority() {
+ return focused ? NarrationPriority.FOCUSED : isHovered() ? NarrationPriority.HOVERED : NarrationPriority.NONE;
}
@Override
- public void appendNarrations(NarrationMessageBuilder builder) {
- builder.put(NarrationPart.TITLE, control.option().name());
- builder.put(NarrationPart.HINT, control.option().tooltip());
+ public void updateNarration(NarrationElementOutput builder) {
+ builder.add(NarratedElementType.TITLE, control.option().name());
+ builder.add(NarratedElementType.HINT, control.option().tooltip());
}
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java b/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
index 960c950..0017b59 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java
@@ -1,28 +1,31 @@
package dev.isxander.yacl.gui.controllers;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.yacl.api.Controller;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.AbstractWidget;
import dev.isxander.yacl.gui.YACLScreen;
-import net.minecraft.client.font.MultilineText;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.item.ItemStack;
-import net.minecraft.text.*;
+import net.minecraft.client.gui.components.MultiLineLabel;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.HoverEvent;
+import net.minecraft.network.chat.Style;
+import net.minecraft.util.FormattedCharSequence;
+import net.minecraft.world.item.ItemStack;
import java.util.List;
/**
* Simply renders some text as a label.
*/
-public class LabelController implements Controller<Text> {
- private final Option<Text> option;
+public class LabelController implements Controller<Component> {
+ private final Option<Component> option;
/**
* Constructs a label controller
*
* @param option bound option
*/
- public LabelController(Option<Text> option) {
+ public LabelController(Option<Component> option) {
this.option = option;
}
@@ -30,12 +33,12 @@ public class LabelController implements Controller<Text> {
* {@inheritDoc}
*/
@Override
- public Option<Text> option() {
+ public Option<Component> option() {
return option;
}
@Override
- public Text formatValue() {
+ public Component formatValue() {
return option().pendingValue();
}
@@ -45,8 +48,8 @@ public class LabelController implements Controller<Text> {
}
public class LabelControllerElement extends AbstractWidget {
- private List<OrderedText> wrappedText;
- protected MultilineText wrappedTooltip;
+ private List<FormattedCharSequence> wrappedText;
+ protected MultiLineLabel wrappedTooltip;
protected final YACLScreen screen;
@@ -59,38 +62,38 @@ public class LabelController implements Controller<Text> {
}
@Override
- public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
updateText();
float y = getDimension().y();
- for (OrderedText text : wrappedText) {
- textRenderer.drawWithShadow(matrices, text, getDimension().x() + getXPadding(), y + getYPadding(), option().available() ? -1 : 0xFFA0A0A0);
- y += textRenderer.fontHeight;
+ for (FormattedCharSequence text : wrappedText) {
+ textRenderer.drawShadow(matrices, text, getDimension().x() + getXPadding(), y + getYPadding(), option().available() ? -1 : 0xFFA0A0A0);
+ y += textRenderer.lineHeight;
}
}
@Override
- public void postRender(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ public void postRender(PoseStack matrices, int mouseX, int mouseY, float delta) {
if (isMouseOver(mouseX, mouseY)) {
YACLScreen.renderMultilineTooltip(matrices, textRenderer, wrappedTooltip, getDimension().centerX(), getDimension().y() - 5, getDimension().yLimit() + 5, screen.width, screen.height);
Style style = getStyle(mouseX, mouseY);
if (style != null && style.getHoverEvent() != null) {
HoverEvent hoverEvent = style.getHoverEvent();
- HoverEvent.ItemStackContent itemStackContent = hoverEvent.getValue(HoverEvent.Action.SHOW_ITEM);
+ HoverEvent.ItemStackInfo itemStackContent = hoverEvent.getValue(HoverEvent.Action.SHOW_ITEM);
if (itemStackContent != null) {
- ItemStack stack = itemStackContent.asStack();
- screen.renderTooltip(matrices, screen.getTooltipFromItem(stack), stack.getTooltipData(), mouseX, mouseY);
+ ItemStack stack = itemStackContent.getItemStack();
+ screen.renderTooltip(matrices, screen.getTooltipFromItem(stack), stack.getTooltipImage(), mouseX, mouseY);
} else {
- HoverEvent.EntityContent entityContent = hoverEvent.getValue(HoverEvent.Action.SHOW_ENTITY);
+ HoverEvent.EntityTooltipInfo entityContent = hoverEvent.getValue(HoverEvent.Action.SHOW_ENTITY);
if (entityContent != null) {
if (this.client.options.advancedItemTooltips) {
- screen.renderTooltip(matrices, entityContent.asTooltip(), mouseX, mouseY);
+ screen.renderComponentTooltip(matrices, entityContent.getTooltipLines(), mouseX, mouseY);
}
} else {
- Text text = hoverEvent.getValue(HoverEvent.Action.SHOW_TEXT);
+ Component text = hoverEvent.getValue(HoverEvent.Action.SHOW_TEXT);
if (text != null) {
- MultilineText multilineText = MultilineText.create(textRenderer, text, getDimension().width());
+ MultiLineLabel multilineText = MultiLineLabel.create(textRenderer, text, getDimension().width());
YACLScreen.renderMultilineTooltip(matrices, textRenderer, multilineText, getDimension().centerX(), getDimension().y(), getDimension().yLimit(), screen.width, screen.height);
}
}
@@ -105,7 +108,7 @@ public class LabelController implements Controller<Text> {
return false;
Style style = getStyle((int) mouseX, (int) mouseY);
- return screen.handleTextClick(style);
+ return screen.handleComponentClicked(style);
}
protected Style getStyle(int mouseX, int mouseY) {
@@ -114,13 +117,13 @@ public class LabelController implements Controller<Text> {
int x = mouseX - getDimension().x();
int y = mouseY - getDimension().y() - getYPadding();
- int line = y / textRenderer.fontHeight;
+ int line = y / textRenderer.lineHeight;
if (x < 0 || x > getDimension().xLimit()) return null;
if (y < 0 || y > getDimension().yLimit()) return null;
if (line < 0 || line >= wrappedText.size()) return null;
- return textRenderer.getTextHandler().getStyleAt(wrappedText.get(line), x);
+ return textRenderer.getSplitter().componentStyleAtWidth(wrappedText.get(line), x);
}
private int getXPadding() {
@@ -132,12 +135,12 @@ public class LabelController implements Controller<Text> {
}
private void updateText() {
- wrappedText = textRenderer.wrapLines(formatValue(), getDimension().width() - getXPadding() * 2);
- setDimension(getDimension().withHeight(wrappedText.size() * textRenderer.fontHeight + getYPadding() * 2));
+ wrappedText = textRenderer.split(formatValue(), getDimension().width() - getXPadding() * 2);
+ setDimension(getDimension().withHeight(wrappedText.size() * textRenderer.lineHeight + getYPadding() * 2));
}
private void updateTooltip() {
- this.wrappedTooltip = MultilineText.create(textRenderer, option().tooltip(), screen.width / 3 * 2 - 10);
+ this.wrappedTooltip = MultiLineLabel.create(textRenderer, option().tooltip(), screen.width / 3 * 2 - 10);
}
@Override
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/ListEntryWidget.java b/src/client/java/dev/isxander/yacl/gui/controllers/ListEntryWidget.java
index 0a5d581..1acccf1 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/ListEntryWidget.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/ListEntryWidget.java
@@ -1,20 +1,20 @@
package dev.isxander.yacl.gui.controllers;
import com.google.common.collect.ImmutableList;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.yacl.api.ListOption;
import dev.isxander.yacl.api.ListOptionEntry;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.*;
-import net.minecraft.client.gui.Element;
-import net.minecraft.client.gui.ParentElement;
-import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.text.Text;
+import net.minecraft.client.gui.components.events.ContainerEventHandler;
+import net.minecraft.client.gui.components.events.GuiEventListener;
+import net.minecraft.client.gui.narration.NarrationElementOutput;
+import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable;
import java.util.List;
-public class ListEntryWidget extends AbstractWidget implements ParentElement {
+public class ListEntryWidget extends AbstractWidget implements ContainerEventHandler {
private final TooltipButtonWidget removeButton, moveUpButton, moveDownButton;
private final AbstractWidget entryWidget;
@@ -23,7 +23,7 @@ public class ListEntryWidget extends AbstractWidget implements ParentElement {
private final String optionNameString;
- private Element focused;
+ private GuiEventListener focused;
private boolean dragging;
public ListEntryWidget(YACLScreen screen, ListOptionEntry<?> listOptionEntry, AbstractWidget entryWidget) {
@@ -36,12 +36,12 @@ public class ListEntryWidget extends AbstractWidget implements ParentElement {
Dimension<Integer> dim = entryWidget.getDimension();
entryWidget.setDimension(dim.clone().move(20 * 2, 0).expand(-20 * 3, 0));
- removeButton = new TooltipButtonWidget(screen, dim.xLimit() - 20, dim.y(), 20, 20, Text.of("\u274c"), Text.translatable("yacl.list.remove"), btn -> {
+ removeButton = new TooltipButtonWidget(screen, dim.xLimit() - 20, dim.y(), 20, 20, Component.literal("\u274c"), Component.translatable("yacl.list.remove"), btn -> {
listOption.removeEntry(listOptionEntry);
updateButtonStates();
});
- moveUpButton = new TooltipButtonWidget(screen, dim.x(), dim.y(), 20, 20, Text.of("\u2191"), Text.translatable("yacl.list.move_up"), btn -> {
+ moveUpButton = new TooltipButtonWidget(screen, dim.x(), dim.y(), 20, 20, Component.literal("\u2191"), Component.translatable("yacl.list.move_up"), btn -> {
int index = listOption.indexOf(listOptionEntry) - 1;
if (index >= 0) {
listOption.removeEntry(listOptionEntry);
@@ -50,7 +50,7 @@ public class ListEntryWidget extends AbstractWidget implements ParentElement {
}
});
- moveDownButton = new TooltipButtonWidget(screen, dim.x() + 20, dim.y(), 20, 20, Text.of("\u2193"), Text.translatable("yacl.list.move_down"), btn -> {
+ moveDownButton = new TooltipButtonWidget(screen, dim.x() + 20, dim.y(), 20, 20, Component.literal("\u2193"), Component.translatable("yacl.list.move_down"), btn -> {
int index = listOption.indexOf(listOptionEntry) + 1;
if (index < listOption.options().size()) {
listOption.removeEntry(listOptionEntry);
@@ -63,7 +63,7 @@ public class ListEntryWidget extends AbstractWidget implements ParentElement {
}
@Override
- public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ public void render(PoseStack matrices, int