mirror of
https://github.com/Shiewk/Widgets.git
synced 2026-04-28 11:34:17 +02:00
Playtime widget
This commit is contained in:
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user