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;
|
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"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user