From 24fcca1e3ecab2a9d211bcef32e9fd70bacda821 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 9 Sep 2022 20:16:41 +0200 Subject: [PATCH] Fixed time unit for duration --- .../boosterapi/config/BoosterStorage.java | 7 +++++-- .../boosters/commands/BoosterCommand.java | 3 ++- .../vboosters/commands/BoosterCommand.java | 20 +++++++++---------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/api/src/main/java/com/alttd/boosterapi/config/BoosterStorage.java b/api/src/main/java/com/alttd/boosterapi/config/BoosterStorage.java index 43f54cb..eead123 100644 --- a/api/src/main/java/com/alttd/boosterapi/config/BoosterStorage.java +++ b/api/src/main/java/com/alttd/boosterapi/config/BoosterStorage.java @@ -72,6 +72,8 @@ public abstract class BoosterStorage { Booster booster = loadBooster(parser); if (Config.DEBUG) ALogger.info("Loading booster [" + booster.getType() + "] activated by [" + booster.getActivator()+ "]."); + if (new Date(booster.getEndTime()).after(new Date())) + continue; boosters.put(booster.getUUID(), booster); if (parser.nextToken() != null && !parser.currentToken().isStructEnd()) { ALogger.warn("Last loaded booster had more data than expected, skipping it..."); @@ -84,7 +86,7 @@ public abstract class BoosterStorage { } catch (IOException e) { throw new RuntimeException(e); } - + saveBoosters(boosters.values()); return boosters; } @@ -93,8 +95,9 @@ public abstract class BoosterStorage { public void saveBoosters(Collection boosters) { try { JsonGenerator generator = new JsonFactory().createGenerator(CONFIG_FILE, JsonEncoding.UTF8); + Date date = new Date(); for (Booster booster : boosters) { - if (booster.finished()) + if (booster.finished() || new Date(booster.getEndTime()).after(date)) continue; saveBooster(booster, generator); } diff --git a/plugin/src/main/java/com/alttd/boosters/commands/BoosterCommand.java b/plugin/src/main/java/com/alttd/boosters/commands/BoosterCommand.java index f6212a3..b52bbc3 100644 --- a/plugin/src/main/java/com/alttd/boosters/commands/BoosterCommand.java +++ b/plugin/src/main/java/com/alttd/boosters/commands/BoosterCommand.java @@ -14,6 +14,7 @@ import org.jetbrains.annotations.NotNull; import java.text.DateFormat; import java.util.*; +import java.util.concurrent.TimeUnit; public class BoosterCommand implements CommandExecutor { @@ -36,7 +37,7 @@ public class BoosterCommand implements CommandExecutor { Placeholder.unparsed("type", booster.getType().getBoosterName()), Placeholder.unparsed("activator", booster.getActivator()), Placeholder.unparsed("start_time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(booster.getStartingTime())), - Placeholder.unparsed("duration", String.valueOf(booster.getDuration())), + Placeholder.unparsed("duration", TimeUnit.MILLISECONDS.toHours(booster.getDuration()) + " hours"), Placeholder.unparsed("multiplier", String.valueOf(booster.getMultiplier())), Placeholder.unparsed("end_time", booster.isActive() ? DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(expiryTime) : "unknown") ); diff --git a/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java b/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java index b2cae36..337ff9b 100755 --- a/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java +++ b/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java @@ -17,7 +17,6 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import com.mojang.brigadier.tree.LiteralCommandNode; import com.velocitypowered.api.command.BrigadierCommand; import com.velocitypowered.api.command.CommandMeta; import com.velocitypowered.api.command.CommandSource; @@ -25,7 +24,6 @@ import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.util.GameProfile; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.JoinConfiguration; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; @@ -71,24 +69,24 @@ public class BoosterCommand { Placeholder.unparsed("type", booster.getType().getBoosterName()), Placeholder.unparsed("activator", booster.getActivator()), Placeholder.unparsed("start_time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(booster.getStartingTime())), - Placeholder.unparsed("duration", String.valueOf(booster.getDuration())), + Placeholder.unparsed("duration", TimeUnit.MILLISECONDS.toHours(booster.getDuration()) + " hours"), Placeholder.unparsed("multiplier", String.valueOf(booster.getMultiplier()))); for (TagResolver tagResolver1 : templates) tagResolver.resolver(tagResolver1); // cheaty and lazy way I know if (booster.isActive()) - tagResolver.resolver(Placeholder.unparsed("end_time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(expiryTime))); + templates.add(Template.of("end_time", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(expiryTime))); else - tagResolver.resolver(Placeholder.unparsed("end_time", "unknown")); + templates.add(Template.of("end_time", "unknown")); if (booster.isActive()) - activeBoosterComponents.add(miniMessage.deserialize(activeBooster, tagResolver.build())); + activeBoosterComponents.add(miniMessage.parse(activeBooster, templates)); else if (!booster.finished()) - queuedBoosterComponents.add(miniMessage.deserialize(queuedBooster, tagResolver.build())); + queuedBoosterComponents.add(miniMessage.parse(queuedBooster, templates)); } - Component separator = miniMessage.deserialize("\n"); - context.getSource().sendMessage(miniMessage.deserialize(message,TagResolver.resolver( - Placeholder.component("active_boosters", Component.join(JoinConfiguration.separator(separator), activeBoosterComponents)), - Placeholder.component("queued_boosters", Component.join(JoinConfiguration.separator(separator), queuedBoosterComponents)) + Component separator = miniMessage.parse("\n"); + context.getSource().sendMessage(miniMessage.parse(message, List.of( + Template.of("active_boosters", Component.join(separator, activeBoosterComponents)), + Template.of("queued_boosters", Component.join(separator, queuedBoosterComponents)) ))); return 1; })