Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class gnickCommand implements CommandExecutor, TabCompleter {
- private GradientNick plugin;
- public gnickCommand() {
- this.plugin = plugin;
- }
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (args.length == 4 && args[0].equalsIgnoreCase("set")) {
- //Проверка аргументов
- String nickname = args[1];
- if (!(args[2].startsWith("#") && args[3].startsWith("#"))) {
- FileConfiguration config = plugin.getConfig();
- String startColorString = config.getString(args[2]);
- String endColorString = config.getString(args[3]);
- ChatColor startColor = ChatColor.getByChar(startColorString.substring(1));
- ChatColor endColor = ChatColor.getByChar(endColorString.substring(1));
- if (startColor == null || endColor == null) {
- sender.sendMessage("Ошибка: не удалось разобрать цвета.");
- return true;
- }
- StringBuilder sb = new StringBuilder();
- int charsToSkip = Math.max(nickname.length() / 2 - 1, 0);
- for (int i = 0; i < nickname.length(); i++) {
- if (charsToSkip > 0) {
- charsToSkip--;
- sb.append(nickname.charAt(i));
- continue;
- }
- int colorR, colorG, colorB;
- try {
- Color start = Color.decode(startColorString);
- Color end = Color.decode(endColorString);
- colorR = (int) ((end.getRed() - start.getRed()) * ((float) i / (float) nickname.length())) + start.getRed();
- colorG = (int) ((end.getGreen() - start.getGreen()) * ((float) i / (float) nickname.length())) + start.getGreen();
- colorB = (int) ((end.getBlue() - start.getBlue()) * ((float) i / (float) nickname.length())) + start.getBlue();
- } catch (NumberFormatException e) {
- sender.sendMessage("Ошибка: не удалось разобрать цвета.");
- return true;
- }
- ChatColor color = ChatColor.valueOf(String.valueOf(new Color(colorR, colorG, colorB)));
- sb.append(color).append(nickname.charAt(i));
- }
- //Устанавливаем ник
- Player player = Bukkit.getPlayer(nickname);
- String displayName = sb.toString();
- player.setDisplayName(displayName);
- player.setPlayerListName(displayName); //для изменения отображаемого ника в списке игроков
- return true;
- }
- }
- return false;
- }
- @Override
- public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
- List<String> completions = new ArrayList<>();
- FileConfiguration config = plugin.getConfig(); // получаем объект конфига
- if (args.length == 0) {
- // Автодополнение для args[0]
- completions.add("set");
- } else if (args.length == 1) {
- // Автодополнение для args[1]
- for (Player player : Bukkit.getOnlinePlayers()) {
- completions.add(player.getName());
- }
- } else if (args.length == 2 || args.length == 3) {
- // Автодополнение для args[2] и args[3]
- for (String key : config.getKeys(false)) { // перебираем все ключи в конфиге
- completions.add(key); // добавляем первую часть ключа (до ":") в список
- }
- }
- // Сортировка и возврат списка
- Collections.sort(completions);
- return completions;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment