From af371180e1936d296978da1b7a02216650b71492 Mon Sep 17 00:00:00 2001 From: Vinrobot Date: Mon, 22 Apr 2024 21:14:08 +0200 Subject: [PATCH] Create custom TextFieldWidget to work with both 1.20.0 and 1.20.4 --- .editorconfig | 1 + build.gradle | 2 +- .../client/widget/ConfigurationScreen.java | 5 ++-- .../client/widget/CustomTextFieldWidget.java | 29 +++++++++++++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 src/client/java/net/vinrobot/mcemote/client/widget/CustomTextFieldWidget.java diff --git a/.editorconfig b/.editorconfig index 396d312..58050da 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,6 +1,7 @@ root = true [*] +end_of_line = lf indent_size = 4 indent_style = tab insert_final_newline = true diff --git a/build.gradle b/build.gradle index ef811b9..3ae8411 100644 --- a/build.gradle +++ b/build.gradle @@ -57,7 +57,7 @@ dependencies { // WebP support for animated WebP using official Google's native library modClientImplementation "com.github.Vinrobot.WebPDecoderJN:lib:${project.webpdecoderjn_version}" - include "com.github.Vinrobot.WebPDecoderJN:lib:${rootProject.webpdecoderjn_version}" + include "com.github.Vinrobot.WebPDecoderJN:lib:${project.webpdecoderjn_version}" modImplementation "org.apache.httpcomponents:httpclient-cache:${project.httpcomponents_version}" include "org.apache.httpcomponents:httpclient-cache:${project.httpcomponents_version}" diff --git a/src/client/java/net/vinrobot/mcemote/client/widget/ConfigurationScreen.java b/src/client/java/net/vinrobot/mcemote/client/widget/ConfigurationScreen.java index ba22ce4..6973b0a 100644 --- a/src/client/java/net/vinrobot/mcemote/client/widget/ConfigurationScreen.java +++ b/src/client/java/net/vinrobot/mcemote/client/widget/ConfigurationScreen.java @@ -4,7 +4,6 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.screen.ScreenTexts; import net.minecraft.text.Text; import net.vinrobot.mcemote.config.Configuration; @@ -24,7 +23,7 @@ public class ConfigurationScreen extends BaseScreen { private final ConfigurationManager configManager; private ButtonWidget doneButton; - private TextFieldWidget twitchIdField; + private CustomTextFieldWidget twitchIdField; private SliderFieldWidget emoteScalingField; public ConfigurationScreen(final Screen parent, final ConfigurationManager configManager) { @@ -45,7 +44,7 @@ protected void init() { final int widgetX = (this.width - widgetWidth) / 2; final Configuration config = this.configManager.getConfig(); - this.twitchIdField = new TextFieldWidget(this.textRenderer, widgetX, 75, widgetWidth, widgetHeight, TWITCH_ID_LABEL); + this.twitchIdField = new CustomTextFieldWidget(this.textRenderer, widgetX, 75, widgetWidth, widgetHeight, TWITCH_ID_LABEL); this.twitchIdField.setMaxLength(32); this.twitchIdField.setText(config.twitchId().get()); this.twitchIdField.setChangedListener((value) -> this.validateInputs()); diff --git a/src/client/java/net/vinrobot/mcemote/client/widget/CustomTextFieldWidget.java b/src/client/java/net/vinrobot/mcemote/client/widget/CustomTextFieldWidget.java new file mode 100644 index 0000000..67bcec6 --- /dev/null +++ b/src/client/java/net/vinrobot/mcemote/client/widget/CustomTextFieldWidget.java @@ -0,0 +1,29 @@ +package net.vinrobot.mcemote.client.widget; + +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.text.Text; + +public class CustomTextFieldWidget extends TextFieldWidget { + private final Runnable tickMethod; + + public CustomTextFieldWidget(final TextRenderer textRenderer, final int x, final int y, final int width, final int height, final Text text) { + super(textRenderer, x, y, width, height, text); + this.tickMethod = getTickMethod(); + } + + public void tick() { + this.tickMethod.run(); + } + + private Runnable getTickMethod() { + try { + super.tick(); + return () -> super.tick(); + } catch (final NoSuchMethodError e) { + e.printStackTrace(); + return () -> { + }; + } + } +}