From d5324b5db6df2bb1f12bc29ee4c1400b5aab6190 Mon Sep 17 00:00:00 2001 From: sebampuero Date: Fri, 14 Mar 2025 01:47:15 +0100 Subject: [PATCH] feat: some first changes Add placeholders for time values, new formatting function and call for new function. --- .../lol/hyper/toolstats/tools/ItemLore.java | 4 +- .../hyper/toolstats/tools/NumberFormat.java | 37 +++++++++++++++++++ src/main/resources/config.yml | 2 +- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/main/java/lol/hyper/toolstats/tools/ItemLore.java b/src/main/java/lol/hyper/toolstats/tools/ItemLore.java index 4ac83f8..f684693 100644 --- a/src/main/java/lol/hyper/toolstats/tools/ItemLore.java +++ b/src/main/java/lol/hyper/toolstats/tools/ItemLore.java @@ -815,8 +815,8 @@ public class ItemLore { } container.set(toolStats.flightTime, PersistentDataType.LONG, flightTime + duration); - String oldFlightFormatted = toolStats.numberFormat.formatDouble((double) flightTime / 1000); - String newFlightFormatted = toolStats.numberFormat.formatDouble((double) (flightTime + duration) / 1000); + String oldFlightFormatted = toolStats.numberFormat.formatTime(flightTime); + String newFlightFormatted = toolStats.numberFormat.formatTime(flightTime + duration); Component oldLine = toolStats.configTools.formatLore("flight-time", "{time}", oldFlightFormatted); Component newLine = toolStats.configTools.formatLore("flight-time", "{time}", newFlightFormatted); if (oldLine == null || newLine == null) { diff --git a/src/main/java/lol/hyper/toolstats/tools/NumberFormat.java b/src/main/java/lol/hyper/toolstats/tools/NumberFormat.java index 24aa3ec..8ed6bc4 100644 --- a/src/main/java/lol/hyper/toolstats/tools/NumberFormat.java +++ b/src/main/java/lol/hyper/toolstats/tools/NumberFormat.java @@ -136,4 +136,41 @@ public class NumberFormat { public String formatDate(Date date) { return DATE_FORMAT.format(date); } + + /** + * Formats time in milliseconds in a human readable format. + * @param time The time in milliseconds to format. + * @return The time in a human readable format. + */ + public String formatTime(Long time) { + final int SECONDS_PER_MINUTE = 60; + final int MINUTES_PER_HOUR = 60; + final int HOURS_PER_DAY = 24; + final int DAYS_PER_WEEK = 7; + final int DAYS_PER_MONTH = 30; // Approximation + final int DAYS_PER_YEAR = 365; // Approximation + + long totalSeconds = time / 1000; + + long years = totalSeconds / (DAYS_PER_YEAR * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + totalSeconds %= (DAYS_PER_YEAR * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + + long months = totalSeconds / (DAYS_PER_MONTH * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + totalSeconds %= (DAYS_PER_MONTH * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + + long weeks = totalSeconds / (DAYS_PER_WEEK * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + totalSeconds %= (DAYS_PER_WEEK * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + + long days = totalSeconds / (HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + totalSeconds %= (HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + + long hours = totalSeconds / (MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + totalSeconds %= (MINUTES_PER_HOUR * SECONDS_PER_MINUTE); + + long minutes = totalSeconds / SECONDS_PER_MINUTE; + totalSeconds %= SECONDS_PER_MINUTE; + + long seconds = totalSeconds; + return ""; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 38a55d1..fd74f79 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -196,7 +196,7 @@ messages: dropped-by: "&7Dropped by: &8{name}" # name will be player/mob name damage-taken: "&7Damage taken: &8{damage}" arrows-shot: "&7Arrows shot: &8{arrows}" - flight-time: "&7Flight time: &8{time}" + flight-time: "&7Flight time: &8{years}y {months}m {days}d {hours}h {minutes}m {seconds}s" damage-done: "&7Damage done: &8{damage}" # Set display name for mobs. See: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html mobs: