diff --git a/classes/API/LevelAPI.php b/classes/API/LevelAPI.php index 43f213ea4..1a82a7067 100644 --- a/classes/API/LevelAPI.php +++ b/classes/API/LevelAPI.php @@ -68,7 +68,9 @@ class LevelAPI{ } private function check(){ - if($this->active === false and $this->server->map === false){ + if($this->active === true){ + return true; + }elseif($this->active === false and $this->server->map === false){ return false; } $this->active = true; @@ -89,6 +91,13 @@ class LevelAPI{ return array(0,0); } + public function getFloor($x, $z){ + if($this->check()){ + return $this->map->getFloor($x, $z); + } + return 0; + } + public function setBlock($x, $y, $z, $block, $meta = 0){ if($this->check()){ $this->map->setBlock($x, $y, $z, $block, $meta); diff --git a/classes/ChunkParser.class.php b/classes/ChunkParser.class.php index eb0e088f0..e6ef36e71 100644 --- a/classes/ChunkParser.class.php +++ b/classes/ChunkParser.class.php @@ -154,6 +154,20 @@ class ChunkParser{ fclose($fp); } + public function getFloor($x, $z){ + $X = $x >> 4; + $Z = $z >> 4; + $aX = $x - ($X << 4); + $aZ = $z - ($Z << 4); + $index = $aZ + ($aX << 4); + for($y = 127; $y <= 0; --$y){ + if($this->map[$X][$Z][0][$index]{$y} !== "\x00"){ + break; + } + } + return $y; + } + public function getBlock($x, $y, $z){ $x = (int) $x; $y = (int) $y;