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