Mod
env.json
No reviews yet
A small FabricMC library allowing to convert an `env.json` file into a Java Object. It is mostly used by Environment Driven Assets and Environment Driven Data.
Provides a framework or library for other mods to use.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
You can click on the banner to join our Discord.
env.json
Supports
Requirements
Concept
env.json is a Minecraft Library introducing a new sub json file extension format, with the goal of redirecting minecraft resources to other ones based on the environment context.
Implementations
env.json doesn't provide these redirections directly, but only the operations around env.json files and their resource reload management.
There is currently two official implementations of env.json:
Mod Identifier: env-driven-assets.
Environments: Client
Applies env.json operations to Minecraft Vanilla asset types.
Mod Identifier: env-driven-data.
Environments: Common & Server
Applies env.json operations to Minecraft Vanilla data types.
The env.json Format
[
{
"rules": [ // the primary set of rules, is an "any" type
{
"type": "sequence", // all rules in the sequence must pass
"rule": [] // the rules
},
{
"type": "any", // passes if at least one rule passes
"rule": [] // the rules
},
{
"type": "not", // reverses the rule
"rule": { // the rule
"type": "...",
"rule": "..."
}
},
{
"type": "dimension", // passes if the current dimension matches this one
"rule": "minecraft:overworld" // the dimension, can also be a tag
},
{
"type": "biome", // passes if the current biome matches this one
"rule": "minecraft:plains" // the biome, can also be a tag
},
{
"type": "x_coord", // passes if the following operations on the x-axis are valid
"rule": {
"comparator": "==", // must be <, >, ==, <=, >=, =< or =>
"value": "100" // must be an integer
}
},
{
"type": "y_coord", // passes if the following operations on the y-axis are valid
"rule": {
"comparator": "==", // must be <, >, ==, <=, >=, =< or =>
"value": "100" // must be an integer
}
},
{
"type": "z_coord", // passes if the following operations on the z-axis are valid
"rule": {
"comparator": "==", // must be <, >, ==, <=, >=, =< or =>
"value": "100" // must be an integer
}
},
{
"type": "submerged", // passes if the current context is surrounded by water or not
"rule": true // true for "if it is submerged" and false for "if it is not submerged"
},
{
"type": "sky", // passes if the context is above the sky limit, at or below
"rule": "at" // must be "above", "at" or "below"
},
{
"type": "water", // passes if the context is above the water level, at or below
"rule": "at" // must be "above", "at" or "below"
},
{
"type": "void", // passes if the context is above the void limit, at or below
"rule": "at" // must be "above", "at" or "below"
}
],
"result": "minecraft:block/stone" // the redirected resource
}
]
The file must be registered under this format: redirected_resource_name-redirected_resource_extension.env.json.
Usage For Developers
In your build.gradle
repositories {
// ...
maven { url 'https://jitpack.io' }
}
// ...
dependencies {
// ...
modImplementation "com.mmodding:env.json:${theMostBeautifulVersionYouCanFind}"
}
You can now get your EnvJson object from a Resource object thanks to ExtendedResource#of(Resource)#getEnvJson
or parse it with EnvJson#parse(Path) or EnvJson#parse(InputStream).
Badge For Developers
[<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)
Promotion
//raw.githubusercontent.com/ModFest/art/3bf66556e674d670e30f647d6a48c4e1798c21d4/badge/128h/ModFest" rel="noopener noreferrer" target="_blank">https://raw.githubusercontent.com/ModFest/art/3bf66556e674d670e30f647d6a48c4e1798c21d4/badge/128h/ModFest 1.20 Badge Cozy.png" alt="ModFest 1.20">
env.json
Supports
Requirements
Concept
env.json is a Minecraft Library introducing a new sub json file extension format, with the goal of redirecting minecraft resources to other ones based on the environment context.
Implementations
env.json doesn't provide these redirections directly, but only the operations around env.json files and their resource reload management.
There is currently two official implementations of env.json:
Mod Identifier: env-driven-assets.
Environments: Client
Applies env.json operations to Minecraft Vanilla asset types.
Mod Identifier: env-driven-data.
Environments: Common & Server
Applies env.json operations to Minecraft Vanilla data types.
The env.json Format
[
{
"rules": [ // the primary set of rules, is an "any" type
{
"type": "sequence", // all rules in the sequence must pass
"rule": [] // the rules
},
{
"type": "any", // passes if at least one rule passes
"rule": [] // the rules
},
{
"type": "not", // reverses the rule
"rule": { // the rule
"type": "...",
"rule": "..."
}
},
{
"type": "dimension", // passes if the current dimension matches this one
"rule": "minecraft:overworld" // the dimension, can also be a tag
},
{
"type": "biome", // passes if the current biome matches this one
"rule": "minecraft:plains" // the biome, can also be a tag
},
{
"type": "x_coord", // passes if the following operations on the x-axis are valid
"rule": {
"comparator": "==", // must be <, >, ==, <=, >=, =< or =>
"value": "100" // must be an integer
}
},
{
"type": "y_coord", // passes if the following operations on the y-axis are valid
"rule": {
"comparator": "==", // must be <, >, ==, <=, >=, =< or =>
"value": "100" // must be an integer
}
},
{
"type": "z_coord", // passes if the following operations on the z-axis are valid
"rule": {
"comparator": "==", // must be <, >, ==, <=, >=, =< or =>
"value": "100" // must be an integer
}
},
{
"type": "submerged", // passes if the current context is surrounded by water or not
"rule": true // true for "if it is submerged" and false for "if it is not submerged"
},
{
"type": "sky", // passes if the context is above the sky limit, at or below
"rule": "at" // must be "above", "at" or "below"
},
{
"type": "water", // passes if the context is above the water level, at or below
"rule": "at" // must be "above", "at" or "below"
},
{
"type": "void", // passes if the context is above the void limit, at or below
"rule": "at" // must be "above", "at" or "below"
}
],
"result": "minecraft:block/stone" // the redirected resource
}
]
The file must be registered under this format: redirected_resource_name-redirected_resource_extension.env.json.
Usage For Developers
In your build.gradle
repositories {
// ...
maven { url 'https://jitpack.io' }
}
// ...
dependencies {
// ...
modImplementation "com.mmodding:env.json:${theMostBeautifulVersionYouCanFind}"
}
You can now get your EnvJson object from a Resource object thanks to ExtendedResource#of(Resource)#getEnvJson
or parse it with EnvJson#parse(Path) or EnvJson#parse(InputStream).
Badge For Developers
[<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)
Promotion
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers





