И вновь синхронизация

Версия Minecraft
1.12+
4,045
63
645
Снова мучаюсь с синхронизацией...
На этот раз тема глобального и локального серверов )))
В общем так: есть у меня параметр на сервере и на клиенте... Они могут отличатся друг от друга...
Мне нужно, чтобы при подключении игрока к серверу, он использовал параметр сервера, а при заходе в локальный мир - параметр игрока...

С сервером я разобрался. В PlayerLoggedInEvent() посылаю пакет и меняю параметр у клиента...
Лажа начинается после выхода с сервера. Если не перезагружая майн сразу же открыть локальный мир, параметр остаётся серверным.

Вот мучаюсь, в какое бы место пихнуть обновление клиентского параметра? Собственно, в этом и заключается вопрос.

Пробовал делать это из PlayerLoggedOutEvent(), но! при этом каждый раз при отключении игрока параметр обновляется и на сервере и на клиенте. Это лишние вычисления.

Если фильтровать по if (event.player.world.isRemote), сервер остаётся в покое, но в локальном мире параметр всё равно остаётся серверным... Предполагаю, что при первом подключении игрока к серверу, обновляется не только локальный клиент, но и локальный сервер (может быть бред сказал)...

В общем, наведите на путь истинный.
Спасибо )
 
Решение
Люблю вопросы высшего порядка.
Ответ:
Ну так а фигли? Заведи статическое поле в каком нибудь класс и назови его realParametr и другое поле clientParametr. clientParametr сделай final. При подключении к серверу ClientConnectedToServerEvent присваиваешь clientParametr к realParametr. Потом если приходит пакет он меняет realParametr на свой и если нет то так и остается клиентский.
1,111
47
420
Люблю вопросы высшего порядка.
Ответ:
Ну так а фигли? Заведи статическое поле в каком нибудь класс и назови его realParametr и другое поле clientParametr. clientParametr сделай final. При подключении к серверу ClientConnectedToServerEvent присваиваешь clientParametr к realParametr. Потом если приходит пакет он меняет realParametr на свой и если нет то так и остается клиентский.
 
4,045
63
645
Угу, фурычит )
Другой вопрос, в каком месте присваивать параметр на сервере?
Или не париться и сделать это прямо из инита?
Просто в таком случае на клиенте это присваивание будет дублироваться: в ините и при подключении к серверу.
Это не страшно, конечно, но всё же...
 
Сверху