From 0457def28e666aac6f9d325b31b3dc4cbec1e8e9 Mon Sep 17 00:00:00 2001 From: Shiewk Date: Sun, 8 Sep 2024 10:44:21 +0200 Subject: [PATCH] (slightly) improve BasicTextWidget performance --- .../shiewk/widgets/widgets/BandwidthWidget.java | 2 +- .../shiewk/widgets/widgets/BasicTextWidget.java | 15 ++++++++++++++- .../java/de/shiewk/widgets/widgets/CPSWidget.java | 2 +- .../de/shiewk/widgets/widgets/ClockWidget.java | 2 +- .../java/de/shiewk/widgets/widgets/FPSWidget.java | 2 +- .../de/shiewk/widgets/widgets/PingWidget.java | 2 +- .../shiewk/widgets/widgets/PlayerCountWidget.java | 2 +- .../de/shiewk/widgets/widgets/ServerIPWidget.java | 2 +- 8 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java b/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java index 504ef85..64c6a4c 100644 --- a/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java @@ -20,7 +20,7 @@ public class BandwidthWidget extends BasicTextWidget { private boolean dynamicColor = false; @Override - public void tick() { + public void tickWidget() { t++; if (t >= 20){ t = 0; diff --git a/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java b/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java index 37182ad..06d95f0 100644 --- a/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java @@ -15,6 +15,8 @@ import java.util.List; public abstract class BasicTextWidget extends ModWidget { protected Text renderText = Text.empty(); + private int textWidthH; + private TextRenderer renderer = null; private static ObjectArrayList getCustomSettings(List otherCustomOptions) { final ObjectArrayList list = new ObjectArrayList<>(otherCustomOptions); @@ -46,10 +48,21 @@ public abstract class BasicTextWidget extends ModWidget { @Override public void render(DrawContext context, long n, TextRenderer textRenderer, int posX, int posY) { + renderer = textRenderer; context.fill(posX, posY, posX + width(), posY + height(), this.backgroundColor); - context.drawCenteredTextWithShadow(textRenderer, renderText, posX + (width() / 2), posY + 6, this.textColor); + context.drawText(textRenderer, renderText, posX + (width() / 2) - textWidthH, posY + 6, this.textColor, true); } + @Override + public final void tick() { + tickWidget(); + if (renderer != null){ + this.textWidthH = renderer.getWidth(renderText) / 2; + } + } + + public abstract void tickWidget(); + @Override public void onSettingsChanged(WidgetSettings settings) { this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor(); diff --git a/src/main/java/de/shiewk/widgets/widgets/CPSWidget.java b/src/main/java/de/shiewk/widgets/widgets/CPSWidget.java index e07440b..886fb1a 100644 --- a/src/main/java/de/shiewk/widgets/widgets/CPSWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/CPSWidget.java @@ -70,7 +70,7 @@ public class CPSWidget extends BasicTextWidget { } @Override - public void tick() { + public void tickWidget() { int left = 0; int right = 0; int middle = 0; diff --git a/src/main/java/de/shiewk/widgets/widgets/ClockWidget.java b/src/main/java/de/shiewk/widgets/widgets/ClockWidget.java index 218e9fe..84d9efa 100644 --- a/src/main/java/de/shiewk/widgets/widgets/ClockWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/ClockWidget.java @@ -100,7 +100,7 @@ public class ClockWidget extends BasicTextWidget { } @Override - public void tick() { + public void tickWidget() { renderText = Text.literal(dateFormat.format(Date.from(Instant.now()))); } diff --git a/src/main/java/de/shiewk/widgets/widgets/FPSWidget.java b/src/main/java/de/shiewk/widgets/widgets/FPSWidget.java index 41eeebe..501c42d 100644 --- a/src/main/java/de/shiewk/widgets/widgets/FPSWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/FPSWidget.java @@ -12,7 +12,7 @@ public class FPSWidget extends BasicTextWidget { } @Override - public void tick() { + public void tickWidget() { this.renderText = Text.literal(MinecraftClient.getInstance().getCurrentFps() + " FPS"); } diff --git a/src/main/java/de/shiewk/widgets/widgets/PingWidget.java b/src/main/java/de/shiewk/widgets/widgets/PingWidget.java index eec5d94..0bd800a 100644 --- a/src/main/java/de/shiewk/widgets/widgets/PingWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/PingWidget.java @@ -22,7 +22,7 @@ public class PingWidget extends BasicTextWidget { private boolean dynamicColor = false; @Override - public void tick() { + public void tickWidget() { final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler(); if (networkHandler != null){ if (lastPingQuery < Util.getMeasuringTimeMs() - 5000){ diff --git a/src/main/java/de/shiewk/widgets/widgets/PlayerCountWidget.java b/src/main/java/de/shiewk/widgets/widgets/PlayerCountWidget.java index 301d95f..87733ae 100644 --- a/src/main/java/de/shiewk/widgets/widgets/PlayerCountWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/PlayerCountWidget.java @@ -13,7 +13,7 @@ public class PlayerCountWidget extends BasicTextWidget{ } @Override - public void tick() { + public void tickWidget() { final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler(); String online = networkHandler == null ? "?" : String.valueOf(networkHandler.getPlayerUuids().size()); this.renderText = Text.literal(Text.translatable("widgets.widgets.playerCount.online", online).getString()); diff --git a/src/main/java/de/shiewk/widgets/widgets/ServerIPWidget.java b/src/main/java/de/shiewk/widgets/widgets/ServerIPWidget.java index 9d153cd..fba0b21 100644 --- a/src/main/java/de/shiewk/widgets/widgets/ServerIPWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/ServerIPWidget.java @@ -16,7 +16,7 @@ public class ServerIPWidget extends BasicTextWidget { private int t = 0; @Override - public void tick() { + public void tickWidget() { final ServerInfo serverEntry = MinecraftClient.getInstance().getCurrentServerEntry(); if (serverEntry != null){ this.renderText = Text.of(serverEntry.address);