Улучшение чата

Версия Minecraft
1.20.1
API
Fabric
Привет! Хочу сделать несколько вещей с чат-сообщениями в Майне 1.20.1 на Fabric, но не совсем понимаю, как это реализовать. Вот что мне нужно:

  1. Добавлять время перед каждым сообщением в чате.
  2. Подсвечивать слова из списка (например, если кто-то напишет слово из списка, оно будет выделяться цветом).
  3. Создавать кликабельные кнопки в чате, которые будут запускать команду с ником того, кто написал сообщение (например, "/punish <ник>").
Не могли бы подсказать, как это сделать? Может, есть какие-то простые решения или примеры, как это реализовать такое?

Спасибо!
 
Решение
Придётся воспользоваться миксинами.

Добавлять время перед каждым сообщением в чате.
Можно попробовать @Inject в addMessage в классе ChatHud, и там к каждому сообщению применять текущее время.

Подсвечивать слова из списка (например, если кто-то напишет слово из списка, оно будет выделяться цветом).
Создаешь Set с нужными словами и проверяешь(contains, equals) в этом же методе, затем добавляешь Style с цветом.

Создавать кликабельные кнопки в чате, которые будут запускать команду с ником того, кто написал сообщение (например, "/punish <ник>").
Уже посложнее.
Они вроде как и так есть, так что можно попробовать просто добавить к...
Придётся воспользоваться миксинами.

Добавлять время перед каждым сообщением в чате.
Можно попробовать @Inject в addMessage в классе ChatHud, и там к каждому сообщению применять текущее время.

Подсвечивать слова из списка (например, если кто-то напишет слово из списка, оно будет выделяться цветом).
Создаешь Set с нужными словами и проверяешь(contains, equals) в этом же методе, затем добавляешь Style с цветом.

Создавать кликабельные кнопки в чате, которые будут запускать команду с ником того, кто написал сообщение (например, "/punish <ник>").
Уже посложнее.
Они вроде как и так есть, так что можно попробовать просто добавить к Style ClickEvent, а в Action как раз есть RUN_COMMAND.
"Кнопки" при этом будут обычным текстом, так что лучше подчеркнуть текст чтобы он выделялся.

Миксин на ChatHud:
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");

public void inject(Text text, CallbackInfo ci) { //Метод c Inject
    String time = LocalDateTime.now().format(FORMATTER); //Время
    Text text = Text.literal(time).append(text).styled(style -> style ...) //Тут style ставишь
}
 
Последнее редактирование:
Назад
Сверху