Steps to reprocude:
1. Place down a repeating command block (unconditional, always active).
2. Paste the current command inside /execute @a ~ ~ ~ detect ~ ~-1 ~ grass 0 say hi
What I expected to happen:
I expected the command to only run when a player is standing on a grass block.
What happens:
The command runs ALWAYS, even if the player isn't on a grass block. After some research I found out that the command block checks the block underneath itself.
Linked issues
is duplicated by 1
Attachments
Comments 18

Confirmed for 1.2.0.18 on Windows 10.
When the repeating command block is running, it is looking for a grass block underneath itself. (Test by adding or removing a grass block underneath)
Confirmed for 1.2.0.18 on Windows 10.
When the repeating command block is running, it is looking for a grass block underneath itself. (Test by adding or removing a grass block underneath)
This seems to be because the initial detect location doesn't respect executor's position, I'm guessing it's because the position is processed first?
Speculating because it works if you add another execute after it
/execute @a ~ ~ ~ execute @s ~ ~ ~ detect ~ ~-1 ~ sand 0 say hi
But if the second execute is missing it checks for the block underneath the command block (as stated in bug report), that's why I think the order might be different in Win10/PE (which I'd consider an issue).