Fixed HMPlayer.getSolidBlockTrace() and HMPlayer.getBlockTrace() returning null for the world. Changed LocalPlayer.findFreePosition() to take a WorldVector instead.

This commit is contained in:
sk89q 2011-01-09 09:25:24 -08:00
parent 03cf12fcfd
commit d997dbac2b
4 changed files with 8 additions and 7 deletions

View File

@ -71,7 +71,7 @@ public class HMPlayer extends LocalPlayer {
if (block == null) { if (block == null) {
return null; return null;
} }
return new WorldVector(null, block.getX(), block.getY(), block.getZ()); return new WorldVector(world, block.getX(), block.getY(), block.getZ());
} }
/** /**
@ -92,7 +92,7 @@ public class HMPlayer extends LocalPlayer {
if (block == null) { if (block == null) {
return null; return null;
} }
return new WorldVector(null, block.getX(), block.getY(), block.getZ()); return new WorldVector(world, block.getX(), block.getY(), block.getZ());
} }
/** /**

View File

@ -74,7 +74,8 @@ public abstract class LocalPlayer {
* *
* @param searchPos search position * @param searchPos search position
*/ */
public void findFreePosition(LocalWorld world, Vector searchPos) { public void findFreePosition(WorldVector searchPos) {
LocalWorld world = searchPos.getWorld();
int x = searchPos.getBlockX(); int x = searchPos.getBlockX();
int y = Math.max(0, searchPos.getBlockY()); int y = Math.max(0, searchPos.getBlockY());
int origY = y; int origY = y;
@ -108,7 +109,7 @@ public abstract class LocalPlayer {
* that free position. * that free position.
*/ */
public void findFreePosition() { public void findFreePosition() {
findFreePosition(getPosition().getWorld(), getBlockIn()); findFreePosition(getBlockIn());
} }
/** /**

View File

@ -467,8 +467,8 @@ public class Vector {
*/ */
public boolean containedWithin(Vector min, Vector max) { public boolean containedWithin(Vector min, Vector max) {
return x >= min.getX() && x <= max.getX() return x >= min.getX() && x <= max.getX()
&& y >= min.getY() && z <= max.getY() && y >= min.getY() && y <= max.getY()
&& z >= min.getZ() && z <= max.getY(); && z >= min.getZ() && z <= max.getZ();
} }
/** /**

View File

@ -467,7 +467,7 @@ public class WorldEditController {
checkArgs(split, 0, 0, split[0]); checkArgs(split, 0, 0, split[0]);
WorldVector pos = player.getSolidBlockTrace(300); WorldVector pos = player.getSolidBlockTrace(300);
if (pos != null) { if (pos != null) {
player.findFreePosition(pos.getWorld(), pos); player.findFreePosition(pos);
player.print("Poof!"); player.print("Poof!");
} else { } else {
player.printError("No block in sight!"); player.printError("No block in sight!");