98 lines
3.6 KiB
Java
98 lines
3.6 KiB
Java
package xyz.etztech.minecraftmanager.listeners;
|
|
|
|
import net.md_5.bungee.api.chat.TextComponent;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
|
import xyz.etztech.core.web.Http;
|
|
import xyz.etztech.minecraftmanager.MCMAPI;
|
|
import xyz.etztech.minecraftmanager.MCMUtil;
|
|
import xyz.etztech.minecraftmanager.MinecraftManager;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.LinkedHashSet;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class CommandPreprocessListener implements Listener {
|
|
|
|
|
|
MinecraftManager plugin;
|
|
private LinkedHashSet<String> hasReadRules = new LinkedHashSet<>();
|
|
|
|
|
|
public CommandPreprocessListener(MinecraftManager plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
|
|
@EventHandler
|
|
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
|
|
|
|
String command = event.getMessage().substring(1); // Strip the slash
|
|
String base = command.split(" ")[0];
|
|
String[] args = command.trim().length() == base.trim().length() ? new String[0] : command.substring(base.length()+1).split(" ");
|
|
Player sender = event.getPlayer();
|
|
|
|
if (sender.hasPermission("minecraftmanager.warn") && "ban".equalsIgnoreCase(base)) {
|
|
if (args.length < 1) {
|
|
return;
|
|
}
|
|
if (plugin.getConfig().getBoolean("ban.enabled")) {
|
|
String uuid = MCMUtil.getUUID(args[0]);
|
|
if (uuid != null) {
|
|
String message = "";
|
|
if (StringUtils.isNumeric(args[1])) {
|
|
int option = Integer.parseInt(args[1]);
|
|
List<String> options = MinecraftManager.getBanOptions();
|
|
if (option <= options.size()) {
|
|
message = options.get(option-1);
|
|
Bukkit.getConsoleSender().sendMessage("Reformatting ban...");
|
|
sender.chat("/ban " + args[0] + " " + message);
|
|
} else {
|
|
sender.sendMessage(ChatColor.RED + "Ban Option not recognized.");
|
|
}
|
|
event.setCancelled(true);
|
|
return;
|
|
} else {
|
|
message = StringUtils.join(Arrays.copyOfRange(args, 1, args.length), " ");
|
|
}
|
|
if (plugin.getConfig().getBoolean("ban.auto-warning")) {
|
|
String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/warning/";
|
|
Map<String, String> data = MCMAPI.setup();
|
|
data.put("player", uuid);
|
|
data.put("staff", sender.getUniqueId().toString());
|
|
data.put("severity", "H");
|
|
data.put("message", message);
|
|
Http.asyncPost(plugin, djangoUrl, data);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (sender.hasPermission("minecraftmanager.guest")) {
|
|
if ("rules".equalsIgnoreCase(base)) {
|
|
hasReadRules.add(sender.getUniqueId().toString());
|
|
}
|
|
else if ("apply".equalsIgnoreCase(base)) {
|
|
if(!hasReadRules.contains(sender.getUniqueId().toString())) {
|
|
event.setCancelled(true);
|
|
sender.spigot().sendMessage(new TextComponent(ChatColor.RED + "Make sure to check /rules before applying!"));
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|