MinecraftManagerPlugin/src/main/java/xyz/etztech/minecraftmanager/listeners/CommandPreprocessListener.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!"));
}
}
}
}
}