Fixing namespaces issues with Tesseract.

This commit is contained in:
Ad5001 2017-05-01 12:03:56 +02:00
parent 2d6bb2c679
commit c9864edd99
13 changed files with 96 additions and 79 deletions

View File

@ -245,4 +245,12 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
LootTable::fillChest($inv->getInventory(), $event->getBlock()); LootTable::fillChest($inv->getInventory(), $event->getBlock());
$event->setCancelled(); $event->setCancelled();
} }
/*
* Check if it's a Tesseract like namespace
* @return bool
*/
public static function isOtherNS() {
return @class_exists("pocketmine\\level\\generator\\normal\\object\\OakTree");
}
} }

View File

@ -10,7 +10,6 @@ namespace Ad5001\BetterGen\biome;
use pocketmine\level\generator\normal\biome\ForestBiome; use pocketmine\level\generator\normal\biome\ForestBiome;
use pocketmine\level\generator\biome\Biome; use pocketmine\level\generator\biome\Biome;
use pocketmine\level\generator\populator\TallGrass;
use Ad5001\BetterGen\Main; use Ad5001\BetterGen\Main;
use Ad5001\BetterGen\populator\TreePopulator; use Ad5001\BetterGen\populator\TreePopulator;
use Ad5001\BetterGen\populator\BushPopulator; use Ad5001\BetterGen\populator\BushPopulator;
@ -39,7 +38,7 @@ class BetterForest extends ForestBiome implements Mountainable {
$trees->setBaseAmount((null !== @constant(TreePopulator::$types [$type] . "::maxPerChunk" )) ? constant(TreePopulator::$types [$type] . "::maxPerChunk" ) : 5); $trees->setBaseAmount((null !== @constant(TreePopulator::$types [$type] . "::maxPerChunk" )) ? constant(TreePopulator::$types [$type] . "::maxPerChunk" ) : 5);
$this->addPopulator($trees); $this->addPopulator($trees);
$tallGrass = new TallGrass (); $tallGrass = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\TallGrass () : new \pocketmine\level\generator\populator\TallGrass();
$tallGrass->setBaseAmount(3); $tallGrass->setBaseAmount(3);
$this->addPopulator($tallGrass); $this->addPopulator($tallGrass);

View File

@ -12,8 +12,8 @@ namespace Ad5001\BetterGen\biome;
use pocketmine\level\generator\normal\biome\SnowyBiome; use pocketmine\level\generator\normal\biome\SnowyBiome;
use pocketmine\level\generator\biome\Biome; use pocketmine\level\generator\biome\Biome;
use pocketmine\block\Block; use pocketmine\block\Block;
use pocketmine\level\generator\populator\TallGrass;
use Ad5001\BetterGen\populator\IglooPopulator; use Ad5001\BetterGen\populator\IglooPopulator;
use Ad5001\BetterGen\Main;
class BetterIcePlains extends SnowyBiome implements Mountainable { class BetterIcePlains extends SnowyBiome implements Mountainable {
public function __construct() { public function __construct() {
@ -26,8 +26,8 @@ class BetterIcePlains extends SnowyBiome implements Mountainable {
Block::get(Block::DIRT, 0 ) Block::get(Block::DIRT, 0 )
]); ]);
$this->addPopulator(new IglooPopulator ()); $this->addPopulator(new IglooPopulator ());
$tallGrass = new TallGrass (); $tallGrass = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\TallGrass() : new \pocketmine\level\generator\populator\TallGrass();
$tallGrass->setBaseAmount(3); $tallGrass->setBaseAmount(3);
$this->addPopulator($tallGrass); $this->addPopulator($tallGrass);

View File

@ -15,6 +15,7 @@ use pocketmine\level\generator\object\OreType;
use pocketmine\level\generator\biome\Biome; use pocketmine\level\generator\biome\Biome;
use pocketmine\block\Block; use pocketmine\block\Block;
use pocketmine\block\GoldOre; use pocketmine\block\GoldOre;
use Ad5001\BetterGen\Main;
use Ad5001\BetterGen\populator\TreePopulator; use Ad5001\BetterGen\populator\TreePopulator;
use Ad5001\BetterGen\populator\CactusPopulator; use Ad5001\BetterGen\populator\CactusPopulator;
use Ad5001\BetterGen\populator\DeadbushPopulator; use Ad5001\BetterGen\populator\DeadbushPopulator;
@ -37,10 +38,10 @@ class BetterMesa extends SandyBiome {
$sugarCane = new TreePopulator (); $sugarCane = new TreePopulator ();
$sugarCane->setRandomAmount(2); $sugarCane->setRandomAmount(2);
$sugarCane->setBaseAmount(0); $sugarCane->setBaseAmount(0);
$ores = new Ore (); $ores = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\Ore() : new \pocketmine\level\generator\populator\Ore();
$ores->setOreTypes([ $ores->setOreTypes([
new OreType(new GoldOre (), 2, 8, 0, 32 ) Main::isOtherNS() ? new \pocketmine\level\generator\normal\object\OreType(new GoldOre (), 2, 8, 0, 32 ) : new \pocketmine\level\generator\object\OreType(new GoldOre (), 2, 8, 0, 32 )
]); ]);
$this->addPopulator($cactus); $this->addPopulator($cactus);

View File

@ -9,7 +9,6 @@
namespace Ad5001\BetterGen\biome; namespace Ad5001\BetterGen\biome;
use pocketmine\level\generator\normal\biome\SandyBiome; use pocketmine\level\generator\normal\biome\SandyBiome;
use pocketmine\level\generator\populator\Ore;
use pocketmine\level\generator\object\OreType; use pocketmine\level\generator\object\OreType;
use pocketmine\level\generator\biome\Biome; use pocketmine\level\generator\biome\Biome;
use pocketmine\block\Block; use pocketmine\block\Block;
@ -17,6 +16,7 @@ use pocketmine\block\GoldOre;
use Ad5001\BetterGen\populator\CactusPopulator; use Ad5001\BetterGen\populator\CactusPopulator;
use Ad5001\BetterGen\populator\DeadbushPopulator; use Ad5001\BetterGen\populator\DeadbushPopulator;
use Ad5001\BetterGen\populator\SugarCanePopulator; use Ad5001\BetterGen\populator\SugarCanePopulator;
use Ad5001\BetterGen\Main;
class BetterMesaPlains extends SandyBiome { class BetterMesaPlains extends SandyBiome {
public function __construct() { public function __construct() {
@ -31,10 +31,10 @@ class BetterMesaPlains extends SandyBiome {
$sugarCane = new SugarCanePopulator (); $sugarCane = new SugarCanePopulator ();
$sugarCane->setRandomAmount(20); $sugarCane->setRandomAmount(20);
$sugarCane->setBaseAmount(3); $sugarCane->setBaseAmount(3);
$ores = new Ore (); $ores = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\Ore() : new \pocketmine\level\generator\populator\Ore();
$ores->setOreTypes([ $ores->setOreTypes([
new OreType(new GoldOre (), 20, 8, 0, 32 ) Main::isOtherNS() ? new \pocketmine\level\generator\normal\object\OreType(new GoldOre (), 2, 8, 0, 32 ) : new \pocketmine\level\generator\object\OreType(new GoldOre (), 2, 8, 0, 32 )
]); ]);
$this->addPopulator($cactus); $this->addPopulator($cactus);

View File

@ -14,7 +14,7 @@ use pocketmine\level\generator\biome\Biome;
use pocketmine\level\generator\Generator; use pocketmine\level\generator\Generator;
use pocketmine\level\generator\noise\Simplex; use pocketmine\level\generator\noise\Simplex;
use pocketmine\level\generator\object\OreType; use pocketmine\level\generator\object\OreType;
use pocketmine\level\generator\populator\GroundCover; use pocketmine\level\generator\normal\object\OreType as OreType2;
use pocketmine\level\generator\populator\Ore; use pocketmine\level\generator\populator\Ore;
use pocketmine\block\Block; use pocketmine\block\Block;
use pocketmine\block\CoalOre; use pocketmine\block\CoalOre;
@ -38,6 +38,7 @@ use Ad5001\BetterGen\populator\RavinePopulator;
use Ad5001\BetterGen\populator\LakePopulator; use Ad5001\BetterGen\populator\LakePopulator;
use Ad5001\BetterGen\populator\MineshaftPopulator; use Ad5001\BetterGen\populator\MineshaftPopulator;
use Ad5001\BetterGen\populator\FloatingIslandPopulator; use Ad5001\BetterGen\populator\FloatingIslandPopulator;
use Ad5001\BetterGen\Main;
class BetterNormal extends Generator { class BetterNormal extends Generator {
const NOT_OVERWRITABLE = [ const NOT_OVERWRITABLE = [
@ -135,7 +136,7 @@ class BetterNormal extends Generator {
$this->selector->recalculate (); $this->selector->recalculate ();
$cover = new GroundCover (); $cover = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\GroundCover() : new \pocketmine\level\generator\populator\GroundCover();
$this->generationPopulators [] = $cover; $this->generationPopulators [] = $cover;
$cave = new CavePopulator (); $cave = new CavePopulator ();
@ -163,8 +164,18 @@ class BetterNormal extends Generator {
$fisl->setRandomAmount(132); $fisl->setRandomAmount(132);
$this->populators [] = $fisl; $this->populators [] = $fisl;
$ores = new Ore (); $ores = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\Ore() : new \pocketmine\level\generator\populator\Ore();
$ores->setOreTypes([ if(Main::isOtherNS()) $ores->setOreTypes([
new OreType2(new CoalOre (), 20, 16, 0, 128 ),
new OreType2(new IronOre (), 20, 8, 0, 64 ),
new OreType2(new RedstoneOre (), 8, 7, 0, 16 ),
new OreType2(new LapisOre (), 1, 6, 0, 32 ),
new OreType2(new GoldOre (), 2, 8, 0, 32 ),
new OreType2(new DiamondOre (), 1, 7, 0, 16 ),
new OreType2(new Dirt (), 20, 32, 0, 128 ),
new OreType2(new Gravel (), 10, 16, 0, 128 )
]);
if(!Main::isOtherNS()) $ores->setOreTypes([
new OreType(new CoalOre (), 20, 16, 0, 128 ), new OreType(new CoalOre (), 20, 16, 0, 128 ),
new OreType(new IronOre (), 20, 8, 0, 64 ), new OreType(new IronOre (), 20, 8, 0, 64 ),
new OreType(new RedstoneOre (), 8, 7, 0, 16 ), new OreType(new RedstoneOre (), 8, 7, 0, 16 ),

View File

@ -44,7 +44,7 @@ class BushPopulator extends AmountPopulator {
if ($y === -1) { if ($y === -1) {
continue; continue;
} }
$tree = new TreePopulator::$types [$this->type] (); $tree = new TreePopulator::$types[$this->type]();
$bush = new Bush($tree->leafBlock, $tree->leafType ?? $tree->type); $bush = new Bush($tree->leafBlock, $tree->leafType ?? $tree->type);
$bush->placeObject($level, $x, $y, $z, $random); $bush->placeObject($level, $x, $y, $z, $random);
} }

View File

@ -17,11 +17,13 @@ use Ad5001\BetterGen\populator\AmountPopulator;
class FallenTreePopulator extends AmountPopulator { class FallenTreePopulator extends AmountPopulator {
protected $level; protected $level;
protected $type;
/* /*
* Constructs the class * Constructs the class
* @param $type int * @param $type int
*/ */
public function __construct() { public function __construct(int $type = 0) {
$this->setBaseAmount(1); $this->setBaseAmount(1);
$this->setRandomAmount(2); $this->setRandomAmount(2);
} }
@ -36,13 +38,13 @@ class FallenTreePopulator extends AmountPopulator {
public function populate(ChunkManager $level, $chunkX, $chunkZ, Random $random) { public function populate(ChunkManager $level, $chunkX, $chunkZ, Random $random) {
$this->level = $level; $this->level = $level;
$amount = $this->getAmount($random); $amount = $this->getAmount($random);
$fallenTree = new FallenTree(); $fallenTree = new FallenTree(new TreePopulator::$types[$this->type]());
for($i = 0; $i < $amount; $i++) { for($i = 0; $i < $amount; $i++) {
$x = $random->nextRange($chunkX * 16, $chunkX * 16 + 15); $x = $random->nextRange($chunkX * 16, $chunkX * 16 + 15);
$z = $random->nextRange($chunkZ * 16, $chunkZ * 16 + 15); $z = $random->nextRange($chunkZ * 16, $chunkZ * 16 + 15);
$y = $this->getHighestWorkableBlock($x, $z); $y = $this->getHighestWorkableBlock($x, $z);
if ($y !== -1 and $fallenTree->canPlaceObject($level, $x, $y, $z, $random )) { if ($y !== -1 and $fallenTree->canPlaceObject($level, $x, $y, $z, $random )) {
$fallenTree->placeObject($level, $x, $y, $z); $fallenTree->placeObject($level, $x, $y, $z, $random);
} }
} }
} }

View File

@ -6,8 +6,8 @@ use pocketmine\level\ChunkManager;
use pocketmine\utils\Random; use pocketmine\utils\Random;
use Ad5001\BetterGen\generator\BetterNormal; use Ad5001\BetterGen\generator\BetterNormal;
use pocketmine\block\Block; use pocketmine\block\Block;
use pocketmine\level\generator\populator\Ore;
use pocketmine\level\generator\object\OreType; use pocketmine\level\generator\object\OreType;
use pocketmine\level\generator\normal\object\OreType as OreType2;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\block\CoalOre; use pocketmine\block\CoalOre;
use pocketmine\block\IronOre; use pocketmine\block\IronOre;
@ -15,6 +15,7 @@ use pocketmine\block\RedstoneOre;
use pocketmine\block\LapisOre; use pocketmine\block\LapisOre;
use pocketmine\block\GoldOre; use pocketmine\block\GoldOre;
use pocketmine\block\DiamondOre; use pocketmine\block\DiamondOre;
use Ad5001\BetterGen\Main;
/* /*
* FloatingIslandPopulator from BetterGen * FloatingIslandPopulator from BetterGen
@ -137,8 +138,16 @@ class FloatingIslandPopulator extends AmountPopulator {
* @return void * @return void
*/ */
public function populateOres(ChunkManager $level, Vector3 $pos, int $width, int $height, Random $random) { public function populateOres(ChunkManager $level, Vector3 $pos, int $width, int $height, Random $random) {
$ores = new Ore (); $ores = Main::isOtherNS() ? new \pocketmine\level\generator\normal\populator\Ore() : new \pocketmine\level\generator\populator\Ore();
$ores->setOreTypes([ if(Main::isOtherNS()) $ores->setOreTypes([
new OreType2(new CoalOre (), 20, 16, $pos->y - $height, $pos->y ),
new OreType2(new IronOre (), 20, 8, $pos->y - $height, $pos->y - round($height * 0.75)),
new OreType2(new RedstoneOre (), 8, 7, $pos->y - $height, $pos->y - round($height / 2)),
new OreType2(new LapisOre (), 1, 6, $pos->y - $height, $pos->y - round($height / 2)),
new OreType2(new GoldOre (), 2, 8, $pos->y - $height, $pos->y - round($height / 2)),
new OreType2(new DiamondOre (), 1, 7, $pos->y - $height, $pos->y - round($height / 4))
]);
if(!Main::isOtherNS()) $ores->setOreTypes([
new OreType(new CoalOre (), 20, 16, $pos->y - $height, $pos->y ), new OreType(new CoalOre (), 20, 16, $pos->y - $height, $pos->y ),
new OreType(new IronOre (), 20, 8, $pos->y - $height, $pos->y - round($height * 0.75)), new OreType(new IronOre (), 20, 8, $pos->y - $height, $pos->y - round($height * 0.75)),
new OreType(new RedstoneOre (), 8, 7, $pos->y - $height, $pos->y - round($height / 2)), new OreType(new RedstoneOre (), 8, 7, $pos->y - $height, $pos->y - round($height / 2)),

View File

@ -14,6 +14,8 @@ use pocketmine\block\Block;
use pocketmine\level\ChunkManager; use pocketmine\level\ChunkManager;
use Ad5001\BetterGen\structure\SakuraTree; use Ad5001\BetterGen\structure\SakuraTree;
use Ad5001\BetterGen\populator\AmountPopulator; use Ad5001\BetterGen\populator\AmountPopulator;
use Ad5001\BetterGen\Main;
class TreePopulator extends AmountPopulator { class TreePopulator extends AmountPopulator {
static $types = [ static $types = [
@ -29,6 +31,13 @@ class TreePopulator extends AmountPopulator {
*/ */
public function __construct($type = 0) { public function __construct($type = 0) {
$this->type = $type; $this->type = $type;
if(Main::isOtherNS()) {
self::$types = [
"pocketmine\\level\\generator\\normal\\object\\OakTree",
"pocketmine\\level\\generator\\normal\\object\\BirchTree",
"Ad5001\\BetterGen\\structure\\SakuraTree"
];
}
} }
/* /*

View File

@ -1,7 +1,7 @@
<?php <?php
/* /*
* Bush from BetterGen * FallenTree from BetterGen
* Copyright (C) Ad5001 2017 * Copyright (C) Ad5001 2017
* Licensed under the BoxOfDevs Public General LICENSE which can be found in the file LICENSE in the root directory * Licensed under the BoxOfDevs Public General LICENSE which can be found in the file LICENSE in the root directory
* @author ad5001 * @author ad5001
@ -14,28 +14,30 @@ use pocketmine\block\Block;
use pocketmine\level\ChunkManager; use pocketmine\level\ChunkManager;
use pocketmine\utils\Random; use pocketmine\utils\Random;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\level\generator\object\Tree;
use pocketmine\level\generator\normal\object\Tree as Tree2;
use pocketmine\level\generator\object\Object; use pocketmine\level\generator\object\Object;
class Bush extends Object { class FallenTree extends Object {
public $overridable = [ public $overridable = [
Block::AIR => true, Block::AIR => true,
17 => true, 17 => true,
Block::SNOW_LAYER => true, Block::SNOW_LAYER => true,
Block::LOG2 => true Block::LOG2 => true
]; ];
protected $trunk; protected $tree;
protected $direction; protected $direction;
/* /*
* Constructs the class * Constructs the class
* @param $trunkId int * @param $tree Tree
* @param $trunkData int * @throws Exeption
*/ */
public function __construct($trunk = Block::WOOD, $trunkData = 0) { public function __construct($tree) {
$this->trunk = [ if(!is_subclass_of($tree, Tree::class) && !is_subclass_of($tree, Tree2::class)) {
$trunkId, throw new Exception("Argument 1 passed to \\Ad5001\\BetterGen\\structure\\FallenTree must be an instance of pocketmine\\level\\generator\\normal\\object\\Tree or pocketmine\\level\\generator\\object\\Tree. Instance of " . get_class($tree) . " given.");
$trunkData }
]; $this->tree = $tree;
} }
/* /*
@ -46,7 +48,19 @@ class Bush extends Object {
* @param $z int * @param $z int
* @param $random pocketmine\utils\Random * @param $random pocketmine\utils\Random
*/ */
public function placeObject(ChunkManager $level, $x, $y, $z, Random $random) { public function canPlaceObject(ChunkManager $level, $x, $y, $z, Random $random) {
$randomHeight = round($random->nextBoundedInt(6) - 3);
$this->length = $this->tree->trunkHeight + $randomHeight;
}
/*
* Places a fallen tree
* @param $level pocketmine\level\ChunkManager
* @param $x int
* @param $y int
* @param $z int
*/
public function placeObject(ChunkManager $level, $x, $y, $z) {
$number = $random->nextBoundedInt(6); $number = $random->nextBoundedInt(6);
$pos = new Vector3($x, $y, $z); $pos = new Vector3($x, $y, $z);
$this->placeLeaf($pos->x, $pos->y, $pos->z, $level); $this->placeLeaf($pos->x, $pos->y, $pos->z, $level);

View File

@ -13,7 +13,12 @@ use pocketmine\block\Block;
use pocketmine\block\Wood; use pocketmine\block\Wood;
use pocketmine\level\ChunkManager; use pocketmine\level\ChunkManager;
use pocketmine\utils\Random; use pocketmine\utils\Random;
use pocketmine\level\generator\object\Tree; use Ad5001\BetterGen\Main;
if(Main::isOtherNS()) {
class_alias("pocketmine\\level\\generator\\normal\\object\\Tree", "Ad5001\\BetterGen\\structure\\Tree");
} else {
class_alias("pocketmine\\level\\generator\\object\\Tree", "Ad5001\\BetterGen\\structure\\Tree");
}
class SakuraTree extends Tree { class SakuraTree extends Tree {
const TRUNK_POS = [ // Checks for trees trunks. Not automaticly generated but there is no point of making more or less const TRUNK_POS = [ // Checks for trees trunks. Not automaticly generated but there is no point of making more or less
@ -427,6 +432,9 @@ class SakuraTree extends Tree {
] ]
]; ];
const maxPerChunk = 2; const maxPerChunk = 2;
public $trunkHeight = 11;
/* /*
* Constructs the class * Constructs the class

View File

@ -1,44 +0,0 @@
<?php
namespace Ad5001\BetterGen\tasks;
use Ad5001\BetterGen\Main;
use Ad5001\BetterGen\loot\LootTable;
use pocketmine\block\Block;
use pocketmine\scheduler\PluginTask;
use pocketmine\level\Position;
use pocketmine\item\Item;
/*
* ChestGenerateTask from BetterGen
* Copyright (C) Ad5001 2017
*
* @author Ad5001
* @link https://en.ad5001.eu
*/
class ChestGenerateTask extends PluginTask {
protected $block;
protected $pos;
protected $item;
/*
* Constructs the class
*/
public function __construct(Main $main, Block $block, Position $pos, Item $item) {
parent::__construct($main);
$this->block = $block;
$this->pos = $pos;
$this->item = $item;
}
/*
* Runs when the delay comes
*/
public function onRun($currentTick) {
$this->block->place($this->item, $this->pos->getLevel()->getBlock($this->pos), $this->block, 0, 0, 0, 0);
$inv = $this->pos->getLevel()->getTile($this->pos);
LootTable::fillChest($inv->getInventory(), $this->pos);
}
}