From 3ea014a8e5556e6cee1aa49419df3e6416b70d9f Mon Sep 17 00:00:00 2001 From: Shiewk Date: Mon, 16 Dec 2024 14:43:56 +0100 Subject: [PATCH] Ability to choose between 2 units on BandwidthWidget --- .../widgets/widgets/BandwidthWidget.java | 46 ++++++++++++++----- .../resources/assets/widgets/lang/de_de.json | 3 +- .../resources/assets/widgets/lang/en_us.json | 3 +- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java b/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java index 7ba6961..68da1b5 100644 --- a/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/BandwidthWidget.java @@ -1,6 +1,7 @@ package de.shiewk.widgets.widgets; import de.shiewk.widgets.WidgetSettings; +import de.shiewk.widgets.widgets.settings.EnumWidgetSetting; import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; @@ -8,17 +9,48 @@ import net.minecraft.util.Identifier; import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl; import java.util.List; +import java.util.function.LongFunction; public class BandwidthWidget extends BasicTextWidget { + + public enum Unit { + KB("kB", bytes -> { + if (bytes > 1000) { + double kB = bytes / 100 / 10d; + return kB + " kB/s"; + } else { + return bytes + " B/s"; + } + }), + KiB("KiB", bytes -> { + if (bytes > 1000) { + double kB = Math.round(bytes / 102.4) / 10d; + return kB + " KiB/s"; + } else { + return bytes + " B/s"; + } + }); + + public final String name; + public final LongFunction sizeFormatter; + + Unit(String name, LongFunction sizeFormatter) { + this.name = name; + this.sizeFormatter = sizeFormatter; + } + } + public BandwidthWidget(Identifier id) { 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 EnumWidgetSetting<>("unit", Text.translatable("widgets.widgets.bandwidth.unit"), Unit.class, Unit.KB, unit -> Text.literal(unit.name)) )); getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor); } private int t = 0; private boolean dynamicColor = false; + private Unit unit = Unit.KB; @Override public void tickWidget() { @@ -31,7 +63,7 @@ public class BandwidthWidget extends BasicTextWidget { if (t >= tickRate){ t = 0; long avgBytesPerSecond = getAvgBytesPerSecond(client, tickRate); - this.renderText = Text.of(formatByteSize(avgBytesPerSecond)); + this.renderText = Text.of(unit.sizeFormatter.apply(avgBytesPerSecond)); if (this.dynamicColor){ if (avgBytesPerSecond < 100000){ this.textColor = 0x00ff00; @@ -56,19 +88,11 @@ public class BandwidthWidget extends BasicTextWidget { return (long) ((float) size / avgCompileLength * tickRate); } - private String formatByteSize(long bytes) { - if (bytes > 1000) { - double kB = bytes / 100 / 10d; - return kB + " kB/s"; - } else { - return bytes + " B/s"; - } - } - @Override public void onSettingsChanged(WidgetSettings settings) { super.onSettingsChanged(settings); this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue(); + this.unit = (Unit) ((EnumWidgetSetting) settings.optionById("unit")).getValue(); } @Override diff --git a/src/main/resources/assets/widgets/lang/de_de.json b/src/main/resources/assets/widgets/lang/de_de.json index e10a331..932c14b 100644 --- a/src/main/resources/assets/widgets/lang/de_de.json +++ b/src/main/resources/assets/widgets/lang/de_de.json @@ -93,5 +93,6 @@ "widgets.widgets.biome.label": "Biom: %s", "widgets.widgets.biome": "Biom", "widgets.widgets.biome.description": "Zeigt das Biom an, in dem du dich befindest.", - "widgets.widgets.common.showLabel": "Beschriftung anzeigen" + "widgets.widgets.common.showLabel": "Beschriftung anzeigen", + "widgets.widgets.bandwidth.unit": "Einheit" } \ No newline at end of file diff --git a/src/main/resources/assets/widgets/lang/en_us.json b/src/main/resources/assets/widgets/lang/en_us.json index 3142407..4327431 100644 --- a/src/main/resources/assets/widgets/lang/en_us.json +++ b/src/main/resources/assets/widgets/lang/en_us.json @@ -93,5 +93,6 @@ "widgets.widgets.biome.label": "Biome: %s", "widgets.widgets.biome": "Biome", "widgets.widgets.biome.description": "Shows the biome you're currently in.", - "widgets.widgets.common.showLabel": "Show label" + "widgets.widgets.common.showLabel": "Show label", + "widgets.widgets.bandwidth.unit": "Unit" } \ No newline at end of file