The BlockPermutation.matches() and blockPermutation.withProperty() methods do not work with custom blocks, they only work with vanilla blocks.
For example, if I try to use the '.matches()' method it will always return false no matter if I'm comparing it to its exact same properties, it only works if I leave the properties as undefined and only match the block name.
Now, if I use the '.withProperty()' method, it will always throw an error if I try to get the 'BlockPermutation' with the specified properties, this doesn't happen with vanilla blocks.
import { world } from "@minecraft/server"
world.events.itemUseOn.subscribe(i => {
const block = i.source.dimension.getBlock(i.getBlockLocation())
if (i.item.typeId === 'minecraft:stick') {
const permutation = block.permutation
world.sendMessage(`§acustom_block 1 - ${permutation.matches('test:custom_block', { 'block:test': 0 } )}`)
world.sendMessage(`§ccustom_block 2 - ${permutation.matches('test:custom_block', permutation.getAllProperties() )}`)
world.sendMessage(`§estone_slab - ${permutation.matches('minecraft:stone_slab', { stone_slab_type: 'stone_brick', top_slot_bit: false })}`)
//block.setPermutation(block.permutation.withProperty('top_slot_bit', true ))
block.setPermutation(block.permutation.withProperty('block:test', 1 ))
}
})
custom_block.json:
{
"format_version": "1.19.70",
"minecraft:block": {
"description": {
"identifier": "test:custom_block",
"menu_category": {
"category": "Construction"
},
"properties": {
"block:test": [ 0, 1 ]
}
},
"components": {
"minecraft:material_instances": {
"*": { "texture": "custom_block" }
},
"minecraft:on_interact": {
"event": "test"
}
},
"events": {
"test": {
"sequence": [
{
"condition": "!q.block_property('block:test')",
"run_command": { "command": "say block_property = 0" }
},
{
"condition": "q.block_property('block:test')",
"run_command": { "command": "say block_property = 1" }
}
]
}
}
}
}
I will leave the world where I took the test so they can review it.
Well, to execute the error you must enter the world that I sent in the attached files, in the world you will find a script file and a custom block that when you right click or interact on it you will see a "/say" in the chat that will indicate if its "block:test" property is set to 0 or 1.
In the script you will find:
world.events.itemUseOn.subscribe(i => {
const block = i.source.dimension.getBlock(i.getBlockLocation())
if (i.item.typeId === 'minecraft:stick') { ... } }
With this, right-clicking or interacting with a stick in the player's hand on a block will execute the code inside the if {...} on the block.
Now inside the if {...} you will find four tests I made to execute the error, first in the:
world.sendMessage(`${permutation.matches('test:custom_block', { 'block:test': 0 } )}`)
it is checked if "test:custom_block" has the property "block:test" equal to 0, this will always return false regardless of whether it is true.
In the second test I ran getAllProperties() to make sure I wasn't misspelling the name 'block:test':
world.sendMessage(`${permutation.matches('test:custom_block', permutation.getAllProperties() )}`)
but it always returns false.
In the third test I decided to do it with a vanilla block, in this case with a stone slab:
world.sendMessage(`${permutation.matches('minecraft:stone_slab', { stone_slab_type: 'stone_brick', top_slot_bit: false })}`)
When doing so, it returned true if it was compared correctly, that is, it works correctly with vanilla blocks.
In the fourth test I decided to use setPermutation(withProperty()) to change the property of the custom block:
block.setPermutation(block.permutation.withProperty('block:test', 1 ))
This will always give an error in the content log history:
[Scripting][error] -Error: Failed to set property 'block:test' on block 'test:custom_block'
I also did the test with the stone slab and it works correctly.
All of this makes me suspect that it doesn't support properties with namespaces.
Thank you for your report!
However, this issue has been temporarily closed as Awaiting Response.
To make your bug report as effective as possible, please try and include the following steps to reproduce the problem:
This ticket will automatically reopen when you reply.
Quick Links:
📓 Issue Guidelines – 💬 Mojang Support – 📓 Project Summary – 📧 Suggestions – 📖 Minecraft Wiki