Tags
Creators
Details
0.9.0-preview.1+26.3
Compatibility
Changes
The first preview that is actually up-to-date with the game... This preview adds a new registry for entity spawn rules, expands various item behaviour with a new data component and comes with a few new block state provider types!
Changes
- Removed brewing recipes.
- This has been replaced by a new system in vanilla.
- The brewing recipe book has been removed alongside it due to excessive duplication of recipes in the recipe book otherwise.
- Added the
entity_spawn_rule_setregistry.- Entity spawners must refer to an element in this registry.
- See the Entity Spawn Rule Sets section for more information.
Items
- Added an optional
interact_animationfield.- Its default value is
{"type": "whack", "duration": 6}. - Provides the
minecraft:interact_animationdata component.
- Its default value is
Example:
{
"behavior": {
"minecraft:cooking_fuel": {
"burn_time": "minecraft:cooking/time_dry_plants",
"speed_multiplier": "minecraft:cooking/speed_default"
},
"minecraft:stackable": 64
},
"display": {
"model": "minecraft:stick",
"translation_key": "item.minecraft.stick"
},
"interact_animation": {
"type": "whack",
"duration": 6
}
}
Item Behaviour Components
- Renamed
minecraft:fueltominecraft:cooking_fueland expanded it. - Added
minecraft:brewing_fuel. - Expanded the following item behaviour components:
minecraft:bucketminecraft:compostableminecraft:entityminecraft:equipmentminecraft:projectileminecraft:weapon
minecraft:bucket
- The
entity.spawn_rulesfield must now point to an entity spawn rule set. - See the
minecraft:entityitem behaviour changes for more information.
minecraft:brewing_fuel
- Allows this item to be used as fuel for a Brewing Stand.
- Format:
uses: A fixed integer or a context int provider. The amount of times this fuel will brew potions.speed_multiplier: A fixed float or a context float provider. How fast the Brewing Stand will brew the potions.
- Provides the
minecraft:brewing_fueldata component.
minecraft:compostable
- Renamed the
level_increase_chancefield tolayersand made its value a fixed integer or a context int provider. - Provides the
minecraft:compostabledata component.
So if you had this:
{
"minecraft:compostable": {
"level_increase_chance": 0.65
}
}
You now have to use this instead:
{
"minecraft:compostable": {
"layers": "minecraft:compostable/medium"
}
}
If you used the same values as vanilla before, you can use this table to find the new values for the new field.
level_increase_chance |
layers |
|---|---|
0.3 |
"minecraft:compostable/low" |
0.5 |
"minecraft:compostable/low_medium" |
0.65 |
"minecraft:compostable/medium" |
0.85 |
"minecraft:compostable/medium_high" |
1.0 |
"minecraft:compostable/always_add_one" |
minecraft:cooking_fuel
- Renamed the
ticksfield toburn_timeand made its value a fixed integer or a context int provider. - Added the
speed_multiplierfield.- Its value is a fixed float or a context float provider.
- Provides the
minecraft:cooking_fuelandminecraft:cooking_fuel_remainderdata components.
So if you had this:
{
"minecraft:fuel": {
"remainder": {
"id": "minecraft:bucket"
},
"ticks": 20000
}
}
You now have to use this instead:
{
"minecraft:cooking_fuel": {
"burn_time": "minecraft:cooking/time_lava_bucket",
"remainder": {
"id": "minecraft:bucket"
},
"speed_multiplier": "minecraft:cooking/speed_default"
}
}
If you used the same values as vanilla before, you can use this table to find the new values for the new field depending on the context of the item, as well as "minecraft:cooking/speed_default" for the speed_multiplier field.
ticks |
burn_time |
|---|---|
50 |
"minecraft:cooking/time_wool_slabs" or "minecraft:cooking/time_bamboo" |
67 |
"minecraft:cooking/time_wool_carpets" |
100 |
"minecraft:cooking/time_wool", "minecraft:cooking/time_dry_plants" or "minecraft:cooking/time_wood_items_extra_small" |
150 |
"minecraft:cooking/time_wood_slabs" |
200 |
"minecraft:cooking/time_wood_items_large" |
300 |
"minecraft:cooking/time_wood_blocks", "minecraft:cooking/time_roots" or "minecraft:cooking/time_wood_items_small" |
800 |
"minecraft:cooking/time_hanging_signs" |
1200 |
"minecraft:cooking/time_boats" |
1600 |
"minecraft:cooking/time_coal" |
2400 |
"minecraft:cooking/time_blaze_rod" |
4001 |
"minecraft:cooking/time_dried_kelp_block" |
16000 |
"minecraft:cooking/time_coal_block" |
20000 |
"minecraft:cooking/time_lava_bucket" |
minecraft:entity
- Added optional field
uses_collision_shape.- Its value is a block, list of blocks or hash-prefixed block tag.
- Determines the blocks that use the block's collision shape instead of the interaction shape for the entity's placement.
Example:
{
"minecraft:entity": {
"entity": {
"allow_item_data": true,
"components": {
"minecraft:cushion/color": "white"
},
"entity": "minecraft:cushion",
"spawn_rules": "minecraft:cushion"
},
"uses_collision_shape": "#minecraft:cushion_uses_collision_shape"
}
}
- The
entity.spawn_rulesfield must now point to an entity spawn rule set.
So if you had this:
{
"minecraft:entity": {
"entity": {
"allow_item_data": true,
"entity": "minecraft:painting",
"spawn_rules": [
{
"type": "minecraft:discard",
"condition": {
"type": "minecraft:side_check",
"sides": [
"down",
"up"
]
}
}
]
}
}
}
You now have to use this instead:
{
"minecraft:entity": {
"entity": {
"allow_item_data": true,
"entity": "minecraft:painting",
"spawn_rules": "minecraft:painting"
}
}
}
With the following entity spawn rule set named minecraft:painting:
[
{
"type": "minecraft:discard",
"condition": {
"type": "minecraft:side_check",
"sides": [
"down",
"up"
]
}
}
]
minecraft:equipment
- Added optional field
mob_visibility.- Its value is the same as the
minecraft:mob_visibilitydata component. - Provides the
minecraft:mob_visibilitydata component.
- Its value is the same as the
minecraft:projectile
- The
entity.spawn_rulesfield must now point to an entity spawn rule set. - See the
minecraft:entityitem behaviour changes for more information.
minecraft:weapon
- Renamed the
swing_animationfield toattack_animation.- This now also provides the
minecraft:attack_animationdata component instead.
- This now also provides the
Data Components
- Added
minecraft:cooking_fuel_remainder.
minecraft:cooking_fuel_remainder
- Represents the item to leave behind when this item is used as cooking fuel.
- Format: An item stack.
Example:
{
"id": "minecraft:bucket"
}
Item Group Entry Providers
- Expanded
minecraft:painting_variant.
minecraft:painting_variant
- The
painting_variants.idfield now accepts a painting variant, list of painting variants or hash-prefixed painting variant tag.- This means that existing providers must now be prefixed with a hash.
So if you had this:
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"painting_variants": {
"id": "minecraft:placeable",
"expected": true
}
}
You now have to use this instead:
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"painting_variants": {
"id": "#minecraft:placeable",
"expected": true
}
}
Entity Spawn Rule Sets
- A new registry containing collections of entity spawn rules so they can be reused across different contexts.
- Format: A list of entity spawn rules.
Example:
[
{
"type": "minecraft:discard",
"condition": {
"type": "minecraft:side_check",
"sides": [
"down"
]
}
},
{
"type": "minecraft:fits_in_volume",
"blocks": true,
"entities": true
},
{
"type": "minecraft:align_yaw",
"face_away_from_player": true,
"steps": 8
}
]
Entity Spawn Rules
- Added the following entity spawn rules:
minecraft:offset_spawn_position_to_exact_yminecraft:rests_on_top_of_face
- Expanded the following entity spawn rules:
minecraft:align_yawminecraft:fits_in_volume
minecraft:align_yaw
- Added an optional
face_away_from_playerfield.- Its value is a boolean and defaults to
false. - This default behaviour is inverted from its previous form, so if you used
minecraft:align_yawbefore you must setface_away_from_playertotrue.
- Its value is a boolean and defaults to
So if you had this:
{
"type": "minecraft:align_yaw",
"steps": 8
}
You now have to use this instead:
{
"type": "minecraft:align_yaw",
"face_away_from_player": true,
"steps": 8
}
minecraft:fits_in_volume
- Made the default values of the
blocksandentitiesfieldsfalseinstead oftrue.
So if you had this:
{
"type": "minecraft:fits_in_volume"
}
You now have to use this instead:
{
"type": "minecraft:fits_in_volume",
"blocks": true,
"entities": true
}
- The
entitiesfield now has an additional option that can check for a specific set of entities.false: Do not check for entities.true: Check for any entity type.- An entity type, list of entity types or hash-prefixed entity type tag: Check for the specified entity types.
Example:
{
"type": "minecraft:fits_in_volume",
"entities": "#minecraft:cannot_intersect_with_cushion"
}
minecraft:offset_spawn_position_to_exact_y
- Spawns the entity on the exact interacted y level.
- This may be the same in some contexts, in which case the position will not be modified.
- Has no additional fields.
minecraft:rests_on_top_of_face
- Checks whether the specified hitbox rests on a top face of a block.
- The hitbox to check for is centred around the entity spawner's current spawn position.
- Fields:
volume: An optional list of three doubles. The volume to use instead of the entity's hitbox.
Block State Providers
- Added the following block state providers:
minecraft:apply_propertiesminecraft:map_block
minecraft:apply_properties
- Sets the block state properties on the current block state without modifying the block itself.
- If the property or property value is not valid for the block, it will not set the defined property value.
- Format:
properties: A map of block state properties to block state property values.
Example:
{
"type": "minecraft:apply_properties",
"properties": {
"eye": "true"
}
}
minecraft:map_block
- Maps a block to another block, keeping the properties present on both blocks intact.
- If the block is not defined as a key in the map, no changes are made.
- Format:
blocks: A map of blocks to blocks.
Example:
{
"type": "minecraft:map_block",
"blocks": {
"minecraft:acacia_log": "minecraft:stripped_acacia_log",
"minecraft:acacia_wood": "minecraft:stripped_acacia_wood",
"minecraft:bamboo_block": "minecraft:stripped_bamboo_block",
"minecraft:birch_log": "minecraft:stripped_birch_log",
"minecraft:birch_wood": "minecraft:stripped_birch_wood",
"minecraft:cherry_log": "minecraft:stripped_cherry_log",
"minecraft:cherry_wood": "minecraft:stripped_cherry_wood",
"minecraft:crimson_hyphae": "minecraft:stripped_crimson_hyphae",
"minecraft:crimson_stem": "minecraft:stripped_crimson_stem",
"minecraft:dark_oak_log": "minecraft:stripped_dark_oak_log",
"minecraft:dark_oak_wood": "minecraft:stripped_dark_oak_wood",
"minecraft:jungle_log": "minecraft:stripped_jungle_log",
"minecraft:jungle_wood": "minecraft:stripped_jungle_wood",
"minecraft:mangrove_log": "minecraft:stripped_mangrove_log",
"minecraft:mangrove_wood": "minecraft:stripped_mangrove_wood",
"minecraft:oak_log": "minecraft:stripped_oak_log",
"minecraft:oak_wood": "minecraft:stripped_oak_wood",
"minecraft:pale_oak_log": "minecraft:stripped_pale_oak_log",
"minecraft:pale_oak_wood": "minecraft:stripped_pale_oak_wood",
"minecraft:poplar_log": "minecraft:stripped_poplar_log",
"minecraft:poplar_wood": "minecraft:stripped_poplar_wood",
"minecraft:spruce_log": "minecraft:stripped_spruce_log",
"minecraft:spruce_wood": "minecraft:stripped_spruce_wood",
"minecraft:warped_hyphae": "minecraft:stripped_warped_hyphae",
"minecraft:warped_stem": "minecraft:stripped_warped_stem"
}
}
Actions
- Added the
#minecraft:use_axe_on_blockaction tag, which allows you to add your own custom actions to axes.- Vanilla uses it to strip wood, scrape copper off blocks and unwax blocks.
- Note that this is not the same as vanilla's
minecraft:block_transformerdata component, which is not used in item behaviour (but still available for item stacks!), as the action system is more versatile.
- The
minecraft:till_rooted_dirtaction now drops theminecraft:till/rooted_dirtloot table instead of dropping an item directly. - Added
minecraft:drop_loot. - Expanded the following action types:
minecraft:drop_item_from_blockminecraft:swing_handminecraft:spawn_entityminecraft:teleport
- Renamed
minecraft:modify_block_statetominecraft:transform_block_stateand expanded it.
So if you had this:
{
"type": "minecraft:modify_block_state",
"position": "interacted",
"properties": {
"eye": "true"
},
"push_entities_upwards": true
}
You now have to use this instead:
{
"type": "minecraft:transform_block_state",
"position": "interacted",
"provider": {
"type": "minecraft:apply_properties",
"properties": {
"eye": "true"
}
},
"push_entities_upwards": true
}
minecraft:drop_item_from_block
- Added an optional
drop_strategyfield, which determines where in the block to spawn the item.- Its value can be either
from_middleorclicked_face. - Defaults to
clicked_facefor backwards compatibility.
- Its value can be either
minecraft:drop_loot
- Drops item stacks from the provided loot table.
- Fails if the is targeted position is not part of the context.
- If the
minecraft:sidecontext parameter is not part of the context, a default value ofupwill be used instead. - Format:
position: A position target. The position to spawn the items at.loot_table: A loot table id. The loot table to call.drop_strategy: An optional drop strategy. Where in the block to spawn the items from the loot table. Defaults tofrom_middle.
Example:
{
"type": "minecraft:drop_loot",
"drop_strategy": "clicked_face",
"loot_table": "minecraft:till/rooted_dirt",
"position": "interacted"
}
minecraft:spawn_entity
- The
entity.spawn_rulesfield must now point to an entity spawn rule set. - See the
minecraft:entityitem behaviour changes for more information.
minecraft:swing_hand
- Added an optional
animationfield.- Determines the hand swing animation to play.
- Its value is a swing animation with a default value of
{"type": whack, "duration": 6}.
minecraft:teleport
- Added an optional
unsafe_blocksfield.- Determines what blocks are unsafe to be teleported on.
- If not present, all blocks are considered safe.
- Its value is a block, list of blocks or hash-prefixed block tag.
- Added an optional
directional_particlesfield.- Determines whether to display specific teleportation particles.
- Its value is a boolean with a default value of
true.
Example:
{
"type": "minecraft:teleport",
"distance": 16,
"entity": "this",
"unsafe_blocks": "#minecraft:consumable_does_not_teleport_to"
}
minecraft:transform_block_state
- Transforms a block state using a block state provider.
- Format:
position: A position target. The position of the block to transform.provider: A block state provider or inline block state provider. Determines how to transform the block state.transform_type: An optional block transformer transform type. How nearby blocks should be affected by the transformation. Defaults tosingle_block.- Its value can be either
single_blockorcopper_chest.
- Its value can be either
particle: An optional block transformer transform particle. The particle to display after modifying the block state. Defaults tonone.- Its value can be either
none,scrape,wax_onorwax_off.
- Its value can be either
push_entities_upwards: An optional boolean. Whether to push entities that would be clipping inside the modified block state upwards. Defaults tofalse.
Example:
{
"type": "minecraft:transform_block_state",
"position": "interacted",
"provider": {
"type": "minecraft:apply_properties",
"properties": {
"eye": "true"
}
},
"push_entities_upwards": true
}
World Modifications
- Added the
minecraft:noneworld modification type.
minecraft:none
- Doesn't modify the world in any way.
- Format:
transforms_into: An item. The item to leave.
Example:
{
"type": "minecraft:none",
"transforms_into": "minecraft:bucket"
}
Item Modifiers
- Expanded
minecraft:split.
minecraft:split
- The
countfield now uses a context int provider.
Predicates
- Moved custom entity predicate fields to ids.
- Existing entity predicates are still valid, just like vanilla.
So if you had this:
{
"in_water_or_rain": true,
"used_item_ticks": {
"min": 10
}
}
You now have to use this instead:
{
"minecraft:in_water_or_rain": true,
"minecraft:used_item_ticks": {
"min": 10
}
}
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:ZclAAHfk:Bn5QDGml"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:ZclAAHfk:Bn5QDGml"
}

