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

Memory usage widget

This commit is contained in:
Shy
2024-10-13 12:04:54 +02:00
parent 6cc4569e68
commit edcd838a2d
4 changed files with 74 additions and 2 deletions
@@ -55,5 +55,6 @@ public class WidgetsModClient implements ClientModInitializer {
WidgetManager.register(new PlayerCountWidget(Identifier.of(WidgetsMod.MOD_ID, "player_count")));
WidgetManager.register(new CPSWidget(Identifier.of(WidgetsMod.MOD_ID, "cps")));
WidgetManager.register(new PlayTimeWidget(Identifier.of(WidgetsMod.MOD_ID, "playtime")));
WidgetManager.register(new MemoryUsageWidget(Identifier.of(WidgetsMod.MOD_ID, "memory")));
}
}
@@ -0,0 +1,61 @@
package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import java.util.List;
public class MemoryUsageWidget extends BasicTextWidget {
private boolean showPercentage = true;
private boolean showLabel = true;
public MemoryUsageWidget(Identifier id) {
super(id, List.of(
new ToggleWidgetSetting("percentage", Text.translatable("widgets.widgets.memory.showPercentage"), true),
new ToggleWidgetSetting("label", Text.translatable("widgets.widgets.memory.showLabel"), true)
));
}
@Override
public void tickWidget() {
Runtime runtime = Runtime.getRuntime();
long memTotal = runtime.maxMemory();
long memAllocated = runtime.totalMemory();
long memFree = runtime.freeMemory();
long memUsed = memAllocated - memFree;
short memUsagePercent = (short) (((float) memUsed / memTotal) * 100);
String memUsageString = showPercentage ?
mib(memUsed) + "MiB / " + mib(memTotal) + "MiB (" + memUsagePercent + "%)" :
mib(memUsed) + "MiB / " + mib(memTotal) + "MiB";
if (showLabel){
renderText = Text.literal(Text.translatable("widgets.widgets.memory.withLabel", memUsageString).getString());
} else {
renderText = Text.literal(memUsageString);
}
}
private long mib(long bytes) {
return bytes / 0x100000;
}
@Override
public Text getName() {
return Text.translatable("widgets.widgets.memory");
}
@Override
public Text getDescription() {
return Text.translatable("widgets.widgets.memory.description");
}
@Override
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
showPercentage = ((ToggleWidgetSetting) settings.optionById("percentage")).getValue();
showLabel = ((ToggleWidgetSetting) settings.optionById("label")).getValue();
}
}
@@ -65,5 +65,10 @@
"widgets.widgets.playtime.labelStyle": "Beschriftungsstil",
"widgets.widgets.playtime.labelStyle.none": "Keine Beschriftung",
"widgets.widgets.playtime.labelStyle.playtime": "Spielzeit: Zeit",
"widgets.widgets.playtime.labelStyle.played": "Zeit gespielt"
"widgets.widgets.playtime.labelStyle.played": "Zeit gespielt",
"widgets.widgets.memory": "Arbeitsspeicher",
"widgets.widgets.memory.description": "Zeigt die momentane Arbeitsspeicherauslastung des Spiels an.",
"widgets.widgets.memory.withLabel": "Arbeitsspeicher: %s",
"widgets.widgets.memory.showPercentage": "Prozentsatz anzeigen",
"widgets.widgets.memory.showLabel": "Beschriftung anzeigen"
}
@@ -65,5 +65,10 @@
"widgets.widgets.playtime.labelStyle": "Label Style",
"widgets.widgets.playtime.labelStyle.none": "No label",
"widgets.widgets.playtime.labelStyle.playtime": "Playtime: Time",
"widgets.widgets.playtime.labelStyle.played": "Time played"
"widgets.widgets.playtime.labelStyle.played": "Time played",
"widgets.widgets.memory": "Memory usage",
"widgets.widgets.memory.description": "Shows the current memory usage of the game.",
"widgets.widgets.memory.withLabel": "Memory: %s",
"widgets.widgets.memory.showPercentage": "Show percentage",
"widgets.widgets.memory.showLabel": "Show label"
}