环境驱动JSON (env.json)
env.json是一个Minecraft库,引入了一种新的子JSON文件扩展格式,其目标是根据环境上下文将Minecraft资源重定向到其他资源。
支持
需求
概念
env.json是一个Minecraft库,引入了一种新的子JSON文件扩展格式,其目标是根据环境上下文将Minecraft资源重定向到其他资源。
实现
env.json不直接提供这些重定向,而是提供环境驱动资产(EDA)和环境驱动数据(EDD)两个官方实现。
- [环境驱动资产 (EDA)](
Mod标识符:env-driven-assets。
环境:客户端。
将env.json操作应用于Minecraft基础资产类型。
- [环境驱动数据 (EDD)](
Mod标识符:env-driven-data。
环境:通用和服务器。
将env.json操作应用于Minecraft基础数据类型。
env.json格式
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" // 重定向的资源
}
]
文件必须按照以下格式注册:`redirected_resource_name-redirected_resource_extension.env.json`。
开发者使用方法
在你的`build.gradle`中:
groovy
repositories {
// ...
maven { url 'https://jitpack.io' }
}
// ...
dependencies {
// ...
modImplementation "com.github.FirstMegaGame4:env.json:${theMostBeautifulVersionYouCanFind}"
}
现在你可以通过`ExtendedResource#of(Resource)#getEnvJson`从`Resource`对象中获取你的`EnvJson`对象,或者使用`EnvJson#parse(Path)`或`EnvJson#parse(InputStream)`进行解析。
开发者徽章
推广
[
收录