From 0408b34c1d3734c22ba49fe73cf5be71bf1f952c Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Mon, 25 Jul 2022 18:50:02 +0200 Subject: [PATCH] Made booster command add booster and rewrote multiplier to be a double --- .../java/com/alttd/boosterapi/Booster.java | 4 +- .../com/alttd/boosterapi/config/Config.java | 5 ++ .../java/com/alttd/boosters/data/Booster.java | 10 +-- .../boosters/listeners/MCmmoListener.java | 8 +-- .../boosters/listeners/MyPetListener.java | 2 +- .../vboosters/commands/BoosterCommand.java | 67 +++++++++++++++++-- .../alttd/vboosters/data/VelocityBooster.java | 10 +-- 7 files changed, 82 insertions(+), 24 deletions(-) diff --git a/api/src/main/java/com/alttd/boosterapi/Booster.java b/api/src/main/java/com/alttd/boosterapi/Booster.java index 36ab7e7..705a45c 100644 --- a/api/src/main/java/com/alttd/boosterapi/Booster.java +++ b/api/src/main/java/com/alttd/boosterapi/Booster.java @@ -12,9 +12,9 @@ public interface Booster { void setType(BoosterType boosterType); - int getMultiplier(); + double getMultiplier(); - void setMultiplier(int multiplier); + void setMultiplier(double multiplier); Long getStartingTime(); diff --git a/api/src/main/java/com/alttd/boosterapi/config/Config.java b/api/src/main/java/com/alttd/boosterapi/config/Config.java index d70e064..59fcd0c 100755 --- a/api/src/main/java/com/alttd/boosterapi/config/Config.java +++ b/api/src/main/java/com/alttd/boosterapi/config/Config.java @@ -178,6 +178,11 @@ public final class Config { pluginMessageChannel = getString("settings.message-channel", pluginMessageChannel); } + public static long BOOST_ANNOUNCE_CHANNEL = -1; + private static void announceChannels() { + BOOST_ANNOUNCE_CHANNEL = getLong("settings.boost-announce-channel", BOOST_ANNOUNCE_CHANNEL); + } + public static List donorRanks = new ArrayList<>(); private static void loadDonorStuff() { donorRanks = getList("donor.ranks", donorRanks); diff --git a/plugin/src/main/java/com/alttd/boosters/data/Booster.java b/plugin/src/main/java/com/alttd/boosters/data/Booster.java index a4d3e46..9f38eb6 100644 --- a/plugin/src/main/java/com/alttd/boosters/data/Booster.java +++ b/plugin/src/main/java/com/alttd/boosters/data/Booster.java @@ -11,11 +11,11 @@ public class Booster implements com.alttd.boosterapi.Booster { private Long startingTime; private long duration; private BoosterType boosterType; - private Integer multiplier; + private Double multiplier; private Boolean active; private Boolean finished; - public Booster(UUID uuid, BoosterType boosterType, String reason, long duration, int multiplier) { + public Booster(UUID uuid, BoosterType boosterType, String reason, long duration, double multiplier) { this.uuid = uuid; this.boosterType = boosterType; this.activator = reason; @@ -26,7 +26,7 @@ public class Booster implements com.alttd.boosterapi.Booster { saveBooster(); } - public Booster(BoosterType type, String playerName, long duration, int multiplier) { + public Booster(BoosterType type, String playerName, long duration, double multiplier) { this(UUID.randomUUID(), type, playerName, duration, multiplier); } @@ -51,12 +51,12 @@ public class Booster implements com.alttd.boosterapi.Booster { } @Override - public int getMultiplier() { + public double getMultiplier() { return multiplier; } @Override - public void setMultiplier(int multiplier) { + public void setMultiplier(double multiplier) { this.multiplier = multiplier; } diff --git a/plugin/src/main/java/com/alttd/boosters/listeners/MCmmoListener.java b/plugin/src/main/java/com/alttd/boosters/listeners/MCmmoListener.java index 0a0732a..a39e66b 100755 --- a/plugin/src/main/java/com/alttd/boosters/listeners/MCmmoListener.java +++ b/plugin/src/main/java/com/alttd/boosters/listeners/MCmmoListener.java @@ -15,16 +15,16 @@ public class MCmmoListener implements Listener { BoosterManager bm = BoostersPlugin.getInstance().getBoosterManager(); if (bm.isBoosted(BoosterType.MCMMO)) { Booster b = bm.getBooster(BoosterType.MCMMO); - int multiplier = b.getMultiplier(); - event.setRawXpGained(event.getRawXpGained() * multiplier); + double multiplier = b.getMultiplier(); + event.setRawXpGained(Math.round(event.getRawXpGained() * multiplier)); return; } String skillName = event.getSkill().name(); BoosterType type = BoosterType.getByName(skillName); if (bm.isBoosted(type)) { Booster b = bm.getBooster(type); - int multiplier = b.getMultiplier(); - event.setRawXpGained(event.getRawXpGained() * multiplier); + double multiplier = b.getMultiplier(); + event.setRawXpGained(Math.round(event.getRawXpGained() * multiplier)); return; } } diff --git a/plugin/src/main/java/com/alttd/boosters/listeners/MyPetListener.java b/plugin/src/main/java/com/alttd/boosters/listeners/MyPetListener.java index d44088d..add28e9 100755 --- a/plugin/src/main/java/com/alttd/boosters/listeners/MyPetListener.java +++ b/plugin/src/main/java/com/alttd/boosters/listeners/MyPetListener.java @@ -15,7 +15,7 @@ public class MyPetListener implements Listener { BoosterManager bm = BoostersPlugin.getInstance().getBoosterManager(); if(bm.isBoosted(BoosterType.MYPET)) { Booster b = bm.getBooster(BoosterType.MYPET); - int multiplier = b.getMultiplier(); + double multiplier = b.getMultiplier(); event.setExp(event.getExp() * multiplier); } } 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 1ff1fc0..7156946 100755 --- a/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java +++ b/velocity/src/main/java/com/alttd/vboosters/commands/BoosterCommand.java @@ -1,27 +1,80 @@ package com.alttd.vboosters.commands; +import com.alttd.boosterapi.BoosterType; +import com.alttd.boosterapi.config.Config; +import com.alttd.boosterapi.util.Utils; import com.alttd.proxydiscordlink.bot.api.DiscordSendMessage; import com.alttd.vboosters.VelocityBoosters; +import com.alttd.vboosters.data.VelocityBooster; +import com.mojang.brigadier.arguments.DoubleArgumentType; +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.arguments.StringArgumentType; 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; +import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; +import com.velocitypowered.api.util.GameProfile; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; public class BoosterCommand { + CompletableFuture buildRemainingString(SuggestionsBuilder builder, Collection possibleValues) { + if (possibleValues.isEmpty()) + return Suggestions.empty(); + + String remaining = builder.getRemaining().toLowerCase(); + for (String str : possibleValues) { + if (str.toLowerCase().startsWith(remaining)) { + builder.suggest(StringArgumentType.escapeIfRequired(str)); + } + } + + return builder.buildFuture(); + } + public BoosterCommand(ProxyServer proxyServer) { LiteralCommandNode command = LiteralArgumentBuilder .literal("booster") .requires(ctx -> ctx.hasPermission("command.proxy.booster")) - .executes(context -> { - String channelid = "776590138296893483"; - String msg = "CONSOLEUSER activated booster of type BoosterType.MMMCALL for 48 hours."; - DiscordSendMessage.sendEmbed(Long.parseLong(channelid),"Booster Activated" , msg); - VelocityBoosters.getPlugin().getLogger().info(msg); - return 1; - }) + .then(RequiredArgumentBuilder.argument("username", StringArgumentType.string()) + .suggests((context, builder) -> buildRemainingString(builder, proxyServer.getAllPlayers().stream() + .map(Player::getGameProfile) + .map(GameProfile::getName) + .collect(Collectors.toList()))) + .then(RequiredArgumentBuilder.argument("booster", StringArgumentType.string()) + .suggests((context, builder) -> buildRemainingString(builder, Arrays.stream(BoosterType.values()) + .map(BoosterType::getBoosterName) + .collect(Collectors.toList()))) + .then(RequiredArgumentBuilder.argument("time", IntegerArgumentType.integer(0, 525960)) + .then(RequiredArgumentBuilder.argument("multiplier", DoubleArgumentType.doubleArg(0, 10)) + .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); + return 1; + }) + ) + ) + ) + ) + .executes(context -> 1) .build(); BrigadierCommand brigadierCommand = new BrigadierCommand(command); 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 05bbcd8..a93b213 100644 --- a/velocity/src/main/java/com/alttd/vboosters/data/VelocityBooster.java +++ b/velocity/src/main/java/com/alttd/vboosters/data/VelocityBooster.java @@ -12,11 +12,11 @@ public class VelocityBooster implements Booster { private Long startingTime; private long duration; private BoosterType boosterType; - private Integer multiplier; + private Double multiplier; private Boolean active; private Boolean finished; - public VelocityBooster(UUID uuid, BoosterType boosterType, String reason, long duration, int multiplier) { + public VelocityBooster(UUID uuid, BoosterType boosterType, String reason, long duration, double multiplier) { this.uuid = uuid; this.boosterType = boosterType; this.activator = reason; @@ -27,7 +27,7 @@ public class VelocityBooster implements Booster { saveBooster(); } - public VelocityBooster(BoosterType type, String playerName, long duration, int multiplier) { + public VelocityBooster(BoosterType type, String playerName, long duration, double multiplier) { this(UUID.randomUUID(), type, playerName, duration, multiplier); } @@ -52,12 +52,12 @@ public class VelocityBooster implements Booster { } @Override - public int getMultiplier() { + public double getMultiplier() { return multiplier; } @Override - public void setMultiplier(int multiplier) { + public void setMultiplier(double multiplier) { this.multiplier = multiplier; }