Профили поведения и условия
Обзор
Stack Size Adjuster функционирует на основе конечного автомата, связывающего конфигурацию, динамические правила игры и сетевые пакеты между сервером и клиентом.
🔄 Жизненный цикл состояний
text
+----------------------------------+
| Запуск сервера / Создание мира |
+----------------------------------+
|
v
[ Загрузка базового шаблона config ]
(`config/stack-size-adjuster.json`)
|
v
[ Регистрация динамических правил ]
(`items_64_limit`, `items_16_limit` и др.)
|
+---------------+---------------+
| |
Новый мир Существующий мир
| |
v v
Применить конфиг Загрузить правила
к правилам из `level.dat`
| |
+---------------+---------------+
|
v
[ Инициализация StackSizeManager ]
|
v
[ Вход игрока / Изменение GameRule ]
|
v
[ Отправка S2C пакета: sync_limit ]
|
v
[ Обновление интерфейсов клиента ]⚙️ События и обработчики
- Инициализация сервера (
ServerLifecycleEvents.SERVER_STARTED):- Перезагружает базовый файл конфигурации.
- Если мир новый (
!overworldData.isInitialized()), переносит значения из конфига в правила мира. - Инициализирует лимиты
StackSizeManager.
- Подключение игрока (
ServerPlayConnectionEvents.JOIN):- Отправляет начальный пакет
StackSizeLimitSyncPayload.
- Отправляет начальный пакет
- Изменение правила в игре (
MinecraftServerMixin.onGameRuleChanged):- Реагирует на правила категории
stack-size-adjuster:*. - Обновляет переменные в
StackSizeManager. - Рассылает пакеты всем игрокам и вызывает
broadcastFullState().
- Реагирует на правила категории
