Skip to content

Sapling Recipes

The resourcestrees:resources_sapling recipe type defines which vanilla sapling maps to which Resources Sapling block. This is used by the cross-pattern crafting recipe.

When to Use

You only need this recipe type if you are:

  • Registering a new custom Resources Sapling block via a companion mod or KubeJS.
  • Mapping an additional vanilla sapling to an existing Resources Sapling block.

For custom resource types added via datapack, the 8 existing sapling recipes already cover all tree shapes. No new recipe is needed.

File Location

data/<namespace>/recipe/<name>.json

Recipe Format

json
{
  "type": "resourcestrees:resources_sapling",
  "baseSapling": {
    "id": "<vanilla_sapling_item_id>"
  },
  "resourcesSapling": {
    "id": "<resources_sapling_block_item_id>"
  }
}
FieldDescription
baseSaplingThe vanilla sapling placed in the center of the crafting grid.
resourcesSaplingThe Resources Sapling block item produced by the recipe.

The material in the cardinal slots is dynamically matched against all registered ResourcesTypes. No material field is needed — the recipe works for all types automatically.

Built-in Recipes

The mod ships 8 built-in recipes:

Recipe IDBase SaplingResources Sapling
resourcestrees:saplings/resources_oak_saplingminecraft:oak_saplingresourcestrees:resources_oak_sapling
resourcestrees:saplings/resources_spruce_saplingminecraft:spruce_saplingresourcestrees:resources_spruce_sapling
resourcestrees:saplings/resources_birch_saplingminecraft:birch_saplingresourcestrees:resources_birch_sapling
resourcestrees:saplings/resources_jungle_saplingminecraft:jungle_saplingresourcestrees:resources_jungle_sapling
resourcestrees:saplings/resources_acacia_saplingminecraft:acacia_saplingresourcestrees:resources_acacia_sapling
resourcestrees:saplings/resources_dark_oak_saplingminecraft:dark_oak_saplingresourcestrees:resources_dark_oak_sapling
resourcestrees:saplings/resources_cherry_saplingminecraft:cherry_saplingresourcestrees:resources_cherry_sapling
resourcestrees:saplings/resources_pale_oak_saplingminecraft:pale_oak_saplingresourcestrees:resources_pale_oak_sapling

Example: Custom Sapling Block

data/mymod/recipe/saplings/my_crystal_sapling.json

json
{
  "type": "resourcestrees:resources_sapling",
  "baseSapling": {
    "id": "minecraft:birch_sapling"
  },
  "resourcesSapling": {
    "id": "mymod:my_crystal_sapling"
  }
}

This allows players to craft mymod:my_crystal_sapling (with any resource type) using a birch sapling + material cross pattern.

KubeJS

If you registered a custom sapling via the KubeJS plugin, the recipe is automatically generated — you do not need to write it manually. See KubeJS Custom Saplings.

Fragment Crafting Recipes

Fragment → resource shaped crafting recipes can be added via datapack using the resourcestrees:strict_shaped recipe type.

The ingredient key syntax differs slightly between loaders — use neoforge:ingredient_type on NeoForge and fabric:type on Fabric.

Recipe Format

json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "neoforge:ingredient_type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": {
        "resourcestrees:resources_type": "<type_key>"
      }
    }
  },
  "pattern": [
    "   ",
    "AAA",
    "   "
  ],
  "result": {
    "count": "<int>",
    "id": "<item_id>"
  }
}
json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "fabric:type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": {
        "resourcestrees:resources_type": "<type_key>"
      }
    }
  },
  "pattern": [
    "   ",
    "AAA",
    "   "
  ],
  "result": {
    "count": "<int>",
    "id": "<item_id>"
  }
}

Fields

FieldDescription
neoforge:ingredient_type / fabric:typeDeclares the custom ingredient type. Use resourcestrees:resources_type.
baseMust be resourcestrees:leaf_fragment.
components."resourcestrees:resources_type"The resource type key this ingredient requires (e.g. resourcestrees:amethyst).
patternStandard 3×3 shaped crafting pattern. Use spaces for empty slots.
resultThe output item, with optional count.

Example: Amethyst Shard (Line Pattern)

json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "neoforge:ingredient_type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": {
        "resourcestrees:resources_type": "resourcestrees:amethyst"
      }
    }
  },
  "pattern": [
    "   ",
    "AAA",
    "   "
  ],
  "result": {
    "count": 6,
    "id": "minecraft:amethyst_shard"
  }
}
json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "fabric:type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": {
        "resourcestrees:resources_type": "resourcestrees:amethyst"
      }
    }
  },
  "pattern": [
    "   ",
    "AAA",
    "   "
  ],
  "result": {
    "count": 6,
    "id": "minecraft:amethyst_shard"
  }
}

Example: Diamond (Cube Pattern, Custom Type)

json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "neoforge:ingredient_type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": {
        "resourcestrees:resources_type": "resourcestrees:diamond"
      }
    }
  },
  "pattern": [
    "AAA",
    "AAA",
    "AAA"
  ],
  "result": {
    "count": 4,
    "id": "minecraft:diamond"
  }
}
json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "fabric:type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": {
        "resourcestrees:resources_type": "resourcestrees:diamond"
      }
    }
  },
  "pattern": [
    "AAA",
    "AAA",
    "AAA"
  ],
  "result": {
    "count": 4,
    "id": "minecraft:diamond"
  }
}

Multi-Type Recipe (Two Different Fragments)

You can define multiple ingredient keys using different resource types:

json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "neoforge:ingredient_type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": { "resourcestrees:resources_type": "resourcestrees:dirt" }
    },
    "B": {
      "neoforge:ingredient_type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": { "resourcestrees:resources_type": "resourcestrees:water" }
    }
  },
  "pattern": [
    "BA ",
    "AB ",
    "   "
  ],
  "result": {
    "count": 12,
    "id": "minecraft:clay_ball"
  }
}
json
{
  "type": "resourcestrees:strict_shaped",
  "category": "building",
  "key": {
    "A": {
      "fabric:type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": { "resourcestrees:resources_type": "resourcestrees:dirt" }
    },
    "B": {
      "fabric:type": "resourcestrees:resources_type",
      "base": "resourcestrees:leaf_fragment",
      "components": { "resourcestrees:resources_type": "resourcestrees:water" }
    }
  },
  "pattern": [
    "BA ",
    "AB ",
    "   "
  ],
  "result": {
    "count": 12,
    "id": "minecraft:clay_ball"
  }
}

File Location

Place your recipe files in data/<namespace>/recipe/<name>.json inside your datapack. Use a unique namespace to avoid conflicts with built-in recipes.

JEI

Custom strict_shaped recipes are visible in JEI. The ingredient slots will show the required fragment type. Make sure your recipe key uses the exact resourcestrees:resources_type component value matching the type you registered.

Released under the All Rights Reserved License.