From fc2e4ddc63873d1049abdd7b50a47d3cf46e27e9 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Wed, 15 Apr 2015 20:47:18 +0200 Subject: [PATCH] Fixed long trunk generation --- src/pocketmine/level/generator/object/SpruceTree.php | 8 +++++--- src/pocketmine/level/generator/object/Tree.php | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/pocketmine/level/generator/object/SpruceTree.php b/src/pocketmine/level/generator/object/SpruceTree.php index 0ec37ede7..b18ac8986 100644 --- a/src/pocketmine/level/generator/object/SpruceTree.php +++ b/src/pocketmine/level/generator/object/SpruceTree.php @@ -54,12 +54,14 @@ class SpruceTree extends Tree{ $xOff = abs($xx - $x); for($zz = $z - $radius; $zz <= $z + $radius; ++$zz){ $zOff = abs($zz - $z); - if(($xOff === 0 and $zOff === 0) or ($xOff === $radius and $zOff === $radius and $radius > 0)){ + if($xOff === $radius and $zOff === $radius and $radius > 0){ continue; } - $level->setBlockIdAt($xx, $yyy, $zz, $this->leafBlock); - $level->setBlockDataAt($xx, $yyy, $zz, $this->type); + if(!Block::$solid[$level->getBlockIdAt($xx, $yyy, $zz)]){ + $level->setBlockIdAt($xx, $yyy, $zz, $this->leafBlock); + $level->setBlockDataAt($xx, $yyy, $zz, $this->type); + } } } diff --git a/src/pocketmine/level/generator/object/Tree.php b/src/pocketmine/level/generator/object/Tree.php index b95069373..e2e6f17c2 100644 --- a/src/pocketmine/level/generator/object/Tree.php +++ b/src/pocketmine/level/generator/object/Tree.php @@ -102,11 +102,13 @@ abstract class Tree{ $xOff = abs($xx - $x); for($zz = $z - $mid; $zz <= $z + $mid; ++$zz){ $zOff = abs($zz - $z); - if(($xOff === 0 and $zOff === 0) or ($xOff === $mid and $zOff === $mid and ($yOff === 0 or $random->nextBoundedInt(2) === 0))){ + if($xOff === $mid and $zOff === $mid and ($yOff === 0 or $random->nextBoundedInt(2) === 0)){ continue; } - $level->setBlockIdAt($xx, $yy, $zz, $this->leafBlock); - $level->setBlockDataAt($xx, $yy, $zz, $this->type); + if(!Block::$solid[$level->getBlockIdAt($xx, $yy, $zz)]){ + $level->setBlockIdAt($xx, $yy, $zz, $this->leafBlock); + $level->setBlockDataAt($xx, $yy, $zz, $this->type); + } } } } @@ -116,7 +118,7 @@ abstract class Tree{ // The base dirt block $level->setBlockIdAt($x, $y - 1, $z, Block::DIRT); - for($yy = 0; $yy <= $trunkHeight; ++$yy){ + for($yy = 0; $yy < $trunkHeight; ++$yy){ $blockId = $level->getBlockIdAt($x, $y + $yy, $z); if(isset($this->overridable[$blockId])){ $level->setBlockIdAt($x, $y + $yy, $z, $this->trunkBlock);