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) {
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) {
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
*/
public void findFreePosition(LocalWorld world, Vector searchPos) {
public void findFreePosition(WorldVector searchPos) {
LocalWorld world = searchPos.getWorld();
int x = searchPos.getBlockX();
int y = Math.max(0, searchPos.getBlockY());
int origY = y;
@ -108,7 +109,7 @@ public abstract class LocalPlayer {
* that free position.
*/
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) {
return x >= min.getX() && x <= max.getX()
&& y >= min.getY() && z <= max.getY()
&& z >= min.getZ() && z <= max.getY();
&& y >= min.getY() && y <= max.getY()
&& z >= min.getZ() && z <= max.getZ();
}
/**

View File

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