mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-12 00:39:45 +00:00
Allow injecting arbitrary preimage block for ore generation
this will be useful for nether ore generation.
This commit is contained in:
parent
b725fcbdf2
commit
aa682a865e
@ -73,15 +73,16 @@ class Flat extends Generator{
|
||||
|
||||
if(isset($this->options["decoration"])){
|
||||
$ores = new Ore();
|
||||
$stone = VanillaBlocks::STONE();
|
||||
$ores->setOreTypes([
|
||||
new OreType(VanillaBlocks::COAL_ORE(), 20, 16, 0, 128),
|
||||
new OreType(VanillaBlocks::IRON_ORE(), 20, 8, 0, 64),
|
||||
new OreType(VanillaBlocks::REDSTONE_ORE(), 8, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::LAPIS_LAZULI_ORE(), 1, 6, 0, 32),
|
||||
new OreType(VanillaBlocks::GOLD_ORE(), 2, 8, 0, 32),
|
||||
new OreType(VanillaBlocks::DIAMOND_ORE(), 1, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::DIRT(), 20, 32, 0, 128),
|
||||
new OreType(VanillaBlocks::GRAVEL(), 10, 16, 0, 128)
|
||||
new OreType(VanillaBlocks::COAL_ORE(), $stone, 20, 16, 0, 128),
|
||||
new OreType(VanillaBlocks::IRON_ORE(), $stone, 20, 8, 0, 64),
|
||||
new OreType(VanillaBlocks::REDSTONE_ORE(), $stone, 8, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::LAPIS_LAZULI_ORE(), $stone, 1, 6, 0, 32),
|
||||
new OreType(VanillaBlocks::GOLD_ORE(), $stone, 2, 8, 0, 32),
|
||||
new OreType(VanillaBlocks::DIAMOND_ORE(), $stone, 1, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::DIRT(), $stone, 20, 32, 0, 128),
|
||||
new OreType(VanillaBlocks::GRAVEL(), $stone, 10, 16, 0, 128)
|
||||
]);
|
||||
$this->populators[] = $ores;
|
||||
}
|
||||
|
@ -116,15 +116,16 @@ class Normal extends Generator{
|
||||
$this->generationPopulators[] = $cover;
|
||||
|
||||
$ores = new Ore();
|
||||
$stone = VanillaBlocks::STONE();
|
||||
$ores->setOreTypes([
|
||||
new OreType(VanillaBlocks::COAL_ORE(), 20, 16, 0, 128),
|
||||
new OreType(VanillaBlocks::IRON_ORE(), 20, 8, 0, 64),
|
||||
new OreType(VanillaBlocks::REDSTONE_ORE(), 8, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::LAPIS_LAZULI_ORE(), 1, 6, 0, 32),
|
||||
new OreType(VanillaBlocks::GOLD_ORE(), 2, 8, 0, 32),
|
||||
new OreType(VanillaBlocks::DIAMOND_ORE(), 1, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::DIRT(), 20, 32, 0, 128),
|
||||
new OreType(VanillaBlocks::GRAVEL(), 10, 16, 0, 128)
|
||||
new OreType(VanillaBlocks::COAL_ORE(), $stone, 20, 16, 0, 128),
|
||||
new OreType(VanillaBlocks::IRON_ORE(), $stone, 20, 8, 0, 64),
|
||||
new OreType(VanillaBlocks::REDSTONE_ORE(), $stone, 8, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::LAPIS_LAZULI_ORE(), $stone, 1, 6, 0, 32),
|
||||
new OreType(VanillaBlocks::GOLD_ORE(), $stone, 2, 8, 0, 32),
|
||||
new OreType(VanillaBlocks::DIAMOND_ORE(), $stone, 1, 7, 0, 16),
|
||||
new OreType(VanillaBlocks::DIRT(), $stone, 20, 32, 0, 128),
|
||||
new OreType(VanillaBlocks::GRAVEL(), $stone, 10, 16, 0, 128)
|
||||
]);
|
||||
$this->populators[] = $ores;
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\world\generator\object;
|
||||
|
||||
use pocketmine\block\BlockLegacyIds;
|
||||
use pocketmine\math\VectorMath;
|
||||
use pocketmine\utils\Random;
|
||||
use pocketmine\world\ChunkManager;
|
||||
@ -46,7 +45,7 @@ class Ore{
|
||||
}
|
||||
|
||||
public function canPlaceObject(ChunkManager $world, int $x, int $y, int $z) : bool{
|
||||
return $world->getBlockAt($x, $y, $z)->getId() === BlockLegacyIds::STONE;
|
||||
return $world->getBlockAt($x, $y, $z)->isSameType($this->type->replaces);
|
||||
}
|
||||
|
||||
public function placeObject(ChunkManager $world, int $x, int $y, int $z) : void{
|
||||
@ -86,7 +85,7 @@ class Ore{
|
||||
$sizeZ = ($zz + 0.5 - $seedZ) / $size;
|
||||
$sizeZ *= $sizeZ;
|
||||
|
||||
if(($sizeX + $sizeY + $sizeZ) < 1 and $world->getBlockAt($xx, $yy, $zz)->getId() === BlockLegacyIds::STONE){
|
||||
if(($sizeX + $sizeY + $sizeZ) < 1 and $world->getBlockAt($xx, $yy, $zz)->isSameType($this->type->replaces)){
|
||||
$world->setBlockAt($xx, $yy, $zz, $this->type->material);
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ use pocketmine\block\Block;
|
||||
class OreType{
|
||||
/** @var Block */
|
||||
public $material;
|
||||
/** @var Block */
|
||||
public $replaces;
|
||||
/** @var int */
|
||||
public $clusterCount;
|
||||
/** @var int */
|
||||
@ -37,8 +39,9 @@ class OreType{
|
||||
/** @var int */
|
||||
public $minHeight;
|
||||
|
||||
public function __construct(Block $material, int $clusterCount, int $clusterSize, int $minHeight, int $maxHeight){
|
||||
public function __construct(Block $material, Block $replaces, int $clusterCount, int $clusterSize, int $minHeight, int $maxHeight){
|
||||
$this->material = $material;
|
||||
$this->replaces = $replaces;
|
||||
$this->clusterCount = $clusterCount;
|
||||
$this->clusterSize = $clusterSize;
|
||||
$this->maxHeight = $maxHeight;
|
||||
|
Loading…
x
Reference in New Issue
Block a user