From fb2bcdb722dc27d4aea4e7f043422c5d18ddfa43 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sat, 7 Sep 2013 12:04:49 +0200 Subject: [PATCH] Level::getSafeSpawn() look for solid block --- src/world/Level.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/world/Level.php b/src/world/Level.php index 5d0bc6095..1d8605c16 100644 --- a/src/world/Level.php +++ b/src/world/Level.php @@ -415,11 +415,20 @@ 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){ + public function getSafeSpawn($spawn = false){ + if($spawn === false){ + $spawn = $this->getSpawn(); + } + if($spawn instanceof Vector3){ $x = (int) round($spawn->x); $y = (int) round($spawn->y); $z = (int) round($spawn->z); + for(; $y > 0; --$y){ + $v = new Vector3($x, $y, $z); + if(!($this->getBlock($v->getSide(0)) instanceof AirBlock)){ + break; + } + } for(; $y < 128; ++$y){ $v = new Vector3($x, $y, $z); if($this->getBlock($v->getSide(1)) instanceof AirBlock){