Передать NBT одного игрока, другому.

Версия Minecraft
1.7.10
API
Forge
У меня есть NBT игрока в котором хранятся монеты, есть худ где показывает кол-во монет. Так вот мне нужно что бы при наведении на другого игрока, в худе показывалось кол-во монет того игрока. Как мне передать NBT другого игрока в мой худ?
 
346
24
98
Через PlayerEvent.StartTracking и PlayerEvent.StopTracking. Хранить на клиенте мапу UUID и кол-во монет, при старте события отправляешь игроку пакет с кол-вом монет отслеживаемого игрока, при стопе отправляешь пакет для удаления данных с мапы. Стоит учесть, что монеты отслеживаемого игрока могут спокойно измениться в период после StartTracking и до StopTracking, так что стоит задуматься над системой обновления информации. Так-же неплохо бы чистить мапу при ClientDisconnectionFromServerEvent на клиенте.
 
1,357
109
233
Этот эвент происходит когда моб берёт игрока в цель (стрелять, просто смотреть и т.д.), так что нет, городишь дичь.
Хранить на клиенте мапу UUID и кол-во монет
На сервере. С сервера отправлять пакет при запуске GUI с UUID игроков и кол-вом их монет. Повторно отправлять пакет каждые 1-2 секунды. Или, вместо отправки пакета каждые несколько секунд, сделать эвент с обновлением монет и при обновлении отправлять пакет всем, кто смотрит сейчас GUI. Это менее затратно, но сложнее реализовать.
 
627
72
178
Этот эвент происходит когда моб берёт игрока в цель (стрелять, просто смотреть и т.д.), так что нет, городишь дичь.
Fired when an Entity is started to be "tracked" by this player (the player receives updates about this entity, e.g. motion).
нихрена себе новости)
 
346
24
98
Этот эвент происходит когда моб берёт игрока в цель (стрелять, просто смотреть и т.д.), так что нет, городишь дичь.
Чево? Вот это открытие, событие вызывается когда игроку прилетает пакет о том, что в его зоне обработки появилась новая сущность и теперь клиент получает данные о ней. Интересно, StopTracking в твоём случае срабатывает, когда моб по нему не стреляет?))))
С сервера отправлять пакет при запуске GUI с UUID игроков и кол-вом их монет
Во первых, в текущем случае GUI нет, есть HUD. Во вторых, сервер не получает информацию о том, какой GUI был открыт игроком, тогда требуется C2S пакет, а в моём способе можно обойтись и без него. В третьих, это лишние данные и соответственно лишние байты в пакет, ничего хорошего в этом нет.
Опирался на нашу табличку с учебника (1.15+) - там событий больше.
У нас 1.7.10, изменений от 1.15 тонны, а чего ж от 1.19 не посмотрел на Forge форумах? Они же новее, событий больше.
 
627
72
178
следить - не значить наводить курсором. это означает, что игрок начинает отслеживать данные этой сущности
Опирался на нашу табличку с учебника (1.15+) - там событий больше. Полагаю, некоторые события Forge всё таки меняли, хотя названия оставили те же, что, на мой взгляд, не есть хорошо.
 
417
41
105
Проверь наличие EntityDataManager в 1.7, я хз с какой версии оно существует, но оно достаточно древнее. А так - позволяет автоматически синхронизировать какую-то переменную у сущности, без лишнего кода с пакетами и прочим
 
Сверху