Skip to content

Recipes

Ferdinand Calo edited this page Jun 5, 2020 · 3 revisions
# Data Overview
DataType: RECIPE/S
File Ending: .json
Has Own Item: no
Has TMT Model: no

Config location: ./assets/<packid>/config/recipes/<here>.json
Model location: none

The Goal of Recipes is to make various things craftable in survival mode.
These are the currently supported Recipe types in FVTM:

  • FCL BluePrintTable Recipe
    • basic recipe type that takes a defined amount of input items and returns
      one (or more if selected in the gui) output item
  • FVTM CraftBlockScript Recipe
    • basic up to advanced recipes for multiblocks using the craftblockscript
    • the input/output/consumtion/etc may vary depending on the target block

For vanilla crafting recipes (crafting table, furnace) see how they are handled
in vanilla/forge, FVTM does not handle these as forge/vanilla does that.

Some examples are as usual at GEP!


In case you want to make an FCL recipe, these are the fields:

  • block - should be fcl:bpt or fcl:blueprinttable, always
  • category - Category in the FCL BluePrintTable (GUI) (required)
  • input - json array containing the ingredients
    • define direct as a string minecraft:stone,
    • or with data as a json object, e.g.
    {
        "id": "minecraft:stone", //block or item registry name (id)
        "count": 2, //stack size, optional, default is 1
        "damage": 0, //metadata, optional, default is 0,
        "tag" {} //NBT tag data, optional, default is none
    }
    
  • output - same as in input entry, only one

And in case you want to make a CraftBlockScript Recipe:
(please make sure you know how the specific block works first!)

  • block - the registry name of the target multiblock (core)
  • input - json array containing the ingredients
    Each array entry (json object) should contain:
    • inventory - string, required, the inventory this item is to be taken from
    • amount - integer, self-explaining, for items can be replaced with count
    • Then depending on what you want this ingredient to be:
      • fluid - for fluids, the fluid id
      • item - for a single item, should contain:
        • on simple init just the id as string, e.g. minecraft:slime_ball
          ELSE
        • id - string, the registry name of the item/block
        • damage - int, optional, metadata, default is 0
        • tag - NBT tag data, optional, default is none
      • items - for "alternative" item ingredient (e.g. wood types)
        • json array with entries like item
      • oredict - Forge OreDictionary Support
        • enter the oredict id here (e.g. ingotIron, oreGold)
  • output - json array containing output items/fluids/etc Each array entry (json object) should contain:
    • inventory - string, required, the inventory this item is to be put into
    • amount - integer, self-explaining, for items can be replaced with count
    • overflow - boolean, if true the item is "lost" when there is no space for it
      in the target inventory or e.g. for fluids when the tank is full, default is false
    • Then depending on what you want the output to be:
      • fluid - for fluids, the fluid id
      • item - normal item as output
        • on simple init just the id as string, e.g. minecraft:slime_ball
          ELSE
        • id - string, the registry name of the item/block
        • damage - int, optional, metadata, default is 0
        • tag - NBT tag data, optional, default is none
  • consume - this is a special array with <string,integer> entries for the script
    when the script cannot "fullfil" the consumption request, it is the same as if
    it wouldn't have enough input items or space for output, it is defined as follows:
    • "key": <value> e.g. "heat": 20 (see GEP Smeltery)
  • craft_time - optional custom item craft time (in ticks) instead of the default one
  • id - unique id for this recipe, required

This datatype does NOT create an own item.
It's only scope is to provide crafting data to use in survival.

Clone this wiki locally