QoL-colour/src/main/java/xyz/etztech/qol/commands/MarkerCommand.java

123 lines
4.1 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;
}
@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;
}
}