From ebf5b97451828c227ee341e31412c00a4eb11fc2 Mon Sep 17 00:00:00 2001 From: sk89q Date: Tue, 19 Oct 2010 20:33:50 -0700 Subject: [PATCH] Made /thru work better. --- src/SMWorldEditPlayer.java | 22 +++++++++++++--------- src/WorldEdit.java | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/SMWorldEditPlayer.java b/src/SMWorldEditPlayer.java index 7e919c1fa..7c1c4f586 100644 --- a/src/SMWorldEditPlayer.java +++ b/src/SMWorldEditPlayer.java @@ -86,26 +86,30 @@ public class SMWorldEditPlayer extends WorldEditPlayer { * @return whether the player was pass through */ public boolean passThroughForwardWall(int range) { - int free = 0; - int spots = 0; + boolean foundNext = false; + int searchDist = 0; HitBlox hitBlox = new HitBlox(player, range, 0.2); Block block; - free = hitBlox.getLastBlock().getType() == 0 ? 1 : 0; while ((block = hitBlox.getNextBlock()) != null) { + searchDist++; + + if (searchDist > 20) { + return false; + } + if (block.getType() == 0) { - free++; - if (spots >= 1) { - Vector v = new Vector(block.getX(), block.getY() + 1, block.getZ()); + if (foundNext) { + Vector v = new Vector(block.getX(), block.getY() - 1, block.getZ()); + if (server.getBlockType(v) == 0) { - setPosition(v.subtract(0, 1, 0)); + setPosition(v.add(0.5, 0, 0.5)); return true; } } } else { - free = 0; - spots++; + foundNext = true; } } diff --git a/src/WorldEdit.java b/src/WorldEdit.java index 522fb0c95..9468c0c50 100644 --- a/src/WorldEdit.java +++ b/src/WorldEdit.java @@ -329,7 +329,7 @@ public class WorldEdit { // Go through a wall } else if (split[0].equalsIgnoreCase("/thru")) { checkArgs(split, 0, 0, split[0]); - if (player.passThroughForwardWall(300)) { + if (player.passThroughForwardWall(6)) { player.print("Whoosh!"); } else { player.printError("No free spot ahead of you found.");