mojira.dev
MC-121690

Not providing block states will make the game test for the defaults, instead of ignore the states

when running a command such as

/execute if block ~ ~ ~ skull run say hi

and standing inside a skull, the command returns false, even though it should return true. (The command doesn't run)

this doesn't just affect execute (if/unless) block, this also affects fill replace.

In general, testing for any block that has block states (without specifying any) will always look for the default state of the block, when really it should ignore states. Therefore, the following two commands are equivalent:
execute if block ~ ~ ~ redstone_wire run say only unpowered redstone wire
execute if block ~ ~ ~ redstone_wire[power=0] run say only unpowered redstone wire

Linked issues

Comments 5

Updated your issue based on information I found. Hope you don't mind! πŸ™‚

"any block with block states will always fail to match in a command argument"

Not true; that wool example will detect white wool just fine. The problem is that, instead of missing blockstates using the default value when setting and accepting any value when testing, they just always use the default value.

Got it, thanks for the clarification. Updated again!

Changed the example, so we don't need to do that later (MC-121742).

Andrew

Nathan Adams

Confirmed

Minecraft 17w45a, Minecraft 17w45b

Minecraft 17w46a

Retrieved