124 lines
4.2 KiB
Java
124 lines
4.2 KiB
Java
|
|
package xyz.etztech.qol.commands;
|
|
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.TabExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Player;
|
|
import org.dynmap.markers.Marker;
|
|
import org.dynmap.markers.MarkerSet;
|
|
import xyz.etztech.qol.EtzTechUtil;
|
|
import xyz.etztech.qol.Lang;
|
|
import xyz.etztech.qol.QoL;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
|
|
public class MarkerCommand implements CommandExecutor, TabExecutor{
|
|
QoL plugin;
|
|
List<String> subCommandList = Arrays.asList("set", "remove", "list");
|
|
|
|
public MarkerCommand(QoL paramQoL) {
|
|
this.plugin = paramQoL;
|
|
plugin.getCommand("marker").setExecutor(this);
|
|
plugin.getCommand("marker").setTabCompleter(this);
|
|
}
|
|
|
|
@Override
|
|
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
|
|
if (!( commandSender instanceof Player)) {
|
|
EtzTechUtil.sms(commandSender, Lang.NO_CONSOLE.getDef());
|
|
return true;
|
|
}
|
|
|
|
Player player = (Player) commandSender;
|
|
|
|
if (!player.hasPermission("qol.marker")) {
|
|
EtzTechUtil.sms(player, Lang.NO_PERMISSION.getDef());
|
|
return true;
|
|
}
|
|
|
|
if (args.length < 1) {
|
|
EtzTechUtil.sms(player, ChatColor.RED + "/marker set");
|
|
EtzTechUtil.sms(player, ChatColor.RED + "/marker remove");
|
|
return true;
|
|
}
|
|
else {
|
|
String action = args[0].toLowerCase();
|
|
String name;
|
|
if (args.length > 1) {
|
|
String[] arr = Arrays.copyOfRange(args, 1, args.length);
|
|
|
|
name = String.join(" ", arr);
|
|
}
|
|
else {
|
|
name = (player).getDisplayName();
|
|
}
|
|
|
|
if (name.length() > 25) {
|
|
EtzTechUtil.sms(player, ChatColor.RED + "Marker name too long, try a shorter name");
|
|
return true;
|
|
}
|
|
|
|
if (action.equals("set")) {
|
|
int marker_count = plugin.getPlayerMarkers(player).size();
|
|
|
|
if (marker_count >= EtzTechUtil.getPermValue("qol.marker.limit", player.getEffectivePermissions())) {
|
|
EtzTechUtil.sms(player, ChatColor.RED + "You can't add more markers, delete an old one first.");
|
|
return true;
|
|
}
|
|
|
|
plugin.createMarkerAtPlayer(player, name);
|
|
EtzTechUtil.sms(player, ChatColor.GREEN + "Marker \"" + name + "\" created");
|
|
}
|
|
else if (action.equals("remove")) {
|
|
Marker marker = plugin.getPlayerMarker(player, name);
|
|
if (marker != null) {
|
|
marker.deleteMarker();
|
|
EtzTechUtil.sms(player, ChatColor.GREEN + "Marker \"" + name +"\" removed.");
|
|
}
|
|
else {
|
|
EtzTechUtil.sms(player, ChatColor.RED + "You don't have a marker by that name");
|
|
}
|
|
}
|
|
else if (action.equals("list")) {
|
|
MarkerSet markerSet = plugin.getPlayerMarkerSet();
|
|
StringBuilder msg = new StringBuilder();
|
|
int marker_count = 0;
|
|
|
|
msg.append(ChatColor.GREEN);
|
|
msg.append("You have the following markers:\n");
|
|
msg.append(ChatColor.YELLOW);
|
|
for (Marker marker: plugin.getPlayerMarkers(player)) {
|
|
msg.append(marker.getLabel());
|
|
msg.append('\n');
|
|
marker_count++;
|
|
}
|
|
|
|
if (marker_count == 0) {
|
|
EtzTechUtil.sms(player, ChatColor.RED + "You don't have any markers");
|
|
}
|
|
else {
|
|
EtzTechUtil.sms(player, msg.toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) {
|
|
for (String arg: strings) {
|
|
if (subCommandList.contains(arg)) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return subCommandList;
|
|
}
|
|
} |