178 $this->random->setSeed(0xdeadbeef ^ ($chunkX << 8) ^ $chunkZ ^ $this->level->getSeed());
186 $chunk = $this->level->getChunk($chunkX, $chunkZ);
188 for($genx = 0; $genx < 16; $genx++){
189 for($genz = 0; $genz < 16; $genz++){
190 $canBaseGround =
false;
195 $landHeightNoise = $landNoise[$genx][$genz] + 1;
196 $landHeightNoise *= 2.956;
197 $landHeightNoise = $landHeightNoise * $landHeightNoise;
198 $landHeightNoise = $landHeightNoise - 0.6;
199 $landHeightNoise = $landHeightNoise > 0 ? $landHeightNoise : 0;
202 $mountainHeightGenerate = $mountainNoise[$genx][$genz] - 0.2;
203 $mountainHeightGenerate = $mountainHeightGenerate > 0 ? $mountainHeightGenerate : 0;
204 $mountainGenerate = (int) ($this->mountainHeight * $mountainHeightGenerate);
206 $landHeightGenerate = (int) ($this->landHeightRange * $landHeightNoise);
207 if($landHeightGenerate > $this->landHeightRange){
208 if($landHeightGenerate > $this->landHeightRange){
209 $canBaseGround =
true;
211 $landHeightGenerate = $this->landHeightRange;
214 $genyHeight = $this->seaFloorHeight + $landHeightGenerate;
215 $genyHeight += $mountainGenerate;
218 if($genyHeight < $this->beathStartHeight){
219 if($genyHeight < $this->beathStartHeight - 5){
220 $genyHeight += (int) ($this->seaFloorGenerateRange * $seaFloorNoise[$genx][$genz]);
223 if($genyHeight < $this->seaFloorHeight - $this->seaFloorGenerateRange){
224 $genyHeight = $this->seaFloorHeight;
227 }
else if($genyHeight <= $this->beathStopHeight && $genyHeight >= $this->beathStartHeight){
230 $biome = $this->
pickBiome($chunkX * 16 + $genx, $chunkZ * 16 + $genz);
232 $baseGroundHeight = (int) ($this->landHeightRange * $landHeightNoise) - $this->landHeightRange;
233 $baseGroundHeight2 = (int) ($this->basegroundHeight * ($baseNoise[$genx][$genz] + 1));
234 if($baseGroundHeight2 > $baseGroundHeight) $baseGroundHeight2 = $baseGroundHeight;
235 if($baseGroundHeight2 > $mountainGenerate)
236 $baseGroundHeight2 = $baseGroundHeight2 - $mountainGenerate;
237 else $baseGroundHeight2 = 0;
238 $genyHeight += $baseGroundHeight2;
241 if($canRiver && $genyHeight <= $this->seaHeight - 5){
246 $riverGenerate = $riverNoise[$genx][$genz];
247 if($riverGenerate > -0.25 && $riverGenerate < 0.25){
248 $riverGenerate = $riverGenerate > 0 ? $riverGenerate : -$riverGenerate;
249 $riverGenerate = 0.25 - $riverGenerate;
251 $riverGenerate = $riverGenerate * $riverGenerate * 4;
253 $riverGenerate = $riverGenerate - 0.0000001;
254 $riverGenerate = $riverGenerate > 0 ? $riverGenerate : 0;
255 $genyHeight -= $riverGenerate * 64;
256 if($genyHeight < $this->seaHeight){
259 if($genyHeight <= $this->seaHeight - 8){
260 $genyHeight1 = $this->seaHeight - 9 + (int) ($this->basegroundHeight * ($baseNoise[$genx][$genz] + 1));
261 $genyHeight2 = $genyHeight < $this->seaHeight - 7 ? $this->seaHeight - 7 : $genyHeight;
262 $genyHeight = $genyHeight1 > $genyHeight2 ? $genyHeight1 : $genyHeight2;
267 $chunk->setBiomeId($genx, $genz, $biome->getId());
270 $generateHeight = $genyHeight > $this->seaHeight ? $genyHeight : $this->seaHeight;
271 for($geny = 0; $geny <= $generateHeight; $geny++){
272 if($geny <= $this->bedrockDepth && ($geny == 0 or $this->random->nextRange(1, 5) == 1)){
274 }elseif($geny > $genyHeight){
276 $chunk->setBlockId($genx, $geny, $genz,
Block::ICE);
288 foreach($this->generationPopulators as $populator){
289 $populator->populate($this->level, $chunkX, $chunkZ, $this->random);