env.json

env.json

一个允许将`env.json`文件转换为Java对象的小型FabricMC库。它主要被环境驱动资产和环境驱动数据使用。

游戏机制

MModding

env.json

env.json logo

支持

Supports Fabric Loader Supports Quilt Loader

需求

Requires Fabric API

概念

env.json 是一个 Minecraft 库,引入了一种新的子 json 文件扩展格式,目标是 根据环境上下文将 Minecraft 资源重定向到其他资源。

实现

env.json 并不直接提供这些重定向,而只提供围绕 env.json 文件及其资源重载管理的操作。

目前有两个官方的 env.json 实现:

模组标识符:env-driven-assets。

环境:客户端

将 env.json 操作应用于 Minecraft 原版资源类型。

模组标识符:env-driven-data。

环境:通用与服务器

将 env.json 操作应用于 Minecraft 原版数据类型。

env.json 格式

[
  {
    "rules": [ // 主规则集,其类型为 "any"
      {
        "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 中

repositories {
    // ...
    maven { url 'https://jitpack.io' }
}

// ...

dependencies {
    // ...
    modImplementation "com.mmodding:env.json:${theMostBeautifulVersionYouCanFind}"
}

现在你可以通过 ExtendedResource#of(Resource)#getEnvJson 从 Resource 对象获取你的 EnvJson 对象, 或使用 EnvJson#parse(Path) 或 EnvJson#parse(InputStream) 解析它。

开发者徽章

Requires env.json

[<img src="https://github.com/MModding/art/blob/main/mods/env_json/requires_env_json.png?raw=true" width="256" alt="Requires env.json">](https://modrinth.com/mod/env.json)

推广

ModFest 1.20