Перейти к содержимому

ChunkAPI

Управляйте пользовательскими данными внутри чанков без лишних хлопот.

Forge
Загрузчики
Forge
Скачиваний на Modrinth
18,7 тыс.
Подписчиков на Modrinth
7
версии
23
Обновлён
27 июля 202627 июл.
Опубликован
в 2023
Это библиотека — она нужна другим модам и сама ничего не добавляет в игруНужна 1 модам. Скачайте её, если этого требует другой мод.

Коротко о моде

Библиотека — нужна другим модам: её требуют 1
Работает на Forge
Для Minecraft 1.7.10
Нужен и в игре, и на сервере
Последняя версия — 0.8.4 от 27 июля 2026
Лицензия LGPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа сервереобязателен

Нужен и в игре, и на сервере

Версии игры1.7.10
Описание переведено автоматическиПоказать оригинал (EN)

Мод для добавления пользовательских данных в чанки без возни с написанием собственных пакетов, обработкой событий, хуками загрузки и прочим.

Лицензировано под LGPLv3

Изначально разработан FalsePattern

Логотип мода от Houstonruss

Цели

Цель — предоставить способ добавления пользовательских данных в чанки без необходимости изменять какие-либо ванильные классы. API также предоставит простой способ реализации пользовательской сериализации/десериализации данных, как для сетевого протокола, так и для формата NBT. Необязательная цель — предоставить способ регистрации DFU для пользовательских данных, но это не приоритет.

Не-цели

Не является целью предоставление какой-либо системы обратных вызовов/хуков для чего-либо, кроме сохранения/загрузки и сетевого кода; любое дополнительное поведение должно быть реализовано в моде с использованием ChunkAPI.

Хранилище не предоставляется API; пользователь должен реализовать собственную систему хранения. Хороший пример — использование миксина для добавления поля в класс чанка и использование этого поля для хранения данных.

Мотивация

Изменение данных пакетов чанков включало несовместимое изменение сетевых пакетов, класса чанка и загрузчика чанков anvil, что является большой работой для простой функции. Этот мод предоставляет способ добавления пользовательских данных в чанки без необходимости самостоятельно изменять какие-либо из ванильных классов.

API и спецификация

API предоставляет способ добавления пользовательских данных в чанки и способ регистрации пользовательских сериализаторов для данных.

ChunkDataManager

Сам ChunkDataManager — это основной класс, используемый для управления регистрациями, но он не реализует функциональность сам по себе. Для этого вам нужно использовать интерфейсы PacketDataManager, ChunkNBTDataManager и SectionNBTDataManager, включённые в класс ChunkDataManager.

ChunkDataManager.PacketData

Этот интерфейс используется для синхронизации данных с сервера на клиент. Если ваши данные требуются только на сервере, вы можете свободно пропустить реализацию этого интерфейса.

ChunkDataManager.ChunkNBTData

Этот интерфейс используется для сохранения/загрузки данных из NBT чанка. Это необходимо, если вы хотите сохранять постоянные данные между перезагрузками мира. Учтите: если вы храните данные на блок в чанке, вам следует использовать SectionNBTData, так как он разработан с учётом внутреннего формата чанка.

ChunkDataManager.SectionNBTData

Этот интерфейс в основном идентичен ChunkNBTData, но предназначен для хранения данных на блок в чанке. Вместо вызова один раз на чанк он вызывается один раз на секцию чанка (16x16x16 блоков, класс ExtendedBlockStage).

ChunkDataRegistry

Здесь вы фактически регистрируете свой менеджер. Все регистрации нужно выполнять внутри фазы init. Вы также можете отключить определённые ID менеджеров, вызвав disableDataManager, но это не рекомендуется и должно использоваться только если вы знаете, что делаете. Все отключения нужно выполнять внутри фазы postInit.

Спецификация пакетов

ChunkAPI изменяет ванильные пакеты S21PacketChunkData и S26PacketMapChunkBulk и перезаписывает их стандартные форматы.

Все размеры в таблицах ниже указаны в байтах.

Новый формат S21PacketChunkData:

Размер (байт)Тип данныхНазвание
4intПозиция по X
4intПозиция по Z
1boolПринудительное обновление
2shortМаска ExtendedBlockStorage
4intДлина несжатых данных
4int(n) Длина сжатых данных
nbyte[n]Сжатые данные

S26PacketMapChunkBulk новый формат:

Размер (байт)Тип данныхНазвание
2short(n) Количество чанков в пакете
n * 4int[n]Длины несжатых данных чанков
4int(m) Длина сжатых данных
11Содержит данные о небесном свете
mbyte[m]Сжатые данные
n * 10(int, int, short)[n]Заголовки чанков (x, z, маска ebs)

В обоих случаях сжатые данные заполняются через метод ChunkDataRegistryImpl.writeToBuffer. Структура этих данных следующая:

Размер (байт)Тип данныхНазвание
4int(n) Количество менеджеров
n * varyingMGRDataДанные менеджера

Данные менеджера:

Размер (байт)Тип данныхНазвание
4int(n) Длина имени менеджера
nUTF-8 strИмя менеджера
4int(m) Длина данных менеджера
mbyte[m]Данные менеджера

Зависимости

FalsePatternLib

UniMixins

Частые вопросы

Как установить ChunkAPI?

Установите Forge под свою версию Minecraft, скачайте ChunkAPI под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть ChunkAPI?

У ChunkAPI есть сборки для Minecraft 1.7.10.

Нужен ли ChunkAPI на сервере?

Нужен и в игре, и на сервере

Лицензия и источник
GNU Lesser General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее