1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00

(slightly) improve BasicTextWidget performance

This commit is contained in:
Shy
2024-09-08 10:44:21 +02:00
parent 6bd848a389
commit 0457def28e
8 changed files with 21 additions and 8 deletions
@@ -20,7 +20,7 @@ public class BandwidthWidget extends BasicTextWidget {
private boolean dynamicColor = false; private boolean dynamicColor = false;
@Override @Override
public void tick() { public void tickWidget() {
t++; t++;
if (t >= 20){ if (t >= 20){
t = 0; t = 0;
@@ -15,6 +15,8 @@ import java.util.List;
public abstract class BasicTextWidget extends ModWidget { public abstract class BasicTextWidget extends ModWidget {
protected Text renderText = Text.empty(); protected Text renderText = Text.empty();
private int textWidthH;
private TextRenderer renderer = null;
private static ObjectArrayList<WidgetSettingOption> getCustomSettings(List<WidgetSettingOption> otherCustomOptions) { private static ObjectArrayList<WidgetSettingOption> getCustomSettings(List<WidgetSettingOption> otherCustomOptions) {
final ObjectArrayList<WidgetSettingOption> list = new ObjectArrayList<>(otherCustomOptions); final ObjectArrayList<WidgetSettingOption> list = new ObjectArrayList<>(otherCustomOptions);
@@ -46,10 +48,21 @@ public abstract class BasicTextWidget extends ModWidget {
@Override @Override
public void render(DrawContext context, long n, TextRenderer textRenderer, int posX, int posY) { 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.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 @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor(); this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor();
@@ -70,7 +70,7 @@ public class CPSWidget extends BasicTextWidget {
} }
@Override @Override
public void tick() { public void tickWidget() {
int left = 0; int left = 0;
int right = 0; int right = 0;
int middle = 0; int middle = 0;
@@ -100,7 +100,7 @@ public class ClockWidget extends BasicTextWidget {
} }
@Override @Override
public void tick() { public void tickWidget() {
renderText = Text.literal(dateFormat.format(Date.from(Instant.now()))); renderText = Text.literal(dateFormat.format(Date.from(Instant.now())));
} }
@@ -12,7 +12,7 @@ public class FPSWidget extends BasicTextWidget {
} }
@Override @Override
public void tick() { public void tickWidget() {
this.renderText = Text.literal(MinecraftClient.getInstance().getCurrentFps() + " FPS"); this.renderText = Text.literal(MinecraftClient.getInstance().getCurrentFps() + " FPS");
} }
@@ -22,7 +22,7 @@ public class PingWidget extends BasicTextWidget {
private boolean dynamicColor = false; private boolean dynamicColor = false;
@Override @Override
public void tick() { public void tickWidget() {
final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler(); final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler();
if (networkHandler != null){ if (networkHandler != null){
if (lastPingQuery < Util.getMeasuringTimeMs() - 5000){ if (lastPingQuery < Util.getMeasuringTimeMs() - 5000){
@@ -13,7 +13,7 @@ public class PlayerCountWidget extends BasicTextWidget{
} }
@Override @Override
public void tick() { public void tickWidget() {
final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler(); final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler();
String online = networkHandler == null ? "?" : String.valueOf(networkHandler.getPlayerUuids().size()); String online = networkHandler == null ? "?" : String.valueOf(networkHandler.getPlayerUuids().size());
this.renderText = Text.literal(Text.translatable("widgets.widgets.playerCount.online", online).getString()); this.renderText = Text.literal(Text.translatable("widgets.widgets.playerCount.online", online).getString());
@@ -16,7 +16,7 @@ public class ServerIPWidget extends BasicTextWidget {
private int t = 0; private int t = 0;
@Override @Override
public void tick() { public void tickWidget() {
final ServerInfo serverEntry = MinecraftClient.getInstance().getCurrentServerEntry(); final ServerInfo serverEntry = MinecraftClient.getInstance().getCurrentServerEntry();
if (serverEntry != null){ if (serverEntry != null){
this.renderText = Text.of(serverEntry.address); this.renderText = Text.of(serverEntry.address);