Цветной текст в чате

Версия Minecraft
1.16.3
API
Forge
96
2
6
Всем привет! Я хочу сделать мод, на разные команды, как Essentials и нужно отправлять фидбек в чат.
И как в Essentials, я хочу, что-бы фидбек был цветным, например У игрока Player001 починен предмет Stick.
У меня сейчас это сделано так source.sendFeedback(new TranslationTextComponent("commands.time.night", source.getDisplayName()), true);
А мне нужен цветной текст. Как его сделать?
 
Решение
Например, требуется вывести У игрока Player001 починен предмет Stick
В лэнг файл пихаем че-то вроде
"repair_message" : "У игрока %s починен предмет %s"
В коде делаем че-то вроде:
Java:
new TranslationTextComponent("modid.repair_message",
                             TextFormatting.RED + player.getDisplayName() + TextFormatting.GOLD,
                             TextFormatting.RED + itemStack.getDisplayName())
        .mergeStyle(TextFormatting.GOLD, TextFormatting.BOLD)

Чтобы код в говно не превращался можно сделать хелпер-методы, по типу:
Java:
public static TextComponent translation(String translationKey, TextFormatting[] generalFormat, String... chunks){
    String gf =...

sk9zist :l

Исправился
981
18
157
В сообщениях в конфиге добавляй знак "§" и код цвета после него.
О майнкрафтовских цветовых кодах можешь почитать здесь:
 
7,099
324
1,509
Можно. Есть прекрасный TextFormatting, в котором перечислены все коды форматирования.
При этом идея аж показывает какой цвет будет
1608741901801.png
~~~
Можно даже так делать
 

sk9zist :l

Исправился
981
18
157
Есть прекрасный TextFormatting, в котором перечислены все коды форматирования.
ТС нужно брать сообщения из ланг-файлов так что знак параграфа - наилучший вариант тут.
 
7,099
324
1,509
Чувак, зачем §? Это потенциально рассадник ошибок. Лучше юзать TextFormatting.
В лэнг-файле можно хранить неформатированные куски текста
 

sk9zist :l

Исправился
981
18
157
Лучше юзать TextFormatting
Ну и как же ты сделаешь отдельное слово - отдельным цветом с помощью TextFormatting в этом коде
Java:
new TranslationTextComponent("commands.time.night",

TextFormatting берёт почти тоже самое что и, например: "§1", только в виде цифр, с началом с символа "/" и состоящим из букв "u","0","/"
 
96
2
6
Чувак, зачем §? Это потенциально рассадник ошибок. Лучше юзать TextFormatting.
В лэнг-файле можно хранить неформатированные куски текста
Я пытался сделать так
Сам говно-код:
ITextComponent text = (ITextComponent) new FormattedMessage(new TranslationTextComponent("commands.times.set", source.getDisplayName()).toString());
source.sendFeedback(text, true);
Но в ответ получил только по лицу
1608745139830.png
 
7,099
324
1,509
Например, требуется вывести У игрока Player001 починен предмет Stick
В лэнг файл пихаем че-то вроде
"repair_message" : "У игрока %s починен предмет %s"
В коде делаем че-то вроде:
Java:
new TranslationTextComponent("modid.repair_message",
                             TextFormatting.RED + player.getDisplayName() + TextFormatting.GOLD,
                             TextFormatting.RED + itemStack.getDisplayName())
        .mergeStyle(TextFormatting.GOLD, TextFormatting.BOLD)

Чтобы код в говно не превращался можно сделать хелпер-методы, по типу:
Java:
public static TextComponent translation(String translationKey, TextFormatting[] generalFormat, String... chunks){
    String gf = StringUtils.join(generalFormat);
    return new TranslationTextComponent(translationKey,
                                        Arrays.stream(chunks).map(i -> i + gf).toArray(String[]::new))
        .mergeStyle(generalFormat)
}

public static TextFormatting[] format(TextFormatting... formats){
    return formats;
}

//юз
import net.minecraft.util.text.TextFormatting.*
translation("modid.repair_message", format(RED, BOLD), RED+player.getDisplayName(), RED+itemStack.getDisplayName())
 
7,099
324
1,509
new TranslationTextComponent(TextFormatting.RED + "commands.time.night"
1608745985444.png

Шашибка (должно Night в чат писаться)
🤦‍♂️Это происходит потому что на клиенте пытается локализоваться строка "§4commands.time.night" и в лэнг файле такой, разумеется, нету, поэтому вместо локализации возвращается сам ключ
 
96
2
6
🤦‍♂️Это происходит потому что на клиенте пытается локализоваться строка "§4commands.time.night" и в лэнг файле такой, разумеется, нету, поэтому вместо локализации возвращается сам ключ
Я чуть-чуть тупой)
2 момент
1608746339267.png
1608746362653.png
 
Сверху