Ore Generation

This commit is contained in:
Shoghi Cervantes
2013-06-10 17:11:04 +02:00
parent 808f5473d0
commit 579175b3bc
12 changed files with 386 additions and 50 deletions

View File

@ -0,0 +1,41 @@
<?php
/*
-
/ \
/ \
/ PocketMine \
/ MP \
|\ @shoghicp /|
|. \ / .|
| .. \ / .. |
| .. | .. |
| .. | .. |
\ | /
\ | /
\ | /
\ | /
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
*/
class MineshaftPopulator extends Populator{
private static $DISTANCE = 256;
private static $VARIATION = 16;
private static $ODD = 3;
private static $BASE_Y = 35;
private static $RAND_Y = 11;
public function populate(Level $level, $chunkX, $chunkZ, Random $random){
if($random->nextRange(0, MineshaftPopulator::$ODD) === 0){
//$mineshaft = new Mineshaft($random);
}
}
}

View File

@ -0,0 +1,49 @@
<?php
/*
-
/ \
/ \
/ PocketMine \
/ MP \
|\ @shoghicp /|
|. \ / .|
| .. \ / .. |
| .. | .. |
| .. | .. |
\ | /
\ | /
\ | /
\ | /
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
*/
class OrePopulator extends Populator{
private $oreTypes = array();
public function populate(Level $level, $chunkX, $chunkZ, Random $random){
foreach($this->oreTypes as $type){
$ore = new OreObject($random, $type);
for($i = 0; $i < $ore->type->clusterCount; ++$i){
$v = new Vector3(
$random->nextRange($chunkX << 4, ($chunkX << 4) + 16),
$random->nextRange($ore->type->minHeight, $ore->type->maxHeight),
$random->nextRange($chunkZ << 4, ($chunkZ << 4) + 16)
);
if($ore->canPlaceObject($level, $v)){
$ore->placeObject($level, $v);
}
}
}
}
public function setOreTypes(array $types){
$this->oreTypes = $types;
}
}

View File

@ -0,0 +1,57 @@
<?php
/*
-
/ \
/ \
/ PocketMine \
/ MP \
|\ @shoghicp /|
|. \ / .|
| .. \ / .. |
| .. | .. |
| .. | .. |
\ | /
\ | /
\ | /
\ | /
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
*/
class PondPopulator extends Populator{
private $waterOdd = 4;
private $lavaOdd = 4;
private $lavaSurfaceOdd = 4;
public function populate(Level $level, $chunkX, $chunkZ, Random $random){
if($random->nextRange(0, $this->waterOdd) === 0){
$v = new Vector3(
$random->nextRange($chunkX << 4, ($chunkX << 4) + 16),
$random->nextRange(0, 128),
$random->nextRange($chunkZ << 4, ($chunkZ << 4) + 16),
);
$pond = new PondObject($random, new WaterBlock());
if($pond->canPlaceObject($level, $v)){
$pond->placeObject($level, $v);
}
}
}
public function setWaterOdd($waterOdd){
$this->waterOdd = $waterOdd;
}
public function setLavaOdd($lavaOdd){
$this->lavaOdd = $lavaOdd;
}
public function setLavaSurfaceOdd($lavaSurfaceOdd){
$this->lavaSurfaceOdd = $lavaSurfaceOdd;
}
}