
Static Data
Активный0.0
Установок
Последнее обновление
Версии
Static Data
Мод Static Data вводит в Minecraft новый тип ресурсов — статические данные, которые позволяют модификациям легко и структурированно обмениваться информацией о совместимости и взаимодействии друг с другом и с игровой средой.
Основные преимущества статических данных
Неизменность данных
Статические данные остаются постоянными на протяжении всего жизненного цикла мода — они не подвержены влиянию перезагрузки датапаков и ресурс-паков. Это гарантирует стабильность и предсказуемость работы ваших модификаций.
Ранняя доступность
Данные становятся доступными сразу же после запуска первого entrypoint в загрузчике, независимо от того, какой именно мод или библиотека инициализируется первой.
Возможность управления регистрацией
Поскольку статические данные не меняются и доступны до заморозки реестров, их можно использовать для регистрации блоков и сущностей на основе информации, полученной от других модов.
Как предоставлять статические данные
Для разработчиков модов
Статические данные размещаются в директории staticdata
рядом с папками assets
и data
. Например, если мод "architecture_extensions" ищет файлы по пути "blockgroups", полный путь к файлу будет выглядеть так:
src/main/resources/staticdata/architecture_extensions/blockgroups/obsidian.json
Для создателей датапаков
Создавайте zip-архивы с корневой папкой "staticdata". Внутри архива файлы должны располагаться по аналогичному пути:
/staticdata/architecture_extensions/blockgroups/obsidian.json
Статические датапаки можно размещать в двух местах:
- внутри модов в папке
src/main/resources/staticdata/
- в корневой директории
.minecraft/staticdata/
Использование в вашем моде
Для работы с Static Data добавьте зависимость в ваш проект:
// Используйте quilt-json5 или jankson для парсинга
Gson gson = new GsonBuilder().create();
// Получение всех статических данных в указанной директории
List<StaticDataItem> dataItems = StaticData.getDataInDirectory(
new Identifier(MODID, "bees"), // Поиск по mymod:bees
true // Рекурсивный поиск по подпапкам
);
for(StaticDataItem dataItem : dataItems) {
MyDataObject dataObject = gson.fromJson(item.getAsString(), MyDataObject.class);
// Условная загрузка данных
String requiredMod = dataObject.only_if_present;
if (requiredMod != null && !requiredMod.isBlank()) {
if (!QuiltLoader.isModLoaded(requiredMod)) continue;
}
// Использование полученных данных
doSomethingWithTheData(dataObject);
}
Пример класса для хранения данных:
public class MyDataObject {
public String only_if_present;
// другие публичные поля для данных
}
Использование в модпаках
Static Data обычно встраивается в другие моды и обеспечивает бесшовное взаимодействие между ними без дополнительной настройки. Для расширения функциональности создавайте собственные статические датапаки и включайте их в состав вашего модпака.