2018-09-12 16:03:59 +00:00
|
|
|
package xyz.etztech.minecraftmanager.objects;
|
2018-09-12 15:55:10 +00:00
|
|
|
|
2018-09-22 00:21:09 +00:00
|
|
|
import net.md_5.bungee.api.ChatColor;
|
2018-09-15 21:19:38 +00:00
|
|
|
import net.md_5.bungee.api.chat.ClickEvent;
|
|
|
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
2018-09-22 00:21:09 +00:00
|
|
|
import net.md_5.bungee.api.chat.HoverEvent;
|
2018-09-15 21:19:38 +00:00
|
|
|
import net.md_5.bungee.api.chat.TextComponent;
|
2018-09-12 15:55:10 +00:00
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.entity.Player;
|
2018-09-12 16:03:59 +00:00
|
|
|
import xyz.etztech.minecraftmanager.MCMUtil;
|
|
|
|
import xyz.etztech.minecraftmanager.MinecraftManager;
|
2018-09-12 15:55:10 +00:00
|
|
|
|
|
|
|
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 MinecraftManagerThread extends Thread {
|
|
|
|
private boolean running = true;
|
|
|
|
|
|
|
|
private MinecraftManager plugin;
|
|
|
|
|
|
|
|
public MinecraftManagerThread(MinecraftManager plugin) {this.plugin = plugin;}
|
|
|
|
|
|
|
|
public boolean getRunning() {
|
|
|
|
return running;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setRunning(boolean running) {
|
|
|
|
this.running = running;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
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);
|
|
|
|
}
|
2018-10-21 04:01:00 +00:00
|
|
|
switch (base) {
|
|
|
|
case "application":
|
|
|
|
application(args.get(0), args.get(1));
|
|
|
|
break;
|
|
|
|
case "ticket":
|
|
|
|
ticket(args.get(0), args.get(1), args.get(2));
|
|
|
|
break;
|
|
|
|
case "accept":
|
|
|
|
action(args.get(0), true);
|
|
|
|
break;
|
|
|
|
case "deny":
|
|
|
|
action(args.get(0), false);
|
|
|
|
break;
|
|
|
|
case "demote":
|
|
|
|
demote(args.get(0));
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
Bukkit.getConsoleSender().sendMessage("Input not recognized, ignoring.");
|
|
|
|
break;
|
2018-09-12 15:55:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Bukkit.getConsoleSender().sendMessage("Closing MinecraftManager on Port " + this.plugin.getConfig().get("port"));
|
|
|
|
cmdSock.close();
|
|
|
|
} catch (Exception ex) {
|
|
|
|
Bukkit.getConsoleSender().sendMessage("Error: " + ex.getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-09-15 21:19:38 +00:00
|
|
|
public static void application(String username, String id) {
|
2018-09-22 00:21:09 +00:00
|
|
|
ComponentBuilder builder = new ComponentBuilder("New application #" + id + " from " + username)
|
|
|
|
.color(ChatColor.GREEN)
|
|
|
|
.event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/app info " + id));
|
|
|
|
TextComponent message = new TextComponent(builder.create());
|
2018-10-21 04:01:00 +00:00
|
|
|
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("MCM Staff Chat").create()));
|
2018-09-22 00:21:09 +00:00
|
|
|
MCMUtil.staffMessage(message);
|
2018-09-15 21:19:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public static void ticket(String username, String id, String link) {
|
|
|
|
ComponentBuilder builder = new ComponentBuilder("New ticket #" + id + " from " + username + ". Click for more info.")
|
2018-09-22 00:21:09 +00:00
|
|
|
.color(ChatColor.GREEN)
|
2018-09-15 21:19:38 +00:00
|
|
|
.event(new ClickEvent(ClickEvent.Action.OPEN_URL, link));
|
|
|
|
TextComponent message = new TextComponent(builder.create());
|
2018-10-21 04:01:00 +00:00
|
|
|
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("MCM Staff Chat").create()));
|
2018-09-12 15:55:10 +00:00
|
|
|
MCMUtil.staffMessage(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void action(final String username, boolean accepted) {
|
|
|
|
String path = accepted ? "accept" : "deny";
|
|
|
|
String message = MinecraftManager.config.getString(path + ".message").replace("<player>", username);
|
|
|
|
message = ChatColor.translateAlternateColorCodes('&', message);
|
|
|
|
Player online = null;
|
|
|
|
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
|
|
|
|
if (username.equalsIgnoreCase(player.getName())) {
|
|
|
|
online = player;
|
|
|
|
player.sendMessage(message);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (online != null) {
|
2018-09-12 16:03:59 +00:00
|
|
|
// Set their group if accepted
|
|
|
|
if (accepted) {
|
|
|
|
String engine = MinecraftManager.config.getString("permissions.engine");
|
|
|
|
String promote = MinecraftManager.config.getString("permissions.promote");
|
|
|
|
if ("permissionsex".equalsIgnoreCase(engine)) {
|
|
|
|
runTask("pex user <player> group set " + promote, username);
|
|
|
|
} else if ("luckperms".equalsIgnoreCase(engine)) {
|
|
|
|
runTask("lp user <player> group set " + promote, username);
|
|
|
|
}
|
2018-09-12 15:55:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Run misc commands
|
|
|
|
List<String> commands = MinecraftManager.config.getStringList(path + ".commands");
|
|
|
|
for (final String command : commands) {
|
|
|
|
runTask(command, username);
|
|
|
|
}
|
|
|
|
}
|
2018-09-12 16:03:59 +00:00
|
|
|
|
|
|
|
// Message to staff
|
2018-09-22 00:21:09 +00:00
|
|
|
ComponentBuilder builder = new ComponentBuilder(username + " was " + (accepted ? "accepted" : "denied") + ".")
|
|
|
|
.color(ChatColor.GREEN);
|
|
|
|
TextComponent staffMessage = new TextComponent(builder.create());
|
2018-10-21 04:01:00 +00:00
|
|
|
staffMessage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("MCM Staff Chat").create()));
|
2018-09-22 00:21:09 +00:00
|
|
|
MCMUtil.staffMessage(staffMessage);
|
2018-09-12 15:55:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
private static void runTask(final String command, final String username) {
|
|
|
|
Bukkit.getScheduler().runTask(MinecraftManager.instance, new Runnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command.replace("<player>", username));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2018-10-21 04:01:00 +00:00
|
|
|
private void demote(String username) {
|
|
|
|
String engine = MinecraftManager.config.getString("permissions.engine");
|
|
|
|
String promote = MinecraftManager.config.getString("permissions.promote");
|
|
|
|
if ("permissionsex".equalsIgnoreCase(engine)) {
|
|
|
|
runTask("pex user <player> group set " + promote, username);
|
|
|
|
} else if ("luckperms".equalsIgnoreCase(engine)) {
|
|
|
|
runTask("lp user <player> group set " + promote, username);
|
|
|
|
}
|
|
|
|
ComponentBuilder builder = new ComponentBuilder(username + " has been demoted.")
|
|
|
|
.color(ChatColor.GREEN);
|
|
|
|
TextComponent staffMessage = new TextComponent(builder.create());
|
|
|
|
staffMessage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("MCM Staff Chat").create()));
|
|
|
|
MCMUtil.staffMessage(staffMessage);
|
|
|
|
}
|
|
|
|
|
2018-09-12 15:55:10 +00:00
|
|
|
}
|