
env.json
Активный0.0
Установок
Последнее обновление
Версии
env.json
env.json представляет собой библиотеку для Minecraft, которая вводит новый формат файлов с расширением .env.json. Основная цель этой библиотеки — перенаправлять игровые ресурсы на альтернативные в зависимости от текущего игрового контекста.
Совместимость
Библиотека работает с Fabric Loader и Quilt Loader. Для корректной работы требуется установка Fabric API.
Принцип работы
Сама библиотека env.json не реализует механизмы перенаправления ресурсов напрямую. Вместо этого она предоставляет инструменты для работы с файлами .env.json и управления перезагрузкой ресурсов.
Официальные реализации
На данный момент существуют две официальные реализации, использующие возможности env.json:
Environment Driven Assets (EDA)
- Идентификатор мода: env-driven-assets
- Рабочая среда: Клиент
- Применяет операции .env.json к стандартным типам ресурсов Minecraft
Environment Driven Data (EDD)
- Идентификатор мода: env-driven-data
- Рабочая среда: Общая и серверная
- Применяет операции .env.json к типам данных Minecraft
Формат файла .env.json
[
{
"rules": [ // основной набор правил, работает по принципу "любое"
{
"type": "sequence", // все правила в последовательности должны выполняться
"rule": [] // правила
},
{
"type": "any", // срабатывает, если хотя бы одно правило выполняется
"rule": [] // правила
},
{
"type": "not", // инвертирует правило
"rule": { // правило
"type": "...",
"rule": "..."
}
},
{
"type": "dimension", // срабатывает, если текущее измерение совпадает
"rule": "minecraft:overworld" // измерение, может быть тегом
},
{
"type": "biome", // срабатывает, если текущий биом совпадает
"rule": "minecraft:plains" // биом, может быть тегом
},
{
"type": "x_coord", // проверяет координаты по оси X
"rule": {
"comparator": "==", // может быть <, >, ==, <=, >=, =< или =>
"value": "100" // должно быть целым числом
}
},
{
"type": "y_coord", // проверяет координаты по оси Y
"rule": {
"comparator": "==", // может быть <, >, ==, <=, >=, =< или =>
"value": "100" // должно быть целым числом
}
},
{
"type": "z_coord", // проверяет координаты по оси Z
"rule": {
"comparator": "==", // может быть <, >, ==, <=, >=, =< или =>
"value": "100" // должно быть целым числом
}
},
{
"type": "submerged", // проверяет, находится ли контекст под водой
"rule": true // true для "если под водой", false для "если не под водой"
},
{
"type": "sky", // проверяет положение относительно небесного предела
"rule": "at" // может быть "above", "at" или "below"
},
{
"type": "water", // проверяет положение относительно уровня воды
"rule": "at" // может быть "above", "at" или "below"
},
{
"type": "void", // проверяет положение относительно предела пустоты
"rule": "at" // может быть "above", "at" или "below"
}
],
"result": "minecraft:block/stone" // перенаправленный ресурс
}
]
Файлы должны регистрироваться в формате: перенаправляемый_ресурс-расширение.env.json
.
Использование для разработчиков
В файле build.gradle
:
repositories {
// ...
maven { url 'https://jitpack.io' }
}
// ...
dependencies {
// ...
modImplementation "com.mmodding:env.json:${самая_подходящая_версия}"
}
Теперь вы можете получить объект EnvJson
из объекта Resource
с помощью ExtendedResource#of(Resource)#getEnvJson
или разобрать его с помощью EnvJson#parse(Path)
или EnvJson#parse(InputStream)
.