diff --git a/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java b/src/main/java/com/vladmarica/betterpingdisplay/hud/CustomPlayerListHud.java index 1766299..c9a9450 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; @@ -53,10 +54,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); } } @@ -84,24 +85,21 @@ 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 headerLines = null; if (header != null) { - list2 = mc.textRenderer.wrapStringToWidthAsList(header.asFormattedString(), width - 50); + headerLines = mc.textRenderer.wrapLines(header, width - 50); - String string; - for(Iterator var18 = list2.iterator(); var18.hasNext(); u = Math.max(u, mc.textRenderer.getStringWidth(string))) { - string = (String)var18.next(); + for (OrderedText headerLine : headerLines) { + u = Math.max(u, mc.textRenderer.getWidth(headerLine)); } } - List list3 = null; - String string3; - Iterator var36; + List footerLines = null; if (footer != null) { - list3 = mc.textRenderer.wrapStringToWidthAsList(footer.asFormattedString(), width - 50); + footerLines = mc.textRenderer.wrapLines(footer, width - 50); - for(var36 = list3.iterator(); var36.hasNext(); u = Math.max(u, mc.textRenderer.getStringWidth(string3))) { - string3 = (String)var36.next(); + for (OrderedText footerLine : footerLines) { + u = Math.max(u, mc.textRenderer.getWidth(footerLine)); } } @@ -110,23 +108,23 @@ public final class CustomPlayerListHud { int var10002; int var10004; int y; - if (list2 != null) { + if (headerLines != null) { var10000 = width / 2 - u / 2 - 1; var10001 = t - 1; var10002 = width / 2 + u / 2 + 1; - var10004 = list2.size(); - DrawableHelper.fill(var10000, var10001, var10002, t + var10004 * 9, Integer.MIN_VALUE); + var10004 = headerLines.size(); + 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); + for (OrderedText headerLine : headerLines) { + y = mc.textRenderer.getWidth(headerLine); + mc.textRenderer.drawWithShadow(stack, headerLine, (float)(width / 2 - y / 2), (float)t, -1); + t += 9; } ++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; @@ -135,7 +133,7 @@ public final class CustomPlayerListHud { ai = x % m; int aa = s + y * r + y * 5; int ab = t + ai * 9; - DrawableHelper.fill(stack, aa, ab, aa + r -1, 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(); @@ -150,34 +148,34 @@ 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); + int pingStringWidth = textRenderer.getWidth(pingString); int textX = r + aa - pingStringWidth + PING_TEXT_RENDER_OFFSET; if (displayPlayerIcons) { @@ -192,11 +190,11 @@ public final class CustomPlayerListHud { ? PingColors.getColor(player.getLatency()) : config.getTextColor(); - textRenderer.drawWithShadow(pingString, (float) textX, (float) ab, pingTextColor); + textRenderer.drawWithShadow(stack, pingString, (float) textX, (float) ab, pingTextColor); if (config.shouldRenderPingBars()) { PlayerListHudUtil.renderLatencyIcon( - hud, r, aa - (displayPlayerIcons ? PLAYER_ICON_WIDTH : 0), ab, player); + hud, stack, r, aa - (displayPlayerIcons ? PLAYER_ICON_WIDTH : 0), ab, 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 @@ -205,18 +203,18 @@ public final class CustomPlayerListHud { } } - if (list3 != null) { + if (footerLines != null) { t += m * 9 + 1; var10000 = width / 2 - u / 2 - 1; var10001 = t - 1; var10002 = width / 2 + u / 2 + 1; - var10004 = list3.size(); - DrawableHelper.fill(var10000, var10001, var10002, t + var10004 * 9, Integer.MIN_VALUE); + var10004 = footerLines.size(); + 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); + for (OrderedText footerLine : footerLines) { + ai = textRenderer.getWidth(footerLine); + textRenderer.drawWithShadow(stack, footerLine, (float)(width / 2 - ai / 2), (float)t, -1); + t += 9; } } } @@ -233,4 +231,4 @@ public final class CustomPlayerListHud { .result(); } } -} +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 74a81e1..2b2e63c 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.0", + "version": "1.1", "name": "Better Ping Display", "description": "Shows the actual ping number instead of just bars in the player list!",