ChunkAPI
Автор: FalsePattern
Лицензия: GNU AGPLv3.0 с дополнительными разрешениями (см. ниже или в файле LICENSE)
Краткое описание
Модификация для добавления пользовательских данных в чанки без необходимости работы с кастомными пакетами, обработкой событий и хуками загрузки.
Цели
Основная цель — предоставить способ добавления пользовательских данных в чанки без модификации ванильных классов. API обеспечивает базовую сериализацию/десериализацию данных для сетевого взаимодействия и формата NBT.
Ограничения
Не предоставляет систему коллбэков/хуков, кроме связанных с сохранением/загрузкой и сетевым взаимодействием. Хранилище данных должно реализовываться пользователем самостоятельно.
API и спецификация
ChunkDataManager
Основной класс для управления регистрациями данных. Функциональность реализуется через интерфейсы:
PacketDataManager
— синхронизация данных между клиентом и серверомChunkNBTDataManager
— сохранение данных в NBT чанкаSectionNBTDataManager
— хранение данных на уровне секций (16x16x16 блоков)
ChunkDataRegistry
Реестр для регистрации менеджеров данных. Все регистрации выполняются на фазе init
. Отключение менеджеров возможно через disableDataManager
на фазе postInit
.
Спецификация пакетов
Модифицированные форматы сетевых пакетов:
S21PacketChunkData (новый формат)
Размер (байты) | Тип данных | Назначение |
---|---|---|
4 | int | X-координата |
4 | int | Z-координата |
1 | bool | Флаг принудительного обновления |
2 | short | Маска ExtendedBlockStorage |
4 | int | Длина несжатых данных |
4 | int | Длина сжатых данных (n) |
n | byte[n] | Сжатые данные |
S26PacketMapChunkBulk (новый формат)
Размер (байты) | Тип данных | Назначение |
---|---|---|
2 | short | Количество чанков (n) |
n * 4 | int[n] | Длины несжатых данных чанков |
4 | int | Длина сжатых данных (m) |
1 | bool | Флаг наличия данных об освещении |
m | byte[m] | Сжатые данные |
n * 10 | (int, int, short)[n] | Заголовки чанков (X, Z, маска EBS) |
Структура данных менеджеров
Размер | Тип | Описание |
---|---|---|
4 | int | Количество менеджеров (n) |
n * var | MGRData | Данные менеджеров |
Зависимости
Требует FalsePatternLib и Mixin ≥ 0.8.5.