Implemented Level::getSafeSpawn()

This commit is contained in:
Shoghi Cervantes
2013-08-27 00:22:06 +02:00
parent 4a05f04a00
commit 9e337e21d2
5 changed files with 26 additions and 6 deletions

View File

@ -421,6 +421,26 @@ class Level{
return new Position($this->level->getData("spawnX"), $this->level->getData("spawnY"), $this->level->getData("spawnZ"), $this);
}
public function getSafeSpawn(){
if(($spawn = $this->getSpawn()) !== false){
$x = (int) round($spawn->x);
$y = (int) round($spawn->y);
$z = (int) round($spawn->z);
for(; $y < 128; ++$y){
$v = new Vector3($x, $y, $z);
if($this->getBlock($v->getSide(1)) instanceof AirBlock){
if($this->getBlock($v) instanceof AirBlock){
return new Position($x, $y, $z, $this);
}
}else{
++$y;
}
}
return new Position($x, $y, $z, $this);
}
return false;
}
public function setSpawn(Vector3 $pos){
if(!isset($this->level)){
return false;