package xyz.etztech.commandlistener.command; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import xyz.etztech.commandlistener.CommandListener; import xyz.etztech.commandlistener.CommandListenerThread; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; public class CommandMain implements CommandExecutor { CommandListener plugin; private CommandListenerThread cmdThread; public CommandMain(CommandListener plugin) { this.plugin = plugin; this.cmdThread = new CommandListenerThread(plugin); } @Override public boolean onCommand(CommandSender sender, Command command, String base, String[] args) { if (sender.hasPermission("commandlistener.use")) { if (args.length == 0) { String version = Bukkit.getPluginManager().getPlugin("CommandListener").getDescription().getVersion(); sender.sendMessage(ChatColor.GOLD + "----- CommandListener v" + version + " -----"); sender.sendMessage(ChatColor.YELLOW + "Developed by EtzTech for 24CarrotCraft"); } else if (args.length == 1) { switch (args[0]) { case "help": sender.sendMessage(ChatColor.GOLD + "----- CommandListener Commands -----"); sender.sendMessage(ChatColor.YELLOW + "/cl reload - Reload the config"); sender.sendMessage(ChatColor.YELLOW + "/cl port - Display the port CommandListener is on"); break; case "port": sender.sendMessage("CommandListener is listening on port " + plugin.getConfig().getInt("port")); break; case "reload": try { stopThread(); Thread.sleep(1000); this.plugin.reloadConfig(); Thread.sleep(1000); startThread(); sender.sendMessage("CommandListener reloaded."); } catch (Exception ex) { sender.sendMessage("CommandListener reload was interrupted."); } break; } } else { return false; } } else { sender.sendMessage(ChatColor.RED + "You do not have permission to use CommandListener."); return false; } return true; } public void startThread() { Bukkit.getConsoleSender().sendMessage("Starting Command Listener on Port " + plugin.getConfig().get("port")); cmdThread.setRunning(true); Thread th = new Thread(cmdThread); th.start(); } public void stopThread() { cmdThread.setRunning(false); try { Socket trashSock = new Socket("127.0.0.1", plugin.getConfig().getInt("port")); DataOutputStream trashStream = new DataOutputStream(trashSock.getOutputStream()); trashStream.writeUTF("trash"); trashStream.flush(); trashStream.close(); } catch (IOException ex) { Bukkit.getConsoleSender().sendMessage("Error: " + ex.getMessage()); } } }