package com.bodya.rpwanted.commands;
import com.bodya.rpwanted.Criminal;
import com.bodya.rpwanted.Main;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
public class WantedCommand implements TabExecutor {
private final Main plugin;
List<String> subcommands = Arrays.asList("set", "add", "take");
List<String> wantedLevels = Arrays.asList("0","1","2","3","4","5");
public WantedCommand(Main plugin){
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!sender.hasPermission("wanted") && !sender.isOp()) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cУ Вас недостаточно прав!"));
return true;
}
String subcommand = args[0];
if (args[0] == null) {
sender.sendMessage("Не указана подкоманда (set/add/take).");
return true;
}
if (args[1] == null) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cВведите имя подозреваемого!"));
return true;
}
Criminal criminal = new Criminal(args[1]);
int level = Integer.parseInt(args[2]);
if (args[2] == null) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cВведите число розыска!"));
return true;
}
switch (subcommand) {
case "set":
if (level > 5 || level < 0) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cНеверное число розыска."));
return true;
} else {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&fВы установили игроку &a" + args[1] + "&fуровень розыска - &a" + level + "&f."));
criminal.setWantedLevel(level);
return true;
}
case "add":
int lvladd = criminal.getWantedLevel() + level;
if (level > 5 || level < 0) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cНеверное число розыска."));
return true;
} else if (criminal.getWantedLevel() + level > 5) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cУровень розыска у игрока будет больше возможного."));
return true;
} else {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&fВы увеличили игроку &a" + args[1] + " &fуровень розыска на &a" + level + "&f."));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&fТекущий уровень розыска &a" + args[1] + "&f: &a" + lvladd + "&f."));
criminal.setWantedLevel(criminal.getWantedLevel() + level);
return true;
}
case "take":
int lvltake = criminal.getWantedLevel() - level;
if (level > 5 || level < 0) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cНеверное число розыска."));
return true;
} else if (criminal.getWantedLevel() - level < 0) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cУровень розыска у игрока будет меньше возможного."));
return true;
} else {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&fВы уменьшили игроку &a" + args[1] + " &fуровень розыска на &a" + level + "&f."));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&fТекущий уровень розыска &a" + args[1] + "&f: &a" + lvltake + "&f."));
criminal.setWantedLevel(criminal.getWantedLevel() - level);
return true;
}
}
return false;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
if (!sender.hasPermission("wanted") && !sender.isOp()) {
return null;
}
if (!command.getName().equalsIgnoreCase("wanted")) {
return null;
}
if (args.length == 1) {
return Arrays.asList("set", "take", "add");
}
if (args.length == 2) {
return null;
}
if (args.length == 3) {
return Arrays.asList("0", "1", "2", "3", "4", "5");
}
return new ArrayList<>();
}
}