Make the recipe require a structure to be formed around the machine
Structure requirement is used to make the recipe need a structure around the machine to be processed.
The structure can be any size but blocks in unloaded chunks will not be found and the recipe will not start.
To make a structure requirement without headache use the in game "Structure Creator" tool.
The requirement type of structure requirement is : "custommachinery:structure".
Properties
The structure requirement has 3 mandatory properties and 3 optional properties.
Mandatory properties
"type": "custommachinery:structure"//Mandatory to define a structure requirement.
Pattern
Name : pattern
Description :
A list of list of string.
Each character of the String represent a block, starting from the left and going to the right.
Each String in the List represent a row, starting from the back and going to the front.
Each List of String in the list represent a floor, starting from the bottom and going to the top.
All String must have the same number of characters, and each floot must have the same number of String
The pattern must have exactly one 'm' character, representing the machine position.
Example :
"pattern": [ ["aaa"], ["ama"], ["aaa"]]
A 3x3x1 vertical ring structure of the same block, around the machine block.
Keys
Name : keys
Description :
A map of type : "character": "block".
The character key must be unique and can't be 'm' (reserved for the machine block).
The block is described the same way as in the "/setblock" command : namespace:id[property1=value,property2=value...]{tag1:value,tag2:value...}
The [properties] and {tag} are optional.
The character 'm' is already taken by the machine block and can't be used for anything else.
Example :
"keys": {"a":"minecraft:stone"}
Optional properties
Action
Name : action
Description :
Define the behavior of this structure requirement, can be any of these values :
check : Just check if the structure is present.
break : Break an existing structure and drop its blocks.
destroy : Destroy the structure and do not drop its blocks.
place_break : Place the structure and drop the replaced blocks.
place_destroy : Place the structure and do not drop the replaced blocks.
Default : check
Example :
Set the structure requirement to break the structure :
"action": "break"
Chance
Name : chance
Description :
A double between 0.0 and 1.0 that define the chance of the requirement to be processed.
Default : 1
The requirement will always be processed.
Example :
"chance": 0.7
The requirement will have 70% chance to be processed.
Delay
Name : delay
Description :
A double value, between 0.0 and 1.0 that represents at which time of the recipe the requirement action must be executed.
A delay of 0.5 represent half of the recipe, 0.25 a quarter etc...
Default : 0
The requirement action will be executed on start if mode is input or on end if mode is output.
Example :
"delay": 0.33
The requirement action will be executed when the recipe progress time is at (approximatively) a third of the recipe total duration.
Note :
If delay is specified the requirement will be only executed at the specified delay, independently of the mode property.
This property have no effect if the action is set to check as this action is executed each tick of the recipe.