From edcccfce5fa1cc52b4fff622a0faf263f48d019e Mon Sep 17 00:00:00 2001 From: TomyLobo Date: Sun, 12 Aug 2012 15:43:16 +0200 Subject: [PATCH] Made findFreePosition and setOnGround respect half-blocks and such. --- src/main/java/com/sk89q/worldedit/LocalPlayer.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/LocalPlayer.java b/src/main/java/com/sk89q/worldedit/LocalPlayer.java index 6edf837bf..783b85196 100644 --- a/src/main/java/com/sk89q/worldedit/LocalPlayer.java +++ b/src/main/java/com/sk89q/worldedit/LocalPlayer.java @@ -86,7 +86,10 @@ public abstract class LocalPlayer { if (free == 2) { if (y - 1 != origY) { - setPosition(new Vector(x + 0.5, y - 1, z + 0.5)); + final Vector pos = new Vector(x, y - 2, z); + final int id = world.getBlockType(pos); + final int data = world.getBlockData(pos); + setPosition(new Vector(x + 0.5, y - 2 + BlockType.centralTopLimit(id, data), z + 0.5)); } return; @@ -108,8 +111,11 @@ public abstract class LocalPlayer { int z = searchPos.getBlockZ(); while (y >= 0) { - if (!BlockType.canPassThrough(world.getBlockType(new Vector(x, y, z)))) { - setPosition(new Vector(x + 0.5, y + 1, z + 0.5)); + final Vector pos = new Vector(x, y, z); + final int id = world.getBlockType(pos); + if (!BlockType.canPassThrough(id)) { + final int data = world.getBlockData(pos); + setPosition(new Vector(x + 0.5, y + BlockType.centralTopLimit(id, data), z + 0.5)); return; }