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

Playtime widget

This commit is contained in:
Shy
2024-10-13 11:36:32 +02:00
parent 3635d93e46
commit 6cc4569e68
4 changed files with 94 additions and 2 deletions
@@ -54,5 +54,6 @@ public class WidgetsModClient implements ClientModInitializer {
WidgetManager.register(new ServerIPWidget(Identifier.of(WidgetsMod.MOD_ID, "server_ip")));
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")));
}
}
@@ -0,0 +1,75 @@
package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.widgets.settings.EnumWidgetSetting;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import java.util.List;
public class PlayTimeWidget extends BasicTextWidget {
private static final long startTime = System.nanoTime();
private LabelStyle labelStyle = LabelStyle.NO_LABEL;
public enum LabelStyle {
NO_LABEL("none"),
PLAYTIME("playtime"),
PLAYED("played");
public final String key;
LabelStyle(String key) {
this.key = key;
}
}
public PlayTimeWidget(Identifier id) {
super(id, List.of(
new EnumWidgetSetting<>("labelstyle", Text.translatable("widgets.widgets.playtime.labelStyle"), LabelStyle.class, LabelStyle.NO_LABEL, labelStyle -> Text.translatable("widgets.widgets.playtime.labelStyle."+labelStyle.key))
));
}
@Override
public void tickWidget() {
long timePlayedMs = getPlayedMs();
switch (labelStyle){
case NO_LABEL -> renderText = Text.literal(msToTimeStr(timePlayedMs));
case PLAYTIME -> renderText = Text.literal(Text.translatable("widgets.widgets.playtime.playtime", msToTimeStr(timePlayedMs)).getString());
case PLAYED -> renderText = Text.literal(Text.translatable("widgets.widgets.playtime.played", msToTimeStr(timePlayedMs)).getString());
}
}
private static long getPlayedMs() {
return (System.nanoTime() - startTime) / 1000000;
}
private String msToTimeStr(long timePlayedMs) {
long seconds = timePlayedMs / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
return formatTimeNumber(hours) + ":" + formatTimeNumber(minutes % 60) + ":" + formatTimeNumber(seconds % 60);
}
private String formatTimeNumber(long l) {
return l < 10 ? "0" + l : String.valueOf(l);
}
@Override
public Text getName() {
return Text.translatable("widgets.widgets.playtime");
}
@Override
public Text getDescription() {
return Text.translatable("widgets.widgets.playtime.description");
}
@Override
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
this.labelStyle = (LabelStyle) ((EnumWidgetSetting<?>) settings.optionById("labelstyle")).getValue();
}
}
@@ -57,5 +57,13 @@
"widgets.widgets.basictext.alignment.center": "Mitte",
"widgets.widgets.basictext.alignment.right": "Rechts",
"widgets.widgets.basictext.paddingX": "Textabstand X",
"widgets.widgets.basictext.paddingY": "Textabstand Y"
"widgets.widgets.basictext.paddingY": "Textabstand Y",
"widgets.widgets.playtime": "Spielzeit",
"widgets.widgets.playtime.description": "Zeigt die Spielzeit der aktuellen Sitzung an.",
"widgets.widgets.playtime.playtime": "Spielzeit: %s",
"widgets.widgets.playtime.played": "%s gespielt",
"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"
}
@@ -57,5 +57,13 @@
"widgets.widgets.basictext.alignment.center": "Center",
"widgets.widgets.basictext.alignment.right": "Right",
"widgets.widgets.basictext.paddingX": "Text padding X",
"widgets.widgets.basictext.paddingY": "Text padding Y"
"widgets.widgets.basictext.paddingY": "Text padding Y",
"widgets.widgets.playtime": "Playtime",
"widgets.widgets.playtime.description": "Shows the current session's uptime",
"widgets.widgets.playtime.playtime": "Playtime: %s",
"widgets.widgets.playtime.played": "%s played",
"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"
}