▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Common Storage Lib
Common Storage Lib

Common Storage Lib

Библиотека Common Storage Lib для разработчиков модов: единые хранилища предметов, жидкостей и энергии, абстракции Capabilities/ApiLookup и Data Attachments для Fabric и NeoForge на Minecraft 1.21.

Оцените первым
66.4K
13

Common Storage Lib (или просто CSL) - это библиотечный мод для Майнкрафт, который нужен в первую очередь разработчикам модов, а не обычным игрокам. Сам по себе он не добавляет ни блоков, ни предметов, ни новых механик в игру. Его задача другая: дать моддерам единый инструментарий для работы с хранилищами предметов, жидкостей и энергии сразу на двух загрузчиках - Fabric и NeoForge, чтобы не писать две разные реализации одного и того же кода.

Если вы просто игрок и наткнулись на эту страницу, скорее всего CSL попросил какой-то мод в качестве зависимости. Тогда всё просто: скачайте Common Storage Lib под свою версию и загрузчик, закиньте в папку mods и забудьте про него. А вот если вы пишете моды - тут уже интересно, разберём подробнее.

Какую проблему решает Common Storage Lib

Главная боль кроссплатформенного моддинга в Minecraft - это то, что Fabric и NeoForge используют совершенно разные подходы к одним и тем же вещам. Хочешь сделать блок с внутренним инвентарём, баком для жидкости или батареей? На NeoForge ты работаешь через систему Capabilities, на Fabric - через ApiLookup и транзакционную Storage API. У Fabric ресурсы иммутабельны и есть контекст предмета, у Forge своя система симуляции операций. В итоге любой мод, который должен работать на обоих загрузчиках, по факту пишется дважды, плюс тонна условного кода и костылей.

CSL подхватывает эстафету там, где остановился Botarium - известная библиотека для кроссплатформенных хранилищ. Идея та же: вы пишете платформенно-независимый код хранилища один раз, а библиотека сама регистрирует его в соответствующих API обоих загрузчиков. От Fabric тут взяли иммутабельные ресурсы и item context, от Forge - систему симуляции. По факту получился гибрид, который использует сильные стороны обоих миров.

Что умеет библиотека

В отличие от предшественника, CSL не прячет свои инструменты абстракции внутри - они открыты и разбиты на отдельные модули. Каждый можно использовать независимо от остальных:

  • Абстракция хранилищ - единый код для хранения предметов, жидкостей и энергии с автоматической регистрацией в Fabric Transfer API и NeoForge Capabilities.
  • Абстракция жидкостных ресурсов и ингредиентов - общее представление флюидов для обеих платформ.
  • Абстракция Data Attachments - единая обёртка над системой прикрепления данных, которая есть и в NeoForge, и в Fabric.
  • Абстракция Entity Systems - общий слой над Capabilities на NeoForge и ApiLookup на Fabric.

По охвату CSL уже заметно шире Botarium. Если тот поддерживал только энергию и жидкости в предметах и блоках, то здесь полный набор: энергия, жидкости и предметы - каждый тип работает с предметами, блоками и сущностями, причём с полной совместимостью с трансферными API обеих платформ.

Пригодится даже для моноплатформенных модов

Отдельный момент, который многие упускают: CSL полезен не только тем, кто целится сразу в два загрузчика.

Для разработчиков под NeoForge библиотека даёт иммутабельные ресурсы и item context - вещи, которых в ванильной экосистеме Forge по сути нет, а с хранилищами они работают отлично. Плюс CSL автоматически обрабатывает случаи, когда другие моды взаимодействуют с вашим предметом, если вы используете item context. Это снимает целый класс багов совместимости.

Для Fabric-разработчиков библиотека может стать способом обойти транзакционную систему Fabric, которая многим кажется излишне громоздкой. Но тут есть важный нюанс: хранилище всё равно регистрируется в Fabric Storage API, поэтому оно обязано корректно поддерживать откаты транзакций (rollback). В CSL это уже поддерживается нативно, но при самостоятельной реализации за этим нужно следить, иначе получите дюпы и потери предметов при отмене операций.

Важно знать про Fabric-специфику

Есть один подводный камень, о котором стоит сказать честно. Fabric нативно не поддерживает хранение предметов в самих предметах, энергию в сущностях и жидкости в сущностях - для этих случаев там просто нет стандартного ApiLookup. CSL регистрирует такие лукапы под собственным неймспейсом.

Что это значит на практике: моды, использующие CSL для этих специфических возможностей, будут совместимы друг с другом, но не с модами, которые делают то же самое через другие библиотеки или свои костыли. Проблема чисто фабриковская - на NeoForge таких ограничений нет, там всё совместимо автоматически. А вот энергия и жидкости в предметах и блоках, а также предметные хранилища блоков и сущностей полностью совместимы со всей экосистемой обоих загрузчиков.

Статус проекта и версии

Common Storage Lib пока находится на ранней стадии развития. Базовое тестирование проведено, всё работает, но проект молодой, и отдельные шероховатости возможны. Актуальная версия - 0.0.10, и тут любопытная деталь: Fabric-сборка имеет статус Alpha, а NeoForge-сборка уже дотянулась до Beta. Так что если выбираете платформу для серьёзного проекта на CSL, NeoForge сейчас выглядит стабильнее.

Поддерживаются Minecraft Java 1.21 и 1.21.1, загрузчики Fabric и NeoForge. В последних обновлениях, кстати, чинили обработку item context - раньше она игнорировала пользовательскую функцию обмена (custom exchange function), что могло ломать логику предметов с нестандартным поведением при передаче. Такие фиксы говорят о том, что библиотека активно пилится и обрастает реальными кейсами.

Кому стоит скачать Common Storage Lib

Если коротко:

  • Разработчики кроссплатформенных модов - это must-have. Один код хранилищ вместо двух, плюс готовые абстракции для capabilities и data attachments.
  • NeoForge-разработчики - ради иммутабельных ресурсов и item context, которых платформе не хватает.
  • Fabric-разработчики - если хочется упростить работу с транзакциями, но с обязательным вниманием к rollback-совместимости.
  • Обычные игроки - только как зависимость, если CSL требует какой-то мод из вашей сборки.

Скачать Common Storage Lib можно под Fabric или NeoForge для Minecraft 1.21-1.21.1. Учтите, что это библиотека: без модов, которые её используют, в игре вы ничего не заметите. А вот моддерам она может сэкономить недели работы - и это, по факту, её главная ценность.

Партнёрский материал

Как поиграть с друзьями с модом Common Storage Lib?

Мод Common Storage Lib куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода Common Storage Lib будет готов за пару минут - BungeeHost сделает всё за вас.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Зависимости

Ссылки

Создатели

Детали

Лицензия:
Опубликован:2 года назад
Обновлён:3 месяца назад
Главная