From 4818f0b50939ea71b643497ef5cc530e3867cd0d Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Thu, 4 Aug 2022 03:52:02 +0200 Subject: [PATCH] worked on storage but it still doesn't work --- .../boosterapi/config/BoosterStorage.java | 22 +++++++++++++++++-- .../vboosters/commands/BoosterCommand.java | 16 ++++++++++---- .../alttd/vboosters/data/VelocityBooster.java | 2 ++ 3 files changed, 34 insertions(+), 6 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 e1d50dc..5558676 100644 --- a/api/src/main/java/com/alttd/boosterapi/config/BoosterStorage.java +++ b/api/src/main/java/com/alttd/boosterapi/config/BoosterStorage.java @@ -1,6 +1,7 @@ package com.alttd.boosterapi.config; import com.alttd.boosterapi.Booster; +import com.alttd.boosterapi.util.ALogger; import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; @@ -22,7 +23,19 @@ public abstract class BoosterStorage { } private void init() { File CONFIG_PATH = new File(System.getProperty("user.home") + File.separator + "share" + File.separator + "configs" + File.separator + "Boosters"); + if (!CONFIG_PATH.exists()) { + if (!CONFIG_PATH.mkdir()) + ALogger.error("Unable to create json storage directory"); + } CONFIG_FILE = new File(CONFIG_PATH, "storage.json"); + if (!CONFIG_FILE.exists()) { + try { + if (!CONFIG_FILE.createNewFile()) + ALogger.error("Unable to create json storeage file"); + } catch (IOException e) { + e.printStackTrace(); + } + } ObjectMapper mapper = new ObjectMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); @@ -42,8 +55,13 @@ public abstract class BoosterStorage { try { JsonParser parser = new JsonFactory().createParser(CONFIG_FILE); - Booster booster = loadBooster(parser); - boosters.put(booster.getUUID(), booster); + if (parser == null) + return boosters; + while (parser.hasCurrentToken()) { + Booster booster = loadBooster(parser); + boosters.put(booster.getUUID(), booster); + parser.nextToken(); + } } catch (IOException e) { throw new RuntimeException(e); } 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 7156946..c54391c 100755 --- a/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java +++ b/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java @@ -20,10 +20,13 @@ import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.util.GameProfile; +import net.kyori.adventure.text.minimessage.MiniMessage; +import java.text.DateFormat; import java.util.Arrays; import java.util.Collection; import java.util.Date; +import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -57,17 +60,22 @@ public class BoosterCommand { .map(BoosterType::getBoosterName) .collect(Collectors.toList()))) .then(RequiredArgumentBuilder.argument("time", IntegerArgumentType.integer(0, 525960)) + .suggests((context, builder) -> buildRemainingString(builder, List.of("60", "120", "180", "240", "300", "360", + "420", "480", "540", "600", "660", "720", "780", "840", "900", "960", "1020", "1080", "1140", "1200", "1260", "1320", "1380", "1440"))) .then(RequiredArgumentBuilder.argument("multiplier", DoubleArgumentType.doubleArg(0, 10)) + .suggests((context, builder) -> buildRemainingString(builder, List.of("0.5", "1", "1.5", "2"))) .executes(context -> { String username = context.getArgument("username", String.class); BoosterType boosterType = BoosterType.getByName(context.getArgument("booster", String.class)); long duration = context.getArgument("time", Integer.class) * 60; double multiplier = context.getArgument("multiplier", Double.class); VelocityBoosters.getPlugin().getBoosterManager().addBooster(new VelocityBooster(boosterType, username, duration, multiplier)); - String msg = "[" + username + "] activated booster of type [" + Utils.capitalize(boosterType.getBoosterName()) + "] until ."; //TODO check if there was a booster active already and change message based on that - DiscordSendMessage.sendEmbed(Config.BOOST_ANNOUNCE_CHANNEL, "Booster Activated", msg); - VelocityBoosters.getPlugin().getLogger().info(msg); + long expiryTime = new Date().getTime() + duration; + String msg = "[" + username + "] activated booster of type [" + Utils.capitalize(boosterType.getBoosterName()) + "] until %date%."; //TODO check if there was a booster active already and change message based on that + DiscordSendMessage.sendEmbed(Config.BOOST_ANNOUNCE_CHANNEL, "Booster Activated", msg.replaceAll("%date%", "")); + String mcMessage = msg.replaceAll("%date%", DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(expiryTime)); + VelocityBoosters.getPlugin().getProxy().sendMessage(MiniMessage.markdown().parse(mcMessage)); + VelocityBoosters.getPlugin().getLogger().info(mcMessage); return 1; }) ) diff --git a/velocity/src/main/java/com/alttd/vboosters/data/VelocityBooster.java b/velocity/src/main/java/com/alttd/vboosters/data/VelocityBooster.java index f6d0994..317a03a 100644 --- a/velocity/src/main/java/com/alttd/vboosters/data/VelocityBooster.java +++ b/velocity/src/main/java/com/alttd/vboosters/data/VelocityBooster.java @@ -6,6 +6,7 @@ import com.alttd.vboosters.storage.VelocityBoosterStorage; import java.util.Collection; import java.util.List; +import java.util.Date; import java.util.UUID; public class VelocityBooster implements Booster { @@ -27,6 +28,7 @@ public class VelocityBooster implements Booster { this.multiplier = multiplier; this.active = false; this.finished = false; + this.startingTime = new Date().getTime(); saveBooster(); }