Guest User

Untitled

a guest
Jun 15th, 2023
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. @Override
  2. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  3. if (args.length == 4 && args[0].equalsIgnoreCase("set")) {
  4. //Проверка аргументов
  5. String nickname = args[1];
  6. String startColorString = args[2].startsWith("#") ? args[2] : "#" + args[2];
  7. String endColorString = args[3].startsWith("#") ? args[3] : "#" + args[3];
  8. ChatColor startColor = ChatColor.getByChar(startColorString.substring(1));
  9. ChatColor endColor = ChatColor.getByChar(endColorString.substring(1));
  10. if (startColor == null || endColor == null) {
  11. sender.sendMessage("Ошибка: не удалось разобрать цвета.");
  12. return true;
  13. }
  14.  
  15.  
  16. StringBuilder sb = new StringBuilder();
  17. int charsToSkip = Math.max(nickname.length() / 2 - 1, 0);
  18. for (int i = 0; i < nickname.length(); i++) {
  19. if (charsToSkip > 0) {
  20. charsToSkip--;
  21. sb.append(nickname.charAt(i));
  22. continue;
  23. }
  24. int colorR, colorG, colorB;
  25. try {
  26. Color start = Color.decode(startColorString);
  27. Color end = Color.decode(endColorString);
  28. colorR = (int) ((end.getRed() - start.getRed()) * ((float) i / (float) nickname.length())) + start.getRed();
  29. colorG = (int) ((end.getGreen() - start.getGreen()) * ((float) i / (float) nickname.length())) + start.getGreen();
  30. colorB = (int) ((end.getBlue() - start.getBlue()) * ((float) i / (float) nickname.length())) + start.getBlue();
  31. } catch (NumberFormatException e) {
  32. sender.sendMessage("Ошибка: не удалось разобрать цвета.");
  33. return true;
  34. }
  35. ChatColor color = ChatColor.valueOf(String.valueOf(new Color(colorR, colorG, colorB)));
  36. sb.append(color).append(nickname.charAt(i));
  37. }
  38.  
  39.  
  40. sender.getServer().dispatchCommand(sender, "nickname " + sender.getName() + " " + sb.toString());
  41. sender.sendMessage("Градиентный ник установлен.");
  42. return true;
  43. }
  44. return false;
  45. }
  46.  
  47. }
Advertisement
Add Comment
Please, Sign In to add comment