1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как можно сделать hex градиент ника, имея два кода цветов?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ryazha_, 14 июн 2023.

  1. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Хочу сделать команду для изменения цвета ника с применением градиента имея два кода цветов. Как это можно сделать?

    Команда будет вида:
    /nick set {nickname} #0572e6 #ff0000
     
  2. VladNotch

    VladNotch Активный участник Пользователь

    Баллы:
    76
    Для удобства можно использовать уже готовый плагин-апи, https://www.spigotmc.org/resources/...animations-placeholders-rgb-✅-easy-use.92021/
     
  3. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
  4. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
  5. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Допустим у меня есть конфиг плагина такого вида:

    dark_red: #000000
    cyan: #ff44bb

    Как мне засунуть dark_red, cyan в лист, чтобы потом создать из них всплывающую подсказку из команды?
     
  6. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Не знаю, про какую подсказку речь, но если нужно хранить цвета, то можно так:
    PHP:
    Map<StringIntegercolors = new HashMap<>();
    colors.put("cyan"Integer.parseInt("#ff44bb".substring(1), 16))
    ...
    int color colors.get("cyan");
     
  7. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    В плане подсказки, я про TabComplete
     
  8. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Я хотел засунуть названия цветов dark_red в лист
    и потом просто из конфига брать значение получая название из аргов команды.
     
  9. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    FileConfiguration config = getConfig();
    List<String> list = new ArrayList<>();
    for (String key : config.getKeys(false)) {
    list.add(key);
    }
    возможно, это можно сделать так? В плане получения первой части значений из конфига?
     
  10. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну если нужно ключи секции получить, то так, да. При этом по ним же можно считать значения
     
  11. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    в итоге вот, что получилось:

    https://pastebin.com/ZenrX9qZ
     
  12. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Уверен, что работает? )

    org.bukkit.ChatColor не поддерживает RGB/HEX, их поддерживают только
    net.md_5.bungee.api.ChatColor
    и net.kyori.adventure.text.format.TextColor

    Ну, и названия классов в Java всегда стоит указывать с большой буквы
     
  13. SlenderMix

    SlenderMix Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    HIDDEN
    Не согласен, не обязательно указывать имена классов с большой буквы.
     
  14. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Не обязательно, но крайне желательно. Это общепринятый стандарт в Java. И сделано это не просто так
     
  15. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Не уверен. Сейчас проверю. Если нет, то буду пробовать с net.kyori.adventure.text.format.TextColor
     
  16. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Да. оно так не работает, сейчас попробую с MiniMessage
     
  17. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Получается примерно так?
    String nick = MiniMessage.miniMessage().deserialize(<gradient:green:blue>pupsik2004</gradient>)
    player.setDisplayName(nick)
     
  18. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    AdventureAPI работает с компонентами, а не со строками. Вот так:
    PHP:
    Component nick MiniMessage.miniMessage().deserialize("<gradient:green:#5555ff>pupsik2004</gradient>");
    player.displayName(nick);
    Нагладно протестировать внешний вид можно тут: https://webui.advntr.dev/

    Также скоро должно появиться нормальное апи для градиентов:
    https://github.com/KyoriPowered/adventure/pull/937
    https://github.com/KyoriPowered/adv...ccaxe:going-on-an-adventure:feat/gradient-api

    Хотя и сейчас есть какие-то TextColor.lerp(), GradientTag, TransitionTag. Возможно с ними тоже можно что-то намутить сейчас, но сомневаюсь
     
    Последнее редактирование: 15 июн 2023
  19. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Благодарю
     
  20. Автор темы
    Ryazha_

    Ryazha_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Ryazha_
    Появилась другая проблема, не могу понять почему не сохраняется конфиг и его данные обнуляются.

    Код главного класса: https://pastebin.com/vbkRu6nE

    Код класса с командами: https://pastebin.com/aXpus3BA
     

Поделиться этой страницей