Feed The Beast Wiki

Follow the Feed The Beast Wiki on Discord or Mastodon!

READ MORE

Feed The Beast Wiki
Advertisement

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" where value 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] where value 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:
  1. First left bracket [ indicates the beginning of the shape array value representing the Multiblock, last right bracket ] indicates end of value.
  2. Second level of nested array elements indicates vertical layers, beginning from the top and progressing downward.
  3. Third level of nested array elements indicates rows of each vertical layer of the Multiblock.
  4. Each column of each individual row of each layer of the Multiblock is represented as a String in the deepest level of the array.

 

Array Element Values:
String taking one of three formats:

  1. "l", Basic block type Key Name for slot in Multiblock
  2. "l:U", NBT-included block type Key Name for slot in Multiblock
  3. "_", Blank space for slot in Multiblock
"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" ] ]
]


"Compact Machines"

"name" = ""Navbox Compact Machines"" "state" = ""expanded""

Other languages:
Advertisement