From 8e1a22a996accb0edd3014422af09d0356aae7bd Mon Sep 17 00:00:00 2001 From: vladmarica Date: Thu, 17 Sep 2020 00:22:33 -0300 Subject: [PATCH] Port to 1.16.3 --- README.md | 2 +- gradle.properties | 8 +-- .../hud/CustomPlayerListHud.java | 56 ++++++++++--------- .../hud/PlayerListHudUtil.java | 9 +-- .../mixin/InGameHudMixin.java | 7 ++- .../mixin/PlayerListHudAccessor.java | 5 +- src/main/resources/fabric.mod.json | 6 +- 7 files changed, 50 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 4a5ce7b..657eeef 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This is a client-side mod. The server doesn't need to have it installed. It work ## Supported Minecraft Versions * **1.15.x** - +* **1.16.x** ## Requirements * [Fabric](https://fabricmc.net/) diff --git a/gradle.properties b/gradle.properties index 0c962ea..3f9c45b 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.15.2 - yarn_mappings=1.15.2+build.17 - loader_version=0.9.2+build.206 + minecraft_version=1.16.3 + yarn_mappings=1.16.3+build.7 + loader_version=0.9.3+build.207 # Mod Properties mod_version = 1.0.0 @@ -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.19.0+build.325-1.15 + fabric_version=0.20.2+build.402-1.16 diff --git a/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java b/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java index f68749e..834edfa 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java @@ -5,6 +5,7 @@ import com.google.common.collect.Ordering; import com.mojang.authlib.GameProfile; import com.mojang.blaze3d.systems.RenderSystem; import com.vladmarica.betterpingdisplay.Config; +import com.vladmarica.betterpingdisplay.hud.CustomPlayerListHud.EntryOrderComparator; import com.vladmarica.betterpingdisplay.BetterPingDisplayMod; import java.util.Comparator; import java.util.Iterator; @@ -18,11 +19,13 @@ import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.render.entity.PlayerModelPart; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.ScoreboardCriterion; import net.minecraft.scoreboard.ScoreboardObjective; import net.minecraft.scoreboard.Team; +import net.minecraft.text.OrderedText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.world.GameMode; @@ -34,7 +37,7 @@ public final class CustomPlayerListHud { private static final int PLAYER_SLOT_EXTRA_WIDTH = 45; private static final int PLAYER_ICON_WIDTH = 9; - public static void render(PlayerListHud hud, int width, Scoreboard scoreboard, ScoreboardObjective obj) { + public static void render(PlayerListHud hud, MatrixStack stack, int width, Scoreboard scoreboard, ScoreboardObjective obj) { MinecraftClient mc = MinecraftClient.getInstance(); TextRenderer textRenderer = mc.textRenderer; Text header = PlayerListHudUtil.getHeader(hud); @@ -50,10 +53,10 @@ public final class CustomPlayerListHud { int n; while(playerListIterator.hasNext()) { PlayerListEntry playerListEntry = (PlayerListEntry)playerListIterator.next(); - n = mc.textRenderer.getStringWidth(hud.getPlayerName(playerListEntry).asFormattedString()); + n = mc.textRenderer.getWidth(hud.getPlayerName(playerListEntry)); i = Math.max(i, n); if (obj != null && obj.getRenderType() != ScoreboardCriterion.RenderType.HEARTS) { - n = textRenderer.getStringWidth(" " + scoreboard.getPlayerScore(playerListEntry.getProfile().getName(), obj).getScore()); + n = textRenderer.getWidth(" " + scoreboard.getPlayerScore(playerListEntry.getProfile().getName(), obj).getScore()); j = Math.max(j, n); } } @@ -81,23 +84,23 @@ public final class CustomPlayerListHud { int s = width / 2 - (r * n + (n - 1) * 5) / 2; int t = 10; int u = r * n + (n - 1) * 5; - List list2 = null; + List list2 = null; if (header != null) { - list2 = mc.textRenderer.wrapStringToWidthAsList(header.asFormattedString(), width - 50); + list2 = mc.textRenderer.wrapLines(header, width - 50); String string; - for(Iterator var18 = list2.iterator(); var18.hasNext(); u = Math.max(u, mc.textRenderer.getStringWidth(string))) { + for(Iterator var18 = list2.iterator(); var18.hasNext(); u = Math.max(u, mc.textRenderer.getWidth(string))) { string = (String)var18.next(); } } - List list3 = null; + List list3 = null; String string3; Iterator var36; if (footer != null) { - list3 = mc.textRenderer.wrapStringToWidthAsList(footer.asFormattedString(), width - 50); + list3 = mc.textRenderer.wrapLines(footer, width - 50); - for(var36 = list3.iterator(); var36.hasNext(); u = Math.max(u, mc.textRenderer.getStringWidth(string3))) { + for(var36 = list3.iterator(); var36.hasNext(); u = Math.max(u, mc.textRenderer.getWidth(string3))) { string3 = (String)var36.next(); } } @@ -112,18 +115,18 @@ public final class CustomPlayerListHud { var10001 = t - 1; var10002 = width / 2 + u / 2 + 1; var10004 = list2.size(); - DrawableHelper.fill(var10000, var10001, var10002, t + var10004 * 9, Integer.MIN_VALUE); + DrawableHelper.fill(stack, var10000, var10001, var10002, t + var10004 * 9, Integer.MIN_VALUE); for(var36 = list2.iterator(); var36.hasNext(); t += 9) { string3 = (String)var36.next(); - y = mc.textRenderer.getStringWidth(string3); - mc.textRenderer.drawWithShadow(string3, (float)(width / 2 - y / 2), (float)t, -1); + y = mc.textRenderer.getWidth(string3); + mc.textRenderer.drawWithShadow(stack, string3, (float)(width / 2 - y / 2), (float)t, -1); } ++t; } - DrawableHelper.fill(width / 2 - u / 2 - 1, t - 1, width / 2 + u / 2 + 1, t + m * 9, Integer.MIN_VALUE); + DrawableHelper.fill(stack, width / 2 - u / 2 - 1, t - 1, width / 2 + u / 2 + 1, t + m * 9, Integer.MIN_VALUE); int w = mc.options.getTextBackgroundColor(553648127); int ai; @@ -132,7 +135,7 @@ public final class CustomPlayerListHud { ai = x % m; int aa = s + y * r + y * 5; int ab = t + ai * 9; - DrawableHelper.fill(aa, ab, aa + r, ab + 8, w); + DrawableHelper.fill(stack, aa, ab, aa + r, ab + 8, w); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.enableAlphaTest(); RenderSystem.enableBlend(); @@ -147,41 +150,42 @@ public final class CustomPlayerListHud { mc.getTextureManager().bindTexture(player.getSkinTexture()); ah = 8 + (bl2 ? 8 : 0); int ad = 8 * (bl2 ? -1 : 1); - DrawableHelper.blit(aa, ab, 8, 8, 8.0F, (float)ah, 8, ad, 64, 64); + DrawableHelper.drawTexture(stack, aa, ab, 8, 8, 8.0F, (float)ah, 8, ad, 64, 64); if (playerEntity != null && playerEntity.isPartVisible(PlayerModelPart.HAT)) { int ae = 8 + (bl2 ? 8 : 0); int af = 8 * (bl2 ? -1 : 1); - DrawableHelper.blit(aa, ab, 8, 8, 40.0F, (float)ae, 8, af, 64, 64); + DrawableHelper.drawTexture(stack, aa, ab, 8, 8, 40.0F, (float)ae, 8, af, 64, 64); } aa += 9; } - String string4 = hud.getPlayerName(player).asFormattedString(); + Text playerName = hud.getPlayerName(player); if (player.getGameMode() == GameMode.SPECTATOR) { - mc.textRenderer.drawWithShadow(Formatting.ITALIC + string4, (float)aa, (float)ab, -1862270977); + mc.textRenderer.drawWithShadow(stack, playerName, (float)aa, (float)ab, -1862270977); } else { - mc.textRenderer.drawWithShadow(string4, (float)aa, (float)ab, -1); + mc.textRenderer.drawWithShadow(stack, playerName, (float)aa, (float)ab, -1); } if (obj != null && player.getGameMode() != GameMode.SPECTATOR) { int ag = aa + i + 1; ah = ag + q; if (ah - ag > 5) { - PlayerListHudUtil.renderScoreboardObjective(hud, obj, ab, gameProfile.getName(), ag, ah, player); + PlayerListHudUtil.renderScoreboardObjective(hud, stack, obj, ab, gameProfile.getName(), ag, ah, player); } } // Here is the magic, rendering the ping text String pingString = String.format(config.getTextFormatString(), player.getLatency()); - int pingStringWidth = textRenderer.getStringWidth(pingString); - textRenderer.drawWithShadow( + int pingStringWidth = textRenderer.getWidth(pingString); + textRenderer.draw( + stack, pingString, (float) r + aa - pingStringWidth + PING_TEXT_RENDER_OFFSET - (displayPlayerIcons ? PLAYER_ICON_WIDTH : 0), (float) ab, config.getTextColor()); - PlayerListHudUtil.renderLatencyIcon(hud, r, aa - (displayPlayerIcons ? PLAYER_ICON_WIDTH : 0), ab, player); + PlayerListHudUtil.renderLatencyIcon(hud, stack ,r, aa - (displayPlayerIcons ? PLAYER_ICON_WIDTH : 0), ab, player); } } @@ -191,12 +195,12 @@ public final class CustomPlayerListHud { var10001 = t - 1; var10002 = width / 2 + u / 2 + 1; var10004 = list3.size(); - DrawableHelper.fill(var10000, var10001, var10002, t + var10004 * 9, Integer.MIN_VALUE); + DrawableHelper.fill(stack, var10000, var10001, var10002, t + var10004 * 9, Integer.MIN_VALUE); for(Iterator var39 = list3.iterator(); var39.hasNext(); t += 9) { String string5 = (String)var39.next(); - ai = textRenderer.getStringWidth(string5); - textRenderer.drawWithShadow(string5, (float)(width / 2 - ai / 2), (float)t, -1); + ai = textRenderer.getWidth(string5); + textRenderer.drawWithShadow(stack, string5, (float)(width / 2 - ai / 2), (float)t, -1); } } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/hud/PlayerListHudUtil.java b/src/main/java/com/vladmarica/betterpingdisplay/hud/PlayerListHudUtil.java index 5b5af27..ce32726 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/hud/PlayerListHudUtil.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/hud/PlayerListHudUtil.java @@ -3,16 +3,17 @@ package com.vladmarica.betterpingdisplay.hud; import com.vladmarica.betterpingdisplay.mixin.PlayerListHudAccessor; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.scoreboard.ScoreboardObjective; import net.minecraft.text.Text; public class PlayerListHudUtil { - static void renderLatencyIcon(PlayerListHud hud, int x, int offsetX, int y, PlayerListEntry player) { - ((PlayerListHudAccessor) hud).invokeRenderLatencyIcon(x, offsetX, y, player); + static void renderLatencyIcon(PlayerListHud hud, MatrixStack stack, int x, int offsetX, int y, PlayerListEntry player) { + ((PlayerListHudAccessor) hud).invokeRenderLatencyIcon(stack, x, offsetX, y, player); } - static void renderScoreboardObjective(PlayerListHud hud, ScoreboardObjective obj, int i, String str, int j, int k, PlayerListEntry player) { - ((PlayerListHudAccessor) hud).invokeRenderScoreboardObjective(obj, i, str, j, k, player); + static void renderScoreboardObjective(PlayerListHud hud, MatrixStack stack, ScoreboardObjective obj, int i, String str, int j, int k, PlayerListEntry player) { + ((PlayerListHudAccessor) hud).invokeRenderScoreboardObjective(obj, i, str, j, k, player, stack); } static Text getHeader(PlayerListHud hud) { diff --git a/src/main/java/com/vladmarica/betterpingdisplay/mixin/InGameHudMixin.java b/src/main/java/com/vladmarica/betterpingdisplay/mixin/InGameHudMixin.java index 43f098d..4911b83 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/mixin/InGameHudMixin.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/mixin/InGameHudMixin.java @@ -3,6 +3,7 @@ package com.vladmarica.betterpingdisplay.mixin; import com.vladmarica.betterpingdisplay.hud.CustomPlayerListHud; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.gui.hud.PlayerListHud; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.ScoreboardObjective; import org.spongepowered.asm.mixin.Mixin; @@ -12,8 +13,8 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(InGameHud.class) abstract class InGameHudMixin { @Redirect(method = "render", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/PlayerListHud;render(ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V")) - private void render(PlayerListHud hud, int width, Scoreboard scoreboard, ScoreboardObjective objective) { - CustomPlayerListHud.render(hud, width, scoreboard, objective); + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/PlayerListHud;render(Lnet/minecraft/client/util/math/MatrixStack;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V")) + private void render(PlayerListHud hud, MatrixStack stack, int width, Scoreboard scoreboard, ScoreboardObjective objective) { + CustomPlayerListHud.render(hud, stack, width, scoreboard, objective); } } diff --git a/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudAccessor.java b/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudAccessor.java index 1f8cd62..8d5f8d8 100644 --- a/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudAccessor.java +++ b/src/main/java/com/vladmarica/betterpingdisplay/mixin/PlayerListHudAccessor.java @@ -2,6 +2,7 @@ package com.vladmarica.betterpingdisplay.mixin; import net.minecraft.client.gui.hud.PlayerListHud; import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.scoreboard.ScoreboardObjective; import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; @@ -11,10 +12,10 @@ import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(PlayerListHud.class) public interface PlayerListHudAccessor { @Invoker - void invokeRenderLatencyIcon(int x, int offsetX, int y, PlayerListEntry player); + void invokeRenderLatencyIcon(MatrixStack stack, int x, int offsetX, int y, PlayerListEntry player); @Invoker - void invokeRenderScoreboardObjective(ScoreboardObjective obj, int i, String str, int j, int k, PlayerListEntry player); + void invokeRenderScoreboardObjective(ScoreboardObjective obj, int i, String str, int j, int k, PlayerListEntry player, MatrixStack stack); @Accessor("header") Text getHeader(); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2c32f27..74a81e1 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,10 +1,10 @@ { "schemaVersion": 1, - "id": "modid", + "id": "betterpingdisplay", "version": "1.0", "name": "Better Ping Display", - "description": "Shows the actual ping number instead of just bars in the player list.!", + "description": "Shows the actual ping number instead of just bars in the player list!", "authors": [ "Quintinity" ], @@ -28,7 +28,7 @@ "depends": { "fabricloader": ">=0.7.4", - "minecraft": "1.15.x" + "minecraft": "1.16.x" }, "suggests": { "flamingo": "*"