This is a bukkit bug, I will probably issue this to the bug tracker here. In the mean time, if (p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() != Material.AIR) does not register when you are on the edge of the block. it registers when you are standing on the actual pixels of the block, so standing on the far edge of the block doesn't register it. Any workarounds? I really need a better way. You mean, as expected? Since the player location is over air, of course it would return air. A player can stand over a total of 4 blocks at a time. Scan the blocks that a player can stand on, and take the one that the player location is closest to and is not air. Necrodoom What? Could you rephrase your solution please? I will not scan for every block in the game if that's what you're implying. EDIT by Moderator: merged posts, please use the edit button instead of double posting.