From 79fdaa725873fc9819936515dc47018072705766 Mon Sep 17 00:00:00 2001 From: Jonas_Jones <91549607+J-onasJones@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:42:33 +0200 Subject: [PATCH] Added features --- .../ticktocktracker/TickTockTracker.java | 44 ++++++++++++++++++ .../ticktocktracker/util/TimeConverter.java | 29 ++++++++++++ .../resources/assets/ticktocktracker/icon.png | Bin 0 -> 453 bytes src/main/resources/fabric.mod.json | 31 ++++++++++++ .../resources/ticktocktracker.mixins.json | 11 +++++ 5 files changed, 115 insertions(+) create mode 100644 src/main/java/dev/jonasjones/ticktocktracker/TickTockTracker.java create mode 100644 src/main/java/dev/jonasjones/ticktocktracker/util/TimeConverter.java create mode 100644 src/main/resources/assets/ticktocktracker/icon.png create mode 100644 src/main/resources/fabric.mod.json create mode 100644 src/main/resources/ticktocktracker.mixins.json diff --git a/src/main/java/dev/jonasjones/ticktocktracker/TickTockTracker.java b/src/main/java/dev/jonasjones/ticktocktracker/TickTockTracker.java new file mode 100644 index 0000000..b801bd0 --- /dev/null +++ b/src/main/java/dev/jonasjones/ticktocktracker/TickTockTracker.java @@ -0,0 +1,44 @@ +package dev.jonasjones.ticktocktracker; + +import dev.jonasjones.ticktocktracker.util.TimeConverter; +import net.fabricmc.api.ModInitializer; + +import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.minecraft.text.Text; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import static net.minecraft.server.command.CommandManager.literal; + +public class TickTockTracker implements ModInitializer { + // This logger is used to write text to the console and the log file. + // It is considered best practice to use your mod id as the logger's name. + // That way, it's clear which mod wrote info, warnings, and errors. + public static final String MOD_ID = "ticktocktracker"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + + @Override + public void onInitialize() { + // This code runs as soon as Minecraft is in a mod-load-ready state. + // However, some things (like resources) may still be uninitialized. + // Proceed with mild caution. + final long startTime = System.currentTimeMillis(); + + CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("uptime") + .executes(context -> { + try { + // "Uptime: " + TimeConverter.convertMillisToDuration(System.currentTimeMillis() - startTime) + context.getSource().sendMessage(Text.literal("Uptime: " + TimeConverter.convertMillisToDuration(System.currentTimeMillis() - startTime))); + } catch (Exception e) { + LOGGER.error("Error getting uptime", e); + } + + + return 1; + }))); + + } +} \ No newline at end of file diff --git a/src/main/java/dev/jonasjones/ticktocktracker/util/TimeConverter.java b/src/main/java/dev/jonasjones/ticktocktracker/util/TimeConverter.java new file mode 100644 index 0000000..e7652d9 --- /dev/null +++ b/src/main/java/dev/jonasjones/ticktocktracker/util/TimeConverter.java @@ -0,0 +1,29 @@ +package dev.jonasjones.ticktocktracker.util; + +import java.util.concurrent.TimeUnit; + +public class TimeConverter { + public static String convertMillisToDuration(long millis) { + long days = TimeUnit.MILLISECONDS.toDays(millis); + millis -= TimeUnit.DAYS.toMillis(days); + long hours = TimeUnit.MILLISECONDS.toHours(millis); + millis -= TimeUnit.HOURS.toMillis(hours); + long minutes = TimeUnit.MILLISECONDS.toMinutes(millis); + millis -= TimeUnit.MINUTES.toMillis(minutes); + long seconds = TimeUnit.MILLISECONDS.toSeconds(millis); + + StringBuilder duration = new StringBuilder(); + if (days > 0) { + duration.append(days).append(" Days, "); + } + if (hours > 0 || days > 0) { + duration.append(String.format("%02d", hours)).append(" Hours,"); + } + if (minutes > 0 || hours > 0 || days > 0) { + duration.append(String.format("%02d", minutes)).append(" Minutes,"); + } + duration.append(String.format("%02d", seconds)).append(" Seconds"); + + return duration.toString(); + } +} diff --git a/src/main/resources/assets/ticktocktracker/icon.png b/src/main/resources/assets/ticktocktracker/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..047b91f2347de5cf95f23284476fddbe21ba23fe GIT binary patch literal 453 zcmV;$0XqJPP)QAFYGys`80vegN0XDFh0OXKz&i8?Le#x7{1X)R+00000NkvXXu0mjf73i~T literal 0 HcmV?d00001 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..e32346f --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,31 @@ +{ + "schemaVersion": 1, + "id": "ticktocktracker", + "version": "${version}", + "name": "TickTockTracker", + "description": "This is an example description! Tell everyone what your mod is about!", + "authors": [ + "Me!" + ], + "contact": { + "homepage": "https://jonasjones.dev/", + "sources": "https://github.com/J-onasJones/TickTockTracker" + }, + "license": "CC0-1.0", + "icon": "assets/ticktocktracker/icon.png", + "environment": "*", + "entrypoints": { + "main": [ + "dev.jonasjones.ticktocktracker.TickTockTracker" + ] + }, + "depends": { + "fabricloader": ">=0.14.22", + "minecraft": "~1.20.2", + "java": ">=17", + "fabric-api": "*" + }, + "suggests": { + "another-mod": "*" + } +} diff --git a/src/main/resources/ticktocktracker.mixins.json b/src/main/resources/ticktocktracker.mixins.json new file mode 100644 index 0000000..78fe389 --- /dev/null +++ b/src/main/resources/ticktocktracker.mixins.json @@ -0,0 +1,11 @@ +{ + "required": true, + "package": "com.example.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "dev.jonasjones.ticktocktracker.mixin.ExampleMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file