From bc4e7d5aab33ae7229a4e3a6d7ff4dfca8213b6b Mon Sep 17 00:00:00 2001 From: Etzelia Date: Wed, 12 Sep 2018 11:05:11 -0500 Subject: [PATCH] Updated to latest changes from private repo --- pom.xml | 2 +- .../java/xyz/etztech/mixtape/Mixtape.java | 7 ++++++ .../listeners/CommandPreprocessListener.java | 25 +++++++++++++++---- src/main/resources/config.yml | 6 ++++- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 452b1db..1ae0da4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 xyz.etztech - mixtape + Mixtape 1.0 jar diff --git a/src/main/java/xyz/etztech/mixtape/Mixtape.java b/src/main/java/xyz/etztech/mixtape/Mixtape.java index 0dd5ab9..4bbeb40 100644 --- a/src/main/java/xyz/etztech/mixtape/Mixtape.java +++ b/src/main/java/xyz/etztech/mixtape/Mixtape.java @@ -18,6 +18,8 @@ public final class Mixtape extends JavaPlugin { private static Mixtape instance; public static FileConfiguration config; + private static int loops; + private static Map> chatAliases = new HashMap<>(); private static Map> commandAliases = new HashMap<>(); private static boolean global; @@ -45,6 +47,7 @@ public final class Mixtape extends JavaPlugin { public void reloadConfig() { super.reloadConfig(); config = Bukkit.getPluginManager().getPlugin("Mixtape").getConfig(); + loops = config.getInt("loop"); validate(); } @@ -92,6 +95,10 @@ public final class Mixtape extends JavaPlugin { global = bool; } + public static int getLoops() { + return loops; + } + private void validate() { List errors = new ArrayList<>(); try { diff --git a/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java b/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java index 364f935..8f0acef 100644 --- a/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java +++ b/src/main/java/xyz/etztech/mixtape/listeners/CommandPreprocessListener.java @@ -13,10 +13,7 @@ import org.bukkit.event.server.ServerCommandEvent; import xyz.etztech.mixtape.Mixtape; import xyz.etztech.mixtape.MixtapeUtil; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -25,6 +22,8 @@ public class CommandPreprocessListener implements Listener { private final String ERROR = "Mixtape/Error"; private final Pattern PATTERN = Pattern.compile("<([^>]+)>"); + private static Map loops = new HashMap<>(); + Mixtape plugin; public CommandPreprocessListener(Mixtape plugin) { @@ -78,13 +77,20 @@ public class CommandPreprocessListener implements Listener { if (sender instanceof Player) { Player player = (Player) sender; + if (!increment(player.getUniqueId().toString())) { + player.sendMessage(ChatColor.RED + "You went too deep! What is this, Inception?"); + loops.put(player.getUniqueId().toString(), 0); + return true; + } + // Command aliases Map commands = Mixtape.getCommandAliases(player.getUniqueId().toString()); for (String alias : commands.keySet()) { if (alias.equalsIgnoreCase(base)) { String resolved = resolve(commands.get(alias), args); + resolved = resolved.startsWith("/") ? resolved : "/" + resolved; if (!ERROR.equalsIgnoreCase(resolved)) { - Bukkit.dispatchCommand(player, resolved); + player.chat(resolved); } else { player.sendMessage(ChatColor.RED + usage(base, commands.get(alias))); } @@ -106,6 +112,7 @@ public class CommandPreprocessListener implements Listener { return true; } } + loops.put(player.getUniqueId().toString(), 0); } return false; @@ -136,5 +143,13 @@ public class CommandPreprocessListener implements Listener { return template.trim() + " " + StringUtils.join(Arrays.copyOfRange(parts, idx, parts.length), " "); } + private static boolean increment(String uuid) { + Integer current = loops.get(uuid); + current = current == null ? 1 : ++current; + loops.put(uuid, current); + return current <= Mixtape.getLoops(); + } + + } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 2c676db..687c584 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,4 +3,8 @@ # You could run /donator Etzelia 1m aliases: - alias: /donator - command: /lp user parent addtemp donator