101 lines
3.1 KiB
Java
101 lines
3.1 KiB
Java
package xyz.etztech.qol.listeners;
|
|
|
|
import net.md_5.bungee.api.chat.ClickEvent;
|
|
import net.md_5.bungee.api.chat.TextComponent;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.http.NameValuePair;
|
|
import org.apache.http.client.HttpClient;
|
|
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
|
import org.apache.http.client.methods.HttpPost;
|
|
import org.apache.http.impl.client.HttpClients;
|
|
import org.apache.http.message.BasicNameValuePair;
|
|
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.qol.QoL;
|
|
import xyz.etztech.qol.other.LinkCommand;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class CommandPreprocessListener implements Listener {
|
|
|
|
|
|
QoL plugin;
|
|
|
|
public CommandPreprocessListener(QoL plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
|
|
@EventHandler
|
|
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
|
|
|
|
String command = event.getMessage();
|
|
String base = command.split(" ")[0].substring(1).toLowerCase(); // Strip the slash
|
|
Player sender = event.getPlayer();
|
|
|
|
// Command Auditing
|
|
if (plugin.getConfig().getBoolean("audit.enabled") && QoL.getAudits().contains(base)) {
|
|
Map<String, String> post = new HashMap<>();
|
|
post.put("username", "QoL Auditor");
|
|
post.put("content", sender.getName() + " executed command: " + command);
|
|
String webhook = plugin.getConfig().getString("audit.webhook");
|
|
if (StringUtils.isNotEmpty(webhook)) {
|
|
POST(webhook, post);
|
|
}
|
|
}
|
|
|
|
// Links
|
|
for (LinkCommand linkCommand : QoL.getLinks()) {
|
|
if (base.equalsIgnoreCase(linkCommand.getCommand())) {
|
|
event.setCancelled(true);
|
|
TextComponent link = new TextComponent(ChatColor.GREEN + linkCommand.getMessage());
|
|
link.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, linkCommand.getUrl()));
|
|
sender.spigot().sendMessage(link);
|
|
return;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private static String POST(String url, Map<String, String> data) {
|
|
StringBuffer result = new StringBuffer();
|
|
try {
|
|
HttpClient client = HttpClients.createDefault();
|
|
HttpPost post = new HttpPost(url);
|
|
List<NameValuePair> params = new ArrayList<>();
|
|
for (String key : data.keySet()) {
|
|
params.add(new BasicNameValuePair(key, data.get(key)));
|
|
}
|
|
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
|
|
client.execute(post);
|
|
} catch (Exception ex) {
|
|
log("POST request failed. (" + url + ")");
|
|
}
|
|
|
|
return result.toString();
|
|
}
|
|
|
|
private static void log(String message) {
|
|
try {
|
|
Bukkit.getConsoleSender().sendMessage(message);
|
|
} catch (Exception ex) {
|
|
System.out.println(message);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|