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 subCommandList = Arrays.asList("set", "remove", "list"); public MarkerCommand(QoL paramQoL) { this.plugin = paramQoL; } @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 onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) { for (String arg: strings) { if (subCommandList.contains(arg)) { return null; } } return subCommandList; } }