Синхронизация списка объектов у клиентов

Версия Minecraft
1.19.4
API
Forge
Мне нужно синхронизировать список объектов у клиентов. Подскажите гайс как это сделать правильно, что бы не допустить пакет-хаков и прочей херни)

Изменено:Да, забыл добавить. Нужно что бы этот список объектов был на стороне сервера, и все клиенты могли редактировать этот список.
 
Последнее редактирование:
Решение
Мне нужно синхронизировать список объектов у клиентов. Подскажите гайс как это сделать правильно, что бы не допустить пакет-хаков и прочей херни)

Изменено:Да, забыл добавить. Нужно что бы этот список объектов был на стороне сервера, и все клиенты могли редактировать этот список.
Пакетами. Хранишь на сервере список - пришел пакет на редактирование от клиента - изменил данные, и отправил изменения другим клиентам.
Если это просто список строк - то как строки и передавай. Если сложные обьекты - реализуй методы сохранения и восстановления обьекта из строки, или массива байт. Библиотек для подобных действий полно - выбирай - не хочу.

Можешь использовать TsonConfigurations, ClassManagger предотвратит порождение нежелательных...
428
41
108
Мне нужно синхронизировать список объектов у клиентов. Подскажите гайс как это сделать правильно, что бы не допустить пакет-хаков и прочей херни)

Изменено:Да, забыл добавить. Нужно что бы этот список объектов был на стороне сервера, и все клиенты могли редактировать этот список.
Пакетами. Хранишь на сервере список - пришел пакет на редактирование от клиента - изменил данные, и отправил изменения другим клиентам.
Если это просто список строк - то как строки и передавай. Если сложные обьекты - реализуй методы сохранения и восстановления обьекта из строки, или массива байт. Библиотек для подобных действий полно - выбирай - не хочу.

Можешь использовать TsonConfigurations, ClassManagger предотвратит порождение нежелательных обьектов:
Вырезка из документации TsonConfigurations:
ClassManager manager = new ClassManager(){
    public Class<?> forName(String clazz) {
        switch (clazz){
            case "#": return Example.class;
            case ...
        }
        throw new NoSearchException(clazz);
    }
};
Example example = new TsonField<Example>(manager, "<(#), 'k1', 'v1'>").getField();
//эквивалентно new Example("k1", "v1");
 
Сверху