Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mmodding/env.json
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.
https://github.com/mmodding/env.json
Last synced: 2 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/mmodding/env.json
- Owner: MModding
- License: other
- Created: 2023-12-18T00:05:03.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-09-09T18:38:26.000Z (about 2 months ago)
- Last Synced: 2024-09-09T22:51:07.978Z (about 2 months ago)
- Homepage:
- Size: 198 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
[![MModding](https://raw.githubusercontent.com/MModding/art/main/brand/mmodding_dark_banner.png)](https://mmodding.github.io/discord-link)
# env.json
[](https://modrinth.com/mod/env.json)
## Supports
[](https://fabricmc.net)
[](https://quiltmc.org)## Requirements
[](https://modrinth.com/mod/fabric-api)
## 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:
- [Environment Driven Assets (EDA)](https://modrinth.com/mod/env-driven-assets)
Mod Identifier: env-driven-assets.
Environments: Client
Applies env.json operations to Minecraft Vanilla asset types.
- [Environment Driven Data (EDD)](https://modrinth.com/mod/env-driven-data)
Mod Identifier: env-driven-data.
Environments: Common & Server
Applies env.json operations to Minecraft Vanilla data types.
## The env.json Format
```json
[
{
"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`
```groovy
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
[](https://modrinth.com/mod/env.json)
`[](https://modrinth.com/mod/env.json)`
## Promotion
[](https://modfest.net/1.20)