Compact Machines introduces its own combination of Multiblock and in-world crafting mechanics known as Miniaturization Crafting. For more information on how to use this in-game, refer to Miniaturization Field Projector and individual recipes for items. This article is not intended as a tutorial for beginning to use Compact Machines, but is meant as a reference for creating new recipes and editing existing recipes using the Miniaturization Crafting technique. Each recipe is stored in its own JSON format file with a .json
extension in the /config/compactmachines3/recipes
folder under your modpack instance folder.
Basic data format[]
Object[]
The entire recipe structure in each file begins with {
and ends with }
which makes up a pair of delimiters for an Object container. White space characters and line breaks are ignored outside of string values.
Key Value[]
The primary data elements in the recipes are a series of Key Value pairs with five basic subtypes. All Key names must be strings enclosed in double quotes "Key"
and followed by a colon :
. The comma ,
is used as a separator between entries in lists of key values and array elements.
The Key's corresponding Value follows the colon and may be one of the following types:
- string:
"value"
wherevalue
may include special characters by adding a backslash (\
) before the character (including a backslash or double quote). - boolean: one of:
true
false
- number: decimal value
- object: (see previous section)
- array:
[value]
wherevalue
may be of any other type, but in the most common cases will be either another array (for multi-dimensional arrays) or a list of one or more Strings separated by commas.
Key Data[]
Name | Type/Subtype | Default Value (blank if required) |
Description | example recipes |
---|---|---|---|---|
name | string | Recipe identifier | "name": "compactmachines3:zombieegg" | |
target-item | string | Result item id. Sometimes specified as "target-block". | "target-item": "minecraft:spawn_egg" | |
target-count | number | 1 | Number of items/blocks produced | "target-count": 1 |
target-meta | number | 0 | Metadata value for the recipe result (sometimes referred to as damage value) used to differentiate between discrete items sharing the same identifier. | "target-meta": 0 |
target-nbt | string | "" | NBT tags to apply to the result of the crafting recipe. See these articles on the Minecraft Wiki for more details:
| |
symmetrical | boolean | false | Specifies whether recipes may be mirrored along horizontal directions when being constructed. | "symmetrical": true |
catalyst | string | The item thrown in to the miniaturization field to begin the crafting process. Additional fields further specifying item details may be used. | "catalyst": "minecraft:spider_eye" | |
catalyst-meta | number | 0 | Metadata value for the catalyst item to be thrown into the miniaturization field (sometimes referred to as damage value) often used to differentiate between discrete items sharing the same identifier. | "catalyst-meta": 0 |
catalyst-nbt | string | "" | NBT tags required for the catalyst item. If not provided, any tags applied to the item are ignored. Common uses for this would be to require the item to have a certain custom name, enchant, or entity tag. | "catalyst-nbt": "{EntityTag:{id:\"minecraft:zombie\"}}" |
duration | number | unknown default | Number of ticks for the miniaturization animation, and the crafting process, to run before it completes. | "duration": 300 |
Special Format Objects[]
Special Key | SubKey | Type | Description | Example |
---|---|---|---|---|
input-types | Compound Object | series of Object Keys identifying blocks used in the Multiblock portion of the recipe. | "input-types": { "a": { "id": "thermaldynamics:duct_0", "meta": 0 }, "b": { "id": "minecraft:chest", "meta": 0, "ignore-meta": true } } | |
input-types | id | String | Block Id | "a": { "id": "thermaldynamics:duct_0" } |
input-types | meta | Number default: 0 |
Metadata/damage value identifying block subtype. | "meta": 0 |
input-types | ignore-meta | Boolean default: false |
Sets whether to ignore Metadata/damage value on this block. | "ignore-meta": true |
input-types | ignore-nbt | Boolean default: false |
Sets whether to ignore NBT tags on this block. | "ignore-nbt": true |
input-nbt | Compound Object | List of NBT Tags (used as a subtype) required for blocks in the recipe. Usually indicated with a letter, colon, letter sequence for the key name if being used for the recipe. The key names are used in the shape value to represent the combination of input-types and input-nbt. |
"input-nbt": { "a:A": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[2,0,0,2,0,2]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:B": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[0,0,2,2,0,0]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:C": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[2,0,2,0,0,2]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:D": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[2,2,0,0,0,0]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:E": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[0,2,0,2,0,2]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:F": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[0,2,2,0,0,2]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:G": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[0,0,0,0,2,2]},id:\"thermaldynamics:duct_energy_basic\"}" }, "b:A": { "nbt": "{Items:[],id:\"minecraft:chest\",Lock:\"\"}" }, "a:H": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[2,0,0,2,2,0]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:I": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[2,0,2,0,2,0]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:J": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[0,2,0,2,2,0]},id:\"thermaldynamics:duct_energy_basic\"}" }, "a:K": { "nbt": "{\"cm3_extra:ThermalDynamicsGrid\":{Connections:[0,2,2,0,2,0]},id:\"thermaldynamics:duct_energy_basic\"}" } } | |
shape | Array String Dimension 3 | Array Structure:
Array Element Values:
|
"shape": [ [ [ "a:A", "a:G", "a:H" ], [ "a:B", "_", "a:B" ], [ "a:C", "a:G", "a:I" ] ], [ [ "a:D", "_", "a:D" ], [ "_", "b:A", "_" ], [ "a:D", "_", "a:D" ] ], [ [ "a:E", "a:G", "a:J" ], [ "a:B", "_", "a:B" ], [ "a:F", "a:G", "a:K" ] ] ] |
|