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

Помогите [1.12] Как преобразовать HEX в цветовой код майнкрафта

Тема в разделе "Разработка плагинов для новичков", создана пользователем niheev, 20 янв 2024.

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

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

    Баллы:
    61
    Имя в Minecraft:
    slivachuu
    Приветствую! Столкнулся с такой ситуацией, необходимо преобразовывать HEX код в цветовой символ (код форматирования) понятный для Minecraft 1.12, а-ля &a.

    Используемое ядро: Spigot

    Облазил иностранные, и отечественные ресурсы в поисках решения – не удалось. Надежда на то – что кто-нибудь из Вас знает решения данной задачки. Заранее спасибо!
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Меняешь решетку на §x, ну и перед каждым символом hex кода знак параграфа. Только тебе нужна версия 1.16 и выше, старые версии в такое не умеют.
     
    Последнее редактирование: 21 янв 2024
  3. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Если речь про нахождение ближайшего ванильного цвета к какому-то иному, то проще всего будет сравнить "расстояние" между данным и существующими.
    ChatColor, к сожалению, не предоставляет свои цвета на 1.12. Но можно замапить значения свои, допустим какой-нибудь класс MyColor(int red, int green, int blue)

    Выйдет что-то типа такого:
    PHP:
    Map<MyColorChatColorcolorMap = ...; // Заполнить соответствия цветов

    public static char getNearestColorSymbol(int rint gint b) {
        
    int minDistance Integer.MAX_VALUE;
        
    MyColor nearColor null;
        for (
    MyColor color colorMap.keys()) {
            
    int distance squared(color.red()) + squared(color.green()) + squared(color.blue());
            if (
    minDistance distance) {
                
    nearColor color;
                
    minDistance distance;
            }
        }
        return 
    colorMap.get(nearColor).getChar();
    }
    squared просто выдаёт значение умноженное на себя же
     
  4. Автор темы
    niheev

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

    Баллы:
    61
    Имя в Minecraft:
    slivachuu
    Огромнейшее спасибо, Вы мне очень помогли!
     

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