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:
@@ -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<String> sizeFormatter;
|
||||
|
||||
Unit(String name, LongFunction<String> 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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user