Guest User

Untitled

a guest
Jun 15th, 2023
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.15 KB | None | 0 0
  1. public class gnickCommand implements CommandExecutor, TabCompleter {
  2.  
  3.  
  4. private GradientNick plugin;
  5.  
  6. public gnickCommand() {
  7. this.plugin = plugin;
  8. }
  9.  
  10.  
  11.  
  12.  
  13. @Override
  14. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  15. if (args.length == 4 && args[0].equalsIgnoreCase("set")) {
  16. //Проверка аргументов
  17. String nickname = args[1];
  18.  
  19.  
  20. if (!(args[2].startsWith("#") && args[3].startsWith("#"))) {
  21.  
  22. FileConfiguration config = plugin.getConfig();
  23. String startColorString = config.getString(args[2]);
  24. String endColorString = config.getString(args[3]);
  25.  
  26. ChatColor startColor = ChatColor.getByChar(startColorString.substring(1));
  27. ChatColor endColor = ChatColor.getByChar(endColorString.substring(1));
  28.  
  29. if (startColor == null || endColor == null) {
  30. sender.sendMessage("Ошибка: не удалось разобрать цвета.");
  31. return true;
  32. }
  33. StringBuilder sb = new StringBuilder();
  34. int charsToSkip = Math.max(nickname.length() / 2 - 1, 0);
  35. for (int i = 0; i < nickname.length(); i++) {
  36. if (charsToSkip > 0) {
  37. charsToSkip--;
  38. sb.append(nickname.charAt(i));
  39. continue;
  40. }
  41. int colorR, colorG, colorB;
  42. try {
  43. Color start = Color.decode(startColorString);
  44. Color end = Color.decode(endColorString);
  45. colorR = (int) ((end.getRed() - start.getRed()) * ((float) i / (float) nickname.length())) + start.getRed();
  46. colorG = (int) ((end.getGreen() - start.getGreen()) * ((float) i / (float) nickname.length())) + start.getGreen();
  47. colorB = (int) ((end.getBlue() - start.getBlue()) * ((float) i / (float) nickname.length())) + start.getBlue();
  48. } catch (NumberFormatException e) {
  49. sender.sendMessage("Ошибка: не удалось разобрать цвета.");
  50. return true;
  51. }
  52. ChatColor color = ChatColor.valueOf(String.valueOf(new Color(colorR, colorG, colorB)));
  53. sb.append(color).append(nickname.charAt(i));
  54. }
  55. //Устанавливаем ник
  56. Player player = Bukkit.getPlayer(nickname);
  57. String displayName = sb.toString();
  58. player.setDisplayName(displayName);
  59. player.setPlayerListName(displayName); //для изменения отображаемого ника в списке игроков
  60. return true;
  61. }
  62. }
  63. return false;
  64. }
  65.  
  66. @Override
  67. public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
  68. List<String> completions = new ArrayList<>();
  69.  
  70.  
  71. FileConfiguration config = plugin.getConfig(); // получаем объект конфига
  72.  
  73.  
  74. if (args.length == 0) {
  75. // Автодополнение для args[0]
  76. completions.add("set");
  77. } else if (args.length == 1) {
  78. // Автодополнение для args[1]
  79. for (Player player : Bukkit.getOnlinePlayers()) {
  80. completions.add(player.getName());
  81. }
  82. } else if (args.length == 2 || args.length == 3) {
  83. // Автодополнение для args[2] и args[3]
  84. for (String key : config.getKeys(false)) { // перебираем все ключи в конфиге
  85. completions.add(key); // добавляем первую часть ключа (до ":") в список
  86. }
  87. }
  88.  
  89. // Сортировка и возврат списка
  90. Collections.sort(completions);
  91. return completions;
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment