167 lines
5.2 KiB
Java
167 lines
5.2 KiB
Java
package ee.lunasqu.interaqqt;
|
|
|
|
import ee.lunasqu.interaqqt.events.listeners.RightClickAdder;
|
|
import ee.lunasqu.interaqqt.triggers.BlockTrigger;
|
|
import ee.lunasqu.interaqqt.triggers.BlockTriggers;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import java.util.UUID;
|
|
|
|
public class MQTTCommand implements CommandExecutor {
|
|
private static String[] TT = new String[]{"high", "low", "high-low"};
|
|
|
|
private boolean list (CommandSender sender, String[] arguments) {
|
|
if (arguments[1].equalsIgnoreCase("triggers")) {
|
|
BlockTriggers triggers = Main.plugin.getTriggers();
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
stringBuilder.append(ChatColor.LIGHT_PURPLE + "List of triggers:");
|
|
for (BlockTrigger trig : triggers.getTriggerList()) {
|
|
stringBuilder.append("\n");
|
|
stringBuilder.append(ChatColor.DARK_GREEN + "[*] " + ChatColor.GREEN + "\"" + trig.getName() + "\" ");
|
|
stringBuilder.append(ChatColor.BLUE + trig.getBlock().getWorld().getName() + " <");
|
|
stringBuilder.append(trig.getBlock().getX() + ", " + trig.getBlock().getY() + ", " + trig.getBlock().getZ() + "> ");
|
|
stringBuilder.append(ChatColor.GOLD + trig.getMqttTrigger() + " ");
|
|
stringBuilder.append(ChatColor.RED + TT[trig.getType()] + " ");
|
|
stringBuilder.append(ChatColor.BLUE + trig.getData());
|
|
}
|
|
|
|
sender.sendMessage(stringBuilder.toString());
|
|
return true;
|
|
}
|
|
|
|
sender.sendMessage("/mqtt list triggers | commands");
|
|
|
|
return true;
|
|
}
|
|
|
|
private boolean management (CommandSender sender, String[] arguments) {
|
|
RightClickAdder adder = Main.plugin.getAdder();
|
|
BlockTriggers triggers = Main.plugin.getTriggers();
|
|
Player p = sender.getServer().getPlayer(sender.getName());
|
|
|
|
if (arguments[0].equalsIgnoreCase("cancel")) {
|
|
if (p == null) {
|
|
sender.sendMessage(ChatColor.RED + "This command cannot be used from the console.");
|
|
return true;
|
|
}
|
|
|
|
adder.removeTriggerRequest(p.getUniqueId());
|
|
sender.sendMessage(ChatColor.GOLD + "Adding of trigger was cancelled.");
|
|
return true;
|
|
}
|
|
|
|
if (arguments.length < 2) {
|
|
return false;
|
|
}
|
|
|
|
if (arguments[1].equalsIgnoreCase("trigger")) {
|
|
if (arguments[0].equalsIgnoreCase("remove") && arguments.length == 3) {
|
|
triggers.removeBlock(arguments[2]);
|
|
sender.sendMessage(ChatColor.GREEN + "Trigger removed.");
|
|
return true;
|
|
}
|
|
|
|
if (p == null) {
|
|
sender.sendMessage(ChatColor.RED + "This command cannot be used from the console.");
|
|
return true;
|
|
}
|
|
|
|
if (arguments.length < 5) {
|
|
sender.sendMessage("/mqtt add trigger <name> <MQTT topic> <high | low | high-low> <binary | power | <value>>");
|
|
return true;
|
|
}
|
|
|
|
String name = arguments[2];
|
|
String topic = arguments[3];
|
|
String condition = arguments[4];
|
|
String value = arguments[5];
|
|
|
|
if (triggers.getTriggerByName(name) != null) {
|
|
sender.sendMessage(ChatColor.RED + "Trigger by that name already exists.");
|
|
return true;
|
|
}
|
|
|
|
if (name.isEmpty() || topic.isEmpty() || condition.isEmpty() || value.isEmpty()) return false;
|
|
|
|
int type = 0;
|
|
switch (condition.toLowerCase()) {
|
|
case "high":
|
|
type = 0;
|
|
break;
|
|
case "low":
|
|
type = 1;
|
|
break;
|
|
case "hilo":
|
|
case "highlow":
|
|
case "high-low":
|
|
type = 2;
|
|
break;
|
|
default:
|
|
sender.sendMessage(ChatColor.RED + "Invalid condition type. Supported types: high, low, high-low");
|
|
return true;
|
|
}
|
|
BlockTrigger t = new BlockTrigger(name, topic, type, value);
|
|
adder.addTriggerRequest(p.getUniqueId(), t);
|
|
sender.sendMessage(ChatColor.GOLD + "Right-click a block you wish to add as a trigger. /mqtt cancel to cancel.");
|
|
return true;
|
|
}
|
|
|
|
sender.sendMessage("/mqtt add trigger | command");
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] arguments) {
|
|
if (!sender.hasPermission("mqtt.manage")) {
|
|
sender.sendMessage(ChatColor.RED + "You do not have permission to use this command.");
|
|
return true;
|
|
}
|
|
|
|
if (arguments.length == 0) return false;
|
|
|
|
switch (arguments[0].toLowerCase()) {
|
|
case "status":
|
|
if (Main.plugin.getConnection() != null) {
|
|
sender.sendMessage(ChatColor.GREEN + "The connection is established.");
|
|
} else {
|
|
sender.sendMessage(ChatColor.RED + "The connection is closed.");
|
|
}
|
|
break;
|
|
case "start":
|
|
if (Main.plugin.getConnection() != null) {
|
|
sender.sendMessage(ChatColor.RED + "The connection is already established!");
|
|
break;
|
|
}
|
|
sender.sendMessage(ChatColor.GREEN + "Connection has been attempted!");
|
|
Main.plugin.connect();
|
|
break;
|
|
case "stop":
|
|
if (Main.plugin.getConnection() == null) {
|
|
sender.sendMessage(ChatColor.RED + "The connection is already closed!");
|
|
break;
|
|
}
|
|
sender.sendMessage(ChatColor.GOLD + "Connection has been closed!");
|
|
Main.plugin.getConnection().die();
|
|
break;
|
|
case "reload":
|
|
Main.plugin.getTriggers().loadConfiguration();
|
|
sender.sendMessage(ChatColor.GREEN + "Configuration has been reloaded!");
|
|
break;
|
|
case "cancel":
|
|
case "remove":
|
|
case "add":
|
|
return management(sender, arguments);
|
|
case "list":
|
|
return list(sender, arguments);
|
|
default:
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|