aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/gui/controllers/string
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/java/dev/isxander/yacl/gui/controllers/string')
-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
7 files changed, 61 insertions, 63 deletions
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/IStringController.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/IStringController.java
index 553e278..6a603d2 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/IStringController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/IStringController.java
@@ -5,7 +5,7 @@ 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.text.Text;
+import net.minecraft.network.chat.Component;
/**
* A controller that can be any type but can input and output a string.
@@ -29,8 +29,8 @@ public interface IStringController<T> extends Controller<T> {
* {@inheritDoc}
*/
@Override
- default Text formatValue() {
- return Text.of(getString());
+ default Component formatValue() {
+ return Component.literal(getString());
}
default boolean isInputValid(String input) {
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java
index b4358f4..2723089 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java
@@ -1,16 +1,16 @@
package dev.isxander.yacl.gui.controllers.string;
+import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.isxander.yacl.api.utils.Dimension;
import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.gui.controllers.ControllerWidget;
import dev.isxander.yacl.gui.utils.GuiUtils;
-import net.minecraft.client.gui.DrawableHelper;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.util.InputUtil;
-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.screens.Screen;
+import net.minecraft.network.chat.Component;
import java.util.function.Consumer;
@@ -28,7 +28,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
protected float ticks;
- private final Text emptyText;
+ private final Component emptyText;
public StringControllerElement(IStringController<?> control, YACLScreen screen, Dimension<Integer> dim, boolean instantApply) {
super(control, screen, dim);
@@ -36,48 +36,48 @@ public class StringControllerElement extends ControllerWidget<IStringController<
inputField = control.getString();
inputFieldFocused = false;
selectionLength = 0;
- emptyText = Text.literal("Click to type...").formatted(Formatting.GRAY);
+ emptyText = Component.literal("Click to type...").withStyle(ChatFormatting.GRAY);
control.option().addListener((opt, val) -> inputField = control.getString());
setDimension(dim);
}
@Override
- protected void drawHoveredControl(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ protected void drawHoveredControl(PoseStack matrices, int mouseX, int mouseY, float delta) {
}
@Override
- protected void drawValueText(MatrixStack matrices, int mouseX, int mouseY, float delta) {
- Text valueText = getValueText();
- if (!isHovered()) valueText = Text.literal(GuiUtils.shortenString(valueText.getString(), textRenderer, getMaxUnwrapLength(), "...")).setStyle(valueText.getStyle());
+ protected void drawValueText(PoseStack matrices, int mouseX, int mouseY, float delta) {
+ Component valueText = getValueText();
+ if (!isHovered()) valueText = Component.literal(GuiUtils.shortenString(valueText.getString(), textRenderer, getMaxUnwrapLength(), "...")).setStyle(valueText.getStyle());
- matrices.push();
- int textX = getDimension().xLimit() - textRenderer.getWidth(valueText) + renderOffset - getXPadding();
+ matrices.pushPose();
+ int textX = getDimension().xLimit() - textRenderer.width(valueText) + renderOffset - getXPadding();
matrices.translate(textX, getTextY(), 0);
GuiUtils.enableScissor(inputFieldBounds.x(), inputFieldBounds.y() - 2, inputFieldBounds.width() + 1, inputFieldBounds.height() + 4);
- textRenderer.drawWithShadow(matrices, valueText, 0, 0, getValueColor());
- matrices.pop();
+ textRenderer.drawShadow(matrices, valueText, 0, 0, getValueColor());
+ matrices.popPose();
if (isHovered()) {
ticks += delta;
String text = getValueText().getString();
- DrawableHelper.fill(matrices, inputFieldBounds.x(), inputFieldBounds.yLimit(), inputFieldBounds.xLimit(), inputFieldBounds.yLimit() + 1, -1);
- DrawableHelper.fill(matrices, inputFieldBounds.x() + 1, inputFieldBounds.yLimit() + 1, inputFieldBounds.xLimit() + 1, inputFieldBounds.yLimit() + 2, 0xFF404040);
+ GuiComponent.fill(matrices, inputFieldBounds.x(), inputFieldBounds.yLimit(), inputFieldBounds.xLimit(), inputFieldBounds.yLimit() + 1, -1);
+ GuiComponent.fill(matrices, inputFieldBounds.x() + 1, inputFieldBounds.yLimit() + 1, inputFieldBounds.xLimit() + 1, inputFieldBounds.yLimit() + 2, 0xFF404040);
if (inputFieldFocused || focused) {
- int caretX = textX + textRenderer.getWidth(text.substring(0, caretPos)) - 1;
+ int caretX = textX + textRenderer.width(text.substring(0, caretPos)) - 1;
if (text.isEmpty())
caretX = inputFieldBounds.x() + inputFieldBounds.width() / 2;
if (ticks % 20 <= 10) {
- DrawableHelper.fill(matrices, caretX, inputFieldBounds.y(), caretX + 1, inputFieldBounds.yLimit(), -1);
+ GuiComponent.fill(matrices, caretX, inputFieldBounds.y(), caretX + 1, inputFieldBounds.yLimit(), -1);
}
if (selectionLength != 0) {
- int selectionX = textX + textRenderer.getWidth(text.substring(0, caretPos + selectionLength));
- DrawableHelper.fill(matrices, caretX, inputFieldBounds.y() - 1, selectionX, inputFieldBounds.yLimit(), 0x803030FF);
+ int selectionX = textX + textRenderer.width(text.substring(0, caretPos + selectionLength));
+ GuiComponent.fill(matrices, caretX, inputFieldBounds.y() - 1, selectionX, inputFieldBounds.yLimit(), 0x803030FF);
}
}
}
@@ -93,12 +93,12 @@ public class StringControllerElement extends ControllerWidget<IStringController<
caretPos = getDefaultCaretPos();
} else {
// gets the appropriate caret position for where you click
- int textX = (int) mouseX - (inputFieldBounds.xLimit() - textRenderer.getWidth(getValueText()));
+ int textX = (int) mouseX - (inputFieldBounds.xLimit() - textRenderer.width(getValueText()));
int pos = -1;
int currentWidth = 0;
for (char ch : inputField.toCharArray()) {
pos++;
- int charLength = textRenderer.getWidth(String.valueOf(ch));
+ int charLength = textRenderer.width(String.valueOf(ch));
if (currentWidth + charLength / 2 > textX) { // if more than halfway past the characters select in front of that char
caretPos = pos;
break;
@@ -129,11 +129,11 @@ public class StringControllerElement extends ControllerWidget<IStringController<
return false;
switch (keyCode) {
- case InputUtil.GLFW_KEY_ESCAPE, InputUtil.GLFW_KEY_ENTER -> {
+ case InputConstants.KEY_ESCAPE, InputConstants.KEY_RETURN -> {
unfocus();
return true;
}
- case InputUtil.GLFW_KEY_LEFT -> {
+ case InputConstants.KEY_LEFT -> {
if (Screen.hasShiftDown()) {
if (Screen.hasControlDown()) {
int spaceChar = findSpaceIndex(true);
@@ -157,7 +157,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
return true;
}
- case InputUtil.GLFW_KEY_RIGHT -> {
+ case InputConstants.KEY_RIGHT -> {
if (Screen.hasShiftDown()) {
if (Screen.hasControlDown()) {
int spaceChar = findSpaceIndex(false);
@@ -181,11 +181,11 @@ public class StringControllerElement extends ControllerWidget<IStringController<
return true;
}
- case InputUtil.GLFW_KEY_BACKSPACE -> {
+ case InputConstants.KEY_BACKSPACE -> {
doBackspace();
return true;
}
- case InputUtil.GLFW_KEY_DELETE -> {
+ case InputConstants.KEY_DELETE -> {
doDelete();
return true;
}
@@ -205,13 +205,13 @@ public class StringControllerElement extends ControllerWidget<IStringController<
}
protected boolean doPaste() {
- this.write(client.keyboard.getClipboard());
+ this.write(client.keyboardHandler.getClipboard());
return true;
}
protected boolean doCopy() {
if (selectionLength != 0) {
- client.keyboard.setClipboard(getSelection());
+ client.keyboardHandler.setClipboard(getSelection());
return true;
}
return false;
@@ -219,7 +219,7 @@ public class StringControllerElement extends ControllerWidget<IStringController<
protected boolean doCut() {
if (selectionLength != 0) {
- client.keyboard.setClipboard(getSelection());
+ client.keyboardHandler.setClipboard(getSelection());
this.write("");
return true;
}
@@ -234,13 +234,13 @@ public class StringControllerElement extends ControllerWidget<IStringController<
}
protected void checkRenderOffset() {
- if (textRenderer.getWidth(inputField) < getUnshiftedLength()) {
+ if (textRenderer.width(inputField) < getUnshiftedLength()) {
renderOffset = 0;
return;
}
- int textX = getDimension().xLimit() - textRenderer.getWidth(inputField) - getXPadding();
- int caretX = textX + textRenderer.getWidth(inputField.substring(0, caretPos)) - 1;
+ int textX = getDimension().xLimit() - textRenderer.width(inputField) - getXPadding();
+ int caretX = textX + textRenderer.width(inputField.substring(0, caretPos)) - 1;
int minX = getDimension().xLimit() - getXPadding() - getUnshiftedLength();
int maxX = minX + getUnshiftedLength();
@@ -371,8 +371,8 @@ public class StringControllerElement extends ControllerWidget<IStringController<
public void setDimension(Dimension<Integer> dim) {
super.setDimension(dim);
- int width = Math.max(6, Math.min(textRenderer.getWidth(getValueText()), getUnshiftedLength()));
- inputFieldBounds = Dimension.ofInt(dim.xLimit() - getXPadding() - width, dim.centerY() - textRenderer.fontHeight / 2, width, textRenderer.fontHeight);
+ int width = Math.max(6, Math.min(textRenderer.width(getValueText()), getUnshiftedLength()));
+ inputFieldBounds = Dimension.ofInt(dim.xLimit() - getXPadding() - width, dim.centerY() - textRenderer.lineHeight / 2, width, textRenderer.lineHeight);
}
@Override
@@ -391,14 +391,14 @@ public class StringControllerElement extends ControllerWidget<IStringController<
@Override
protected int getHoveredControlWidth() {
- return Math.min(textRenderer.getWidth(getValueText()), getUnshiftedLength());
+ return Math.min(textRenderer.width(getValueText()), getUnshiftedLength());
}
@Override
- protected Text getValueText() {
+ protected Component getValueText() {
if (!inputFieldFocused && inputField.isEmpty())
return emptyText;
- return instantApply || !inputFieldFocused ? control.formatValue() : Text.of(inputField);
+ return instantApply || !inputFieldFocused ? control.formatValue() : Component.literal(inputField);
}
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/DoubleFieldController.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/DoubleFieldController.java
index 8933df3..df28241 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/DoubleFieldController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/DoubleFieldController.java
@@ -2,9 +2,8 @@ package dev.isxander.yacl.gui.controllers.string.number;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.gui.controllers.slider.DoubleSliderController;
-import net.minecraft.text.Text;
+import net.minecraft.network.chat.Component;
-import java.math.BigDecimal;
import java.util.function.Function;
/**
@@ -21,7 +20,7 @@ public class DoubleFieldController extends NumberFieldController<Double> {
* @param max maximum allowed value (clamped on apply)
* @param formatter display text, not used whilst editing
*/
- public DoubleFieldController(Option<Double> option, double min, double max, Function<Double, Text> formatter) {
+ public DoubleFieldController(Option<Double> option, double min, double max, Function<Double, Component> formatter) {
super(option, formatter);
this.min = min;
this.max = max;
@@ -47,7 +46,7 @@ public class DoubleFieldController extends NumberFieldController<Double> {
* @param option option to bind controller to
* @param formatter display text, not used whilst editing
*/
- public DoubleFieldController(Option<Double> option, Function<Double, Text> formatter) {
+ public DoubleFieldController(Option<Double> option, Function<Double, Component> formatter) {
this(option, -Double.MAX_VALUE, Double.MAX_VALUE, formatter);
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/FloatFieldController.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/FloatFieldController.java
index b1eb3a2..957100a 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/FloatFieldController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/FloatFieldController.java
@@ -2,9 +2,8 @@ package dev.isxander.yacl.gui.controllers.string.number;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.gui.controllers.slider.FloatSliderController;
-import net.minecraft.text.Text;
+import net.minecraft.network.chat.Component;
-import java.math.BigDecimal;
import java.util.function.Function;
/**
@@ -21,7 +20,7 @@ public class FloatFieldController extends NumberFieldController<Float> {
* @param max maximum allowed value (clamped on apply)
* @param formatter display text, not used whilst editing
*/
- public FloatFieldController(Option<Float> option, float min, float max, Function<Float, Text> formatter) {
+ public FloatFieldController(Option<Float> option, float min, float max, Function<Float, Component> formatter) {
super(option, formatter);
this.min = min;
this.max = max;
@@ -47,7 +46,7 @@ public class FloatFieldController extends NumberFieldController<Float> {
* @param option option to bind controller to
* @param formatter display text, not used whilst editing
*/
- public FloatFieldController(Option<Float> option, Function<Float, Text> formatter) {
+ public FloatFieldController(Option<Float> option, Function<Float, Component> formatter) {
this(option, -Float.MAX_VALUE, Float.MAX_VALUE, formatter);
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/IntegerFieldController.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/IntegerFieldController.java
index 50eecec..2d64a3a 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/IntegerFieldController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/IntegerFieldController.java
@@ -2,7 +2,7 @@ package dev.isxander.yacl.gui.controllers.string.number;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.gui.controllers.slider.IntegerSliderController;
-import net.minecraft.text.Text;
+import net.minecraft.network.chat.Component;
import java.util.function.Function;
@@ -20,7 +20,7 @@ public class IntegerFieldController extends NumberFieldController<Integer> {
* @param max maximum allowed value (clamped on apply)
* @param formatter display text, not used whilst editing
*/
- public IntegerFieldController(Option<Integer> option, int min, int max, Function<Integer, Text> formatter) {
+ public IntegerFieldController(Option<Integer> option, int min, int max, Function<Integer, Component> formatter) {
super(option, formatter);
this.min = min;
this.max = max;
@@ -46,7 +46,7 @@ public class IntegerFieldController extends NumberFieldController<Integer> {
* @param option option to bind controller to
* @param formatter display text, not used whilst editing
*/
- public IntegerFieldController(Option<Integer> option, Function<Integer, Text> formatter) {
+ public IntegerFieldController(Option<Integer> option, Function<Integer, Component> formatter) {
this(option, -Integer.MAX_VALUE, Integer.MAX_VALUE, formatter);
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/LongFieldController.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/LongFieldController.java
index 516de74..a640621 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/LongFieldController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/LongFieldController.java
@@ -2,7 +2,7 @@ package dev.isxander.yacl.gui.controllers.string.number;
import dev.isxander.yacl.api.Option;
import dev.isxander.yacl.gui.controllers.slider.LongSliderController;
-import net.minecraft.text.Text;
+import net.minecraft.network.chat.Component;
import java.util.function.Function;
@@ -20,7 +20,7 @@ public class LongFieldController extends NumberFieldController<Long> {
* @param max maximum allowed value (clamped on apply)
* @param formatter display text, not used whilst editing
*/
- public LongFieldController(Option<Long> option, long min, long max, Function<Long, Text> formatter) {
+ public LongFieldController(Option<Long> option, long min, long max, Function<Long, Component> formatter) {
super(option, formatter);
this.min = min;
this.max = max;
@@ -46,7 +46,7 @@ public class LongFieldController extends NumberFieldController<Long> {
* @param option option to bind controller to
* @param formatter display text, not used whilst editing
*/
- public LongFieldController(Option<Long> option, Function<Long, Text> formatter) {
+ public LongFieldController(Option<Long> option, Function<Long, Component> formatter) {
this(option, -Long.MAX_VALUE, Long.MAX_VALUE, formatter);
}
diff --git a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/NumberFieldController.java b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/NumberFieldController.java
index bf0354a..4240849 100644
--- a/src/client/java/dev/isxander/yacl/gui/controllers/string/number/NumberFieldController.java
+++ b/src/client/java/dev/isxander/yacl/gui/controllers/string/number/NumberFieldController.java
@@ -7,8 +7,8 @@ import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.gui.controllers.slider.ISliderController;
import dev.isxander.yacl.gui.controllers.string.IStringController;
import dev.isxander.yacl.gui.controllers.string.StringControllerElement;
-import net.minecraft.text.Text;
-import net.minecraft.util.math.MathHelper;
+import net.minecraft.network.chat.Component;
+import net.minecraft.util.Mth;
import java.text.DecimalFormatSymbols;
import java.util.function.Function;
@@ -20,9 +20,9 @@ import java.util.function.Function;
*/
public abstract class NumberFieldController<T extends Number> implements ISliderController<T>, IStringController<T> {
private final Option<T> option;
- private final Function<T, Text> displayFormatter;
+ private final Function<T, Component> displayFormatter;
- public NumberFieldController(Option<T> option, Function<T, Text> displayFormatter) {
+ public NumberFieldController(Option<T> option, Function<T, Component> displayFormatter) {
this.option = option;
this.displayFormatter = displayFormatter;
}
@@ -35,7 +35,7 @@ public abstract class NumberFieldController<T extends Number> implements ISlider
@Override
public void setFromString(String value) {
if (value.isEmpty() || value.equals(".") || value.equals("-")) value = "0";
- setPendingValue(MathHelper.clamp(Double.parseDouble(cleanupNumberString(value)), min(), max()));
+ setPendingValue(Mth.clamp(Double.parseDouble(cleanupNumberString(value)), min(), max()));
}
@Override
@@ -49,7 +49,7 @@ public abstract class NumberFieldController<T extends Number> implements ISlider
}
@Override
- public Text formatValue() {
+ public Component formatValue() {
return displayFormatter.apply(option().pendingValue());
}