From 2f6e31c11bfb9a58499cb32553d6df2c8e94aab9 Mon Sep 17 00:00:00 2001 From: Cloudperry Date: Fri, 10 Jun 2022 03:27:26 +0300 Subject: [PATCH 1/8] Update mappings, loader and Fabric API to 1.19. Update Loom to 0.12-SNAPSHOT (the version most 1.19 mods use). (#14) --- build.gradle | 2 +- gradle.properties | 10 +++++----- src/main/resources/fabric.mod.json | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 99fad2c..0376875 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.10.64' + id 'fabric-loom' version '0.12-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 9c2eec1..f1462a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.18.2 - yarn_mappings=1.18.2+build.2 - loader_version=0.13.3 + minecraft_version=1.19 + yarn_mappings=1.19+build.1 + loader_version=0.14.7 # Mod Properties - mod_version = 1.1.1 + mod_version = 1.1.2 maven_group = com.vladmarica archives_base_name = BetterPingDisplay-Fabric # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.48.0+1.18.2 + fabric_version=0.55.3+1.19 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index fe76b03..53c9cfe 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "betterpingdisplay", - "version": "1.1.1", + "version": "1.1.2", "name": "Better Ping Display", "description": "Shows the actual ping number instead of just bars in the player list!", @@ -28,8 +28,8 @@ ], "depends": { - "fabricloader": ">=0.12", - "minecraft": "1.18.x" + "fabricloader": ">=0.14", + "minecraft": "1.19.x" }, "suggests": {} } From d86e6b8046ffe80312302c332b73772d075d8572 Mon Sep 17 00:00:00 2001 From: vladmarica Date: Thu, 9 Jun 2022 18:43:33 -0700 Subject: [PATCH 2/8] Fix version number --- gradle.properties | 2 +- src/main/resources/fabric.mod.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index f1462a8..dbc6e6b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.14.7 # Mod Properties - mod_version = 1.1.2 + mod_version = 1.1.1 maven_group = com.vladmarica archives_base_name = BetterPingDisplay-Fabric diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 53c9cfe..c9ad8a7 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "betterpingdisplay", - "version": "1.1.2", + "version": "1.1.1", "name": "Better Ping Display", "description": "Shows the actual ping number instead of just bars in the player list!", From 578d42f5ab77d4ba4eafdf3ec7ba74120f0531cf Mon Sep 17 00:00:00 2001 From: vladmarica Date: Tue, 4 Oct 2022 21:56:37 -0700 Subject: [PATCH 3/8] Support Minecraft 1.19.2 --- gradle.properties | 8 ++++---- src/main/resources/fabric.mod.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index dbc6e6b..ca95ae6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.19 - yarn_mappings=1.19+build.1 - loader_version=0.14.7 + minecraft_version=1.19.2 + yarn_mappings=1.19.2+build.18 + loader_version=0.14.9 # Mod Properties mod_version = 1.1.1 @@ -14,4 +14,4 @@ org.gradle.jvmargs=-Xmx1G # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.55.3+1.19 + fabric_version=0.62.0+1.19.2 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c9ad8a7..79136cf 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,7 +29,7 @@ "depends": { "fabricloader": ">=0.14", - "minecraft": "1.19.x" + "minecraft": "1.19.2" }, "suggests": {} } From be31620992d734bf8bcabf75b82f047957c92f15 Mon Sep 17 00:00:00 2001 From: Thiago Gebrim <75040244+thiagogebrimm@users.noreply.github.com> Date: Wed, 4 Jan 2023 13:49:49 -0300 Subject: [PATCH 4/8] Update to 1.19.3 (#19) * Update to 1.19.3 Co-authored-by: Vlad Marica --- gradle.properties | 10 +++++----- src/main/resources/fabric.mod.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index ca95ae6..369dadc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.19.2 - yarn_mappings=1.19.2+build.18 - loader_version=0.14.9 + minecraft_version=1.19.3 + yarn_mappings=1.19.3+build.3 + loader_version=0.14.11 # Mod Properties - mod_version = 1.1.1 + mod_version = 1.1.2 maven_group = com.vladmarica archives_base_name = BetterPingDisplay-Fabric # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.62.0+1.19.2 + fabric_version=0.69.0+1.19.3 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 79136cf..bfce271 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,7 +29,7 @@ "depends": { "fabricloader": ">=0.14", - "minecraft": "1.19.2" + "minecraft": "1.19.3" }, "suggests": {} } From 3d8061954970c1ee3c17a8c4012232bab24dbc65 Mon Sep 17 00:00:00 2001 From: vladmarica Date: Wed, 4 Jan 2023 21:25:57 -0800 Subject: [PATCH 5/8] Drop version back to 1.1.1 in gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 369dadc..0249e34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.14.11 # Mod Properties - mod_version = 1.1.2 + mod_version = 1.1.1 maven_group = com.vladmarica archives_base_name = BetterPingDisplay-Fabric From 2b12d2cf70925e6c5a78083e9d9282ff585718c2 Mon Sep 17 00:00:00 2001 From: Yuuki Chan Date: Wed, 22 Mar 2023 21:56:15 +0900 Subject: [PATCH 6/8] Updated for 1.19.4 --- README.md | 13 +++++++------ gradle.properties | 18 +++++++++--------- src/main/resources/fabric.mod.json | 11 ++++++----- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 3b679a9..da5daee 100644 --- a/README.md +++ b/README.md @@ -13,18 +13,19 @@ This is a client-side mod. The server doesn't need to have it installed. It work ## Configuration This mod's config file is `betterpingdisplay.json`. It contains the following options: -| Option | Default Value | Description | -|---|---|---| -| autoColorPingText | `true` | Whether to color a player's ping based on their latency. E.g, low latency = green, high latency = red | -| renderPingBars | `false` | Whether to also draw the default Minecraft ping bars | -| pingTextColor | `#A0A0A0` | The ping text color to use. Only works whens `autoColorPingText` is false | -| pingTextFormatString | `%dms` | The format string for ping text. Must include a `%d`, which will be replaced dynamically by the actual ping value. +| Option | Default Value | Description | +|----------------------|---------------|--------------------------------------------------------------------------------------------------------------------| +| autoColorPingText | `true` | Whether to color a player's ping based on their latency. E.g, low latency = green, high latency = red | +| renderPingBars | `false` | Whether to also draw the default Minecraft ping bars | +| pingTextColor | `#A0A0A0` | The ping text color to use. Only works whens `autoColorPingText` is false | +| pingTextFormatString | `%dms` | The format string for ping text. Must include a `%d`, which will be replaced dynamically by the actual ping value. | ## Supported Minecraft Versions * **1.15.x** * **1.16.x** * **1.17.x** * **1.18.x** +* **1.19.x** ## Requirements * [Fabric](https://fabricmc.net/) diff --git a/gradle.properties b/gradle.properties index 0249e34..5ee80b0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,16 +2,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties - # check these on https://fabricmc.net/use - minecraft_version=1.19.3 - yarn_mappings=1.19.3+build.3 - loader_version=0.14.11 +# check these on https://fabricmc.net/use +minecraft_version=1.19.4 +yarn_mappings=1.19.4+build.1 +loader_version=0.14.17 # Mod Properties - mod_version = 1.1.1 - maven_group = com.vladmarica - archives_base_name = BetterPingDisplay-Fabric +mod_version = 1.1.2 +maven_group = com.vladmarica +archives_base_name = BetterPingDisplay-Fabric # Dependencies - # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.69.0+1.19.3 +# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api +fabric_version=0.76.0+1.19.4 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index bfce271..e9b7af9 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -6,12 +6,13 @@ "name": "Better Ping Display", "description": "Shows the actual ping number instead of just bars in the player list!", "authors": [ - "Quintinity" + "Quintinity", + "Yuuki" ], "contact": { - "homepage": "https://github.com/vladmarica/better-ping-display-fabric", - "sources": "https://github.com/vladmarica/better-ping-display-fabric", - "issues": "https://github.com/vladmarica/better-ping-display-fabric/issues" + "homepage": "https://git.raiza.dev/Raiza.dev/better-ping-display-fabric", + "sources": "https://git.raiza.dev/Raiza.dev/better-ping-display-fabric", + "issues": "https://git.raiza.dev/Raiza.dev/better-ping-display-fabric/issues" }, "license": "MIT", @@ -29,7 +30,7 @@ "depends": { "fabricloader": ">=0.14", - "minecraft": "1.19.3" + "minecraft": ">=1.19" }, "suggests": {} } From 0065f53bad9bfd8c831a00e88ac04366138c9c16 Mon Sep 17 00:00:00 2001 From: Yuuki Chan Date: Thu, 8 Jun 2023 14:13:41 +0900 Subject: [PATCH 7/8] Updated for 1.20 --- README.md | 17 +- build.gradle | 15 +- gradle.properties | 10 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../BetterPingDisplayMod.java | 73 ++++---- .../vladmarica/betterpingdisplay/Config.java | 159 +++++++++--------- .../betterpingdisplay/hud/ColorUtil.java | 55 +++--- .../hud/CustomPlayerListHud.java | 50 +++--- .../betterpingdisplay/hud/PingColors.java | 55 +++--- .../mixin/PlayerListHudInvoker.java | 6 +- .../mixin/PlayerListHudMixin.java | 54 +++--- src/main/resources/fabric.mod.json | 2 +- .../betterpingdisplay/hud/ColorUtilTest.java | 2 +- 13 files changed, 241 insertions(+), 259 deletions(-) diff --git a/README.md b/README.md index da5daee..378d900 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Better Ping Display - Fabric Edition -[![](http://cf.way2muchnoise.eu/full_406343_downloads.svg)](https://curseforge.com/minecraft/mc-mods/better-ping-display-fabric) +[![](http://cf.way2muchnoise.eu/full_406343_downloads.svg)](https://curseforge.com/minecraft/mc-mods/better-ping-display-fabric) A [Fabric](https://fabricmc.net/) mod for Minecraft to display each player's ping in the player list as a number. @@ -13,12 +13,12 @@ This is a client-side mod. The server doesn't need to have it installed. It work ## Configuration This mod's config file is `betterpingdisplay.json`. It contains the following options: -| Option | Default Value | Description | -|----------------------|---------------|--------------------------------------------------------------------------------------------------------------------| -| autoColorPingText | `true` | Whether to color a player's ping based on their latency. E.g, low latency = green, high latency = red | -| renderPingBars | `false` | Whether to also draw the default Minecraft ping bars | -| pingTextColor | `#A0A0A0` | The ping text color to use. Only works whens `autoColorPingText` is false | -| pingTextFormatString | `%dms` | The format string for ping text. Must include a `%d`, which will be replaced dynamically by the actual ping value. | +| Option | Default Value | Description | +|---|---|---| +| autoColorPingText | `true` | Whether to color a player's ping based on their latency. E.g, low latency = green, high latency = red | +| renderPingBars | `false` | Whether to also draw the default Minecraft ping bars | +| pingTextColor | `#A0A0A0` | The ping text color to use. Only works whens `autoColorPingText` is false | +| pingTextFormatString | `%dms` | The format string for ping text. Must include a `%d`, which will be replaced dynamically by the actual ping value. ## Supported Minecraft Versions * **1.15.x** @@ -26,6 +26,7 @@ This mod's config file is `betterpingdisplay.json`. It contains the following op * **1.17.x** * **1.18.x** * **1.19.x** +* **1.20** ## Requirements -* [Fabric](https://fabricmc.net/) +* [Fabric](https://fabricmc.net/) \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0376875..1230e96 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' + id 'fabric-loom' version '1.2-SNAPSHOT' id 'maven-publish' } @@ -32,18 +32,10 @@ processResources { } } -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { options.encoding = "UTF-8" } -// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task -// if it is present. -// If you remove this task, sources will not be generated. -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = "sources" - from sourceSets.main.allSource -} - jar { from "LICENSE" } @@ -56,9 +48,6 @@ publishing { artifact(remapJar) { builtBy remapJar } - artifact(sourcesJar) { - builtBy remapSourcesJar - } } } diff --git a/gradle.properties b/gradle.properties index 5ee80b0..1240c84 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.19.4 -yarn_mappings=1.19.4+build.1 -loader_version=0.14.17 +minecraft_version=1.20 +yarn_mappings=1.20+build.1 +loader_version=0.14.21 # Mod Properties -mod_version = 1.1.2 +mod_version = 1.1.3 maven_group = com.vladmarica archives_base_name = BetterPingDisplay-Fabric # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.76.0+1.19.4 +fabric_version=0.83.0+1.20 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e750102..fae0804 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/com/vladmarica/betterpingdisplay/BetterPingDisplayMod.java b/src/main/java/com/vladmarica/betterpingdisplay/BetterPingDisplayMod.java index 29a4e33..012b282 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/BetterPingDisplayMod.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/BetterPingDisplayMod.java @@ -1,52 +1,53 @@ package com.vladmarica.betterpingdisplay; import com.vladmarica.betterpingdisplay.Config.ConfigData; -import java.io.File; -import java.nio.file.Path; import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.File; +import java.nio.file.Path; + public class BetterPingDisplayMod implements ModInitializer { - public static final String MODID = "betterpingdisplay"; - public static final Logger LOGGER = LogManager.getLogger(MODID); - private static final String CONFIG_FILE_NAME = MODID + ".json"; - private static BetterPingDisplayMod INSTANCE; + public static final String MODID = "betterpingdisplay"; + public static final Logger LOGGER = LogManager.getLogger(MODID); + private static final String CONFIG_FILE_NAME = MODID + ".json"; + private static BetterPingDisplayMod INSTANCE; - private Config config = new Config(); + private Config config = new Config(); - @Override - public void onInitialize() { - INSTANCE = this; + @Override + public void onInitialize() { + INSTANCE = this; - Path configFilePath = FabricLoader.getInstance().getConfigDir().resolve(CONFIG_FILE_NAME); - File configFile = configFilePath.toFile(); - if (configFile.exists()) { - try { - ConfigData data = Config.loadConfigFile(configFile); - config = new Config(data); - Config.writeConfigFile(configFile, data); - } catch (Exception ex) { - LOGGER.error("Failed to load config file, using default. Error: {}", ex.getMessage()); - } - } else { - try { - LOGGER.warn("Could not find config file, creating a default one"); - Config.writeConfigFile(configFile, new ConfigData()); - } catch (Exception ex) { - LOGGER.error("Failed to write default config file. Error: {}", ex.getMessage()); - } - } + Path configFilePath = FabricLoader.getInstance().getConfigDir().resolve(CONFIG_FILE_NAME); + File configFile = configFilePath.toFile(); + if (configFile.exists()) { + try { + ConfigData data = Config.loadConfigFile(configFile); + config = new Config(data); + Config.writeConfigFile(configFile, data); + } catch (Exception ex) { + LOGGER.error("Failed to load config file, using default. Error: {}", ex.getMessage()); + } + } else { + try { + LOGGER.warn("Could not find config file, creating a default one"); + Config.writeConfigFile(configFile, new ConfigData()); + } catch (Exception ex) { + LOGGER.error("Failed to write default config file. Error: {}", ex.getMessage()); + } + } - LOGGER.info("BetterPingDisplay mod loaded"); - } + LOGGER.info("BetterPingDisplay mod loaded"); + } - public Config getConfig() { - return config; - } + public Config getConfig() { + return config; + } - public static BetterPingDisplayMod instance() { - return INSTANCE; - } + public static BetterPingDisplayMod instance() { + return INSTANCE; + } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/Config.java b/src/main/java/com/vladmarica/betterpingdisplay/Config.java index 90373a8..9e29cb8 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/Config.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/Config.java @@ -3,103 +3,96 @@ package com.vladmarica.betterpingdisplay; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.annotations.Expose; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Serializable; + +import java.io.*; public class Config { - private static final int DEFAULT_PING_TEXT_COLOR = 0xA0A0A0; - private static final String DEFAULT_PING_TEXT_FORMAT = "%dms"; + private static final int DEFAULT_PING_TEXT_COLOR = 0xA0A0A0; + private static final String DEFAULT_PING_TEXT_FORMAT = "%dms"; - private final boolean autoColorPingText; - private final boolean renderPingBars; - private int textColor = DEFAULT_PING_TEXT_COLOR; - private String textFormatString = DEFAULT_PING_TEXT_FORMAT; + private final boolean autoColorPingText; + private final boolean renderPingBars; + private int textColor = DEFAULT_PING_TEXT_COLOR; + private String textFormatString = DEFAULT_PING_TEXT_FORMAT; - public Config(ConfigData configFileFormat) { - if (configFileFormat.pingTextColor.startsWith("#")) { - try { - textColor = Integer.parseInt(configFileFormat.pingTextColor.substring(1), 16); - } - catch (NumberFormatException ex) { - BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code"); - } - } - else { - BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code"); + public Config(ConfigData configFileFormat) { + if (configFileFormat.pingTextColor.startsWith("#")) { + try { + textColor = Integer.parseInt(configFileFormat.pingTextColor.substring(1), 16); + } catch (NumberFormatException ex) { + BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code"); + } + } else { + BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code"); + } + + if (configFileFormat.pingTextFormatString.contains("%d")) { + textFormatString = configFileFormat.pingTextFormatString; + } else { + BetterPingDisplayMod.LOGGER.error("Config option 'pingTextFormatString' is invalid - it needs to contain %d"); + } + + autoColorPingText = configFileFormat.autoColorPingText; + renderPingBars = configFileFormat.renderPingBars; } - if (configFileFormat.pingTextFormatString.contains("%d")) { - textFormatString = configFileFormat.pingTextFormatString; - } - else { - BetterPingDisplayMod.LOGGER.error("Config option 'pingTextFormatString' is invalid - it needs to contain %d"); + public Config() { + this(new ConfigData()); } - autoColorPingText = configFileFormat.autoColorPingText; - renderPingBars = configFileFormat.renderPingBars; - } - - public Config() { - this(new ConfigData()); - } - - public int getTextColor() { - return this.textColor; - } - - public String getTextFormatString() { - return this.textFormatString; - } - - public boolean shouldAutoColorPingText() { - return this.autoColorPingText; - } - - public boolean shouldRenderPingBars() { - return this.renderPingBars; - } - - public static ConfigData loadConfigFile(File configFile) throws IOException { - FileReader reader = null; - try { - Gson gson = new Gson(); - reader = new FileReader(configFile); - return gson.fromJson(reader, ConfigData.class); + public int getTextColor() { + return this.textColor; } - finally { - if (reader != null) { - reader.close(); - } + + public String getTextFormatString() { + return this.textFormatString; } - } - public static void writeConfigFile(File configFile, ConfigData data) throws IOException { - FileWriter writer = null; - try { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - writer = new FileWriter(configFile); - writer.write(gson.toJson(data)); - } finally { - if (writer != null) { - writer.close(); - } + public boolean shouldAutoColorPingText() { + return this.autoColorPingText; } - } - public static class ConfigData implements Serializable { - @Expose - private boolean autoColorPingText = true; + public boolean shouldRenderPingBars() { + return this.renderPingBars; + } - @Expose - private boolean renderPingBars = false; + public static ConfigData loadConfigFile(File configFile) throws IOException { + FileReader reader = null; + try { + Gson gson = new Gson(); + reader = new FileReader(configFile); + return gson.fromJson(reader, ConfigData.class); + } finally { + if (reader != null) { + reader.close(); + } + } + } - @Expose - private String pingTextColor = "#A0A0A0"; + public static void writeConfigFile(File configFile, ConfigData data) throws IOException { + FileWriter writer = null; + try { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + writer = new FileWriter(configFile); + writer.write(gson.toJson(data)); + } finally { + if (writer != null) { + writer.close(); + } + } + } - @Expose - private String pingTextFormatString = "%dms"; - } + public static class ConfigData implements Serializable { + @Expose + private boolean autoColorPingText = true; + + @Expose + private boolean renderPingBars = false; + + @Expose + private String pingTextColor = "#A0A0A0"; + + @Expose + private String pingTextFormatString = "%dms"; + } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/hud/ColorUtil.java b/src/main/java/com/vladmarica/betterpingdisplay/hud/ColorUtil.java index 0d2ff9e..249ccb7 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/hud/ColorUtil.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/hud/ColorUtil.java @@ -3,36 +3,37 @@ package com.vladmarica.betterpingdisplay.hud; import com.google.common.annotations.VisibleForTesting; public final class ColorUtil { - public static int interpolate(int colorStart, int colorEnd, float offset) { - if (offset < 0 || offset > 1) { - throw new IllegalArgumentException("Offset must be between 0.0 and 1.0"); + public static int interpolate(int colorStart, int colorEnd, float offset) { + if (offset < 0 || offset > 1) { + throw new IllegalArgumentException("Offset must be between 0.0 and 1.0"); + } + + int redDiff = getRed(colorEnd) - getRed(colorStart); + int greenDiff = getGreen(colorEnd) - getGreen(colorStart); + int blueDiff = getBlue(colorEnd) - getBlue(colorStart); + + int newRed = Math.round(getRed(colorStart) + (redDiff * offset)); + int newGreen = Math.round(getGreen(colorStart) + (greenDiff * offset)); + int newBlue = Math.round(getBlue(colorStart) + (blueDiff * offset)); + + return (newRed << 16) | (newGreen << 8) | newBlue; } - int redDiff = getRed(colorEnd) - getRed(colorStart); - int greenDiff = getGreen(colorEnd) - getGreen(colorStart); - int blueDiff = getBlue(colorEnd) - getBlue(colorStart); + @VisibleForTesting + static int getRed(int color) { + return (color >> 16) & 0xFF; + } - int newRed = Math.round(getRed(colorStart) + (redDiff * offset)); - int newGreen = Math.round(getGreen(colorStart) + (greenDiff * offset)); - int newBlue = Math.round(getBlue(colorStart) + (blueDiff * offset)); + @VisibleForTesting + static int getGreen(int color) { + return (color >> 8) & 0xFF; + } - return (newRed << 16) | (newGreen << 8) | newBlue; - } + @VisibleForTesting + static int getBlue(int color) { + return color & 0xFF; + } - @VisibleForTesting - static int getRed(int color) { - return (color >> 16) & 0xFF; - } - - @VisibleForTesting - static int getGreen(int color) { - return (color >> 8) & 0xFF; - } - - @VisibleForTesting - static int getBlue(int color) { - return color & 0xFF; - } - - private ColorUtil() {} + private ColorUtil() { + } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java b/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java index ed66ea5..79d5d2b 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java @@ -5,38 +5,36 @@ import com.vladmarica.betterpingdisplay.BetterPingDisplayMod; import com.vladmarica.betterpingdisplay.Config; import com.vladmarica.betterpingdisplay.mixin.PlayerListHudInvoker; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.client.util.math.MatrixStack; public final class CustomPlayerListHud { - private static final int PING_TEXT_RENDER_OFFSET = -13; - private static final int PING_BARS_WIDTH = 11; - private static final Config config = BetterPingDisplayMod.instance().getConfig(); + private static final int PING_TEXT_RENDER_OFFSET = -13; + private static final int PING_BARS_WIDTH = 11; + private static final Config config = BetterPingDisplayMod.instance().getConfig(); - public static void renderPingDisplay( - MinecraftClient client, PlayerListHud hud, MatrixStack matrixStack, int width, int x, int y, PlayerListEntry player) { - TextRenderer textRenderer = client.textRenderer; + public static void renderPingDisplay( + MinecraftClient client, PlayerListHud hud, DrawContext context, int width, int x, int y, PlayerListEntry player) { + String pingString = String.format(config.getTextFormatString(), player.getLatency()); + int pingStringWidth = client.textRenderer.getWidth(pingString); + int pingTextColor = config.shouldAutoColorPingText() + ? PingColors.getColor(player.getLatency()) : config.getTextColor(); + int textX = width + x - pingStringWidth + PING_TEXT_RENDER_OFFSET; - String pingString = String.format(config.getTextFormatString(), player.getLatency()); - int pingStringWidth = textRenderer.getWidth(pingString); - int pingTextColor = config.shouldAutoColorPingText() ? PingColors.getColor(player.getLatency()) : config.getTextColor(); - int textX = width + x - pingStringWidth + PING_TEXT_RENDER_OFFSET; + if (!config.shouldRenderPingBars()) { + textX += PING_BARS_WIDTH; + } - if (!config.shouldRenderPingBars()) { - textX += PING_BARS_WIDTH; + // Draw the ping text for the given player + context.drawTextWithShadow(client.textRenderer, pingString, textX, y, pingTextColor); + + if (config.shouldRenderPingBars()) { + ((PlayerListHudInvoker) hud).invokeRenderLatencyIcon(context, width, x, y, player); + } else { + // If we don't render ping bars, we need to reset the render system color so the rest + // of the player list renders properly + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + } } - - // Draw the ping text for the given player - textRenderer.drawWithShadow(matrixStack, pingString, (float) textX, (float) y, pingTextColor); - - if (config.shouldRenderPingBars()) { - ((PlayerListHudInvoker) hud).invokeRenderLatencyIcon(matrixStack, width, x, y, player); - } else { - // If we don't render ping bars, we need to reset the render system color so the rest - // of the player list renders properly - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - } - } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/hud/PingColors.java b/src/main/java/com/vladmarica/betterpingdisplay/hud/PingColors.java index 578bc66..a22a09a 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/hud/PingColors.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/hud/PingColors.java @@ -3,37 +3,38 @@ package com.vladmarica.betterpingdisplay.hud; import net.minecraft.util.math.MathHelper; public final class PingColors { - public static final int PING_START = 0; - public static final int PING_MID = 150; - public static final int PING_END = 300; + public static final int PING_START = 0; + public static final int PING_MID = 150; + public static final int PING_END = 300; - public static final int COLOR_GREY = 0x535353; - public static final int COLOR_START = 0x00E676; - public static final int COLOR_MID = 0xD6CD30; - public static final int COLOR_END = 0xE53935; + public static final int COLOR_GREY = 0x535353; + public static final int COLOR_START = 0x00E676; + public static final int COLOR_MID = 0xD6CD30; + public static final int COLOR_END = 0xE53935; - public static int getColor(int ping) { - if (ping < PING_START) { - return COLOR_GREY; + public static int getColor(int ping) { + if (ping < PING_START) { + return COLOR_GREY; + } + + if (ping < PING_MID) { + return ColorUtil.interpolate( + COLOR_START, + COLOR_MID, + computeOffset(PING_START, PING_MID, ping)); + } + + return ColorUtil.interpolate( + COLOR_MID, + COLOR_END, + computeOffset(PING_MID, PING_END, Math.min(ping, PING_END))); } - if (ping < PING_MID) { - return ColorUtil.interpolate( - COLOR_START, - COLOR_MID, - computeOffset(PING_START, PING_MID, ping)); + private static float computeOffset(int start, int end, int value) { + float offset = (value - start) / (float) (end - start); + return MathHelper.clamp(offset, 0.0F, 1.0F); } - return ColorUtil.interpolate( - COLOR_MID, - COLOR_END, - computeOffset(PING_MID, PING_END, Math.min(ping, PING_END))); - } - - private static float computeOffset(int start, int end, int value) { - float offset = (value - start) / (float) ( end - start); - return MathHelper.clamp(offset, 0.0F, 1.0F); - } - - private PingColors() {} + private PingColors() { + } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudInvoker.java b/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudInvoker.java index 1b61772..5d57e0c 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudInvoker.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudInvoker.java @@ -1,13 +1,13 @@ package com.vladmarica.betterpingdisplay.mixin; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.client.util.math.MatrixStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(PlayerListHud.class) public interface PlayerListHudInvoker { - @Invoker("renderLatencyIcon") - void invokeRenderLatencyIcon(MatrixStack matrices, int width, int x, int y, PlayerListEntry entry); + @Invoker("renderLatencyIcon") + void invokeRenderLatencyIcon(DrawContext context, int width, int x, int y, PlayerListEntry entry); } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudMixin.java b/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudMixin.java index 9df6cad..e1612b5 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudMixin.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudMixin.java @@ -2,11 +2,9 @@ package com.vladmarica.betterpingdisplay.mixin; import com.vladmarica.betterpingdisplay.hud.CustomPlayerListHud; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.scoreboard.Scoreboard; -import net.minecraft.scoreboard.ScoreboardObjective; import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -19,32 +17,32 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(PlayerListHud.class) public abstract class PlayerListHudMixin { - @Unique - @Final - private static final int PLAYER_SLOT_EXTRA_WIDTH = 45; + @Unique + @Final + private static final int PLAYER_SLOT_EXTRA_WIDTH = 45; - @Shadow - @Final - private MinecraftClient client; + @Shadow + @Final + private MinecraftClient client; - /** - * Increases the int constant {@code 13} in the {@link PlayerListHud#render} method by - * {@value #PLAYER_SLOT_EXTRA_WIDTH}. This constant is used to define the width of the "slots" in the player list. - * In order to fit the ping text, this needs to be increased. - */ - @ModifyConstant(method = "render", constant = @Constant(intValue = 13)) - private int modifySlotWidthConstant(int original) { - return original + PLAYER_SLOT_EXTRA_WIDTH; - } + /** + * Increases the int constant {@code 13} in the {@link PlayerListHud#render} method by + * {@value #PLAYER_SLOT_EXTRA_WIDTH}. This constant is used to define the width of the "slots" in the player list. + * In order to fit the ping text, this needs to be increased. + */ + @ModifyConstant(method = "render", constant = @Constant(intValue = 13)) + private int modifySlotWidthConstant(int original) { + return original + PLAYER_SLOT_EXTRA_WIDTH; + } - /** - * Redirects the call to {@code renderLatencyIcon} in {@link PlayerListHud#render} to instead call - * {@link CustomPlayerListHud#renderPingDisplay}. - */ - @Redirect(method = "render", - at = @At(value = "INVOKE", target = "net/minecraft/client/gui/hud/PlayerListHud.renderLatencyIcon(Lnet/minecraft/client/util/math/MatrixStack;IIILnet/minecraft/client/network/PlayerListEntry;)V")) - private void redirectRenderLatencyIconCall( - PlayerListHud instance, MatrixStack matrices, int width, int x, int y, @NotNull PlayerListEntry entry) { - CustomPlayerListHud.renderPingDisplay(client, instance, matrices, width, x, y, entry); - } + /** + * Redirects the call to {@code renderLatencyIcon} in {@link PlayerListHud#render} to instead call + * {@link CustomPlayerListHud#renderPingDisplay}. + */ + @Redirect(method = "render", + at = @At(value = "INVOKE", target = "net/minecraft/client/gui/hud/PlayerListHud.renderLatencyIcon(Lnet/minecraft/client/gui/DrawContext;IIILnet/minecraft/client/network/PlayerListEntry;)V")) + private void redirectRenderLatencyIconCall( + PlayerListHud instance, DrawContext context, int width, int x, int y, @NotNull PlayerListEntry entry) { + CustomPlayerListHud.renderPingDisplay(client, instance, context, width, x, y, entry); + } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e9b7af9..7e3b308 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "betterpingdisplay", - "version": "1.1.1", + "version": "1.1.3", "name": "Better Ping Display", "description": "Shows the actual ping number instead of just bars in the player list!", diff --git a/src/test/java/com/vladmarica/betterpingdisplay/hud/ColorUtilTest.java b/src/test/java/com/vladmarica/betterpingdisplay/hud/ColorUtilTest.java index 51c4ab2..936717b 100644 --- a/src/test/java/com/vladmarica/betterpingdisplay/hud/ColorUtilTest.java +++ b/src/test/java/com/vladmarica/betterpingdisplay/hud/ColorUtilTest.java @@ -46,4 +46,4 @@ public class ColorUtilTest { assertThrows(IllegalArgumentException.class, () -> ColorUtil.interpolate(0, 1, -0.1F)); assertThrows(IllegalArgumentException.class, () -> ColorUtil.interpolate(0, 1, 1.1F)); } -} +} \ No newline at end of file From 99dfb2425855314cf85205d4c516c0dc51fd9be3 Mon Sep 17 00:00:00 2001 From: Yuuki Chan Date: Thu, 15 Jun 2023 13:05:07 +0900 Subject: [PATCH 8/8] Updated for 1.20.1 --- README.md | 2 +- gradle.properties | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 378d900..b365e7a 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ This mod's config file is `betterpingdisplay.json`. It contains the following op * **1.17.x** * **1.18.x** * **1.19.x** -* **1.20** +* **1.20.x** ## Requirements * [Fabric](https://fabricmc.net/) \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 1240c84..4d13014 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.20 -yarn_mappings=1.20+build.1 +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.1 loader_version=0.14.21 # Mod Properties -mod_version = 1.1.3 +mod_version = 1.1.4 maven_group = com.vladmarica archives_base_name = BetterPingDisplay-Fabric # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.83.0+1.20 +fabric_version=0.83.0+1.20.1