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

Ability to choose between 2 units on BandwidthWidget

This commit is contained in:
Shy
2024-12-16 14:43:56 +01:00
parent 8d33de5eca
commit 3ea014a8e5
3 changed files with 39 additions and 13 deletions
@@ -1,6 +1,7 @@
package de.shiewk.widgets.widgets; package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings; import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.widgets.settings.EnumWidgetSetting;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting; import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -8,17 +9,48 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl; import net.minecraft.util.profiler.MultiValueDebugSampleLogImpl;
import java.util.List; import java.util.List;
import java.util.function.LongFunction;
public class BandwidthWidget extends BasicTextWidget { 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<String> sizeFormatter;
Unit(String name, LongFunction<String> sizeFormatter) {
this.name = name;
this.sizeFormatter = sizeFormatter;
}
}
public BandwidthWidget(Identifier id) { public BandwidthWidget(Identifier id) {
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 EnumWidgetSetting<>("unit", Text.translatable("widgets.widgets.bandwidth.unit"), Unit.class, Unit.KB, unit -> Text.literal(unit.name))
)); ));
getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor); getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor);
} }
private int t = 0; private int t = 0;
private boolean dynamicColor = false; private boolean dynamicColor = false;
private Unit unit = Unit.KB;
@Override @Override
public void tickWidget() { public void tickWidget() {
@@ -31,7 +63,7 @@ public class BandwidthWidget extends BasicTextWidget {
if (t >= tickRate){ if (t >= tickRate){
t = 0; t = 0;
long avgBytesPerSecond = getAvgBytesPerSecond(client, tickRate); long avgBytesPerSecond = getAvgBytesPerSecond(client, tickRate);
this.renderText = Text.of(formatByteSize(avgBytesPerSecond)); this.renderText = Text.of(unit.sizeFormatter.apply(avgBytesPerSecond));
if (this.dynamicColor){ if (this.dynamicColor){
if (avgBytesPerSecond < 100000){ if (avgBytesPerSecond < 100000){
this.textColor = 0x00ff00; this.textColor = 0x00ff00;
@@ -56,19 +88,11 @@ public class BandwidthWidget extends BasicTextWidget {
return (long) ((float) size / avgCompileLength * tickRate); 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 @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue(); this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue();
this.unit = (Unit) ((EnumWidgetSetting<?>) settings.optionById("unit")).getValue();
} }
@Override @Override
@@ -93,5 +93,6 @@
"widgets.widgets.biome.label": "Biom: %s", "widgets.widgets.biome.label": "Biom: %s",
"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.",
"widgets.widgets.common.showLabel": "Beschriftung anzeigen" "widgets.widgets.common.showLabel": "Beschriftung anzeigen",
"widgets.widgets.bandwidth.unit": "Einheit"
} }
@@ -93,5 +93,6 @@
"widgets.widgets.biome.label": "Biome: %s", "widgets.widgets.biome.label": "Biome: %s",
"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.",
"widgets.widgets.common.showLabel": "Show label" "widgets.widgets.common.showLabel": "Show label",
"widgets.widgets.bandwidth.unit": "Unit"
} }