custom_crops > bp > blocks > custom_crop.json
{
"format_version": "1.21.90",
"minecraft:block": {
"description": {
"identifier": "wiki:custom_crop",
"menu_category": {
"category": "none" // Hide from creative inventory - seeds should be used to place.
},
"states": {
"wiki:growth": {
"values": { "min": 0, "max": 7 }
}
}
},
"components": {
"minecraft:collision_box": false,
"minecraft:light_dampening": 0,
"minecraft:geometry": "geometry.crop", // Model provided in previous step.
"minecraft:material_instances": {
"*": {
"texture": "wiki:custom_crop_0",
"render_method": "alpha_test_single_sided",
"ambient_occlusion": false,
"face_dimming": false
}
},
// Break the crop if it isn't placed on farmland.
"minecraft:placement_filter": {
"conditions": [
{
"allowed_faces": ["up"],
"block_filter": ["minecraft:farmland"]
}
]
},
// Break the crop when water flows into it.
"minecraft:liquid_detection": {
"detection_rules": [
{
"liquid_type": "water",
"on_liquid_touches": "broken"
}
]
},
// Break the crop when it is pushed by a piston
"minecraft:movable": {
"movement_type": "popped"
}
},
"permutations": [
{
"condition": "q.block_state('wiki:growth') < 7",
"components": {
// Loot table for when the crop is not fully grown. Vanilla crops only drop seeds when young.
"minecraft:loot": "loot_tables/blocks/custom_crop_young.json",
// Trigger growth on random ticks and when interacting with bone meal (only active when the block isn't fully grown).
"wiki:growable": {
"growth_state": "wiki:growth",
"growth_chance": 50, // 50% chance to grow on each random tick
"max_growth": 7
}
}
},
{
"condition": "q.block_state('wiki:growth') == 0",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 1.6, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') == 1",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 3.2, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') >= 2",
"components": {
"minecraft:material_instances": {
"*": {
"texture": "wiki:custom_crop_1",
"render_method": "alpha_test_single_sided",
"ambient_occlusion": false,
"face_dimming": false
}
}
}
},
{
"condition": "q.block_state('wiki:growth') == 2",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 4.8, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') == 3",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 6.4, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') >= 4",
"components": {
"minecraft:material_instances": {
"*": {
"texture": "wiki:custom_crop_2",
"render_method": "alpha_test_single_sided",
"ambient_occlusion": false,
"face_dimming": false
}
}
}
},
{
"condition": "q.block_state('wiki:growth') == 4",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 8, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') == 5",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 9.6, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') == 6",
"components": {
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 11.2, 16]
}
}
},
{
"condition": "q.block_state('wiki:growth') == 7",
"components": {
"minecraft:material_instances": {
"*": {
"texture": "wiki:custom_crop_3",
"render_method": "alpha_test_single_sided",
"ambient_occlusion": false,
"face_dimming": false
}
},
"minecraft:selection_box": {
"origin": [-8, 0, -8],
"size": [16, 12.8, 16]
},
// Drop different loot when fully grown
"minecraft:loot": "loot_tables/blocks/custom_crop_mature.json"
}
}
]
}
}