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