Changed /descend to be a little more accurate, to not drop players from a high distance, and to not drop players into the void.

This commit is contained in:
sk89q 2010-10-16 17:08:56 -07:00
parent ad0bb92c8f
commit 3a940ba936

View File

@ -204,14 +204,14 @@ public abstract class WorldEditPlayer {
* @return true if a spot was found
*/
public boolean descendLevel() {
Vector pos = getPosition();
Vector pos = getBlockIn();
int x = pos.getBlockX();
int y = pos.getBlockY() - 1;
int z = pos.getBlockZ();
byte free = 0;
while (y >= 0) {
while (y >= 1) {
if (server.getBlockType(new Vector(x, y, z)) == 0) {
free++;
} else {
@ -219,7 +219,13 @@ public abstract class WorldEditPlayer {
}
if (free == 2) {
setPosition(new Vector(x + 0.5, y, z + 0.5));
// So we've found a spot, but we have to drop the player
// lightly and also check to see if there's something to
// stand upon
while (y >= 0) {
if (server.getBlockType(new Vector(x, y, z)) != 0) {
// Found a block!
setPosition(new Vector(x + 0.5, y + 1, z + 0.5));
return true;
}
@ -229,6 +235,12 @@ public abstract class WorldEditPlayer {
return false;
}
y--;
}
return false;
}
/**
* Gives the player an item.
*