Как выдать свечение игроку, на клиенте?

Версия Minecraft
1.12.2
API
Forge
В общем, есть игрок1, игрок2, игрок3:
Необходимо сделать так что бы Игрок2 светился у Игрока1, а у игрока3 - не светился.
Эту проблему я решил, но необходимо сделать так что бы Игрок2, по мимо того что светился, так цвет свечение должен быть красным, а вместо ника должна быть сумма "n $"
На счёт того какой игрок светиться, не задавайтесь вопросом, просто представьте себе что на клиенте есть HashMap<EntityPlayer, Integer> playersOrders. В котором содержаться игроки и сумма заказа на них.

P.S
тот код что у меня сейчас
 

Вложения

  • код.txt
    1.2 KB · Просмотры: 23

jopi

Попрошайка
1,421
30
260
Во первых на форуме есть специальный блок куда можно вставлять код что-бы выделить его и не прикреплять отдельным файлом
Java:
//Вот так
1679685200906.png

Во вторых насколько я понял под эффектом свечения ты имеешь ввиду Entity#setGlowing и ты хочешь его сделать красным, проверив исходники я не нашел никакой функции для назначения цвета свечению, и вероятнее всего 'из коробки' у тебя нет возможности менять цвет свечения. (см. RenderGlobal#renderEntities, участки кода с isOutlineActive и list1)
Соответственно для рендера свечения определенного цвета, скорее всего придется использовать либо ASM-трансформеры либо Миксины в случае если нет доступа к изменению ванильного кода, либо редактировать ванильный код напрямую и дописывать возможность изменения цвета свечения вручную.

Так-же на случай если ты не используешь пакеты для передачи целей-игроков которым устанавливается свечение с сервера на клиент, ты должен учитывать что свечение устанавливается в DataWatcher и передается всем окружающим включая самого игрока кому это свечение установлено, и в данном случае реализовать бы это было по хорошему передавая игрока цель пакетом игроку наёмнику, и уже на клиенте устанавливать свечение игроку цели, что-бы свечение было видно только игроку наёмнику.

В третьих для изменения нейм-тэгов игроков на стороне клиента можно использовать эвент PlayerEvent.NameFormat, либо самостоятельно рендерить нейм-тэги через RenderWorldLastEvent(Куда сложнее, пример кода скорее всего есть в EntityRenderer#drawNameplate)
 
Сверху