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

Add different text styles (#3)

This commit is contained in:
Shy
2025-08-18 10:33:40 +02:00
parent d39473d296
commit 8192f13e51
16 changed files with 141 additions and 68 deletions
@@ -12,6 +12,8 @@ import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl;
import java.util.List; import java.util.List;
import java.util.function.LongFunction; import java.util.function.LongFunction;
import static net.minecraft.text.Text.literal;
public class BandwidthWidget extends BasicTextWidget { public class BandwidthWidget extends BasicTextWidget {
public enum Unit { public enum Unit {
@@ -46,7 +48,7 @@ public class BandwidthWidget extends BasicTextWidget {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("dynamic_color", Text.translatable("widgets.widgets.bandwidth.dynamicColor"), true), new ToggleWidgetSetting("dynamic_color", Text.translatable("widgets.widgets.bandwidth.dynamicColor"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false), new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false),
new EnumWidgetSetting<>("unit", Text.translatable("widgets.widgets.bandwidth.unit"), Unit.class, Unit.KB, unit -> Text.literal(unit.name)) new EnumWidgetSetting<>("unit", Text.translatable("widgets.widgets.bandwidth.unit"), Unit.class, Unit.KB, unit -> literal(unit.name))
)); ));
getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor); getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor);
} }
@@ -65,7 +67,7 @@ public class BandwidthWidget extends BasicTextWidget {
if (t >= tickRate){ if (t >= tickRate){
t = 0; t = 0;
long avgBytesPerSecond = getAvgBytesPerSecond(MinecraftClient.getInstance(), tickRate); long avgBytesPerSecond = getAvgBytesPerSecond(MinecraftClient.getInstance(), tickRate);
this.renderText = Text.of(unit.sizeFormatter.apply(avgBytesPerSecond)); formatAndSetRenderText(literal(unit.sizeFormatter.apply(avgBytesPerSecond)));
if (this.dynamicColor){ if (this.dynamicColor){
if (avgBytesPerSecond < 100000){ if (avgBytesPerSecond < 100000){
this.textColor = 0xff00ff00; this.textColor = 0xff00ff00;
@@ -14,6 +14,9 @@ import net.minecraft.util.Identifier;
import java.awt.*; import java.awt.*;
import java.util.List; import java.util.List;
import java.util.function.UnaryOperator;
import static net.minecraft.text.Text.*;
public abstract class BasicTextWidget extends ResizableWidget { public abstract class BasicTextWidget extends ResizableWidget {
@@ -28,12 +31,34 @@ public abstract class BasicTextWidget extends ResizableWidget {
this.key = key; this.key = key;
} }
public Text text(){ public Text displayText(){
return Text.translatable("widgets.widgets.basictext.alignment." + key); return translatable("widgets.widgets.basictext.alignment." + key);
} }
} }
protected Text renderText = Text.empty(); public enum TextStyle {
PLAIN("plain", UnaryOperator.identity()),
SQUARE_BRACKETS("squareBrackets", t -> surround("[", t, "]")),
PARENTHESES("parentheses", t -> surround("(", t, ")"));
public final String key;
public final UnaryOperator<Text> operator;
TextStyle(String key, UnaryOperator<Text> operator) {
this.key = key;
this.operator = operator;
}
public Text displayText(){
return translatable("widgets.widgets.basictext.style." + key);
}
public static Text surround(String prefix, Text subject, String suffix){
return literal(prefix).append(subject).append(literal(suffix));
}
}
protected Text renderText = empty();
protected boolean shouldRender = true; protected boolean shouldRender = true;
private int textX = 0; private int textX = 0;
private int textY = 0; private int textY = 0;
@@ -43,13 +68,14 @@ public abstract class BasicTextWidget extends ResizableWidget {
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);
list.add(new RGBAColorWidgetSetting("backgroundcolor", Text.translatable("widgets.widgets.basictext.background"), 0, 0, 0, 80)); list.add(new RGBAColorWidgetSetting("backgroundcolor", translatable("widgets.widgets.basictext.background"), 0, 0, 0, 80));
list.add(new RGBAColorWidgetSetting("textcolor", Text.translatable("widgets.widgets.basictext.textcolor"), 255, 255, 255, 255)); list.add(new RGBAColorWidgetSetting("textcolor", translatable("widgets.widgets.basictext.textcolor"), 255, 255, 255, 255));
list.add(new IntSliderWidgetSetting("width", Text.translatable("widgets.widgets.basictext.width"), 10, DEFAULT_WIDTH, 80*3)); list.add(new IntSliderWidgetSetting("width", translatable("widgets.widgets.basictext.width"), 10, DEFAULT_WIDTH, 80*3));
list.add(new IntSliderWidgetSetting("height", Text.translatable("widgets.widgets.basictext.height"), 9, DEFAULT_HEIGHT, 80)); list.add(new IntSliderWidgetSetting("height", translatable("widgets.widgets.basictext.height"), 9, DEFAULT_HEIGHT, 80));
list.add(new ToggleWidgetSetting("shadow", Text.translatable("widgets.widgets.basictext.textshadow"), true)); list.add(new ToggleWidgetSetting("shadow", translatable("widgets.widgets.basictext.textshadow"), true));
list.add(new EnumWidgetSetting<>("alignment", Text.translatable("widgets.widgets.basictext.alignment"), TextAlignment.class, TextAlignment.CENTER, TextAlignment::text)); list.add(new EnumWidgetSetting<>("alignment", translatable("widgets.widgets.basictext.alignment"), TextAlignment.class, TextAlignment.CENTER, TextAlignment::displayText));
list.add(new IntSliderWidgetSetting("padding", Text.translatable("widgets.widgets.basictext.padding"), 0, 5, 20)); list.add(new IntSliderWidgetSetting("padding", translatable("widgets.widgets.basictext.padding"), 0, 5, 20));
list.add(new EnumWidgetSetting<>("text_style", translatable("widgets.widgets.basictext.textstyle"), TextStyle.class, TextStyle.PLAIN, TextStyle::displayText));
return list; return list;
} }
protected BasicTextWidget(Identifier id, List<WidgetSettingOption> otherCustomOptions) { protected BasicTextWidget(Identifier id, List<WidgetSettingOption> otherCustomOptions) {
@@ -65,6 +91,7 @@ public abstract class BasicTextWidget extends ResizableWidget {
protected int backgroundColor = DEFAULT_BACKGROUND_COLOR, textColor = DEFAULT_TEXT_COLOR, width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT; protected int backgroundColor = DEFAULT_BACKGROUND_COLOR, textColor = DEFAULT_TEXT_COLOR, width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;
protected TextAlignment textAlignment = TextAlignment.CENTER; protected TextAlignment textAlignment = TextAlignment.CENTER;
protected TextStyle textStyle = TextStyle.PLAIN;
@Override @Override
public int width() { public int width() {
@@ -98,6 +125,14 @@ public abstract class BasicTextWidget extends ResizableWidget {
textY = (height-9) / 2; textY = (height-9) / 2;
} }
protected void formatAndSetRenderText(Text renderText) {
if (textStyle != TextStyle.PLAIN){
this.renderText = textStyle.operator.apply(renderText);
} else {
this.renderText = renderText;
}
}
public abstract void tickWidget(); public abstract void tickWidget();
@Override @Override
@@ -110,5 +145,6 @@ public abstract class BasicTextWidget extends ResizableWidget {
this.textAlignment = (TextAlignment) ((EnumWidgetSetting<?>) settings.optionById("alignment")).getValue(); this.textAlignment = (TextAlignment) ((EnumWidgetSetting<?>) settings.optionById("alignment")).getValue();
this.padding = ((IntSliderWidgetSetting) settings.optionById("padding")).getValue(); this.padding = ((IntSliderWidgetSetting) settings.optionById("padding")).getValue();
this.textShadow = ((ToggleWidgetSetting) settings.optionById("shadow")).getValue(); this.textShadow = ((ToggleWidgetSetting) settings.optionById("shadow")).getValue();
this.textStyle = (TextStyle) ((EnumWidgetSetting<?>) settings.optionById("text_style")).getValue();
} }
} }
@@ -12,11 +12,14 @@ import net.minecraft.world.biome.Biome;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class BiomeWidget extends BasicTextWidget { public class BiomeWidget extends BasicTextWidget {
public BiomeWidget(Identifier id) { public BiomeWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("show_label", Text.translatable("widgets.widgets.common.showLabel"), true) new ToggleWidgetSetting("show_label", translatable("widgets.widgets.common.showLabel"), true)
)); ));
} }
@@ -34,19 +37,19 @@ public class BiomeWidget extends BasicTextWidget {
String text = biome.getKeyOrValue().map( String text = biome.getKeyOrValue().map(
(biomeKey) -> { (biomeKey) -> {
if (showLabel){ if (showLabel){
return Text.translatable("widgets.widgets.biome.label", Text.translatable(biomeKey.getValue().toTranslationKey("biome"))).getString(); return translatable("widgets.widgets.biome.label", translatable(biomeKey.getValue().toTranslationKey("biome"))).getString();
} else { } else {
return Text.translatable(biomeKey.getValue().toTranslationKey("biome")).getString(); return translatable(biomeKey.getValue().toTranslationKey("biome")).getString();
} }
}, },
(b) -> "[unregistered " + b + "]" (b) -> "[unregistered " + b + "]"
); );
this.renderText = Text.literal(text); formatAndSetRenderText(literal(text));
} else { } else {
if (showLabel){ if (showLabel){
this.renderText = Text.translatable("widgets.widgets.biome.label", "?"); formatAndSetRenderText(translatable("widgets.widgets.biome.label", "?"));
} else { } else {
this.renderText = Text.literal("?"); formatAndSetRenderText(literal("?"));
} }
} }
} }
@@ -54,12 +57,12 @@ public class BiomeWidget extends BasicTextWidget {
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.biome"); return translatable("widgets.widgets.biome");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.biome.description"); return translatable("widgets.widgets.biome.description");
} }
@Override @Override
@@ -11,6 +11,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
public class CPSWidget extends BasicTextWidget { public class CPSWidget extends BasicTextWidget {
public static class Click { public static class Click {
@@ -100,13 +102,10 @@ public class CPSWidget extends BasicTextWidget {
middleClicks.removeIf(click -> click.expiresAt <= mtime); middleClicks.removeIf(click -> click.expiresAt <= mtime);
middle = middleClicks.size(); middle = middleClicks.size();
} }
switch (appearance){ formatAndSetRenderText(switch (appearance){
case UNIFIED -> renderText = Text.literal((left + right + middle) + " CPS"); case UNIFIED -> literal((left + right + middle) + " CPS");
case SPLIT_PIPE, SPLIT_SLASH -> { case SPLIT_PIPE, SPLIT_SLASH -> literal(getClickText(left, middle, right) + " CPS");
final StringBuilder sb = getClickText(left, middle, right); });
renderText = Text.literal(sb + " CPS");
}
}
} }
private @NotNull StringBuilder getClickText(int left, int middle, int right) { private @NotNull StringBuilder getClickText(int left, int middle, int right) {
@@ -12,6 +12,8 @@ import java.time.Instant;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
public class ClockWidget extends BasicTextWidget { public class ClockWidget extends BasicTextWidget {
public enum TimeOption { public enum TimeOption {
@@ -95,7 +97,7 @@ public class ClockWidget extends BasicTextWidget {
@Override @Override
public void tickWidget() { public void tickWidget() {
renderText = Text.literal(dateFormat.format(Date.from(Instant.now()))); formatAndSetRenderText(literal(dateFormat.format(Date.from(Instant.now()))));
} }
@Override @Override
@@ -6,6 +6,8 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
public class FPSWidget extends BasicTextWidget { public class FPSWidget extends BasicTextWidget {
public FPSWidget(Identifier id) { public FPSWidget(Identifier id) {
super(id, List.of()); super(id, List.of());
@@ -13,7 +15,7 @@ public class FPSWidget extends BasicTextWidget {
@Override @Override
public void tickWidget() { public void tickWidget() {
this.renderText = Text.literal(MinecraftClient.getInstance().getCurrentFps() + " FPS"); formatAndSetRenderText(literal(MinecraftClient.getInstance().getCurrentFps() + " FPS"));
} }
@Override @Override
@@ -7,6 +7,9 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class MemoryUsageWidget extends BasicTextWidget { public class MemoryUsageWidget extends BasicTextWidget {
private boolean showPercentage = true; private boolean showPercentage = true;
@@ -14,8 +17,8 @@ public class MemoryUsageWidget extends BasicTextWidget {
public MemoryUsageWidget(Identifier id) { public MemoryUsageWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("percentage", Text.translatable("widgets.widgets.memory.showPercentage"), true), new ToggleWidgetSetting("percentage", translatable("widgets.widgets.memory.showPercentage"), true),
new ToggleWidgetSetting("label", Text.translatable("widgets.widgets.common.showLabel"), true) new ToggleWidgetSetting("label", translatable("widgets.widgets.common.showLabel"), true)
)); ));
} }
@@ -31,9 +34,9 @@ public class MemoryUsageWidget extends BasicTextWidget {
mib(memUsed) + "MiB / " + mib(memTotal) + "MiB (" + memUsagePercent + "%)" : mib(memUsed) + "MiB / " + mib(memTotal) + "MiB (" + memUsagePercent + "%)" :
mib(memUsed) + "MiB / " + mib(memTotal) + "MiB"; mib(memUsed) + "MiB / " + mib(memTotal) + "MiB";
if (showLabel){ if (showLabel){
renderText = Text.literal(Text.translatable("widgets.widgets.memory.withLabel", memUsageString).getString()); formatAndSetRenderText(literal(translatable("widgets.widgets.memory.withLabel", memUsageString).getString()));
} else { } else {
renderText = Text.literal(memUsageString); formatAndSetRenderText(literal(memUsageString));
} }
} }
@@ -44,12 +47,12 @@ public class MemoryUsageWidget extends BasicTextWidget {
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.memory"); return translatable("widgets.widgets.memory");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.memory.description"); return translatable("widgets.widgets.memory.description");
} }
@Override @Override
@@ -12,6 +12,8 @@ import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
public class PingWidget extends BasicTextWidget { public class PingWidget extends BasicTextWidget {
public PingWidget(Identifier id) { public PingWidget(Identifier id) {
@@ -48,12 +50,12 @@ public class PingWidget extends BasicTextWidget {
valuesRead++; valuesRead++;
} }
if (valuesRead == 0){ if (valuesRead == 0){
this.renderText = Text.literal("??? ms"); formatAndSetRenderText(literal("??? ms"));
if (this.dynamicColor) this.textColor = 0xff00ff00; if (this.dynamicColor) this.textColor = 0xff00ff00;
return; return;
} }
long avgPing = ping / valuesRead; long avgPing = ping / valuesRead;
this.renderText = Text.literal(avgPing + " ms"); formatAndSetRenderText(literal(avgPing + " ms"));
if (this.dynamicColor){ if (this.dynamicColor){
if (avgPing < 50){ if (avgPing < 50){
this.textColor = 0xff00ff00; this.textColor = 0xff00ff00;
@@ -7,6 +7,8 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
public class PlainTextWidget extends BasicTextWidget { public class PlainTextWidget extends BasicTextWidget {
public PlainTextWidget(Identifier id) { public PlainTextWidget(Identifier id) {
super(id, List.of( super(id, List.of(
@@ -30,6 +32,6 @@ public class PlainTextWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
renderText = Text.literal(((TextFieldWidgetSettingOption) settings.optionById("text")).getValue()); formatAndSetRenderText(literal(((TextFieldWidgetSettingOption) settings.optionById("text")).getValue()));
} }
} }
@@ -7,6 +7,9 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class PlayTimeWidget extends BasicTextWidget { public class PlayTimeWidget extends BasicTextWidget {
private static final long startTime = System.nanoTime(); private static final long startTime = System.nanoTime();
@@ -27,18 +30,18 @@ public class PlayTimeWidget extends BasicTextWidget {
public PlayTimeWidget(Identifier id) { public PlayTimeWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new EnumWidgetSetting<>("labelstyle", Text.translatable("widgets.widgets.playtime.labelStyle"), LabelStyle.class, LabelStyle.NO_LABEL, labelStyle -> Text.translatable("widgets.widgets.playtime.labelStyle."+labelStyle.key)) new EnumWidgetSetting<>("labelstyle", translatable("widgets.widgets.playtime.labelStyle"), LabelStyle.class, LabelStyle.NO_LABEL, labelStyle -> translatable("widgets.widgets.playtime.labelStyle."+labelStyle.key))
)); ));
} }
@Override @Override
public void tickWidget() { public void tickWidget() {
long timePlayedMs = getPlayedMs(); long timePlayedMs = getPlayedMs();
switch (labelStyle){ formatAndSetRenderText(switch (labelStyle){
case NO_LABEL -> renderText = Text.literal(msToTimeStr(timePlayedMs)); case NO_LABEL -> literal(msToTimeStr(timePlayedMs));
case PLAYTIME -> renderText = Text.literal(Text.translatable("widgets.widgets.playtime.playtime", msToTimeStr(timePlayedMs)).getString()); case PLAYTIME -> literal(translatable("widgets.widgets.playtime.playtime", msToTimeStr(timePlayedMs)).getString());
case PLAYED -> renderText = Text.literal(Text.translatable("widgets.widgets.playtime.played", msToTimeStr(timePlayedMs)).getString()); case PLAYED -> literal(translatable("widgets.widgets.playtime.played", msToTimeStr(timePlayedMs)).getString());
} });
} }
private static long getPlayedMs() { private static long getPlayedMs() {
@@ -59,12 +62,12 @@ public class PlayTimeWidget extends BasicTextWidget {
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.playtime"); return translatable("widgets.widgets.playtime");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.playtime.description"); return translatable("widgets.widgets.playtime.description");
} }
@Override @Override
@@ -10,11 +10,14 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class PlayerCountWidget extends BasicTextWidget{ public class PlayerCountWidget extends BasicTextWidget{
public PlayerCountWidget(Identifier id) { public PlayerCountWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("showlabel", Text.translatable("widgets.widgets.common.showLabel"), true), new ToggleWidgetSetting("showlabel", translatable("widgets.widgets.common.showLabel"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false) new ToggleWidgetSetting("hide_in_singleplayer", translatable("widgets.widgets.common.hideInSingleplayer"), false)
)); ));
} }
@@ -27,17 +30,17 @@ public class PlayerCountWidget extends BasicTextWidget{
if (!shouldRender) return; if (!shouldRender) return;
final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler(); final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler();
String online = networkHandler == null ? "?" : String.valueOf(networkHandler.getListedPlayerListEntries().size()); String online = networkHandler == null ? "?" : String.valueOf(networkHandler.getListedPlayerListEntries().size());
this.renderText = showLabel ? Text.literal(Text.translatable("widgets.widgets.playerCount.online", online).getString()) : Text.literal(online); formatAndSetRenderText(showLabel ? literal(translatable("widgets.widgets.playerCount.online", online).getString()) : literal(online));
} }
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.playerCount"); return translatable("widgets.widgets.playerCount");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.playerCount.description"); return translatable("widgets.widgets.playerCount.description");
} }
@Override @Override
@@ -10,11 +10,14 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class ServerIPWidget extends BasicTextWidget { public class ServerIPWidget extends BasicTextWidget {
public ServerIPWidget(Identifier id) { public ServerIPWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("dynamicwidth", Text.translatable("widgets.widgets.serverIP.dynamicWidth"), true), new ToggleWidgetSetting("dynamicwidth", translatable("widgets.widgets.serverIP.dynamicWidth"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false) new ToggleWidgetSetting("hide_in_singleplayer", translatable("widgets.widgets.common.hideInSingleplayer"), false)
)); ));
getSettings().optionById("width").setShowCondition(() -> !this.dynamicWidth); getSettings().optionById("width").setShowCondition(() -> !this.dynamicWidth);
} }
@@ -31,12 +34,12 @@ public class ServerIPWidget extends BasicTextWidget {
if (!shouldRender) return; if (!shouldRender) return;
final ServerInfo serverEntry = MinecraftClient.getInstance().getCurrentServerEntry(); final ServerInfo serverEntry = MinecraftClient.getInstance().getCurrentServerEntry();
if (serverEntry != null){ if (serverEntry != null){
this.renderText = Text.of(serverEntry.address); formatAndSetRenderText(literal(serverEntry.address));
} else { } else {
this.renderText = Text.translatable("menu.singleplayer"); formatAndSetRenderText(translatable("menu.singleplayer"));
} }
t++; t++;
if (t >= 20){ if (dynamicWidth && t >= 20){
t = 0; t = 0;
this.width = MinecraftClient.getInstance().textRenderer.getWidth(this.renderText) + 20; this.width = MinecraftClient.getInstance().textRenderer.getWidth(this.renderText) + 20;
} }
@@ -49,12 +52,12 @@ public class ServerIPWidget extends BasicTextWidget {
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.serverIP"); return translatable("widgets.widgets.serverIP");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.serverIP.description"); return translatable("widgets.widgets.serverIP.description");
} }
@Override @Override
@@ -13,6 +13,8 @@ import net.minecraft.util.math.Vec3d;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
public class SpeedWidget extends BasicTextWidget { public class SpeedWidget extends BasicTextWidget {
public enum Unit { public enum Unit {
@@ -80,7 +82,7 @@ public class SpeedWidget extends BasicTextWidget {
avg += v; avg += v;
} }
avg /= averagingWindow.length; avg /= averagingWindow.length;
renderText = Text.of(reduceDigits(avg) + unit.displayName); formatAndSetRenderText(literal(reduceDigits(avg) + unit.displayName));
} }
private String reduceDigits(double v) { private String reduceDigits(double v) {
@@ -10,11 +10,14 @@ import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class TPSWidget extends BasicTextWidget { public class TPSWidget extends BasicTextWidget {
public TPSWidget(Identifier id) { public TPSWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("show_label", Text.translatable("widgets.widgets.common.showLabel"), true), new ToggleWidgetSetting("show_label", translatable("widgets.widgets.common.showLabel"), true),
new ToggleWidgetSetting("dynamic_color", Text.translatable("widgets.widgets.tps.dynamicColor"), true) new ToggleWidgetSetting("dynamic_color", translatable("widgets.widgets.tps.dynamicColor"), true)
)); ));
getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor); getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor);
INSTANCE = this; INSTANCE = this;
@@ -75,17 +78,17 @@ public class TPSWidget extends BasicTextWidget {
private void updateTPS(float tps, float targetTickRate, boolean loadingFinished) { private void updateTPS(float tps, float targetTickRate, boolean loadingFinished) {
if (!loadingFinished){ if (!loadingFinished){
if (showLabel){ if (showLabel){
this.renderText = Text.literal(Text.translatable("widgets.widgets.tps.tps", "???").getString()); formatAndSetRenderText(literal(translatable("widgets.widgets.tps.tps", "???").getString()));
} else { } else {
this.renderText = Text.literal("???"); formatAndSetRenderText(literal("???"));
} }
if (dynamicColor) this.textColor = 0xff00ff00; if (dynamicColor) this.textColor = 0xff00ff00;
} else { } else {
tps = Math.round(tps * 10f) / 10f; tps = Math.round(tps * 10f) / 10f;
if (showLabel){ if (showLabel){
this.renderText = Text.literal(Text.translatable("widgets.widgets.tps.tps", tps).getString()); formatAndSetRenderText(literal(translatable("widgets.widgets.tps.tps", tps).getString()));
} else { } else {
this.renderText = Text.literal(String.valueOf(tps)); formatAndSetRenderText(literal(String.valueOf(tps)));
} }
if (dynamicColor){ if (dynamicColor){
if (tps >= targetTickRate * 0.990){ if (tps >= targetTickRate * 0.990){
@@ -106,12 +109,12 @@ public class TPSWidget extends BasicTextWidget {
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.tps"); return translatable("widgets.widgets.tps");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.tps.description"); return translatable("widgets.widgets.tps.description");
} }
@Override @Override
@@ -32,6 +32,7 @@
"widgets.widgets.basictext.paddingY": "Textabstand Y", "widgets.widgets.basictext.paddingY": "Textabstand Y",
"widgets.widgets.basictext.textcolor": "Textfarbe", "widgets.widgets.basictext.textcolor": "Textfarbe",
"widgets.widgets.basictext.textshadow": "Textschatten", "widgets.widgets.basictext.textshadow": "Textschatten",
"widgets.widgets.basictext.textstyle": "Textstil",
"widgets.widgets.basictext.width": "Widget Breite", "widgets.widgets.basictext.width": "Widget Breite",
"widgets.widgets.biome": "Biom", "widgets.widgets.biome": "Biom",
"widgets.widgets.biome.description": "Zeigt das Biom an, in dem du dich befindest.", "widgets.widgets.biome.description": "Zeigt das Biom an, in dem du dich befindest.",
@@ -110,5 +111,8 @@
"widgets.widgets.tps": "TPS", "widgets.widgets.tps": "TPS",
"widgets.widgets.tps.description": "Zeigt die TPS im Einzelspielermodus an oder schätzt die TPS im Mehrspielermodus", "widgets.widgets.tps.description": "Zeigt die TPS im Einzelspielermodus an oder schätzt die TPS im Mehrspielermodus",
"widgets.widgets.tps.dynamicColor": "Farbe dynamisch anzeigen", "widgets.widgets.tps.dynamicColor": "Farbe dynamisch anzeigen",
"widgets.widgets.tps.tps": "%s TPS" "widgets.widgets.tps.tps": "%s TPS",
"widgets.widgets.basictext.style.parentheses": "Mit runden Klammern",
"widgets.widgets.basictext.style.plain": "Normal",
"widgets.widgets.basictext.style.squareBrackets": "Mit eckigen Klammern"
} }
@@ -30,8 +30,12 @@
"widgets.widgets.basictext.padding": "Text padding", "widgets.widgets.basictext.padding": "Text padding",
"widgets.widgets.basictext.paddingX": "Text padding X", "widgets.widgets.basictext.paddingX": "Text padding X",
"widgets.widgets.basictext.paddingY": "Text padding Y", "widgets.widgets.basictext.paddingY": "Text padding Y",
"widgets.widgets.basictext.style.parentheses": "With parentheses",
"widgets.widgets.basictext.style.plain": "Normal",
"widgets.widgets.basictext.style.squareBrackets": "With square brackets",
"widgets.widgets.basictext.textcolor": "Text color", "widgets.widgets.basictext.textcolor": "Text color",
"widgets.widgets.basictext.textshadow": "Text shadow", "widgets.widgets.basictext.textshadow": "Text shadow",
"widgets.widgets.basictext.textstyle": "Text style",
"widgets.widgets.basictext.width": "Widget width", "widgets.widgets.basictext.width": "Widget width",
"widgets.widgets.biome": "Biome", "widgets.widgets.biome": "Biome",
"widgets.widgets.biome.description": "Shows the biome you're currently in.", "widgets.widgets.biome.description": "Shows the biome you're currently in.",