MoreRequirement has added the following requirements for Tetra:
Requirements
"mr:advancement"
└ advancement (Required) String
Checks whether the player has this advancement.
Example:
"requirement":{
"type":"mr:advancement",
"advancement":"minecraft:end/find_end_city"
}
``` "mr:biome"
└ biome (Required) String
Checks whether the workstation is located in the specified biome.
Example:
```json
"requirement":{
"type":"mr:biome",
"biome":"minecraft:end_highlands"
}
``` "mr:mbd"
├ blocks (Required) Map<String,Integer>
│ Checks whether the specified number of blocks exists within a given range.
├ x (Optional) Integer
│ Distance to extend along the X-axis from the workstation (both directions).
├ y (Optional) Integer
│ Distance to extend along the Y-axis from the workstation (both directions).
└ z (Optional) Integer
Distance to extend along the Z-axis from the workstation (both directions).
Example:
```json
"requirement":{
"type":"mr:mbd",
"x":5,
"y":5,
"z":5,
"blocks":{
"minecraft:end_portal_frame":10,
"minecraft:end_stone":5
}
}
``` "mr:entities"
├ entities (Required) Map<String,Integer>
│ Checks whether the specified number of entities exists within a given range.
├ x (Optional) Integer
│ Distance to extend along the X-axis from the workstation (both directions).
├ y (Optional) Integer
│ Distance to extend along the Y-axis from the workstation (both directions).
└ z (Optional) Integer
Distance to extend along the Z-axis from the workstation (both directions).
Example:
```json
"requirement":{
"type":"mr:entities",
"x":5,
"y":5,
"z":5,
"entities":{
"pig":10
}
}
``` "mr:dimension"
└ dimension (Required) String
The dimension ID to check against.
Example:
```json
"requirement":{
"type":"mr:dimension",
"dimension":"the_end"
}
``` "mr:height"
├ min (Optional) Integer
│ Minimum required Y-level for the workstation (default: -99).
└ max (Optional) Integer
Maximum required Y-level for the workstation (default: 333).
Example:
```json
"requirement":{
"type":"mr:height",
"min":255
}
``` "mr:moon\_phase"
└ moonPhase (Required) Integer
Moon phase, valid values are in the range [1~8].
Example:
```json
"requirement":{
"type":"mr:moon_phase",
"moonPhase":"1"
}
``` "mr:potion"
├ effect (Required) String
│ The ID of the potion effect to check.
├ duration (Optional) Integer
│ Minimum required duration in ticks (default: 0).
└ amplifier (Optional) Integer
Minimum required amplifier level (0 = level I, consistent with command syntax; default: 0).
Example:
```json
"requirement":{
"type":"mr:potion",
"effect":"minecraft:darkness",
"duration":200
}
``` "mr:see\_sky"
└ No parameters required. Returns true if the workstation is exposed to the sky.
Example:
```json
"requirement":{
"type":"mr:see_sky"
}
``` "mr:time"
└ time (Required) String
Valid options:
├ "day" – daytime
└ "night" – nighttime
Example:
```json
"requirement":{
"type":"mr:time",
"time":"day"
}
``` "mr:other\_module"
Redirects the requirement check to a module in the specified slot.
├ slot (Required) String
│ Target slot identifier.
└ requirement (Required) Requirement
Another requirement to evaluate on the target module.
Example:
```json
"requirement":{
"type":"mr:other_module",
"slot":"sword/hilt",
"requirement": {
"type": "tetra:improvement",
"improvement": "hilt_hone/damage"
}
}
``` "mr:weather"
└ weather (Required) String
Valid options:
├ "clear" – clear weather
├ "rain" – raining
└ "thunder" – thunderstorm
Example:
```json
"requirement":{
"type":"mr:weather",
"weather":"test"
}
``` "mr:custom" (New Version)
This requirement does nothing by itself and always returns true.
You can implement custom logic using KubeJS.
It uses a "key" for identification, allowing you to define multiple custom requirements freely.
The localization key is: `"more_requirement.holo.custom_requirement.key"` (replace "key" with the one you defined in your datapack).
```js
// In startup_scripts
let $CustomRequirement = Java.loadClass('net.yiran.morerequirement.requirements.CustomRequirement');
$CustomRequirement.registerCustomFunction("key", cxt => true);
Example:
"requirement":{
"type":"mr:custom",
"key":"key"
}
``` "mr:custom" (Legacy Version – Deprecated since 1.0.3)
This requirement does nothing by itself and always returns true.
You can implement custom logic using KubeJS.
```js
// In startup_scripts
let $CustomRequirement = Java.loadClass('net.yiran.morerequirement.requirements.CustomRequirement');
$CustomRequirement.setCustomFunction(cxt => true);
Example:
"requirement":{
"type":"mr:custom"
}
``` "mr:group"
[\[See below for how to define groups\]](#group)
├ key (Required) String
│ Used to retrieve the specific group.
└ hideExtend (Optional) Boolean
Whether to hide the group's individual conditions (default: false).
Example:
```json
"requirement":{
"type":"mr:group",
"group":"test"
}
Group
Place group definition files in data/morerequirement/group/.
├ requirements (Required) Requirement[]
│ A list of requirements to check when this group is referenced. All must pass.
├ key (Optional) String
│ By default, the key is automatically assigned as the file path under the group folder.
│ For example, "group/test/a.json" defaults to key "test/a".
│ You may manually specify a custom key.
├ translation (Optional) String
│ Localization key. Defaults to "more_requirement.group." + key.
└ hideExtend (Optional) Boolean
Whether to hide the group's individual conditions (default: false).
Example:
{
"key": "test",
"requirements": [
{
"type": "mr:mbd",
"blocks": {
"minecraft:chain": 8,
"minecraft:birch_stairs": 12,
"minecraft:stripped_birch_log": 9
}
},
{
"type": "mr:see_sky"
},
{
"type": "mr:weather",
"weather": "clear"
},
{
"type": "mr:height",
"min": 200
}
]
}
You can also nest groups within other groups:
{
"key": "combination_test",
"requirements": [
{
"type": "mr:group",
"key": "test1"
},
{
"type": "mr:group",
"key": "test2",
"hideExtend": true
}
]
}