diff --git a/build.gradle b/build.gradle index e20561a..a83db42 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.3-SNAPSHOT' + id 'fabric-loom' version '1.5-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index f91743f..8109e5b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,16 +2,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html -minecraft_version=1.20.1 -yarn_mappings=1.20.1+build.10 -loader_version=0.14.22 +minecraft_version=1.20.4 +yarn_mappings=1.20.4+build.3 +loader_version=0.15.6 # Mod Properties mod_version=1.2.2 maven_group=io.toadlabs archives_base_name=numeralping # Dependencies # check this on https://modmuss50.me/fabric.html -fabric_version=0.86.1+1.20.1 -yacl_version=3.0.0-beta.7+1.20 -mod_menu_version=7.2.1 -devauth_version=1.1.2 +fabric_version=0.96.1+1.20.4 +yacl_version=3.3.1+1.20.4 +mod_menu_version=9.0.0 +devauth_version=1.2.0 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9f4197d..a80b22c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/io/toadlabs/numeralping/config/NumeralConfig.java b/src/main/java/io/toadlabs/numeralping/config/NumeralConfig.java index 00ebe7a..a7dc653 100644 --- a/src/main/java/io/toadlabs/numeralping/config/NumeralConfig.java +++ b/src/main/java/io/toadlabs/numeralping/config/NumeralConfig.java @@ -53,9 +53,8 @@ public String shiftPing(String string) { for (int index = 0; index < string.length(); index++) { characters[index] = string.charAt(index); - if (Character.isDigit(characters[index])) { + if (characters[index] >= '0' && characters[index] <= '9') characters[index] += 8272; - } } return String.valueOf(characters); diff --git a/src/main/java/io/toadlabs/numeralping/mixin/ServerEntryMixin.java b/src/main/java/io/toadlabs/numeralping/mixin/ServerEntryMixin.java index f8ae499..2c4e446 100644 --- a/src/main/java/io/toadlabs/numeralping/mixin/ServerEntryMixin.java +++ b/src/main/java/io/toadlabs/numeralping/mixin/ServerEntryMixin.java @@ -25,55 +25,54 @@ @Mixin(value = MultiplayerServerListWidget.ServerEntry.class, priority = 0) public class ServerEntryMixin { - @ModifyArgs(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawText(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIZ)I", ordinal = 0)) - public void shiftText(Args args) { - NumeralConfig config = NumeralConfig.instance(); + @ModifyArgs(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawText(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIZ)I", ordinal = 0)) + public void shiftText(Args args) { + NumeralConfig config = NumeralConfig.instance(); - if (config.serverList) { - args.set(2, ((int) args.get(2)) + 10 - client.textRenderer.getWidth(getPingText(config, server.ping))); - } - } + if (config.serverList) { + args.set(2, ((int) args.get(2)) + 10 - client.textRenderer.getWidth(getPingText(config, server.ping))); + } + } - // hide the tooltip if it's redundant - @ModifyArgs(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V"), require = 0) - public void setTooltip(Args args) { - var tooltip = (List) args.get(0); - if (tooltip != null && tooltip.size() == 1 && NumeralConfig.instance().serverList && tooltip.get(0).getContent() instanceof TranslatableTextContent translatable && translatable.getKey().equals("multiplayer.status.ping")) { - args.set(0, null); - } - } + // hide the tooltip if it's redundant + @ModifyArgs(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V"), require = 0) + public void setTooltip(Args args) { + var tooltip = (List) args.get(0); + if (tooltip != null && tooltip.size() == 1 && NumeralConfig.instance().serverList && tooltip.get(0).getContent() instanceof TranslatableTextContent translatable && translatable.getKey().equals("multiplayer.status.ping")) { + args.set(0, null); + } + } - @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawTexture(Lnet/minecraft/util/Identifier;IIFFIIII)V", ordinal = 0)) - public void renderDetailedLatency(DrawContext instance, Identifier id, int x, int y, float u, float v, int width, - int height, int textureWidth, int textureHeight) { - NumeralConfig config = NumeralConfig.instance(); + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V", ordinal = 0)) + public void renderDetailedLatency(DrawContext instance, Identifier texture, int x, int y, int width, int height) { + NumeralConfig config = NumeralConfig.instance(); - if (server.ping >= 0 && config.serverList) { - String text = getPingText(config, server.ping); + if (server.ping >= 0 && config.serverList) { + String text = getPingText(config, server.ping); - if (config.smallPing) { - y--; - } else { - y++; - } + if (config.smallPing) { + y--; + } else { + y++; + } - instance.drawText(client.textRenderer, text, x + 11 - client.textRenderer.getWidth(text), y, - Utils.getPingColour((int) server.ping), false); - return; - } + instance.drawText(client.textRenderer, text, x + 11 - client.textRenderer.getWidth(text), y, + Utils.getPingColour((int) server.ping), false); + return; + } - instance.drawTexture(id, x, y, u, v, width, height, textureWidth, textureHeight); - } + instance.drawGuiTexture(texture, x, y, width, height); + } - @Unique - private String getPingText(NumeralConfig config, long ping) { - return config.shiftPing(Long.toString(ping)); - } + @Unique + private String getPingText(NumeralConfig config, long ping) { + return config.shiftPing(Long.toString(ping)); + } - @Shadow - private @Final ServerInfo server; + @Shadow + private @Final ServerInfo server; - @Shadow - private @Final MinecraftClient client; + @Shadow + private @Final MinecraftClient client; } diff --git a/src/main/java/io/toadlabs/numeralping/util/Utils.java b/src/main/java/io/toadlabs/numeralping/util/Utils.java index 1f4dc9d..0bce3d6 100644 --- a/src/main/java/io/toadlabs/numeralping/util/Utils.java +++ b/src/main/java/io/toadlabs/numeralping/util/Utils.java @@ -6,38 +6,38 @@ public final class Utils { - public static int getPingColour(int latency) { - int level; - - NumeralConfig config = NumeralConfig.instance(); - - if (latency == -2) { - level = latency; - } else if (latency < 0) { - level = 5; - } else if (latency < config.defaultPingThreshold) { - level = 0; - } else if (latency < config.levelOnePingThreshold) { - level = 1; - } else if (latency < config.levelTwoPingThreshold) { - level = 2; - } else if (latency < config.levelThreePingThreshold) { - level = 3; - } else { - level = 4; - } - - // What is this crazy syntax? - // Thanks IntelliJ - Color colour = switch (level) { - case 1 -> config.levelOnePingColour; - case 2 -> config.levelTwoPingColour; - case 3 -> config.levelThreePingColour; - case 4 -> config.levelFourPingColour; - case 5 -> config.levelFivePingColour; - default -> config.defaultPingColour; - }; - - return colour.getRGB(); - } + public static int getPingColour(int latency) { + int level; + + NumeralConfig config = NumeralConfig.instance(); + + if (latency == -2) { + level = latency; + } else if (latency < 0) { + level = 5; + } else if (latency < config.defaultPingThreshold) { + level = 0; + } else if (latency < config.levelOnePingThreshold) { + level = 1; + } else if (latency < config.levelTwoPingThreshold) { + level = 2; + } else if (latency < config.levelThreePingThreshold) { + level = 3; + } else { + level = 4; + } + + // What is this crazy syntax? + // Thanks IntelliJ + Color colour = switch (level) { + case 1 -> config.levelOnePingColour; + case 2 -> config.levelTwoPingColour; + case 3 -> config.levelThreePingColour; + case 4 -> config.levelFourPingColour; + case 5 -> config.levelFivePingColour; + default -> config.defaultPingColour; + }; + + return colour.getRGB(); + } }