CommandListener/src/main/java/xyz/etztech/commandlistener/CommandListenerThread.java

69 lines
2.5 KiB
Java

package xyz.etztech.commandlistener;
import org.bukkit.Bukkit;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommandListenerThread extends Thread {
private boolean running = true;
private CommandListener plugin;
public CommandListenerThread(CommandListener plugin) {this.plugin = plugin;}
public boolean getRunning() {
return running;
}
public void setRunning(boolean running) {
this.running = running;
}
public void run() {
List<String> commands = this.plugin.getConfig().getStringList("commands");
try {
ServerSocket cmdSock = new ServerSocket(this.plugin.getConfig().getInt("port"), 0, InetAddress.getByName(null));
while (getRunning()) {
Socket data = cmdSock.accept();
BufferedReader myInput = new BufferedReader(new InputStreamReader(data.getInputStream()));
String buf = myInput.readLine();
if (buf != null) {
String[] input = buf.split(" ");
String base = input[0];
ArrayList<String> args = new ArrayList<>();
if (input.length > 1) {
args = new ArrayList<>(Arrays.asList(buf.split(" ")));
args.remove(0);
}
if (this.plugin.getConfig().getBoolean("verbose")) {
Bukkit.getConsoleSender().sendMessage("Received input '" + buf + "'");
Bukkit.getConsoleSender().sendMessage("Base Command '" + base + "'");
Bukkit.getConsoleSender().sendMessage("Arguments '" + args.toString() + "'");
}
if (commands.contains(base)) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), buf);
} else if (this.plugin.getConfig().getBoolean("verbose")){
Bukkit.getConsoleSender().sendMessage("Input not recognized, ignoring.");
}
}
}
Bukkit.getConsoleSender().sendMessage("Closing CommandListener on Port " + this.plugin.getConfig().get("port"));
cmdSock.close();
} catch (Exception ex) {
Bukkit.getConsoleSender().sendMessage("Error: " + ex.getMessage());
}
}
}