diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bc8a670
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.idea/*
\ No newline at end of file
diff --git a/README.md b/README.md
index bb31282..3bf6db7 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,10 @@
PocketMine's Tomorrow's World Generator.
Welcome user to the home of a new PocketMine World Generator which features 9 new/modified biomes:
+
------
-# Commun:
-### Commun structures to all biomes features:
+# Common:
+### Common structures to all biomes features:
1. Mineshafts:
2. Ravines:
@@ -12,8 +13,6 @@ Welcome user to the home of a new PocketMine World Generator which features 9 ne
4. Floating islands:
-
-
-----
# [NEW BIOME] Sakura forests:
@@ -23,7 +22,7 @@ Welcome user to the home of a new PocketMine World Generator which features 9 ne
-----
# [NEW BIOMES] Mesa Mountains & Plains
-### These biomes are inspired (but not completly taken) from Minecraft PC.
+### These biomes are inspired (but not completely taken) from Minecraft PC.
@@ -31,13 +30,13 @@ Welcome user to the home of a new PocketMine World Generator which features 9 ne
# Better Desert:
### The desert has been reworked and now includes the Minecraft PC's temples and wells !
-### Additionaly, deadbush, sugar cane and cactus are here too !
+### Additionally, deadbush, sugar cane and cactus are here too !
-----
# Better Ice Plains
-### Ice plains got redisigned ! There is now snow instead of grass at it's bottom ! On the plus side, Igloos were imported from Minecraft PC !
+### Ice plains got redesigned ! There is now snow instead of grass at it's bottom ! On the plus side, Igloos were imported from Minecraft PC !
diff --git a/plugin.yml b/plugin.yml
index aef0c4d..03e96c0 100644
--- a/plugin.yml
+++ b/plugin.yml
@@ -6,7 +6,7 @@
# \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
# \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
# \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
-# Tommorow's pocketmine generator.
+# Tomorrow's pocketmine generator.
# @author Ad5001
# @link https://github.com/Ad5001/BetterGen
name: BetterGen
@@ -24,9 +24,15 @@ commands:
description: Teleports you to an another world
usage: "/worldtp "
permission: bettergen.cmd.worldtp
+ temple:
+ description: Spawns a temple for debugging
+ usage: "/temple"
+ permission: bettergen.cmd.debug
permissions:
bettergen.cmd.createworld:
default: op
bettergen.cmd.worldtp:
default: op
+ bettergen.cmd.debug:
+ default: op
...
\ No newline at end of file
diff --git a/processingLoots.json b/processingLoots.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/processingLoots.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/resources/loots/mineshaft.json b/resources/loots/mineshaft.json
index 4d65d11..9f326e5 100644
--- a/resources/loots/mineshaft.json
+++ b/resources/loots/mineshaft.json
@@ -45,7 +45,7 @@
"id": 263,
"data": 0
},
- "beethroot seeds": {
+ "beetroot seeds": {
"percentage": 32,
"minCount": 2,
"maxCount": 4,
diff --git a/src/Ad5001/BetterGen/Main.php b/src/Ad5001/BetterGen/Main.php
index 066499f..e3c2980 100644
--- a/src/Ad5001/BetterGen/Main.php
+++ b/src/Ad5001/BetterGen/Main.php
@@ -1,62 +1,69 @@
getServer()->getPluginManager()->registerEvents($this, $this);
- Generator::addGenerator(BetterNormal::class, "betternormal");
- if($this->isOtherNS()) $this->getLogger()->warning("Tesseract detected. Note that some parts of the generator could not work properly");
- @mkdir($this->getDataFolder());
- if(! file_exists(LootTable::getPluginFolder(). "processingLoots.json"))
- file_put_contents(LootTable::getPluginFolder(). "processingLoots.json", "{}");
+
+ public static function registerBiome(int $id, Biome $biome) {
+ BetterNormal::registerBiome($biome);
}
-
+
/*
* Called when the plugin disables
*/
- public function onDisable() {
+
+ public function onEnable() {
+ $this->getServer()->getPluginManager()->registerEvents($this, $this);
+ Generator::addGenerator(BetterNormal::class, "betternormal");
+ if ($this->isOtherNS()) $this->getLogger()->warning("Tesseract detected. Note that Tesseract is not up to date with the generation structure and some generation features may be limited or not working");
+ @mkdir($this->getDataFolder());
+ if (!file_exists(LootTable::getPluginFolder() . "processingLoots.json"))
+ file_put_contents(LootTable::getPluginFolder() . "processingLoots.json", "{}");
}
-
+
/*
* Called when one of the defined commands of the plugin has been called
* @param $sender \pocketmine\command\CommandSender
@@ -65,10 +72,37 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
* @param $args array
* return bool
*/
- public function onCommand(\pocketmine\command\CommandSender $sender, \pocketmine\command\Command $cmd, $label, array $args): bool {
- switch($cmd->getName()) {
- case "createworld" : // /createworld [generator = betternormal] [seed = rand()] [options(json)]
- switch(count($args)) {
+
+ public static function isOtherNS() {
+ try {
+ return @class_exists("pocketmine\\level\\generator\\normal\\object\\OakTree");
+ } catch (\Exception $e) {
+ return false;
+ }
+ }
+
+ /*
+ * Registers a forest type.
+ * @param $name string
+ * @param $treeClass string
+ * @params $infos Array(temperature, rainfall)
+ * @return bool
+ */
+
+ public function onDisable() {
+ }
+
+ /*
+ * Registers a biome for the normal generator. Normal means(Biome::register) doesn't allow biome to be generated
+ * @param $id int
+ * @param $biome Biome
+ * @return void
+ */
+
+ public function onCommand(CommandSender $sender, Command $cmd, $label, array $args): bool {
+ switch ($cmd->getName()) {
+ case "createworld": // /createworld [generator = betternormal] [seed = rand()] [options(json)]
+ switch (count($args)) {
case 0 :
return false;
break;
@@ -77,50 +111,50 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
$generator = Generator::getGenerator("betternormal");
$generatorName = "betternormal";
$seed = $this->generateRandomSeed();
- $options = [ ];
+ $options = [];
break;
case 2 : // /createworld [generator = betternormal]
$name = $args [0];
$generator = Generator::getGenerator($args [1]);
- if(Generator::getGeneratorName($generator) !== strtolower($args [1])) {
+ if (Generator::getGeneratorName($generator) !== strtolower($args [1])) {
$sender->sendMessage(self::PREFIX . "§4Could not find generator {$args[1]}. Are you sure it is registered?");
return true;
}
$generatorName = strtolower($args [1]);
$seed = $this->generateRandomSeed();
- $options = [ ];
+ $options = [];
break;
case 3 : // /createworld [generator = betternormal] [seed = rand()]
$name = $args [0];
$generator = Generator::getGenerator($args [1]);
- if(Generator::getGeneratorName($generator) !== strtolower($args [1])) {
+ if (Generator::getGeneratorName($generator) !== strtolower($args [1])) {
$sender->sendMessage(self::PREFIX . "§4Could not find generator {$args[1]}. Are you sure it is registered?");
return true;
}
$generatorName = strtolower($args [1]);
- if(preg_match("[^\d]", $args [2]) !== false) {
+ if (preg_match("[^\d]", $args [2]) !== false) {
$parts = str_split($args [2]);
- foreach($parts as $key => $str) {
+ foreach ($parts as $key => $str) {
$parts [$key] = ord($str);
}
$seed = implode("", $parts);
} else {
$seed = $args [2];
}
- $options = [ ];
+ $options = [];
break;
default : // /createworld [generator = betternormal] [seed = rand()] [options(json)]
$name = $args [0];
$generator = Generator::getGenerator($args [1]);
- if(Generator::getGeneratorName($generator) !== strtolower($args [1])) {
+ if (Generator::getGeneratorName($generator) !== strtolower($args [1])) {
$sender->sendMessage(self::PREFIX . "§4Could not find generator {$args[1]}. Are you sure it is registered?");
return true;
}
$generatorName = strtolower($args [1]);
- if($args[2] == "rand") $args[2] = $this->generateRandomSeed();
- if(preg_match("[^\d]", $args [2]) !== false) {
+ if ($args[2] == "rand") $args[2] = $this->generateRandomSeed();
+ if (preg_match("[^\d]", $args [2]) !== false) {
$parts = str_split($args [2]);
- foreach($parts as $key => $str) {
+ foreach ($parts as $key => $str) {
$parts [$key] = ord($str);
}
$seed = implode("", $parts);
@@ -129,14 +163,14 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
}
unset($args [0], $args [1], $args [2]);
$options = json_decode($args [3], true);
- if(! is_array($options)) {
+ if (!is_array($options)) {
$sender->sendMessage(Main::PREFIX . "§4Invalid JSON for options.");
return true;
}
break;
}
$options["preset"] = json_encode($options);
- if((int) $seed == 0/*String*/){
+ if ((int)$seed == 0/*String*/) {
$seed = $this->generateRandomSeed();
}
$this->getServer()->broadcastMessage(Main::PREFIX . "§aGenerating level $name with generator $generatorName and seed $seed..");
@@ -144,7 +178,7 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
$this->getServer()->loadLevel($name);
return true;
break;
- case "worldtp":
+ case "worldtp":
if(isset($args[0])) {
if(is_null($this->getServer()->getLevelByName($args[0]))) {
$this->getServer()->loadLevel($args[0]);
@@ -160,56 +194,54 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
return false;
}
break;
+ case 'temple':{
+ if($sender instanceof ConsoleCommandSender) return false;
+ /** @var Player $sender */
+ $temple = new Temple();
+ $temple->placeObject($sender->getLevel(), $sender->x, $sender->y, $sender->z, new Random(microtime()));
+ return true;
+ }
}
+ return false;
}
-
- /*
- * Registers a forest type.
- * @param $name string
- * @param $treeClass string
- * @params $infos Array(temperature, rainfall)
- * @return bool
- */
- public function registerForest(string $name, string $treeClass, array $infos): bool {
- if(! @class_exists($treeClass))
- return false;
- if(! @is_subclass_of($treeClass, "pocketmine\\level\\generator\\normal\\object\\Tree"))
- return false;
- if(count($infos) < 2 or ! is_float($infos [0]) or ! is_float($infos [1]))
- return false;
- return BetterForest::registerForest($name, $treeClass, $infos);
- }
-
- /*
- * Registers a biome for the normal generator. Normal means(Biome::register) doesn't allow biome to be generated
- * @param $id int
- * @param $biome Biome
- * @return void
- */
- public static function registerBiome(int $id, Biome $biome) {
- BetterNormal::registerBiome($biome);
- }
-
+
/*
* Generates a(semi) random seed.
* @return int
*/
+
public function generateRandomSeed(): int {
- return (int) round(rand(0, round(time()) / memory_get_usage(true)) * (int) str_shuffle("127469453645108") / (int) str_shuffle("12746945364"));
+ return (int)round(rand(0, round(time()) / memory_get_usage(true)) * (int)str_shuffle("127469453645108") / (int)str_shuffle("12746945364"));
}
-
+
// Listener
-
+
/*
* Checks after a chunk populates so we an add tiles and loot tables
* @param $event pocketmine\event\level\ChunkPopulateEvent
* @return int
*/
+
+ public function registerForest(string $name, string $treeClass, array $infos): bool {
+ if (!@class_exists($treeClass))
+ return false;
+ if (!@is_subclass_of($treeClass, "pocketmine\\level\\generator\\normal\\object\\Tree"))
+ return false;
+ if (count($infos) < 2 or !is_float($infos [0]) or !is_float($infos [1]))
+ return false;
+ return BetterForest::registerForest($name, $treeClass, $infos);
+ }
+
+
+ /*
+ * Checks when a player interacts with a loot chest to create it.
+ */
+
public function onChunkPopulate(ChunkPopulateEvent $event) {
$cfg = new Config(LootTable::getPluginFolder() . "processingLoots.json", Config::JSON);
- foreach($cfg->getAll() as $key => $value) {
+ foreach ($cfg->getAll() as $key => $value) {
list($x, $y, $z) = explode(";", $key);
- if($value["saveAs"] == "chest" && $event->getLevel()->getBlockIdAt($x, $y, $z) == Block::AIR ){
+ if ($value["saveAs"] == "chest" && $event->getLevel()->getBlockIdAt($x, $y, $z) == Block::AIR) {
$event->getLevel()->setBlockIdAt($x, $y, $z, Block::CHEST);
} else {
$cfg->remove($key);
@@ -217,65 +249,49 @@ class Main extends PluginBase implements \pocketmine\event\Listener {
}
}
}
-
-
- /*
- * Checks when a player interacts with a loot chest to create it.
- */
- public function onInteract(PlayerInteractEvent $event) {
- $cfg = new Config(LootTable::getPluginFolder() . "processingLoots.json", Config::JSON);
- if($event->getBlock()->getId() !== Block::CHEST) return;
- if(!$cfg->exists($event->getBlock()->getX() . ";" . $event->getBlock()->getY() . ";" . $event->getBlock()->getZ())) return;
- $chest = new \pocketmine\block\Chest(0);
- $nbt = new CompoundTag("", [
- new ListTag("Items", []),
- new StringTag("id", Tile::CHEST),
- new IntTag("x", $event->getBlock()->x),
- new IntTag("y", $event->getBlock()->y),
- new IntTag("z", $event->getBlock()->z)
- ]);
- $chest->setLevel($event->getBlock()->getLevel());
- $cItem = Item::get(Item::CHEST, 0);
- $cItem->setCustomName("§k(Fake)§r Minecart chest");
- $chest->place($cItem, $event->getBlock()->getLevel()->getBlock($event->getBlock()), $chest, 0, 0, 0, 0);
- $inv = $event->getBlock()->getLevel()->getTile($event->getBlock());
- LootTable::fillChest($inv->getInventory(), $event->getBlock());
- }
-
-
+
+
/*
* Checks when a player breaks a loot chest which is not created to create it
*/
- public function onBlockBreak(BlockBreakEvent $event) {
+
+ public function onInteract(PlayerInteractEvent $event) {
$cfg = new Config(LootTable::getPluginFolder() . "processingLoots.json", Config::JSON);
- if($event->getBlock()->getId() !== Block::CHEST) return;
- if(!$cfg->exists($event->getBlock()->getX() . ";" . $event->getBlock()->getY() . ";" . $event->getBlock()->getZ())) return;
- $chest = new \pocketmine\block\Chest(0);
+ if ($event->getBlock()->getId() !== Block::CHEST) return;
+ if (!$cfg->exists($event->getBlock()->getX() . ";" . $event->getBlock()->getY() . ";" . $event->getBlock()->getZ())) return;
$nbt = new CompoundTag("", [
- new ListTag("Items", []),
- new StringTag("id", Tile::CHEST),
- new IntTag("x", $event->getBlock()->x),
- new IntTag("y", $event->getBlock()->y),
- new IntTag("z", $event->getBlock()->z)
+ new ListTag("Items", []),
+ new StringTag("id", Tile::CHEST),
+ new IntTag("x", $event->getBlock()->x),
+ new IntTag("y", $event->getBlock()->y),
+ new IntTag("z", $event->getBlock()->z)
]);
- $chest->setLevel($event->getBlock()->getLevel());
- $cItem = Item::get(Item::CHEST, 0);
- $cItem->setCustomName("§k(Fake)§r Minecart chest");
- $chest->place($cItem, $event->getBlock()->getLevel()->getBlock($event->getBlock()), $chest, 0, 0, 0, 0);
- $inv = $event->getBlock()->getLevel()->getTile($event->getBlock());
- LootTable::fillChest($inv->getInventory(), $event->getBlock());
- $event->setCancelled();
+ /** @var Chest $chest */
+ $chest = Tile::createTile(Tile::CHEST, $event->getBlock()->getLevel(), $nbt);
+ $chest->setName("§k(Fake)§r Minecart chest");
+ LootTable::fillChest($chest->getInventory(), $event->getBlock());
}
/*
* Check if it's a Tesseract like namespace
* @return bool
*/
- public static function isOtherNS() {
- try {
- return @class_exists("pocketmine\\level\\generator\\normal\\object\\OakTree");
- } catch(\Exception $e) {
- return false;
- }
+
+ public function onBlockBreak(BlockBreakEvent $event) {
+ $cfg = new Config(LootTable::getPluginFolder() . "processingLoots.json", Config::JSON);
+ if ($event->getBlock()->getId() !== Block::CHEST) return;
+ if (!$cfg->exists($event->getBlock()->getX() . ";" . $event->getBlock()->getY() . ";" . $event->getBlock()->getZ())) return;
+ $nbt = new CompoundTag("", [
+ new ListTag("Items", []),
+ new StringTag("id", Tile::CHEST),
+ new IntTag("x", $event->getBlock()->x),
+ new IntTag("y", $event->getBlock()->y),
+ new IntTag("z", $event->getBlock()->z)
+ ]);
+ /** @var Chest $chest */
+ $chest = Tile::createTile(Tile::CHEST, $event->getBlock()->getLevel(), $nbt);
+ $chest->setName("§k(Fake)§r Minecart chest");
+ LootTable::fillChest($chest->getInventory(), $event->getBlock());
+ // $event->setCancelled(); //i think nope. You want to break it with items
}
}
diff --git a/src/Ad5001/BetterGen/biome/BetterDesert.php b/src/Ad5001/BetterGen/biome/BetterDesert.php
index b4e715d..ee5e2e7 100644
--- a/src/Ad5001/BetterGen/biome/BetterDesert.php
+++ b/src/Ad5001/BetterGen/biome/BetterDesert.php
@@ -7,23 +7,24 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-use pocketmine\level\generator\normal\biome\SandyBiome;
-use pocketmine\level\generator\biome\Biome;
-use pocketmine\block\Block;
-use Ad5001\BetterGen\populator\TemplePopulator;
-use Ad5001\BetterGen\populator\WellPopulator;
use Ad5001\BetterGen\populator\CactusPopulator;
use Ad5001\BetterGen\populator\DeadbushPopulator;
use Ad5001\BetterGen\populator\SugarCanePopulator;
+use Ad5001\BetterGen\populator\TemplePopulator;
+use Ad5001\BetterGen\populator\WellPopulator;
+use pocketmine\block\Block;
+use pocketmine\level\generator\biome\Biome;
+use pocketmine\level\generator\normal\biome\SandyBiome;
class BetterDesert extends SandyBiome implements Mountainable {
public function __construct() {
+ parent::__construct();
$deadBush = new DeadbushPopulator ();
$deadBush->setBaseAmount(1);
$deadBush->setRandomAmount(2);
diff --git a/src/Ad5001/BetterGen/biome/BetterForest.php b/src/Ad5001/BetterGen/biome/BetterForest.php
index eaffb3b..8e74035 100644
--- a/src/Ad5001/BetterGen/biome/BetterForest.php
+++ b/src/Ad5001/BetterGen/biome/BetterForest.php
@@ -8,19 +8,19 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-use pocketmine\level\generator\normal\biome\ForestBiome;
-use pocketmine\level\generator\biome\Biome;
use Ad5001\BetterGen\Main;
-use Ad5001\BetterGen\populator\TreePopulator;
use Ad5001\BetterGen\populator\BushPopulator;
use Ad5001\BetterGen\populator\FallenTreePopulator;
+use Ad5001\BetterGen\populator\TreePopulator;
+use pocketmine\level\generator\biome\Biome;
+use pocketmine\level\generator\normal\biome\ForestBiome;
class BetterForest extends ForestBiome implements Mountainable {
@@ -66,19 +66,18 @@ class BetterForest extends ForestBiome implements Mountainable {
public function getName() {
return str_ireplace(" ", "", self::$types[$this->type]);
}
-
- /*
- * Returns the ID relativly.
+
+ /**
+ * Returns the ID relatively.
+ * @return int
*/
public function getId() {
return self::$ids [$this->type];
}
-
- /*
- * Registers a forest type. Don't use this method directly use the one from the main class.
- * @param $name string
- * @param $treeClass string
- * @param
+ /**
+ * @param string $name
+ * @param string $treeClass
+ * @param array $infos
* @return bool
*/
public static function registerForest(string $name, string $treeClass, array $infos): bool {
@@ -86,5 +85,6 @@ class BetterForest extends ForestBiome implements Mountainable {
TreePopulator::$types [] = $treeClass;
self::$ids [] = Main::SAKURA_FOREST + (count(self::$types ) - 2);
Main::register(Main::SAKURA_FOREST + (count(self::$types ) - 2), new BetterForest(count(self::$types ) - 1, $infos ));
+ return true;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/biome/BetterIcePlains.php b/src/Ad5001/BetterGen/biome/BetterIcePlains.php
index 5b58eb1..6700eae 100644
--- a/src/Ad5001/BetterGen/biome/BetterIcePlains.php
+++ b/src/Ad5001/BetterGen/biome/BetterIcePlains.php
@@ -7,18 +7,18 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-use pocketmine\level\generator\normal\biome\SnowyBiome;
-use pocketmine\level\generator\biome\Biome;
-use pocketmine\block\Block;
-use Ad5001\BetterGen\populator\IglooPopulator;
use Ad5001\BetterGen\Main;
+use Ad5001\BetterGen\populator\IglooPopulator;
+use pocketmine\block\Block;
+use pocketmine\level\generator\biome\Biome;
+use pocketmine\level\generator\normal\biome\SnowyBiome;
class BetterIcePlains extends SnowyBiome implements Mountainable {
public function __construct() {
@@ -46,8 +46,9 @@ class BetterIcePlains extends SnowyBiome implements Mountainable {
return "BetterIcePlains";
}
- /*
- * Returns biome's id.
+ /**
+ * Returns the biomes' id.
+ * @return int biome id
*/
public function getId() {
return Biome::ICE_PLAINS;
diff --git a/src/Ad5001/BetterGen/biome/BetterMesa.php b/src/Ad5001/BetterGen/biome/BetterMesa.php
index f49eaf6..e82460b 100644
--- a/src/Ad5001/BetterGen/biome/BetterMesa.php
+++ b/src/Ad5001/BetterGen/biome/BetterMesa.php
@@ -7,27 +7,25 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-use pocketmine\level\generator\normal\biome\SandyBiome;
-use pocketmine\level\generator\populator\Ore;
-use pocketmine\level\generator\object\OreType;
-use pocketmine\level\generator\biome\Biome;
-use pocketmine\block\Block;
-use pocketmine\block\GoldOre;
use Ad5001\BetterGen\Main;
-use Ad5001\BetterGen\populator\TreePopulator;
use Ad5001\BetterGen\populator\CactusPopulator;
use Ad5001\BetterGen\populator\DeadbushPopulator;
use Ad5001\BetterGen\populator\SugarCanePopulator;
+use Ad5001\BetterGen\populator\TreePopulator;
+use pocketmine\block\Block;
+use pocketmine\block\GoldOre;
+use pocketmine\level\generator\normal\biome\SandyBiome;
class BetterMesa extends SandyBiome {
public function __construct() {
+ parent::__construct();
$deadBush = new DeadbushPopulator ();
$deadBush->setBaseAmount(1);
$deadBush->setRandomAmount(2);
diff --git a/src/Ad5001/BetterGen/biome/BetterMesaPlains.php b/src/Ad5001/BetterGen/biome/BetterMesaPlains.php
index 326bacd..610e972 100644
--- a/src/Ad5001/BetterGen/biome/BetterMesaPlains.php
+++ b/src/Ad5001/BetterGen/biome/BetterMesaPlains.php
@@ -7,25 +7,24 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-use pocketmine\level\generator\normal\biome\SandyBiome;
-use pocketmine\level\generator\object\OreType;
-use pocketmine\level\generator\biome\Biome;
-use pocketmine\block\Block;
-use pocketmine\block\GoldOre;
+use Ad5001\BetterGen\Main;
use Ad5001\BetterGen\populator\CactusPopulator;
use Ad5001\BetterGen\populator\DeadbushPopulator;
use Ad5001\BetterGen\populator\SugarCanePopulator;
-use Ad5001\BetterGen\Main;
+use pocketmine\block\Block;
+use pocketmine\block\GoldOre;
+use pocketmine\level\generator\normal\biome\SandyBiome;
class BetterMesaPlains extends SandyBiome {
public function __construct() {
+ parent::__construct();
$deadBush = new DeadbushPopulator ();
$deadBush->setBaseAmount(1);
$deadBush->setRandomAmount(2);
diff --git a/src/Ad5001/BetterGen/biome/BetterRiver.php b/src/Ad5001/BetterGen/biome/BetterRiver.php
index d6d97d5..b6f7df2 100644
--- a/src/Ad5001/BetterGen/biome/BetterRiver.php
+++ b/src/Ad5001/BetterGen/biome/BetterRiver.php
@@ -7,15 +7,15 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-use pocketmine\level\generator\biome\Biome;
use pocketmine\block\Block;
+use pocketmine\level\generator\biome\Biome;
class BetterRiver extends Biome {
public function __construct() {
@@ -45,7 +45,7 @@ class BetterRiver extends Biome {
}
/*
- * Returns the ID relativly.
+ * Returns the ID relatively.
*/
public function getId() {
return Biome::RIVER;
diff --git a/src/Ad5001/BetterGen/biome/Mountainable.php b/src/Ad5001/BetterGen/biome/Mountainable.php
index 6c47f0d..f2175a0 100644
--- a/src/Ad5001/BetterGen/biome/Mountainable.php
+++ b/src/Ad5001/BetterGen/biome/Mountainable.php
@@ -7,13 +7,13 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\biome;
-// Class to iplement when the biome can be set as a mountain
+// Class to implement when the biome can be set as a mountain
interface Mountainable {
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/generator/BetterBiomeSelector.php b/src/Ad5001/BetterGen/generator/BetterBiomeSelector.php
index 86c1b3c..a87a300 100644
--- a/src/Ad5001/BetterGen/generator/BetterBiomeSelector.php
+++ b/src/Ad5001/BetterGen/generator/BetterBiomeSelector.php
@@ -7,16 +7,16 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\generator;
-use pocketmine\level\generator\biome\BiomeSelector;
use pocketmine\level\generator\biome\Biome;
-use pocketmine\utils\Random;
+use pocketmine\level\generator\biome\BiomeSelector;
use pocketmine\level\generator\noise\Simplex;
+use pocketmine\utils\Random;
class BetterBiomeSelector extends BiomeSelector {
@@ -30,9 +30,9 @@ class BetterBiomeSelector extends BiomeSelector {
/** @var Biome[] */
private $biomes = [ ];
- private $map = [ ];
private $lookup;
public function __construct(Random $random, callable $lookup, Biome $fallback) {
+ parent::__construct($random, $lookup, $fallback);
$this->fallback = $fallback;
$this->lookup = $lookup;
$this->temperature = new Simplex($random, 2, 1 / 16, 1 / 512);
diff --git a/src/Ad5001/BetterGen/generator/BetterNormal.php b/src/Ad5001/BetterGen/generator/BetterNormal.php
index 2e640be..35eed87 100644
--- a/src/Ad5001/BetterGen/generator/BetterNormal.php
+++ b/src/Ad5001/BetterGen/generator/BetterNormal.php
@@ -7,21 +7,25 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\generator;
-use pocketmine\level\ChunkManager;
-use pocketmine\utils\Random;
-use pocketmine\level\generator\biome\Biome;
-use pocketmine\level\generator\Generator;
-use pocketmine\level\generator\noise\Simplex;
-use pocketmine\level\generator\object\OreType;
-use pocketmine\level\generator\normal\object\OreType as OreType2;
-use pocketmine\level\generator\populator\Ore;
+use Ad5001\BetterGen\biome\BetterDesert;
+use Ad5001\BetterGen\biome\BetterForest;
+use Ad5001\BetterGen\biome\BetterIcePlains;
+use Ad5001\BetterGen\biome\BetterMesa;
+use Ad5001\BetterGen\biome\BetterMesaPlains;
+use Ad5001\BetterGen\biome\BetterRiver;
+use Ad5001\BetterGen\biome\Mountainable;
+use Ad5001\BetterGen\Main;
+use Ad5001\BetterGen\populator\CavePopulator;
+use Ad5001\BetterGen\populator\FloatingIslandPopulator;
+use Ad5001\BetterGen\populator\MineshaftPopulator;
+use Ad5001\BetterGen\populator\RavinePopulator;
use pocketmine\block\Block;
use pocketmine\block\CoalOre;
use pocketmine\block\DiamondOre;
@@ -31,23 +35,18 @@ use pocketmine\block\Gravel;
use pocketmine\block\IronOre;
use pocketmine\block\LapisOre;
use pocketmine\block\RedstoneOre;
+use pocketmine\level\ChunkManager;
+use pocketmine\level\generator\biome\Biome;
+use pocketmine\level\generator\Generator;
+use pocketmine\level\generator\noise\Simplex;
+use pocketmine\level\generator\normal\object\OreType as OreType2;
+use pocketmine\level\generator\object\OreType;
use pocketmine\level\Level;
-use Ad5001\BetterGen\biome\BetterForest;
-use Ad5001\BetterGen\biome\BetterDesert;
-use Ad5001\BetterGen\biome\BetterIcePlains;
-use Ad5001\BetterGen\biome\BetterMesa;
-use Ad5001\BetterGen\biome\BetterMesaPlains;
-use Ad5001\BetterGen\biome\BetterRiver;
-use Ad5001\BetterGen\biome\Mountainable;
-use Ad5001\BetterGen\populator\CavePopulator;
-use Ad5001\BetterGen\populator\RavinePopulator;
-use Ad5001\BetterGen\populator\LakePopulator;
-use Ad5001\BetterGen\populator\MineshaftPopulator;
-use Ad5001\BetterGen\populator\FloatingIslandPopulator;
-use Ad5001\BetterGen\Main;
+use pocketmine\math\Vector3;
+use pocketmine\utils\Random;
class BetterNormal extends Generator {
- const NOT_OVERWRITABLE = [
+ const NOT_OVERWRITABLE = [
Block::STONE,
Block::GRAVEL,
Block::BEDROCK,
@@ -60,12 +59,16 @@ class BetterNormal extends Generator {
Block::WATER,
Block::STILL_WATER
];
+ /** @var BetterBiomeSelector */
protected $selector;
+ /** @var Level */
protected $level;
+ /** @var Random */
protected $random;
protected $populators = [ ];
protected $generationPopulators = [ ];
public static $biomes = [ ];
+ /** @var Biome[] */
public static $biomeById = [ ];
public static $levels = [ ];
protected static $GAUSSIAN_KERNEL = null; // From main class
@@ -75,7 +78,8 @@ class BetterNormal extends Generator {
]
];
protected $waterHeight = 63;
-
+ private $noiseBase;
+
/*
* Picks a biome by X and Z
* @param $x int
@@ -231,6 +235,7 @@ class BetterNormal extends Generator {
* @param $rainfall float
*/
public static function getBiome($temperature, $rainfall) {
+ $ret = null;
if (! isset(self::$biomes [( string ) round($rainfall, 1 )] )) {
while(! isset(self::$biomes [( string ) round($rainfall, 1 )] ) ) {
if (abs($rainfall - round($rainfall, 1 ) ) >= 0.05)
@@ -252,9 +257,8 @@ class BetterNormal extends Generator {
}
if (is_string($ret )) {
$ret = new $ret ();
- } else {
- return $ret;
}
+ return $ret;
}
/*
@@ -263,7 +267,7 @@ class BetterNormal extends Generator {
* @return Biome
*/
public function getBiomeById(int $id): Biome {
- return self::$biomeById[$id] ?? self::$biomeById(Biome::OCEAN);
+ return self::$biomeById[$id] ?? self::$biomeById[Biome::OCEAN];
}
/*
@@ -386,7 +390,7 @@ class BetterNormal extends Generator {
}
/*
- * Generates the genration kernel based on smooth size (here 2)
+ * Generates the generation kernel based on smooth size (here 2)
*/
private static function generateKernel() {
self::$GAUSSIAN_KERNEL = [ ];
@@ -434,7 +438,7 @@ class BetterNormal extends Generator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL) {
break;
@@ -443,6 +447,6 @@ class BetterNormal extends Generator {
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/loot/LootTable.php b/src/Ad5001/BetterGen/loot/LootTable.php
index cd0798f..24c0cdf 100644
--- a/src/Ad5001/BetterGen/loot/LootTable.php
+++ b/src/Ad5001/BetterGen/loot/LootTable.php
@@ -7,23 +7,23 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\loot;
+use pocketmine\inventory\BaseInventory;
+use pocketmine\item\Item;
+use pocketmine\math\Vector3;
+use pocketmine\nbt\NBT;
use pocketmine\utils\Config;
use pocketmine\utils\Random;
-use pocketmine\math\Vector3;
-use pocketmine\item\Item;
-use pocketmine\inventory\BaseInventory;
-use pocketmine\nbt\NBT;
/*
* This class is used for loot setting.
- * Please note that they AREN'T as powerfull as PC ones due to some implementations limitations.
+ * Please note that they AREN'T as powerful as PC ones due to some implementations limitations.
* Loot table format:
* {
* "max": Max number of loots (storable amount)
@@ -33,9 +33,9 @@ use pocketmine\nbt\NBT;
* "maxCount": Maximal count
* "id": Id of the item
* "data": Item damage
- * "tags": {"display": {"Name": "Example NBT data"}}. This parameter is optionnal
- * "minStacks": If choosen, the minimum amount of stacks that can be found
- * "maxStacks": If choosen the maximum number of stacks that can be choosen
+ * "tags": {"display": {"Name": "Example NBT data"}}. This parameter is optional
+ * "minStacks": If chosen, the minimum amount of stacks that can be found
+ * "maxStacks": If chosen the maximum number of stacks that can be chosen
* }
* }
*/
@@ -55,7 +55,7 @@ class LootTable {
const LOOT_MINESHAFT = 2;
/*
- * Asyncronous loot table choosing
+ * Asynchronous loot table choosing
* @param $place pocketmine\math\Vector3
* @param $type int
* @param $random pocketmine\utils\Random
@@ -80,7 +80,7 @@ class LootTable {
}
/*
- * Syncronous inventory filling with loot table.
+ * Synchronous inventory filling with loot table.
* @param $inv pocketmine\inventory\BaseInventory
* @param $pos pocketmine\math\Vector3
* @return void
@@ -96,7 +96,7 @@ class LootTable {
for($i = 0; $i <= $randCount; $i++) {
$rand = rand(0, count($loots));
$items[$rand] = Item::get($loot["id"], $loot["data"], rand($loot["minCount"], $loot["maxCount"]));
- if(isset($loot["tags"])) $items[$rand]->setCompoundTag(NBT::fromJSON($loot["tags"]));
+ if(isset($loot["tags"])) $items[$rand]->setCompoundTag(NBT::parseJSON($loot["tags"]));
}
}
$inv->setContents($items);
diff --git a/src/Ad5001/BetterGen/populator/AmountPopulator.php b/src/Ad5001/BetterGen/populator/AmountPopulator.php
index 43a85e2..aee3766 100644
--- a/src/Ad5001/BetterGen/populator/AmountPopulator.php
+++ b/src/Ad5001/BetterGen/populator/AmountPopulator.php
@@ -7,15 +7,15 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
use pocketmine\level\generator\populator\Populator;
+use pocketmine\utils\Random;
abstract class AmountPopulator extends Populator {
protected $baseAmount = 0;
diff --git a/src/Ad5001/BetterGen/populator/BushPopulator.php b/src/Ad5001/BetterGen/populator/BushPopulator.php
index 71b1bdc..c1363cb 100644
--- a/src/Ad5001/BetterGen/populator/BushPopulator.php
+++ b/src/Ad5001/BetterGen/populator/BushPopulator.php
@@ -7,21 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\structure\Bush;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use Ad5001\BetterGen\populator\TreePopulator;
-use Ad5001\BetterGen\populator\AmountPopulator;
-use Ad5001\BetterGen\structure\Bush;
+use pocketmine\level\Level;
+use pocketmine\utils\Random;
class BushPopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
protected $type;
@@ -62,7 +62,7 @@ class BushPopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL) {
break;
@@ -71,6 +71,6 @@ class BushPopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/CactusPopulator.php b/src/Ad5001/BetterGen/populator/CactusPopulator.php
index 2edba48..9a2e28d 100644
--- a/src/Ad5001/BetterGen/populator/CactusPopulator.php
+++ b/src/Ad5001/BetterGen/populator/CactusPopulator.php
@@ -7,7 +7,7 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
@@ -15,13 +15,14 @@
namespace Ad5001\BetterGen\populator;
+use Ad5001\BetterGen\structure\Cactus;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
+use pocketmine\level\Level;
use pocketmine\utils\Random;
-use Ad5001\BetterGen\structure\Cactus;
-use Ad5001\BetterGen\populator\AmountPopulator;
class CactusPopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
/*
* Constructs the class
@@ -58,12 +59,12 @@ class CactusPopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y >= 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y >= 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b !== Block::AIR and $b !== Block::LEAVES and $b !== Block::LEAVES2) {
break;
}
}
- return $y === 0 ? - 1 : $y++;
+ return $y === 0 ? - 1 : ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/CavePopulator.php b/src/Ad5001/BetterGen/populator/CavePopulator.php
index 76510b8..feb31a1 100644
--- a/src/Ad5001/BetterGen/populator/CavePopulator.php
+++ b/src/Ad5001/BetterGen/populator/CavePopulator.php
@@ -7,21 +7,22 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\utils\BuildingUtils;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
+use pocketmine\level\Level;
use pocketmine\math\Vector3;
-use Ad5001\BetterGen\utils\BuildingUtils;
-use Ad5001\BetterGen\populator\AmountPopulator;
+use pocketmine\utils\Random;
class CavePopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
const STOP = false;
const CONTINUE = true;
@@ -65,7 +66,7 @@ class CavePopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL or $b === Block::SAND or $b === Block::SNOW_BLOCK or $b === Block::SANDSTONE) {
break;
@@ -74,7 +75,7 @@ class CavePopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
/*
@@ -91,7 +92,7 @@ class CavePopulator extends AmountPopulator {
foreach($gen = $this->generateBranch($x, $y, $z, 5, 3, 5, $random ) as $v3 ) {
$generatedBranches --;
if ($generatedBranches <= 0) {
- $gen->send(self::STOP);
+ $gen->send(self::STOP); // send not found.. @Ad5001 what is that
} else {
$gen->send(self::CONTINUE);
}
@@ -121,7 +122,7 @@ class CavePopulator extends AmountPopulator {
$y --;
}
$z += round(($random->nextBoundedInt(round(30 * ($depth / 10) ) + 1 ) / 10 - 1));
- return [ ];
+ return;
}
}
$repeat = $random->nextBoundedInt(25 ) + 15;
diff --git a/src/Ad5001/BetterGen/populator/DeadbushPopulator.php b/src/Ad5001/BetterGen/populator/DeadbushPopulator.php
index fbadc13..0859a69 100644
--- a/src/Ad5001/BetterGen/populator/DeadbushPopulator.php
+++ b/src/Ad5001/BetterGen/populator/DeadbushPopulator.php
@@ -7,19 +7,22 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
+use Ad5001\BetterGen\generator\BetterBiomeSelector;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
+use pocketmine\level\generator\biome\Biome;
+use pocketmine\level\Level;
use pocketmine\utils\Random;
-use Ad5001\BetterGen\populator\AmountPopulator;
class DeadbushPopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
/*
@@ -35,26 +38,31 @@ class DeadbushPopulator extends AmountPopulator {
for($i = 0; $i < $amount; $i++) {
$x = $random->nextRange($chunkX * 16, $chunkX * 16 + 15);
$z = $random->nextRange($chunkZ * 16, $chunkZ * 16 + 15);
+ if(!in_array($level->getChunk($chunkX, $chunkZ)->getBiomeId(abs($x % 16), ($z % 16)), [40, 39, Biome::DESERT])) continue;
$y = $this->getHighestWorkableBlock($x, $z);
- if ($y !== -1 && $level->getBlockIdAt($x, $y - 1, $z ) == Block::SAND) {
- $level->setBlockIdAt($x, $y + 1, $z, Block::DEAD_BUSH);
- $level->setBlockDataAt($x, $y + 1, $z, 1);
+ if ($y !== -1) {
+ $level->setBlockIdAt($x, $y, $z, Block::DEAD_BUSH);
+ $level->setBlockDataAt($x, $y, $z, 1);
}
}
}
-
- /*
+
+ /**
* Gets the top block (y) on an x and z axes
- * @param $x int
- * @param $z int
+ * @param $x
+ * @param $z
+ * @return int
*/
- protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y >= 0; -- $y) {
+ private function getHighestWorkableBlock($x, $z){
+ for($y = Level::Y_MAX - 1; $y > 0; --$y){
$b = $this->level->getBlockIdAt($x, $y, $z);
- if ($b !== Block::AIR and $b !== Block::LEAVES and $b !== Block::LEAVES2) {
+ if($b === Block::DIRT or $b === Block::GRASS or $b === Block::SAND or $b === Block::SANDSTONE or $b === Block::HARDENED_CLAY or $b === Block::STAINED_HARDENED_CLAY){
break;
+ }elseif($b !== Block::AIR){
+ return -1;
}
}
- return $y === 0 ? - 1 : $y++;
+
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/FallenTreePopulator.php b/src/Ad5001/BetterGen/populator/FallenTreePopulator.php
index 0910ccc..9570d19 100644
--- a/src/Ad5001/BetterGen/populator/FallenTreePopulator.php
+++ b/src/Ad5001/BetterGen/populator/FallenTreePopulator.php
@@ -1,27 +1,28 @@
setBaseAmount(1);
$this->setRandomAmount(2);
}
-
+
/*
* Populate the chunk
* @param $level pocketmine\level\ChunkManager
@@ -45,29 +46,35 @@ class FallenTreePopulator extends AmountPopulator {
$this->level = $level;
$amount = $this->getAmount($random);
$tree = TreePopulator::$types[$this->type];
- $fallenTree = new FallenTree(new $tree());
+ $fallenTree = new \Ad5001\BetterGen\structure\FallenTree(
+ new $tree()
+ );
for($i = 0; $i < $amount; $i++) {
$x = $random->nextRange($chunkX * 16, $chunkX * 16 + 15);
$z = $random->nextRange($chunkZ * 16, $chunkZ * 16 + 15);
$y = $this->getHighestWorkableBlock($x, $z);
if ($y !== -1 and $fallenTree->canPlaceObject($level, $x, $y + 1, $z, $random )) {
- $fallenTree->placeObject($level, $x, $y + 1, $z, $random);
+ $fallenTree->placeObject($level, $x, $y + 1, $z);
}
}
}
-
- /*
+
+ /**
* Gets the top block (y) on an x and z axes
- * @param $x int
- * @param $z int
+ * @param $x
+ * @param $z
+ * @return int
*/
- protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y >= 0; -- $y) {
+ private function getHighestWorkableBlock($x, $z){
+ for($y = Level::Y_MAX - 1; $y > 0; --$y){
$b = $this->level->getBlockIdAt($x, $y, $z);
- if ($b !== Block::AIR and $b !== Block::LEAVES and $b !== Block::LEAVES2) {
+ if($b === Block::DIRT or $b === Block::GRASS){
break;
+ }elseif($b !== Block::AIR and $b !== Block::SNOW_LAYER){
+ return -1;
}
}
- return $y === 0 ? - 1 : $y++;
+
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/FloatingIslandPopulator.php b/src/Ad5001/BetterGen/populator/FloatingIslandPopulator.php
index 41c78e4..f3e06b0 100644
--- a/src/Ad5001/BetterGen/populator/FloatingIslandPopulator.php
+++ b/src/Ad5001/BetterGen/populator/FloatingIslandPopulator.php
@@ -7,27 +7,28 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\level\ChunkManager;
-use pocketmine\utils\Random;
use Ad5001\BetterGen\generator\BetterNormal;
-use pocketmine\block\Block;
-use pocketmine\level\generator\object\OreType;
-use pocketmine\level\generator\normal\object\OreType as OreType2;
-use pocketmine\math\Vector3;
-use pocketmine\block\CoalOre;
-use pocketmine\block\IronOre;
-use pocketmine\block\RedstoneOre;
-use pocketmine\block\LapisOre;
-use pocketmine\block\GoldOre;
-use pocketmine\block\DiamondOre;
use Ad5001\BetterGen\Main;
+use pocketmine\block\Block;
+use pocketmine\block\CoalOre;
+use pocketmine\block\DiamondOre;
+use pocketmine\block\GoldOre;
+use pocketmine\block\IronOre;
+use pocketmine\block\LapisOre;
+use pocketmine\block\RedstoneOre;
+use pocketmine\level\ChunkManager;
+use pocketmine\level\generator\normal\object\OreType as OreType2;
+use pocketmine\level\generator\object\OreType;
+use pocketmine\level\Level;
+use pocketmine\math\Vector3;
+use pocketmine\utils\Random;
class FloatingIslandPopulator extends AmountPopulator {
@@ -39,6 +40,9 @@ class FloatingIslandPopulator extends AmountPopulator {
* @param $chunkZ int
* @param $random pocketmine\utils\Random
*/
+ /** @var ChunkManager */
+ private $level;
+
public function populate(ChunkManager $level, $chunkX, $chunkZ, Random $random) {
$this->level = $level;
if($this->getAmount($random) > 130) {
@@ -49,7 +53,7 @@ class FloatingIslandPopulator extends AmountPopulator {
$height = $this->buildIslandBottomShape($level, new Vector3($x, $y, $z), $radius, $random);
$this->populateOres($level, new Vector3($x, $y - 1, $z), $radius * 2, $height, $random);
$chunk = $level->getChunk($chunkX, $chunkZ);
- $biome = BetterNormal::getBiomeById($chunk->getBiomeId($x % 16, $z % 16));
+ $biome = BetterNormal::$biomeById[$chunk->getBiomeId($x % 16, $z % 16)];
$populators = $biome->getPopulators();
foreach($populators as $populator) {
$populator->populate($level, $chunkX, $chunkZ, $random);
@@ -65,7 +69,7 @@ class FloatingIslandPopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL or $b === Block::SAND) {
break;
@@ -74,7 +78,7 @@ class FloatingIslandPopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
@@ -85,14 +89,11 @@ class FloatingIslandPopulator extends AmountPopulator {
* @param $pos pocketmine\math\Vector3
* @param $radius int
* @param $random pocketmine\utils\Random
- * @return void
+ * @return int lowest ore point
*/
public function buildIslandBottomShape(ChunkManager $level, Vector3 $pos, int $radius, Random $random) {
$pos = $pos->round();
- $xx = $pos->x;
- $zz = $z;
$currentLen = 1;
- $isEdge = false;
$hBound = 0;
$current = 0;
for($y = $pos->y - 1; $radius > 0; $y--) {
@@ -105,7 +106,7 @@ class FloatingIslandPopulator extends AmountPopulator {
}
if(abs(abs($x - $pos->x) ** 2) + abs(abs($z - $pos->z) ** 2) <= ($radius ** 2) * 0.67 && $y < 128) {
if($chunk = $level->getChunk($x >> 4, $z >> 4)) {
- $biome = BetterNormal::getBiomeById($chunk->getBiomeId($x % 16, $z % 16));
+ $biome = BetterNormal::$biomeById[$chunk->getBiomeId($x % 16, $z % 16)];
$block = $biome->getGroundCover()[$pos->y - $y - 1] ?? Block::get(Block::STONE);
$block = $block->getId();
} elseif($random->nextBoundedInt(5) == 0 && $isEdge) {
@@ -121,7 +122,7 @@ class FloatingIslandPopulator extends AmountPopulator {
$oldHB = $hBound;
$hBound = $random->nextFloat();
if($current >= $currentLen + $hBound) {
- if($radius == 0) return;
+ if($radius == 0) return $pos->y;
$current = 0;
$currentLen += 0.3 * ($random->nextFloat() + 0.5);
$radius--;
@@ -160,6 +161,6 @@ class FloatingIslandPopulator extends AmountPopulator {
new OreType(new GoldOre (), 2, 8, $pos->y - $height, $pos->y - round($height / 2)),
new OreType(new DiamondOre (), 1, 7, $pos->y - $height, $pos->y - round($height / 4))
]);
- $ores->populate($level, $x >> 4, $z >> 4, $random);
+ $ores->populate($level, $pos->x >> 4, $pos->z >> 4, $random);//x z undefined
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/IglooPopulator.php b/src/Ad5001/BetterGen/populator/IglooPopulator.php
index 9367056..352763c 100644
--- a/src/Ad5001/BetterGen/populator/IglooPopulator.php
+++ b/src/Ad5001/BetterGen/populator/IglooPopulator.php
@@ -7,20 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\structure\Igloo;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use Ad5001\BetterGen\populator\AmountPopulator;
-use Ad5001\BetterGen\structure\Igloo;
+use pocketmine\level\Level;
+use pocketmine\utils\Random;
class IglooPopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
/*
@@ -48,7 +49,7 @@ class IglooPopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL) {
break;
@@ -57,6 +58,6 @@ class IglooPopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/LakePopulator.php b/src/Ad5001/BetterGen/populator/LakePopulator.php
index 5677da7..1462379 100644
--- a/src/Ad5001/BetterGen/populator/LakePopulator.php
+++ b/src/Ad5001/BetterGen/populator/LakePopulator.php
@@ -7,21 +7,22 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\utils\BuildingUtils;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
+use pocketmine\level\Level;
use pocketmine\math\Vector3;
-use Ad5001\BetterGen\utils\BuildingUtils;
-use Ad5001\BetterGen\populator\AmountPopulator;
+use pocketmine\utils\Random;
class LakePopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
/*
@@ -57,7 +58,7 @@ class LakePopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL) {
break;
@@ -66,6 +67,6 @@ class LakePopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/MineshaftPopulator.php b/src/Ad5001/BetterGen/populator/MineshaftPopulator.php
index 3f740f8..c325063 100644
--- a/src/Ad5001/BetterGen/populator/MineshaftPopulator.php
+++ b/src/Ad5001/BetterGen/populator/MineshaftPopulator.php
@@ -7,22 +7,23 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\level\ChunkManager;
-use pocketmine\utils\Random;
-use Ad5001\BetterGen\utils\BuildingUtils;
-use pocketmine\math\Vector3;
-use pocketmine\block\Block;
use Ad5001\BetterGen\loot\LootTable;
+use Ad5001\BetterGen\utils\BuildingUtils;
+use pocketmine\block\Block;
+use pocketmine\level\ChunkManager;
+use pocketmine\math\Vector3;
+use pocketmine\utils\Random;
class MineshaftPopulator extends AmountPopulator {
protected $maxPath;
+ /** @var ChunkManager */
protected $level;
const DIR_XPLUS = 0;
const DIR_XMIN = 1;
@@ -69,15 +70,14 @@ class MineshaftPopulator extends AmountPopulator {
}
}
}
-
- /*
+
+ /**
* Builds a mineshaft part and return applicable directions
- * @param $x int
- * @param $y int
- * @param $z int
- * @param $dir int
- * @param $random pocketmine\utils\Random
- * @param $deepneth int
+ * @param int $x
+ * @param int $y
+ * @param int $z
+ * @param int $dir
+ * @param Random $random
*/
public function generateMineshaftPart(int $x, int $y, int $z, int $dir, Random $random) {
if ($this->maxPath -- < 1)
@@ -91,18 +91,18 @@ class MineshaftPopulator extends AmountPopulator {
// First, filling everything blank.
BuildingUtils::fill($this->level, new Vector3($x, $y, $z - 1 ), new Vector3($x + 4, $y + 2, $z + 1 ), Block::get(Block::AIR ));
// Then, making sure the floor is solid.
- BuildingUtils::fillCallback(new Vector3($x, $y - 1, $z - 1 ), new Vector3($x + 4, $y - 1, $z + 1 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x, $y - 1, $z - 1 ), new Vector3($x + 4, $y - 1, $z + 1 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
}, $this->level);
// Putting rails
- BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x + 4, $y, $z ), function ($v3, $level, $random) {
+ BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x + 4, $y, $z ), function ($v3, ChunkManager $level, Random $random) {
if ($random->nextBoundedInt(3 ) !== 0) {
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::RAIL);
$level->setBlockDataAt($v3->x, $v3->y, $v3->z, 1);
}
}, $this->level, $random);
- // After this, building the floor maintener (the wood structure)
+ // After this, building the floor maintainer (the wood structure)
$level->setBlockIdAt($x, $y, $z - 1, Block::FENCE);
$level->setBlockIdAt($x, $y, $z + 1, Block::FENCE);
$level->setBlockIdAt($x, $y + 1, $z - 1, Block::FENCE);
@@ -131,19 +131,19 @@ class MineshaftPopulator extends AmountPopulator {
// First, filling everything blank.
BuildingUtils::fill($this->level, new Vector3($x, $y, $z - 1 ), new Vector3($x - 4, $y + 2, $z + 1 ));
// Then, making sure the floor is solid.
- BuildingUtils::fillCallback(new Vector3($x, $y - 1, $z - 1 ), new Vector3($x - 4, $y - 1, $z + 1 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x, $y - 1, $z - 1 ), new Vector3($x - 4, $y - 1, $z + 1 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
}, $this->level);
// Putting rails
- BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x - 4, $y, $z ), function ($v3, $level, $random) {
+ BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x - 4, $y, $z ), function ($v3, ChunkManager $level, Random $random) {
if ($random->nextBoundedInt(3 ) !== 0) {
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::RAIL);
$level->setBlockDataAt($v3->x, $v3->y, $v3->z, 1);
}
}, $this->level, $random);
- // After this, building the floor maintener (the wood structure)
+ // After this, building the floor maintainer (the wood structure)
$level->setBlockIdAt($x, $y, $z - 1, Block::FENCE);
$level->setBlockIdAt($x, $y, $z + 1, Block::FENCE);
$level->setBlockIdAt($x, $y + 1, $z - 1, Block::FENCE);
@@ -162,7 +162,7 @@ class MineshaftPopulator extends AmountPopulator {
if ($direction2 == 0)
$direction2 = 2;
if ($direction2 == 1)
- $direction2 =
+ $direction2 = 4;
LootTable::buildLootTable(new Vector3($x - $direction2, $y, $z + $direction ), LootTable::LOOT_MINESHAFT, $random);
}
if ($random->nextBoundedInt(30 ) !== 0)
@@ -172,19 +172,19 @@ class MineshaftPopulator extends AmountPopulator {
// First, filling everything blank.
BuildingUtils::fill($this->level, new Vector3($x - 1, $y, $z ), new Vector3($x + 1, $y + 2, $z + 4 ));
// Then, making sure the floor is solid.
- BuildingUtils::fillCallback(new Vector3($x - 1, $y - 1, $z ), new Vector3($x + 1, $y - 1, $z + 4 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x - 1, $y - 1, $z ), new Vector3($x + 1, $y - 1, $z + 4 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
}, $this->level);
// Putting rails
- BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x, $y, $z + 4 ), function ($v3, $level, $random) {
+ BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x, $y, $z + 4 ), function ($v3, ChunkManager $level, Random $random) {
if ($random->nextBoundedInt(3 ) !== 0) {
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::RAIL);
$level->setBlockDataAt($v3->x, $v3->y, $v3->z, 0);
}
}, $this->level, $random);
- // After this, building the floor maintener (the wood structure)
+ // After this, building the floor maintainer (the wood structure)
$level->setBlockIdAt($x - 1, $y, $z, Block::FENCE);
$level->setBlockIdAt($x + 1, $y, $z, Block::FENCE);
$level->setBlockIdAt($x - 1, $y + 1, $z, Block::FENCE);
@@ -213,19 +213,19 @@ class MineshaftPopulator extends AmountPopulator {
// First, filling everything blank.
BuildingUtils::fill($this->level, new Vector3($x - 1, $y, $z ), new Vector3($x + 1, $y + 2, $z - 4 ));
// Then, making sure the floor is solid.
- BuildingUtils::fillCallback(new Vector3($x - 1, $y - 1, $z ), new Vector3($x + 1, $y - 1, $z - 4 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x - 1, $y - 1, $z ), new Vector3($x + 1, $y - 1, $z - 4 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
}, $this->level);
// Putting rails
- BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x, $y, $z - 4 ), function ($v3, $level, $random) {
+ BuildingUtils::fillCallback(new Vector3($x, $y, $z ), new Vector3($x, $y, $z - 4 ), function ($v3, ChunkManager $level, Random $random) {
if ($random->nextBoundedInt(3 ) !== 0) {
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::RAIL);
$level->setBlockDataAt($v3->x, $v3->y, $v3->z, 0);
}
}, $this->level, $random);
- // After this, building the floor maintener (the wood structure)
+ // After this, building the floor maintainer (the wood structure)
$level->setBlockIdAt($x - 1, $y, $z, Block::FENCE);
$level->setBlockIdAt($x + 1, $y, $z, Block::FENCE);
$level->setBlockIdAt($x - 1, $y + 1, $z, Block::FENCE);
@@ -288,7 +288,7 @@ class MineshaftPopulator extends AmountPopulator {
}
// Then, making sure the floor is solid.
- BuildingUtils::fillCallback(new Vector3($x + 1, $y - 1, $z - 1 ), new Vector3($x - 1, $y - 1, $z + 1 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x + 1, $y - 1, $z - 1 ), new Vector3($x - 1, $y - 1, $z + 1 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
@@ -310,12 +310,12 @@ class MineshaftPopulator extends AmountPopulator {
self::DIR_ZMIN
] : [ ])
];
- for($i = 7; $i > $newfloor; $i --) {
+ for($i = 7; $i > $newFloor; $i --) {
$chooseNew =(int ) $newFloor && $random->nextBoolean ();
$choose = $random->nextBoundedInt(4);
unset($possiblePathes [$chooseNew] [$choose]);
}
- // Buidling pathes
+ // Building pathes
foreach($possiblePathes [0] as $path ) {
switch ($path) {
case self::DIR_XPLUS :
@@ -366,17 +366,17 @@ class MineshaftPopulator extends AmountPopulator {
}
// Building stairs
for($i = 0; $i < 4; $i ++) {
- switch ($path) {
+ switch ($i) {
case self::DIR_XPLUS :
BuildingUtils::fill($this->level, new Vector3($x + $i, $y - $i - 1, $z - 2 ), new Vector3($x + $i, $y - $i + 3, $z + 2 ), Block::get(Block::AIR ));
- BuildingUtils::fillCallback(new Vector3($x + $i, $y - $i - 2, $z - 2 ), new Vector3($x + $i, $y - $i - 2, $z + 2 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x + $i, $y - $i - 2, $z - 2 ), new Vector3($x + $i, $y - $i - 2, $z + 2 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
}, $this->level);
break;
case self::DIR_XMIN :
BuildingUtils::fill($this->level, new Vector3($x - $i, $y - $i - 1, $z - 2 ), new Vector3($x - $i, $y - $i + 3, $z + 2 ), Block::get(Block::AIR ));
- BuildingUtils::fillCallback(new Vector3($x - $i, $y - $i - 2, $z - 2 ), new Vector3($x - $i, $y - $i - 2, $z + 2 ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x - $i, $y - $i - 2, $z - 2 ), new Vector3($x - $i, $y - $i - 2, $z + 2 ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
@@ -384,7 +384,7 @@ class MineshaftPopulator extends AmountPopulator {
break;
case self::DIR_ZPLUS :
BuildingUtils::fill($this->level, new Vector3($x - 2, $y - $i - 1, $z + $i ), new Vector3($x + 2, $y - $i + 3, $z + $i ), Block::get(Block::AIR ));
- BuildingUtils::fillCallback(new Vector3($x - 2, $y - $i - 2, $z + $i ), new Vector3($x + 2, $y - $i - 2, $z + $i ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x - 2, $y - $i - 2, $z + $i ), new Vector3($x + 2, $y - $i - 2, $z + $i ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
@@ -392,7 +392,7 @@ class MineshaftPopulator extends AmountPopulator {
break;
case self::DIR_ZMIN :
BuildingUtils::fill($this->level, new Vector3($x - 2, $y - $i - 1, $z - $i ), new Vector3($x + 2, $y - $i + 3, $z - $i ), Block::get(Block::AIR ));
- BuildingUtils::fillCallback(new Vector3($x - 2, $y - $i - 2, $z - $i ), new Vector3($x + 2, $y - $i - 2, $z - $i ), function ($v3, $level) {
+ BuildingUtils::fillCallback(new Vector3($x - 2, $y - $i - 2, $z - $i ), new Vector3($x + 2, $y - $i - 2, $z - $i ), function ($v3, ChunkManager $level) {
if ($level->getBlockIdAt($v3->x, $v3->y, $v3->z ) == Block::AIR)
$level->setBlockIdAt($v3->x, $v3->y, $v3->z, Block::PLANK);
@@ -402,7 +402,7 @@ class MineshaftPopulator extends AmountPopulator {
}
// Next one
- switch ($path) {
+ switch ($i) {
case self::DIR_XPLUS :
$this->generateMineshaftPart($x + 4, $y - 4, $z, self::DIR_XPLUS, $random);
break;
diff --git a/src/Ad5001/BetterGen/populator/RavinePopulator.php b/src/Ad5001/BetterGen/populator/RavinePopulator.php
index a689271..d278bf0 100644
--- a/src/Ad5001/BetterGen/populator/RavinePopulator.php
+++ b/src/Ad5001/BetterGen/populator/RavinePopulator.php
@@ -7,20 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\utils\BuildingUtils;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use Ad5001\BetterGen\populator\AmountPopulator;
-use Ad5001\BetterGen\utils\BuildingUtils;
+use pocketmine\level\Level;
+use pocketmine\utils\Random;
class RavinePopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
const NOISE = 250;
@@ -74,7 +75,7 @@ class RavinePopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL or $b === Block::SAND or $b === Block::SNOW_BLOCK or $b === Block::SANDSTONE) {
break;
@@ -83,7 +84,7 @@ class RavinePopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
/*
diff --git a/src/Ad5001/BetterGen/populator/SugarCanePopulator.php b/src/Ad5001/BetterGen/populator/SugarCanePopulator.php
index fb94ef5..b027d20 100644
--- a/src/Ad5001/BetterGen/populator/SugarCanePopulator.php
+++ b/src/Ad5001/BetterGen/populator/SugarCanePopulator.php
@@ -7,20 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
+use Ad5001\BetterGen\structure\SugarCane;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
+use pocketmine\level\Level;
use pocketmine\utils\Random;
-use Ad5001\BetterGen\structure\SugarCane;
-use Ad5001\BetterGen\populator\AmountPopulator;
class SugarCanePopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
/*
* Constructs the class
@@ -57,12 +58,12 @@ class SugarCanePopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y >= 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y >= 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b !== Block::AIR and $b !== Block::LEAVES and $b !== Block::LEAVES2) {
break;
}
}
- return $y === 0 ? - 1 : $y++;
+ return $y === 0 ? - 1 : ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/TemplePopulator.php b/src/Ad5001/BetterGen/populator/TemplePopulator.php
index 084688f..36b0147 100644
--- a/src/Ad5001/BetterGen/populator/TemplePopulator.php
+++ b/src/Ad5001/BetterGen/populator/TemplePopulator.php
@@ -7,20 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\structure\Temple;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use Ad5001\BetterGen\structure\Temple;
-use Ad5001\BetterGen\populator\AmountPopulator;
+use pocketmine\level\Level;
+use pocketmine\utils\Random;
class TemplePopulator extends AmountPopulator {
+ /** @var Level */
protected $level;
/*
@@ -48,13 +49,13 @@ class TemplePopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::SAND) {
break;
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/TreePopulator.php b/src/Ad5001/BetterGen/populator/TreePopulator.php
index 1e03293..b85470a 100644
--- a/src/Ad5001/BetterGen/populator/TreePopulator.php
+++ b/src/Ad5001/BetterGen/populator/TreePopulator.php
@@ -7,27 +7,29 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\Main;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use Ad5001\BetterGen\structure\SakuraTree;
-use Ad5001\BetterGen\populator\AmountPopulator;
-use Ad5001\BetterGen\Main;
+use pocketmine\level\generator\object\Tree;
+use pocketmine\level\Level;
+use pocketmine\utils\Random;
class TreePopulator extends AmountPopulator {
+ /** @var Tree[] */
static $types = [
"pocketmine\\level\\generator\\object\\OakTree",
"pocketmine\\level\\generator\\object\\BirchTree",
"Ad5001\\BetterGen\\structure\\SakuraTree"
];
+ /** @var ChunkManager */
protected $level;
protected $type;
@@ -63,7 +65,8 @@ class TreePopulator extends AmountPopulator {
continue;
}
$treeC = self::$types [$this->type];
- $tree = new $treeC();
+ /** @var Tree $tree */
+ $tree = new $treeC();
$tree->placeObject($level, $x, $y, $z, $random);
}
}
@@ -74,7 +77,7 @@ class TreePopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::DIRT or $b === Block::GRASS or $b === Block::PODZOL) {
break;
@@ -83,6 +86,6 @@ class TreePopulator extends AmountPopulator {
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/populator/WellPopulator.php b/src/Ad5001/BetterGen/populator/WellPopulator.php
index f49d675..33e2aa0 100644
--- a/src/Ad5001/BetterGen/populator/WellPopulator.php
+++ b/src/Ad5001/BetterGen/populator/WellPopulator.php
@@ -7,20 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\populator;
-use pocketmine\utils\Random;
+use Ad5001\BetterGen\structure\Well;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use Ad5001\BetterGen\structure\Well;
-use Ad5001\BetterGen\populator\AmountPopulator;
+use pocketmine\level\Level;
+use pocketmine\utils\Random;
class WellPopulator extends AmountPopulator {
+ /** @var ChunkManager */
protected $level;
/*
@@ -48,13 +49,13 @@ class WellPopulator extends AmountPopulator {
* @param $z int
*/
protected function getHighestWorkableBlock($x, $z) {
- for($y = 127; $y > 0; -- $y) {
+ for($y = Level::Y_MAX - 1; $y > 0; -- $y) {
$b = $this->level->getBlockIdAt($x, $y, $z);
if ($b === Block::SAND) {
break;
}
}
- return $y++;
+ return ++$y;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/structure/Bush.php b/src/Ad5001/BetterGen/structure/Bush.php
index af1c2e6..796636d 100644
--- a/src/Ad5001/BetterGen/structure/Bush.php
+++ b/src/Ad5001/BetterGen/structure/Bush.php
@@ -7,22 +7,21 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\structure;
-use pocketmine\block\Leaves;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use pocketmine\utils\Random;
-use pocketmine\math\Vector3;
use pocketmine\level\generator\object\Object;
+use pocketmine\math\Vector3;
+use pocketmine\utils\Random;
class Bush extends Object {
- public $overridable = [
+ public $overridable = [
Block::AIR => true,
17 => true,
Block::SNOW_LAYER => true,
diff --git a/src/Ad5001/BetterGen/structure/Cactus.php b/src/Ad5001/BetterGen/structure/Cactus.php
index e2ff8a7..27cf28c 100644
--- a/src/Ad5001/BetterGen/structure/Cactus.php
+++ b/src/Ad5001/BetterGen/structure/Cactus.php
@@ -7,7 +7,7 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
@@ -15,9 +15,9 @@
namespace Ad5001\BetterGen\structure;
use pocketmine\block\Block;
-use pocketmine\utils\Random;
use pocketmine\level\ChunkManager;
use pocketmine\level\generator\object\Object;
+use pocketmine\utils\Random;
class Cactus extends Object {
@@ -29,10 +29,12 @@ class Cactus extends Object {
* @param $z int
* @param $random pocketmine\utils\Random
*/
+ private $totalHeight;
+
public function canPlaceObject(ChunkManager $level, int $x, int $y, int $z, Random $random): bool {
$this->totalHeight = 1 + $random->nextBoundedInt(3);
$below = $level->getBlockIdAt($x, $y - 1, $z);
- for($yy = $y; $yy <= $y + $totalHeight; $yy ++) {
+ for($yy = $y; $yy <= $y + $this->totalHeight; $yy ++) {
if ($level->getBlockIdAt($x, $yy, $z ) !== Block::AIR || ($below !== Block::SAND && $below !== Block::CACTUS) || ($level->getBlockIdAt($x - 1, $yy, $z ) !== Block::AIR || $level->getBlockIdAt($x + 1, $yy, $z ) !== Block::AIR || $level->getBlockIdAt($x, $yy, $z - 1 ) !== Block::AIR || $level->getBlockIdAt($x, $yy, $z + 1 ) !== Block::AIR)) {
return false;
}
diff --git a/src/Ad5001/BetterGen/structure/FallenTree.php b/src/Ad5001/BetterGen/structure/FallenTree.php
index 7aa3b26..50ad112 100644
--- a/src/Ad5001/BetterGen/structure/FallenTree.php
+++ b/src/Ad5001/BetterGen/structure/FallenTree.php
@@ -1,26 +1,26 @@
tree = $tree;
}
-
+
/*
* Places a fallen tree
* @param $level pocketmine\level\ChunkManager
@@ -60,10 +61,10 @@ class FallenTree extends Object {
public function canPlaceObject(ChunkManager $level, $x, $y, $z, Random $random) {
echo "Checking at $x $y $z FallenTree\n";
$randomHeight = round($random->nextBoundedInt(6) - 3);
- $this->length = $this->tree->trunkHeight + $randomHeight;
+ $this->length = ($this->tree->trunkHeight??5) + $randomHeight;
$this->direction = $random->nextBoundedInt(4);
$this->random = $random;
- switch($this->direction) {
+ switch ($this->direction) {
case 0:
case 1:// Z+
$return = BuildingUtils::fillCallback(new Vector3($x, $y, $z), new Vector3($x, $y, $z + $this->length), function($v3, $level) {
@@ -91,7 +92,7 @@ class FallenTree extends Object {
}
return true;
}
-
+
/*
* Places a fallen tree
* @param $level pocketmine\level\ChunkManager
@@ -101,37 +102,39 @@ class FallenTree extends Object {
*/
public function placeObject(ChunkManager $level, $x, $y, $z) {
echo "Placing at $x $y $z FallenTree\n";
- switch($this->direction) {
+ switch ($this->direction) {
case 0:
- $level->setBlockIdAt($x, $y, $z, $this->tree->trunkBlock);
- $level->setBlockDataAt($x, $y, $z, $this->tree->type);
- $z += 2;
+ $level->setBlockIdAt($x, $y, $z, $this->tree->trunkBlock);
+ $level->setBlockDataAt($x, $y, $z, $this->tree->type);
+ $z += 2;
+ break;
case 1:// Z+
- BuildingUtils::fill($level, new Vector3($x, $y, $z), new Vector3($x, $y, $z + $this->length), Block::get($this->tree->trunkBlock, $this->tree->type + 4));
- BuildingUtils::fillRandom($level, new Vector3($x + 1, $y, $z), new Vector3($x, $y, $z + $this->length), Block::get(Block::VINE), $this->random);
- BuildingUtils::fillRandom($level, new Vector3($x - 1, $y, $z), new Vector3($x, $y, $z + $this->length), Block::get(Block::VINE), $this->random);
- break;
+ BuildingUtils::fill($level, new Vector3($x, $y, $z), new Vector3($x, $y, $z + $this->length), Block::get($this->tree->trunkBlock, $this->tree->type + 4));
+ BuildingUtils::fillRandom($level, new Vector3($x + 1, $y, $z), new Vector3($x, $y, $z + $this->length), Block::get(Block::VINE), $this->random);
+ BuildingUtils::fillRandom($level, new Vector3($x - 1, $y, $z), new Vector3($x, $y, $z + $this->length), Block::get(Block::VINE), $this->random);
+ break;
case 2:
- $level->setBlockIdAt($x, $y, $z, $this->tree->trunkBlock);
- $level->setBlockDataAt($x, $y, $z, $this->tree->type);
- $x += 2;
+ $level->setBlockIdAt($x, $y, $z, $this->tree->trunkBlock);
+ $level->setBlockDataAt($x, $y, $z, $this->tree->type);
+ $x += 2;
+ break;
case 3: // X+
- BuildingUtils::fill($level, new Vector3($x, $y, $z), new Vector3($x + $this->length, $y, $z), Block::get($this->tree->trunkBlock, $this->tree->type + 8));
- BuildingUtils::fillRandom($level, new Vector3($x, $y, $z + 1), new Vector3($x + $this->length, $y, $z), Block::get(Block::VINE), $this->random);
- BuildingUtils::fillRandom($level, new Vector3($x, $y, $z - 1), new Vector3($x + $this->length, $y, $z), Block::get(Block::VINE), $this->random);
- break;
+ BuildingUtils::fill($level, new Vector3($x, $y, $z), new Vector3($x + $this->length, $y, $z), Block::get($this->tree->trunkBlock, $this->tree->type + 8));
+ BuildingUtils::fillRandom($level, new Vector3($x, $y, $z + 1), new Vector3($x + $this->length, $y, $z), Block::get(Block::VINE), $this->random);
+ BuildingUtils::fillRandom($level, new Vector3($x, $y, $z - 1), new Vector3($x + $this->length, $y, $z), Block::get(Block::VINE), $this->random);
+ break;
}
// Second call to build the last wood block
- switch($this->direction) {
+ switch ($this->direction) {
case 1:
- $level->setBlockIdAt($x, $y, $z + $this->length + 2, $this->tree->trunkBlock);
- break;
+ $level->setBlockIdAt($x, $y, $z + $this->length + 2, $this->tree->trunkBlock);
+ break;
case 3:
- $level->setBlockIdAt($x + $this->length + 2, $y, $z, $this->tree->trunkBlock);
- break;
+ $level->setBlockIdAt($x + $this->length + 2, $y, $z, $this->tree->trunkBlock);
+ break;
}
}
-
+
/*
* Places a Block
* @param $x int
diff --git a/src/Ad5001/BetterGen/structure/Igloo.php b/src/Ad5001/BetterGen/structure/Igloo.php
index 71a231f..d76fdac 100644
--- a/src/Ad5001/BetterGen/structure/Igloo.php
+++ b/src/Ad5001/BetterGen/structure/Igloo.php
@@ -7,7 +7,7 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
@@ -16,8 +16,8 @@ namespace Ad5001\BetterGen\structure;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use pocketmine\utils\Random;
use pocketmine\level\generator\object\Object;
+use pocketmine\utils\Random;
class Igloo extends Object {
public $overridable = [
@@ -59,7 +59,7 @@ class Igloo extends Object {
if (! isset($this->overridable [$level->getBlockIdAt($xx, $yy, $zz )] ))
return false;
break;
- case 2 : // Entrence is z+
+ case 2 : // Entrance is z+
for($xx = $x - 3; $xx <= $x + 3; $xx ++)
for($yy = $y + 1; $yy <= $y + 4; $yy ++)
for($zz = $z - 3; $zz <= $z + 4; $zz ++)
@@ -84,6 +84,7 @@ class Igloo extends Object {
* @param $y int
* @param $z int
* @param $random pocketmine\utils\Random
+ * @return bool placed
*/
public function placeObject(ChunkManager $level, $x, $y, $z, Random $random) {
if (! isset($this->direction ) && ! $this->canPlaceObject($level, $x, $y, $z, $random ))
@@ -150,7 +151,7 @@ class Igloo extends Object {
$level->setBlockIdAt($xx, $y + 1, $zz, Block::CARPET);
}
- // Other furnitures
+ // Other furniture
// Bed
$level->setBlockIdAt($x - 1, $y + 1, $z + 2, Block::BED_BLOCK);
$level->setBlockIdAt($x, $y + 1, $z + 2, Block::BED_BLOCK);
@@ -225,7 +226,7 @@ class Igloo extends Object {
$level->setBlockIdAt($xx, $y + 1, $zz, Block::CARPET);
}
- // Other furnitures
+ // Other furniture
// Bed
$level->setBlockIdAt($x + 1, $y + 1, $z + 2, Block::BED_BLOCK);
$level->setBlockIdAt($x, $y + 1, $z + 2, Block::BED_BLOCK);
@@ -238,7 +239,7 @@ class Igloo extends Object {
break;
// Third direction
- case 2 : // Entrence is z+
+ case 2 : // Entrance is z+
// Ground
for($xx = $x - 3; $xx <= $x + 3; $xx ++)
for($zz = $z - 3; $zz <= $z + 4; $zz ++)
@@ -299,7 +300,7 @@ class Igloo extends Object {
$level->setBlockIdAt($xx, $y + 1, $zz, Block::CARPET);
}
- // Other furnitures
+ // Other furniture
// Bed
$level->setBlockIdAt($x + 2, $y + 1, $z - 1, Block::BED_BLOCK);
$level->setBlockIdAt($x + 2, $y + 1, $z, Block::BED_BLOCK);
@@ -373,7 +374,7 @@ class Igloo extends Object {
$level->setBlockIdAt($xx, $y + 1, $zz, Block::CARPET);
}
- // Other furnitures
+ // Other furniture
// Bed
$level->setBlockIdAt($x + 2, $y + 1, $z + 1, Block::BED_BLOCK);
$level->setBlockIdAt($x + 2, $y + 1, $z, Block::BED_BLOCK);
@@ -385,5 +386,6 @@ class Igloo extends Object {
$level->setBlockIdAt($x - 2, $y + 1, $z + 1, Block::FURNACE);
break;
}
+ return true;
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/structure/SakuraTree.php b/src/Ad5001/BetterGen/structure/SakuraTree.php
index cd7700b..99cd793 100644
--- a/src/Ad5001/BetterGen/structure/SakuraTree.php
+++ b/src/Ad5001/BetterGen/structure/SakuraTree.php
@@ -1,446 +1,450 @@
[
- 0,
- 1
- ], // 0 vertical, 1 horizontal and same goes for others...
- 8 => [
- 1,
- 0
- ],
- 9 => [
- 1,
- 1
- ],
- 10 => [
- 2,
- 0
- ],
- 11 => [
- 2,
- 1
- ],
- 12 => [
- 2,
- 2
- ],
- 13 => [
- 3,
- 1
- ]
+ const TRUNK_POS = [ // Checks for trees trunks. Not automatically generated but there is no point of making more or less
+ 7 => [
+ 0,
+ 1
+ ], // 0 vertical, 1 horizontal and same goes for others...
+ 8 => [
+ 1,
+ 0
+ ],
+ 9 => [
+ 1,
+ 1
+ ],
+ 10 => [
+ 2,
+ 0
+ ],
+ 11 => [
+ 2,
+ 1
+ ],
+ 12 => [
+ 2,
+ 2
+ ],
+ 13 => [
+ 3,
+ 1
+ ]
];
const DIAG_LEAVES = [ // Diag poses of the leaves based on the height of the tree.X relative to $lastX and Z from $lastZ
- 7 => [
- [
- 4,
- 4
- ],
- [
- - 4,
- 4
- ],
- [
- 4,
- - 4
- ],
- [
- - 4,
- - 4
- ]
+ 7 => [
+ [
+ 4,
+ 4
],
- 8 => [
- [
- 6,
- 6
- ],
- [
- - 6,
- 6
- ],
- [
- 6,
- - 6
- ],
- [
- - 6,
- - 6
- ]
+ [
+ -4,
+ 4
],
- 9 => [
- [
- 6,
- 6
- ],
- [
- - 6,
- 6
- ],
- [
- 6,
- - 6
- ],
- [
- - 6,
- - 6
- ]
+ [
+ 4,
+ -4
],
- 10 => [
- [
- 6,
- 6
- ],
- [
- - 6,
- 6
- ],
- [
- 6,
- - 6
- ],
- [
- - 6,
- - 6
- ]
+ [
+ -4,
+ -4
+ ]
+ ],
+ 8 => [
+ [
+ 6,
+ 6
],
- 11 => [
- [
- 7,
- 7
- ],
- [
- 6,
- 8
- ],
- [
- 8,
- 6
- ],
- [
- - 7,
- 7
- ],
- [
- - 6,
- 8
- ],
- [
- - 8,
- 6
- ],
- [
- 7,
- - 7
- ],
- [
- 6,
- - 8
- ],
- [
- 8,
- - 6
- ],
- [
- - 7,
- - 7
- ],
- [
- - 6,
- - 8
- ],
- [
- - 8,
- - 6
- ]
+ [
+ -6,
+ 6
],
- 12 => [
- [
- 7,
- 7
- ],
- [
- 6,
- 8
- ],
- [
- 8,
- 6
- ],
- [
- - 7,
- 7
- ],
- [
- - 6,
- 8
- ],
- [
- - 8,
- 6
- ],
- [
- 7,
- - 7
- ],
- [
- 6,
- - 8
- ],
- [
- 8,
- - 6
- ],
- [
- - 7,
- - 7
- ],
- [
- - 6,
- - 8
- ],
- [
- - 8,
- - 6
- ]
+ [
+ 6,
+ -6
],
- 13 => [
- [
- 7,
- 7
- ],
- [
- 6,
- 8
- ],
- [
- 8,
- 6
- ],
- [
- - 7,
- 7
- ],
- [
- - 6,
- 8
- ],
- [
- - 8,
- 6
- ],
- [
- 7,
- - 7
- ],
- [
- 6,
- - 8
- ],
- [
- 8,
- - 6
- ],
- [
- - 7,
- - 7
- ],
- [
- - 6,
- - 8
- ],
- [
- - 8,
- - 6
- ]
- ]
+ [
+ -6,
+ -6
+ ]
+ ],
+ 9 => [
+ [
+ 6,
+ 6
+ ],
+ [
+ -6,
+ 6
+ ],
+ [
+ 6,
+ -6
+ ],
+ [
+ -6,
+ -6
+ ]
+ ],
+ 10 => [
+ [
+ 6,
+ 6
+ ],
+ [
+ -6,
+ 6
+ ],
+ [
+ 6,
+ -6
+ ],
+ [
+ -6,
+ -6
+ ]
+ ],
+ 11 => [
+ [
+ 7,
+ 7
+ ],
+ [
+ 6,
+ 8
+ ],
+ [
+ 8,
+ 6
+ ],
+ [
+ -7,
+ 7
+ ],
+ [
+ -6,
+ 8
+ ],
+ [
+ -8,
+ 6
+ ],
+ [
+ 7,
+ -7
+ ],
+ [
+ 6,
+ -8
+ ],
+ [
+ 8,
+ -6
+ ],
+ [
+ -7,
+ -7
+ ],
+ [
+ -6,
+ -8
+ ],
+ [
+ -8,
+ -6
+ ]
+ ],
+ 12 => [
+ [
+ 7,
+ 7
+ ],
+ [
+ 6,
+ 8
+ ],
+ [
+ 8,
+ 6
+ ],
+ [
+ -7,
+ 7
+ ],
+ [
+ -6,
+ 8
+ ],
+ [
+ -8,
+ 6
+ ],
+ [
+ 7,
+ -7
+ ],
+ [
+ 6,
+ -8
+ ],
+ [
+ 8,
+ -6
+ ],
+ [
+ -7,
+ -7
+ ],
+ [
+ -6,
+ -8
+ ],
+ [
+ -8,
+ -6
+ ]
+ ],
+ 13 => [
+ [
+ 7,
+ 7
+ ],
+ [
+ 6,
+ 8
+ ],
+ [
+ 8,
+ 6
+ ],
+ [
+ -7,
+ 7
+ ],
+ [
+ -6,
+ 8
+ ],
+ [
+ -8,
+ 6
+ ],
+ [
+ 7,
+ -7
+ ],
+ [
+ 6,
+ -8
+ ],
+ [
+ 8,
+ -6
+ ],
+ [
+ -7,
+ -7
+ ],
+ [
+ -6,
+ -8
+ ],
+ [
+ -8,
+ -6
+ ]
+ ]
];
const ADDITIONAL_BLOCKS = [ // Blocks who aren't set to fully fill the tree. X relative to $lastX and Z from $lastZ
- 7 => [ ],
- 8 => [ ],
- 9 => [ ],
- 10 => [ ],
- 11 => [
- [
- 6,
- 6
- ],
- [
- 7,
- 6
- ],
- [
- 6,
- 7
- ],
- [
- - 6,
- 6
- ],
- [
- - 7,
- 6
- ],
- [
- - 6,
- 7
- ],
- [
- 6,
- - 6
- ],
- [
- 7,
- - 6
- ],
- [
- 6,
- - 7
- ],
- [
- - 6,
- - 6
- ],
- [
- - 7,
- - 6
- ],
- [
- - 6,
- - 7
- ]
+ 7 => [],
+ 8 => [],
+ 9 => [],
+ 10 => [],
+ 11 => [
+ [
+ 6,
+ 6
],
- 12 => [
- [
- 6,
- 6
- ],
- [
- 7,
- 6
- ],
- [
- 6,
- 7
- ],
- [
- - 6,
- 6
- ],
- [
- - 7,
- 6
- ],
- [
- - 6,
- 7
- ],
- [
- 6,
- - 6
- ],
- [
- 7,
- - 6
- ],
- [
- 6,
- - 7
- ],
- [
- - 6,
- - 6
- ],
- [
- - 7,
- - 6
- ],
- [
- - 6,
- - 7
- ]
+ [
+ 7,
+ 6
],
- 13 => [
- [
- 6,
- 6
- ],
- [
- 7,
- 6
- ],
- [
- 6,
- 7
- ],
- [
- - 6,
- 6
- ],
- [
- - 7,
- 6
- ],
- [
- - 6,
- 7
- ],
- [
- 6,
- - 6
- ],
- [
- 7,
- - 6
- ],
- [
- 6,
- - 7
- ],
- [
- - 6,
- - 6
- ],
- [
- - 7,
- - 6
- ],
- [
- - 6,
- - 7
- ]
- ]
+ [
+ 6,
+ 7
+ ],
+ [
+ -6,
+ 6
+ ],
+ [
+ -7,
+ 6
+ ],
+ [
+ -6,
+ 7
+ ],
+ [
+ 6,
+ -6
+ ],
+ [
+ 7,
+ -6
+ ],
+ [
+ 6,
+ -7
+ ],
+ [
+ -6,
+ -6
+ ],
+ [
+ -7,
+ -6
+ ],
+ [
+ -6,
+ -7
+ ]
+ ],
+ 12 => [
+ [
+ 6,
+ 6
+ ],
+ [
+ 7,
+ 6
+ ],
+ [
+ 6,
+ 7
+ ],
+ [
+ -6,
+ 6
+ ],
+ [
+ -7,
+ 6
+ ],
+ [
+ -6,
+ 7
+ ],
+ [
+ 6,
+ -6
+ ],
+ [
+ 7,
+ -6
+ ],
+ [
+ 6,
+ -7
+ ],
+ [
+ -6,
+ -6
+ ],
+ [
+ -7,
+ -6
+ ],
+ [
+ -6,
+ -7
+ ]
+ ],
+ 13 => [
+ [
+ 6,
+ 6
+ ],
+ [
+ 7,
+ 6
+ ],
+ [
+ 6,
+ 7
+ ],
+ [
+ -6,
+ 6
+ ],
+ [
+ -7,
+ 6
+ ],
+ [
+ -6,
+ 7
+ ],
+ [
+ 6,
+ -6
+ ],
+ [
+ 7,
+ -6
+ ],
+ [
+ 6,
+ -7
+ ],
+ [
+ -6,
+ -6
+ ],
+ [
+ -7,
+ -6
+ ],
+ [
+ -6,
+ -7
+ ]
+ ]
];
const maxPerChunk = 2;
public $trunkHeight = 11;
-
+ public $leafType;
+ public $leaf2Type;
+
/*
* Constructs the class
*/
@@ -452,7 +456,7 @@ class SakuraTree extends Tree {
$this->leaf2Type = 0;
$this->type = Wood::OAK;
}
-
+
/*
* Builds the tree.
* @param $level \pocketmine\level\ChunkManager
@@ -467,7 +471,9 @@ class SakuraTree extends Tree {
return;
}
$trunkHeight = 7 + $random->nextBoundedInt(7);
-
+
+ $xDiff = $zDiff = 0;
+
$direction = $random->nextBoundedInt(3); // Choosing building north east west south
switch ($direction) {
case 0 :
@@ -487,35 +493,35 @@ class SakuraTree extends Tree {
$zDiff = 0;
break;
}
- list($vParts, $hParts ) = self::TRUNK_POS [$trunkHeight];
-
+ list($vParts, $hParts) = self::TRUNK_POS [$trunkHeight];
+
$this->setLog($level, $x, $y, $z);
- list($lastX, $lastY, $lastZ ) = [
- $x,
- $y,
- $z
+ list($lastX, $lastY, $lastZ) = [
+ $x,
+ $y,
+ $z
];
-
- // Filling horisontally
+
+ // Filling horizontally
if ($hParts > 0) {
- for($i = 0; $i < $hParts; $i ++) {
+ for ($i = 0; $i < $hParts; $i++) {
$lastX += $xDiff * 2;
- $lastY ++;
+ $lastY++;
$lastZ += $zDiff * 2;
$this->setLog($level, $lastX - $xDiff, $lastY, $lastZ - $zDiff);
$this->setLog($level, $lastX, $lastY, $lastZ);
}
}
-
+
// The middle block
$lastX += $xDiff;
- $lastY ++;
+ $lastY++;
$lastZ += $zDiff;
$this->setLog($level, $lastX, $lastY, $lastZ);
-
- // Filling verticaly
+
+ // Filling vertically
if ($vParts > 0) {
- for($i = 0; $i < $vParts; $i ++) {
+ for ($i = 0; $i < $vParts; $i++) {
$lastX += $xDiff;
$lastY += 2;
$lastZ += $zDiff;
@@ -525,18 +531,20 @@ class SakuraTree extends Tree {
}
// Filling the top trunk.
$lastX += $xDiff;
- $lastY ++;
+ $lastY++;
$lastZ += $zDiff;
- for($i = 0; $i < 4; $i ++) {
+ for ($i = 0; $i < 4; $i++) {
$this->setLog($level, $lastX, $lastY + $i, $lastZ);
}
- $lastY ++;
- // FIlling the branches.
+ $lastY++;
+ // Filling the branches.
$branchLen2 = function ($base) {
return ceil($base / 2);
};
-
- for($dir = 0; $dir < 4; $dir ++) {
+
+ $xd = $zd = 0;
+
+ for ($dir = 0; $dir < 4; $dir++) {
switch ($dir) {
case 0 :
$xd = 0;
@@ -555,62 +563,66 @@ class SakuraTree extends Tree {
$zd = 0;
break;
}
-
+
$stickLen = round($trunkHeight / 3);
$stickLen2 = call_user_func($branchLen2, $stickLen);
$totalLength = $stickLen + $stickLen2; // Length of the stick
$sideLen = $totalLength ** 2; // Side length
-
+
+ //TODO CHECK WHAT THIS IS SUPPOSED TO BE
+ $numForward = ($totalLength % 2 == 0) ? $totalLength - 1 : $totalLength;
+ //TODO END
+ $lX1 = $lZ1 = $lX = $lZ = 0;
+
// First branch part + first leave part
- for($i = 1; $i < $stickLen + 1; $i ++) {
+ for ($i = 1; $i < $stickLen + 1; $i++) {
$lX1 = $lastX + ($xd * $i);
$lZ1 = $lastZ + ($zd * $i);
if ($zd !== 0)
- for($x = $lX1 - $numForward; $x !== $lX1 + $numForward + 1; $x ++) {
+ for ($x = $lX1 - $numForward; $x !== $lX1 + $numForward + 1; $x++) {
$this->setLeave($level, $x, $lastY + 3, $lZ1, $random);
}
if ($xd !== 0)
- for($z = $lZ1 - $numForward; $z !== $lZ1 + $numForward + 1; $z ++) {
+ for ($z = $lZ1 - $numForward; $z !== $lZ1 + $numForward + 1; $z++) {
$this->setLeave($level, $lX1, $lastY + 3, $z, $random);
}
$this->setLog($level, $lX1, $lastY, $lZ1);
}
-
+
// Second branch part. + second leave part
- $numForward = ($totalLength % 2 == 0) ? $totalLength - 1 : $totalLength;
- for($i = 1; $i < $stickLen + 1; $i ++) {
+ for ($i = 1; $i < $stickLen + 1; $i++) {
$lX = $lX1 + ($xd * $i);
$lZ = $lZ1 + ($zd * $i);
if ($zd !== 0)
- for($x = $lX - $numForward; $x !== $lX + $numForward + 1; $x ++) {
+ for ($x = $lX - $numForward; $x !== $lX + $numForward + 1; $x++) {
$this->setLeave($level, $x, $lastY + 2, $lZ, $random);
}
if ($xd !== 0)
- for($z = $lZ - $numForward; $z !== $lZ + $numForward + 1; $z ++) {
+ for ($z = $lZ - $numForward; $z !== $lZ + $numForward + 1; $z++) {
$this->setLeave($level, $lX, $lastY + 2, $z, $random);
}
$this->setLog($level, $lX, $lastY + 1, $lZ);
}
-
+
$lX += $xd;
$lZ += $zd;
// Leaves falling from the tree forward
if ($lastZ !== $lZ) { // Z has changed, using X for setting
- for($x = $lX - $numForward; $x <= $lX + $numForward; $x ++) {
- $numDown = $random->nextBoundedInt(3 ) + 1;
- for($y = $lastY + 1; $y > $lastY - $numDown; $y --)
+ for ($x = $lX - $numForward; $x <= $lX + $numForward; $x++) {
+ $numDown = $random->nextBoundedInt(3) + 1;
+ for ($y = $lastY + 1; $y > $lastY - $numDown; $y--)
$this->setLeave($level, $x, $y, $lZ, $random);
}
} else { // Z have stayed, X has changed
- for($z = $lZ - $numForward; $z <= $lZ + $numForward; $z ++) {
- $numDown = $random->nextBoundedInt(3 ) + 1;
- for($y = $lastY + 1; $y > $lastY + 1 - $numDown; $y --)
+ for ($z = $lZ - $numForward; $z <= $lZ + $numForward; $z++) {
+ $numDown = $random->nextBoundedInt(3) + 1;
+ for ($y = $lastY + 1; $y > $lastY + 1 - $numDown; $y--)
$this->setLeave($level, $lX, $y, $z, $random);
}
}
-
+
// continue;
-
+
switch ($dir + 1) {
case 4 :
$xd2 = 0;
@@ -629,21 +641,21 @@ class SakuraTree extends Tree {
$zd2 = 0;
break;
}
-
- // Leaves falling from the tree diagonaly
- foreach(self::DIAG_LEAVES [$trunkHeight] as $pos ) {
- $numDown = $random->nextBoundedInt(3 ) + 1;
- for($y = $lastY + 1; $y > $lastY - $numDown; $y --)
+
+ // Leaves falling from the tree diagonally
+ foreach (self::DIAG_LEAVES [$trunkHeight] as $pos) {
+ $numDown = $random->nextBoundedInt(3) + 1;
+ for ($y = $lastY + 1; $y > $lastY - $numDown; $y--)
$this->setLeave($level, $lastX + $pos [0], $y, $lastZ + $pos [1], $random);
}
-
+
// Additional leaves
- foreach(self::ADDITIONAL_BLOCKS [$trunkHeight] as $pos ) {
+ foreach (self::ADDITIONAL_BLOCKS [$trunkHeight] as $pos) {
$this->setLeave($level, $lastX + $pos [0], $lastY + 2, $lastZ + $pos [1], $random);
}
}
}
-
+
/*
* Fills a log at.
* @param $level pocketmine\level\ChunkManager
@@ -655,7 +667,7 @@ class SakuraTree extends Tree {
$level->setBlockIdAt($x, $y, $z, $this->trunkBlock);
$level->setBlockDataAt($x, $y, $z, $this->type);
}
-
+
/*
* Fills a leave at.
* @param $level pocketmine\level\ChunkManager
@@ -665,10 +677,10 @@ class SakuraTree extends Tree {
* @param $random pocketmine\utils\Random
*/
public function setLeave(ChunkManager $level, $x, $y, $z, Random $random) {
- $data = [
- $this->leafType,
- $this->leaf2Type
- ] [( int ) $random->nextBoolean ()];
+ $data = [
+ $this->leafType,
+ $this->leaf2Type
+ ] [( int )$random->nextBoolean()];
$level->setBlockIdAt($x, $y, $z, $this->realLeafBlock);
$level->setBlockDataAt($x, $y, $z, $data);
}
diff --git a/src/Ad5001/BetterGen/structure/SugarCane.php b/src/Ad5001/BetterGen/structure/SugarCane.php
index 3e150d2..cbbc670 100644
--- a/src/Ad5001/BetterGen/structure/SugarCane.php
+++ b/src/Ad5001/BetterGen/structure/SugarCane.php
@@ -7,7 +7,7 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
@@ -16,9 +16,9 @@
namespace Ad5001\BetterGen\structure;
use pocketmine\block\Block;
-use pocketmine\utils\Random;
use pocketmine\level\ChunkManager;
use pocketmine\level\generator\object\Object;
+use pocketmine\utils\Random;
class SugarCane extends Object {
@@ -30,6 +30,8 @@ class SugarCane extends Object {
* @param $z int
* @param $random pocketmine\utils\Random
*/
+ private $totalHeight;
+
public function canPlaceObject(ChunkManager $level, int $x, int $y, int $z, Random $random): bool {
$this->totalHeight = 1 + $random->nextBoundedInt(3);
$below = $level->getBlockIdAt($x, $y - 1, $z);
diff --git a/src/Ad5001/BetterGen/structure/Temple.php b/src/Ad5001/BetterGen/structure/Temple.php
index 41ded3d..b99aee9 100644
--- a/src/Ad5001/BetterGen/structure/Temple.php
+++ b/src/Ad5001/BetterGen/structure/Temple.php
@@ -1,113 +1,116 @@
true,
- 6 => true,
- 17 => true,
- 18 => true,
- Block::DANDELION => true,
- Block::POPPY => true,
- Block::SNOW_LAYER => true,
- Block::LOG2 => true,
- Block::LEAVES2 => true,
- Block::CACTUS => true
+ public $overridable = [
+ Block::AIR => true,
+ Block::SAPLING => true,
+ Block::LOG => true,
+ Block::LEAVES => true,
+ Block::STONE => true,
+ Block::DANDELION => true,
+ Block::POPPY => true,
+ Block::SNOW_LAYER => true,
+ Block::LOG2 => true,
+ Block::LEAVES2 => true,
+ Block::CACTUS => true
];
- protected $directions = [
- [
- 1,
- 1
- ],
- [
- 1,
- - 1
- ],
- [
- - 1,
- - 1
- ],
- [
- - 1,
- 1
- ]
+ protected $directions = [
+ [
+ 1,
+ 1
+ ],
+ [
+ 1,
+ -1
+ ],
+ [
+ -1,
+ -1
+ ],
+ [
+ -1,
+ 1
+ ]
];
-
+ /** @var ChunkManager */
+ private $level;
+ private $direction = 0;
+
/*
* Checks if a temple is placeable
* @param $level pocketmine\level\ChunkManager
@@ -117,16 +120,18 @@ class Temple extends Object {
* @param $random pocketmine\utils\Random
* @return bool
*/
+
public function canPlaceObject(ChunkManager $level, $x, $y, $z, Random $random) {
+ $this->level = $level;
$this->direction = $random->nextBoundedInt(4);
- for($xx = $x - 10; $xx <= $x + 10; $xx ++)
- for($yy = $y + 1; $yy <= $y + 11; $yy ++)
- for($zz = $z - 10; $zz <= $z + 10; $zz ++)
- if (! isset($this->overridable [$level->getBlockIdAt($xx, $yy, $zz )] ))
+ for ($xx = $x - 10; $xx <= $x + 10; $xx++)
+ for ($yy = $y + 1; $yy <= $y + 11; $yy++)
+ for ($zz = $z - 10; $zz <= $z + 10; $zz++)
+ if (!isset($this->overridable [$level->getBlockIdAt($xx, $yy, $zz)]))
return false;
return true;
}
-
+
/*
* Places a temple
* @param $level pocketmine\level\ChunkManager
@@ -137,104 +142,111 @@ class Temple extends Object {
*/
public function placeObject(ChunkManager $level, $x, $y, $z, Random $random) {
// Clearing space...
- BuildingUtils::fill($level, new Vector3($x + 10, $y + 1, $z + 10 ), new Vector3($x - 10, $y + 2, $z - 10 ), Block::get(Block::AIR ));
+ BuildingUtils::fill($level, new Vector3($x + 10, $y + 1, $z + 10), new Vector3($x - 10, $y + 2, $z - 10), Block::get(Block::AIR));
// First, build a pyramid.
$this->level = $level;
$firstPos = new Vector3($x + 10, $y, $z + 10);
$sndPos = new Vector3($x - 10, $y, $z - 10);
- for($i = 0; $i <= 9; $i ++) {
- // Building sides
- BuildingUtils::walls($level, $firstPos, $sndPos, Block::get(Block::SANDSTONE ));
-
- // Next floor
- $firstPos->x --;
- $firstPos->z --;
- $firstPos->y = $y + $i;
- $sndPos->x ++;
- $sndPos->z ++;
- $sndPos->y = $y + $i;
+ for ($i = 0; $i <= 9; $i++) {
+ // Building diagonal sides
+ BuildingUtils::walls($level, $firstPos->add(-$i, $i, -$i), $sndPos->add($i, $i, $i), Block::get(Block::SANDSTONE));
}
- // Floors
- for($xx = $x + 9; $xx >= $x - 9; $xx --)
- for($zz = $z + 9; $zz >= $z - 9; $zz --)
- $this->placeBlock($xx, $y, $zz);
- for($xx = $x + 5; $xx >= $x - 5; $xx --)
- for($zz = $z + 5; $zz >= $z - 5; $zz --)
- $this->placeBlock($xx, $y + 4, $zz);
-
+
+ // Floor top
+ BuildingUtils::fill($level, new Vector3($x - 5, $y + 4, $z - 5), new Vector3($x + 5, $y + 4, $z + 5), Block::get(Block::SANDSTONE));
+ #for ($xx = $x + 5; $xx >= $x - 5; $xx--)
+ # for ($zz = $z + 5; $zz >= $z - 5; $zz--)
+ # $this->placeBlock($xx, $y + 4, $zz);
+
// Creating hole
- for($xx = $x - 1; $xx <= $x + 1; $xx ++)
- for($yy = $y - 11; $yy <= $y + 4; $yy ++)
- for($zz = $z - 1; $zz <= $z + 1; $zz ++)
- $this->placeBlock($xx, $yy, $zz, 0);
-
- // Floor patern
- foreach($this->directions as $dir ) {
- // Building pillar
- for($yy = $y + 1; $yy <= $y + 3; $yy ++)
- $this->placeBlock($x + ($dir [0] * 2), $yy, $z + ($dir [1] * 2), Block::SANDSTONE, 2);
+ BuildingUtils::fill($level, new Vector3($x - 1, $y - 11, $z - 1), new Vector3($x + 1, $y + 4, $z + 1), Block::get(Block::AIR));
+ #for ($xx = $x - 1; $xx <= $x + 1; $xx++)
+ # for ($yy = $y - 11; $yy <= $y + 4; $yy++)
+ # for ($zz = $z - 1; $zz <= $z + 1; $zz++)
+ # $this->placeBlock($xx, $yy, $zz, Block::AIR);
+
+ // Hole walls
+ BuildingUtils::walls($level, new Vector3($x - 2, $y - 1, $z - 2), new Vector3($x + 2, $y - 8, $z + 2), Block::get(Block::SANDSTONE));
+
+ //Floor bottom
+ BuildingUtils::fill($level, new Vector3($x - 9, $y, $z - 9), new Vector3($x + 9, $y, $z + 9), Block::get(Block::SANDSTONE));
+ #for ($xx = $x + 9; $xx >= $x - 9; $xx--)
+ # for ($zz = $z + 9; $zz >= $z - 9; $zz--)
+ # $this->placeBlock($xx, $y, $zz);
+
+ // Floor pattern
+ for ($i = -2; $i <= 1; $i++) {//straight
+ $xextra = ($i + 1) % 2;
+ $zextra = ($i) % 2;
// Orange hardened clay
- $this->placeBlock($x + $dir [0], $y, $z + $dir [1], Block::STAINED_HARDENED_CLAY, 1);
- $this->placeBlock($x + ($dir [0] * 2), $y, $z, Block::STAINED_HARDENED_CLAY, 1);
- $this->placeBlock($x + ($dir [0] * 3), $y, $z, Block::STAINED_HARDENED_CLAY, 1);
- $this->placeBlock($x, $y, $z + ($dir [1] * 2), Block::STAINED_HARDENED_CLAY, 1);
- $this->placeBlock($x, $y, $z + ($dir [1] * 3), Block::STAINED_HARDENED_CLAY, 1);
-
- // Sandstone
- $this->placeBlock($x + $dir [0], $y, $z);
- $this->placeBlock($x, $y, $z + $dir [1]);
+ $this->placeBlock($x + ($xextra * 3), $y, $z + ($zextra * 3), Block::STAINED_HARDENED_CLAY, 1);//OUTER out
+ $this->placeBlock($x + ($xextra * 2), $y, $z + ($zextra * 2), Block::STAINED_HARDENED_CLAY, 1);//OUTER in
+ }
+ foreach ($this->directions as $direction) {//Diagonals
+ // Building pillar
+ for ($yy = $y + 1; $yy <= $y + 3; $yy++)
+ $this->placeBlock($x + ($direction[0] * 2), $yy, $z + ($direction[1] * 2), Block::SANDSTONE, 2);
+ $this->placeBlock($x + $direction[0], $y, $z + $direction[1], Block::STAINED_HARDENED_CLAY, 1);//Diagonal
}
// Blue hardened clay (center)
$this->placeBlock($x, $y, $z, Block::STAINED_HARDENED_CLAY, 11);
- // Hole walls
- BuildingUtils::walls($level, new Vector3($x - 2, $y, $z - 2 ), new Vector3($x + 2, $y - 8, $z + 2 ), Block::get(Block::SANDSTONE ));
-
+ // Floor pattern end
+
// Last step like this
- for($xx = $x - 2; $xx <= $x + 2; $xx ++) {
+ for ($xx = $x - 2; $xx <= $x + 2; $xx++) {
$this->placeBlock($xx, $y - 9, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($xx, $y - 9, $z + 2, Block::SANDSTONE, 2);
}
- for($zz = $z - 2; $zz <= $z + 2; $zz ++) {
+ for ($zz = $z - 2; $zz <= $z + 2; $zz++) {
$this->placeBlock($x - 2, $y - 9, $zz, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y - 9, $zz, Block::SANDSTONE, 2);
}
-
- foreach(self::THREE_DIAGS as $diagPos ) {
+
+ foreach (self::THREE_DIAGS as $diagPos) {
$this->placeBlock($x + $diagPos [0], $y - 10, $z + $diagPos [1], Block::SANDSTONE, 1);
$this->placeBlock($x + $diagPos [0], $y - 11, $z + $diagPos [1], Block::SANDSTONE, 2);
}
-
+
// Floor + TNT
- for($xx = $x - 2; $xx <= $x + 2; $xx ++)
- for($zz = $z - 2; $zz <= $z + 2; $zz ++)
+ for ($xx = $x - 2; $xx <= $x + 2; $xx++)
+ for ($zz = $z - 2; $zz <= $z + 2; $zz++)
$this->placeBlock($xx, $y - 12, $zz, Block::SANDSTONE, 2);
- for($xx = $x - 1; $xx <= $x + 1; $xx ++)
- for($zz = $z - 1; $zz <= $z + 1; $zz ++)
+ for ($xx = $x - 1; $xx <= $x + 1; $xx++)
+ for ($zz = $z - 1; $zz <= $z + 1; $zz++)
$this->placeBlock($xx, $y - 13, $zz, Block::TNT);
$this->placeBlock($x, $y - 11, $z, Block::STONE_PRESSURE_PLATE);
-
+
+ //TODO TILES
+ $this->placeBlock($x, $y - 11, $z + 2, Block::CHEST, 4);
+ $this->placeBlock($x, $y - 11, $z - 2, Block::CHEST, 2);
+ $this->placeBlock($x + 2, $y - 11, $z, Block::CHEST, 5);
+ $this->placeBlock($x - 2, $y - 11, $z, Block::CHEST, 3);
+ $this->placeBlock($x, $y - 10, $z + 2, Block::AIR);
+ $this->placeBlock($x, $y - 10, $z - 2, Block::AIR);
+ $this->placeBlock($x + 2, $y - 10, $z, Block::AIR);
+ $this->placeBlock($x - 2, $y - 10, $z, Block::AIR);
// Chests
- LootTable::buildLootTable(new Vector3($x, $y - 11, $z + 2 ), LootTable::LOOT_DESERT_TEMPLE, $random);
- LootTable::buildLootTable(new Vector3($x, $y - 11, $z - 2 ), LootTable::LOOT_DESERT_TEMPLE, $random);
- LootTable::buildLootTable(new Vector3($x + 2, $y - 11, $z ), LootTable::LOOT_DESERT_TEMPLE, $random);
- LootTable::buildLootTable(new Vector3($x - 2, $y - 11, $z ), LootTable::LOOT_DESERT_TEMPLE, $random);
-
+ /*LootTable::buildLootTable(new Vector3($x, $y - 11, $z + 2), LootTable::LOOT_DESERT_TEMPLE, $random);//TODO: Improve using addon
+ LootTable::buildLootTable(new Vector3($x, $y - 11, $z - 2), LootTable::LOOT_DESERT_TEMPLE, $random);
+ LootTable::buildLootTable(new Vector3($x + 2, $y - 11, $z), LootTable::LOOT_DESERT_TEMPLE, $random);
+ LootTable::buildLootTable(new Vector3($x - 2, $y - 11, $z), LootTable::LOOT_DESERT_TEMPLE, $random);*/
+
// Entrance is a rectangular parallelepiped
switch ($this->direction) {
case self::DIRECTION_PLUSX : // x+ (0)
- // Building towers.
+ // Building towers.
$this->placeTower($x + 8, $y, $z + 8, self::DIRECTION_PLUSX, self::DIRECTION_PLUSZ);
$this->placeTower($x + 8, $y, $z - 8, self::DIRECTION_PLUSX, self::DIRECTION_MINZ);
// Creating rectangular parallelepiped of sandstone.
- BuildingUtils::fill($level, new Vector3($x + 6, $y + 1, $z - 6 ), new Vector3($x + 9, $y + 4, $z + 6 ), Block::get(Block::SANDSTONE ));
+ BuildingUtils::fill($level, new Vector3($x + 6, $y + 1, $z - 6), new Vector3($x + 9, $y + 4, $z + 6), Block::get(Block::SANDSTONE));
// Creating a path to the entrance
- BuildingUtils::fill($level, new Vector3($x + 6, $y + 1, $z - 1 ), new Vector3($x + 9, $y + 4, $z + 1 ), Block::get(Block::AIR ));
+ BuildingUtils::fill($level, new Vector3($x + 6, $y + 1, $z - 1), new Vector3($x + 9, $y + 4, $z + 1), Block::get(Block::AIR));//this clears the entrance
// Creating path to towers.
- for($yy = $y + 1; $yy <= $y + 2; $yy ++)
- for($zz = $z - 6; $zz <= $z + 6; $zz ++)
+ for ($yy = $y + 1; $yy <= $y + 2; $yy++)
+ for ($zz = $z - 6; $zz <= $z + 6; $zz++)
$this->placeBlock($x + 8, $yy, $zz, 0);
// Door additional blocks
- for($yy = $y + 1; $yy <= $y + 4; $yy ++) {
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++) {
$this->placeBlock($x + 6, $yy, $z - 2);
$this->placeBlock($x + 6, $yy, $z + 2);
// Polished entrance
@@ -246,40 +258,40 @@ class Temple extends Object {
}
// Finishing entrance structure
$this->placeBlock($x + 9, $y + 3, $z, Block::SANDSTONE, 2);
- for($zz = $z - 2; $zz <= $z + 2; $zz ++)
+ for ($zz = $z - 2; $zz <= $z + 2; $zz++)
$this->placeBlock($x + 10, $y + 4, $zz, Block::SANDSTONE, 2);
$this->placeBlock($x + 10, $y + 5, $z, Block::SANDSTONE, 1);
$this->placeBlock($x + 10, $y + 5, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 10, $y + 5, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 10, $y + 5, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 10, $y + 5, $z + 2, Block::SANDSTONE, 2);
- for($zz = $z - 1; $zz <= $z + 1; $zz ++)
+ for ($zz = $z - 1; $zz <= $z + 1; $zz++)
$this->placeBlock($x + 10, $y + 6, $zz, Block::SANDSTONE, 2);
- for($xx = $x + 6; $xx <= $x + 9; $xx ++)
- for($zz = $z - 2; $zz <= $z + 2; $zz ++)
+ for ($xx = $x + 6; $xx <= $x + 9; $xx++)
+ for ($zz = $z - 2; $zz <= $z + 2; $zz++)
$this->placeBlock($xx, $y + 4, $zz);
break;
-
+
case self::DIRECTION_MINX : // x- (1)
- // Building towers.
+ // Building towers.
$this->placeTower($x - 8, $y, $z + 8, self::DIRECTION_MINX, self::DIRECTION_PLUSZ);
$this->placeTower($x - 8, $y, $z - 8, self::DIRECTION_MINX, self::DIRECTION_MINZ);
// Creating rectangular parallelepiped of sandstone.
- for($xx = $x - 6; $xx >= $x - 9; $xx --)
- for($yy = $y + 1; $yy <= $y + 4; $yy ++)
- for($zz = $z - 6; $zz <= $z + 6; $zz ++)
+ for ($xx = $x - 6; $xx >= $x - 9; $xx--)
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++)
+ for ($zz = $z - 6; $zz <= $z + 6; $zz++)
$this->placeBlock($xx, $yy, $zz);
// Creating a path to the entrance
- for($xx = $x - 6; $xx >= $x - 9; $xx --)
- for($yy = $y + 1; $yy <= $y + 4; $yy ++)
- for($zz = $z - 1; $zz <= $z + 1; $zz ++)
+ for ($xx = $x - 6; $xx >= $x - 9; $xx--)
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++)
+ for ($zz = $z - 1; $zz <= $z + 1; $zz++)
$this->placeBlock($xx, $yy, $zz, 0);
// Creating path to towers.
- for($yy = $y + 1; $yy <= $y + 2; $yy ++)
- for($zz = $z - 6; $zz <= $z + 6; $zz ++)
+ for ($yy = $y + 1; $yy <= $y + 2; $yy++)
+ for ($zz = $z - 6; $zz <= $z + 6; $zz++)
$this->placeBlock($x - 8, $yy, $zz, 0);
// Door additional blocks
- for($yy = $y + 1; $yy <= $y + 4; $yy ++) {
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++) {
$this->placeBlock($x - 6, $yy, $z - 2);
$this->placeBlock($x - 6, $yy, $z + 2);
// Polished entrance
@@ -291,35 +303,36 @@ class Temple extends Object {
}
// Finishing entrance structure
$this->placeBlock($x - 9, $y + 3, $z, Block::SANDSTONE, 2);
- for($zz = $z - 2; $zz <= $z + 2; $zz ++)
+ for ($zz = $z - 2; $zz <= $z + 2; $zz++)
$this->placeBlock($x - 10, $y + 4, $zz, Block::SANDSTONE, 2);
$this->placeBlock($x - 10, $y + 5, $z, Block::SANDSTONE, 1);
$this->placeBlock($x - 10, $y + 5, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 10, $y + 5, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 10, $y + 5, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x - 10, $y + 5, $z + 2, Block::SANDSTONE, 2);
- for($zz = $z - 1; $zz <= $z + 1; $zz ++)
+ for ($zz = $z - 1; $zz <= $z + 1; $zz++)
$this->placeBlock($x - 10, $y + 6, $zz, Block::SANDSTONE, 2);
- for($xx = $x - 6; $xx >= $x - 9; $xx --)
- for($zz = $z - 2; $zz <= $z + 2; $zz ++)
+ for ($xx = $x - 6; $xx >= $x - 9; $xx--)
+ for ($zz = $z - 2; $zz <= $z + 2; $zz++)
$this->placeBlock($xx, $y + 4, $zz);
break;
-
+
case self::DIRECTION_PLUSZ : // z+ (2)
- // Building towers.
+ //TODO: Build pillars inside
+ // Building towers.
$this->placeTower($x + 8, $y, $z + 8, self::DIRECTION_PLUSZ, self::DIRECTION_PLUSX);
$this->placeTower($x - 8, $y, $z + 8, self::DIRECTION_PLUSZ, self::DIRECTION_MINX);
// Creating rectangular parallelepiped of sandstone.
- BuildingUtils::fill($level, new Vector3($x - 6, $y + 1, $z + 6 ), new Vector3($x + 6, $y + 4, $z + 9 ), Block::get(Block::SANDSTONE ));
+ BuildingUtils::fill($level, new Vector3($x - 6, $y + 1, $z + 6), new Vector3($x + 6, $y + 4, $z + 9), Block::get(Block::SANDSTONE));
// Creating a path to the entrance
- for($xx = $x - 1; $xx <= $x + 1; $xx ++)
- for($yy = $y + 1; $yy <= $y + 4; $yy ++)
- for($zz = $z + 6; $zz <= $z + 9; $zz ++)
+ for ($xx = $x - 1; $xx <= $x + 1; $xx++)
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++)
+ for ($zz = $z + 6; $zz <= $z + 9; $zz++)
$this->placeBlock($xx, $yy, $zz, 0);
// Creating path to towers.
- BuildingUtils::fill($level, new Vector3($x - 1, $y + 1, $z + 6 ), new Vector3($x + 1, $y + 4, $z + 9 ), Block::get(Block::AIR ));
+ BuildingUtils::fill($level, new Vector3($x - 1, $y + 1, $z + 6), new Vector3($x + 1, $y + 4, $z + 9), Block::get(Block::AIR));
// Door additional blocks
- for($yy = $y + 1; $yy <= $y + 4; $yy ++) {
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++) {
$this->placeBlock($x - 2, $yy, $z + 6);
$this->placeBlock($x + 2, $yy, $z + 6);
// Polished entrance
@@ -331,34 +344,34 @@ class Temple extends Object {
}
// Finishing entrance structure
$this->placeBlock($x, $y + 3, $z + 9, Block::SANDSTONE, 2);
- for($xx = $x - 2; $xx <= $x + 2; $xx ++)
+ for ($xx = $x - 2; $xx <= $x + 2; $xx++)
$this->placeBlock($xx, $y + 4, $z + 10, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + 5, $z + 10, Block::SANDSTONE, 1);
$this->placeBlock($x - 1, $y + 5, $z + 10, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 1, $y + 5, $z + 10, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + 5, $z + 10, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 5, $z + 10, Block::SANDSTONE, 2);
- for($xx = $x - 1; $xx <= $x + 1; $xx ++)
+ for ($xx = $x - 1; $xx <= $x + 1; $xx++)
$this->placeBlock($xx, $y + 6, $z + 10, Block::SANDSTONE, 2);
- for($zz = $z + 6; $zz <= $z + 9; $zz ++)
- for($xx = $x - 2; $xx <= $x + 2; $xx ++)
+ for ($zz = $z + 6; $zz <= $z + 9; $zz++)
+ for ($xx = $x - 2; $xx <= $x + 2; $xx++)
$this->placeBlock($xx, $y + 4, $zz);
break;
-
+
case self::DIRECTION_MINZ : // z- (3)
- // Building towers.
+ // Building towers.
$this->placeTower($x + 8, $y, $z - 8, self::DIRECTION_MINZ, self::DIRECTION_PLUSX);
$this->placeTower($x - 8, $y, $z - 8, self::DIRECTION_MINZ, self::DIRECTION_MINX);
// Creating rectangular parallelepiped of sandstone.
- BuildingUtils::fill($level, new Vector3($x - 6, $y + 1, $z - 6 ), new Vector3($x + 6, $y + 4, $z - 9 ), Block::get(Block::SANDSTONE ));
+ BuildingUtils::fill($level, new Vector3($x - 6, $y + 1, $z - 6), new Vector3($x + 6, $y + 4, $z - 9), Block::get(Block::SANDSTONE));
// Creating a path to the entrance
- BuildingUtils::fill($level, new Vector3($x - 1, $y + 1, $z - 6 ), new Vector3($x + 1, $y + 4, $z - 9 ), Block::get(Block::AIR ));
+ BuildingUtils::fill($level, new Vector3($x - 1, $y + 1, $z - 6), new Vector3($x + 1, $y + 4, $z - 9), Block::get(Block::AIR));
// Creating path to towers.
- for($yy = $y + 1; $yy <= $y + 2; $yy ++)
- for($xx = $x - 6; $xx <= $x + 6; $xx ++)
+ for ($yy = $y + 1; $yy <= $y + 2; $yy++)
+ for ($xx = $x - 6; $xx <= $x + 6; $xx++)
$this->placeBlock($xx, $yy, $z - 8, 0);
// Door additional blocks
- for($yy = $y + 1; $yy <= $y + 4; $yy ++) {
+ for ($yy = $y + 1; $yy <= $y + 4; $yy++) {
$this->placeBlock($x - 2, $yy, $z - 6);
$this->placeBlock($x + 2, $yy, $z - 6);
// Polished entrance
@@ -370,49 +383,37 @@ class Temple extends Object {
}
// Finishing entrance structure
$this->placeBlock($x, $y + 3, $z - 9, Block::SANDSTONE, 2);
- for($xx = $x - 2; $xx <= $x + 2; $xx ++)
+ for ($xx = $x - 2; $xx <= $x + 2; $xx++)
$this->placeBlock($xx, $y + 4, $z - 10, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + 5, $z - 10, Block::SANDSTONE, 1);
$this->placeBlock($x - 1, $y + 5, $z - 10, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 1, $y + 5, $z - 10, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + 5, $z - 10, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 5, $z - 10, Block::SANDSTONE, 2);
- for($xx = $x - 1; $xx <= $x + 1; $xx ++)
+ for ($xx = $x - 1; $xx <= $x + 1; $xx++)
$this->placeBlock($xx, $y + 6, $z - 10, Block::SANDSTONE, 2);
- for($zz = $z - 6; $zz >= $z - 9; $zz --)
- for($xx = $x - 2; $xx <= $x + 2; $xx ++)
+ for ($zz = $z - 6; $zz >= $z - 9; $zz--)
+ for ($xx = $x - 2; $xx <= $x + 2; $xx++)
$this->placeBlock($xx, $y + 4, $zz);
break;
}
}
-
- /*
- * Places a slab
+
+ /**
+ * Places a block
* @param $x int
* @param $y int
* @param $z int
- * @return void
- */
- protected function placeSlab($x, $y, $z) {
- $this->level->setBlockIdAt($x, $y, $z, 44);
- $this->level->setBlockDataAt($x, $y, $z, 1);
- }
-
- /*
- * Places a slab
- * @param $x int
- * @param $y int
- * @param $z int
- * @param $id int
- * @param $meta int
- * @return void
+ * @param int $id
+ * @param int $meta
*/
protected function placeBlock($x, $y, $z, $id = Block::SANDSTONE, $meta = 0) {
$this->level->setBlockIdAt($x, $y, $z, $id);
$this->level->setBlockDataAt($x, $y, $z, $meta);
}
-
- /*
+
+
+ /**
* Places one of the towers. Out is inversed $direction1, stairs come from inversed $direction2 to $direction2, patterns are on $direction1 and $direction2
* @param $x int
* @param $y int
@@ -422,13 +423,15 @@ class Temple extends Object {
* @return void
*/
public function placeTower($x, $y, $z, $direction1 = self::DIRECTION_PLUSX, $direction2 = self::DIRECTION_PLUSZ) {
- BuildingUtils::walls($this->level, new Vector3($x + 2, $y, $z + 2 ), new Vector3($x - 2, $y + 8, $z - 2 ), Block::get(Block::SANDSTONE ));
+ BuildingUtils::walls($this->level, new Vector3($x + 2, $y, $z + 2), new Vector3($x - 2, $y + 8, $z - 2), Block::get(Block::SANDSTONE));
+ //Clear insides
+ BuildingUtils::fill($this->level, new Vector3($x + 1, $y + 1, $z + 1), new Vector3($x - 1, $y + 7, $z - 1), Block::get(Block::AIR));
switch ($direction1) {
case self::DIRECTION_PLUSX : // x+ (0)
- // Stairs
+ // Stairs
switch ($direction2) {
case self::DIRECTION_PLUSZ :
- for($zz = $z + 1; $zz >= $z; $zz --) {
+ for ($zz = $z + 1; $zz >= $z; $zz--) {
$this->placeBlock($x - 1, $y + 1, $zz);
$this->placeBlock($x - 1, $y + 2, $zz);
}
@@ -436,19 +439,19 @@ class Temple extends Object {
$this->placeBlock($x, $y + 1, $z + 1);
$this->placeSlab($x, $y + 2, $z + 1);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x - 1, $y + $h, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + $h, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x - 1, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 1, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x, $y + $h, $z + 2, Block::SANDSTONE, 1);
@@ -459,13 +462,13 @@ class Temple extends Object {
$this->placeBlock($x - 1, $y + 7, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + 7, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + 7, $z + 2, Block::SANDSTONE, 2);
-
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x - 9, $y + 5, $z - 4 ), new Vector3($x - 7, $y + 7, $z - 5 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x - 8, $y + 5, $z - 4 ), new Vector3($x - 8, $y + 6, $z - 5 ), Block::get(Block::AIR ));
+
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x - 9, $y + 5, $z - 4), new Vector3($x - 7, $y + 7, $z - 5), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x - 8, $y + 5, $z - 4), new Vector3($x - 8, $y + 6, $z - 5), Block::get(Block::AIR));
break;
case self::DIRECTION_MINZ :
- for($zz = $z - 1; $zz <= $z; $zz ++) {
+ for ($zz = $z - 1; $zz <= $z; $zz++) {
$this->placeBlock($x - 1, $y + 1, $zz);
$this->placeBlock($x - 1, $y + 2, $zz);
}
@@ -473,19 +476,19 @@ class Temple extends Object {
$this->placeBlock($x, $y + 1, $z - 1);
$this->placeSlab($x, $y + 2, $z - 1);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x - 1, $y + $h, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + $h, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x - 1, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 1, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x, $y + $h, $z - 2, Block::SANDSTONE, 1);
@@ -497,12 +500,12 @@ class Temple extends Object {
$this->placeBlock($x, $y + 7, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + 7, $z - 2, Block::SANDSTONE, 2);
break;
-
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x - 9, $y + 5, $z + 4 ), new Vector3($x - 7, $y + 7, $z + 5 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x - 8, $y + 5, $z + 4 ), new Vector3($x - 8, $y + 6, $z + 5 ), Block::get(Block::AIR ));
}
-
+
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x - 9, $y + 5, $z + 4), new Vector3($x - 7, $y + 7, $z + 5), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x - 8, $y + 5, $z + 4), new Vector3($x - 8, $y + 6, $z + 5), Block::get(Block::AIR));
+
// Finishing stairs system
$this->placeBlock($x - 2, $y + 3, $z, Block::SANDSTONE_STAIRS, 1);
$this->placeBlock($x - 3, $y + 4, $z, Block::SANDSTONE_STAIRS, 1);
@@ -510,22 +513,22 @@ class Temple extends Object {
$this->placeBlock($x - 2, $y + 5, $z, Block::AIR);
$this->placeBlock($x - 2, $y + 6, $z, Block::AIR);
// Making path from stairs to first floor.
- BuildingUtils::fill($this->level, new Vector3($x - 4, $y, $z + 2 ), new Vector3($x - 9, $y + 4, $z - 2 ), Block::get(Block::SANDSTONE ));
-
+ BuildingUtils::fill($this->level, new Vector3($x - 3, $y, $z + 1 + ($direction2 === self::DIRECTION_PLUSZ ? 2 : 0)), new Vector3($x - 8, $y + 4, $z - 1 + ($direction2 === self::DIRECTION_MINZ ? -2 : 0)), Block::get(Block::SANDSTONE));
+
// Other side pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 2, $y + $h, $z + 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + $h, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + $h, $z, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 2, $y + $h, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 2, $y + $h, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 2, $y + $h, $z, Block::SANDSTONE, 1);
@@ -537,12 +540,12 @@ class Temple extends Object {
$this->placeBlock($x + 2, $y + 7, $z, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 7, $z + 1, Block::SANDSTONE, 2);
break;
-
+
case self::DIRECTION_MINX : // x- (1)
- // Stairs
+ // Stairs
switch ($direction2) {
case self::DIRECTION_PLUSZ :
- for($zz = $z + 1; $zz >= $z; $zz --) {
+ for ($zz = $z + 1; $zz >= $z; $zz--) {
$this->placeBlock($x + 1, $y + 1, $zz);
$this->placeBlock($x + 1, $y + 2, $zz);
}
@@ -550,19 +553,19 @@ class Temple extends Object {
$this->placeBlock($x, $y + 1, $z + 1);
$this->placeSlab($x, $y + 2, $z + 1);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x - 1, $y + $h, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 1, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x, $y + $h, $z + 2, Block::SANDSTONE, 1);
@@ -573,13 +576,13 @@ class Temple extends Object {
$this->placeBlock($x - 1, $y + 7, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + 7, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + 7, $z + 2, Block::SANDSTONE, 2);
-
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x + 9, $y + 5, $z - 4 ), new Vector3($x + 7, $y + 7, $z - 5 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x + 8, $y + 5, $z - 4 ), new Vector3($x + 8, $y + 6, $z - 5 ), Block::get(Block::AIR ));
+
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x + 9, $y + 5, $z - 4), new Vector3($x + 7, $y + 7, $z - 5), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x + 8, $y + 5, $z - 4), new Vector3($x + 8, $y + 6, $z - 5), Block::get(Block::AIR));
break;
case self::DIRECTION_MINZ :
- for($zz = $z - 1; $zz <= $z; $zz ++) {
+ for ($zz = $z - 1; $zz <= $z; $zz++) {
$this->placeBlock($x + 1, $y + 1, $zz);
$this->placeBlock($x + 1, $y + 2, $zz);
}
@@ -587,19 +590,19 @@ class Temple extends Object {
$this->placeBlock($x, $y + 1, $z - 1);
$this->placeSlab($x, $y + 2, $z - 1);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x - 1, $y + $h, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 1, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x, $y + $h, $z - 2, Block::SANDSTONE, 1);
@@ -610,13 +613,13 @@ class Temple extends Object {
$this->placeBlock($x - 1, $y + 6, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + 6, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + 6, $z - 2, Block::SANDSTONE, 2);
-
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x + 9, $y + 5, $z + 4 ), new Vector3($x + 7, $y + 7, $z + 5 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x + 8, $y + 5, $z + 4 ), new Vector3($x + 8, $y + 6, $z + 5 ), Block::get(Block::AIR ));
+
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x + 9, $y + 5, $z + 4), new Vector3($x + 7, $y + 7, $z + 5), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x + 8, $y + 5, $z + 4), new Vector3($x + 8, $y + 6, $z + 5), Block::get(Block::AIR));
break;
}
-
+
// Finishing stairs system
$this->placeBlock($x + 2, $y + 3, $z, Block::SANDSTONE_STAIRS, 0);
$this->placeBlock($x + 3, $y + 4, $z, Block::SANDSTONE_STAIRS, 0);
@@ -624,22 +627,22 @@ class Temple extends Object {
$this->placeBlock($x + 2, $y + 5, $z, Block::AIR);
$this->placeBlock($x + 2, $y + 6, $z, Block::AIR);
// Making path from stairs to first floor.
- BuildingUtils::fill($this->level, new Vector3($x + 4, $y, $z + 2 ), new Vector3($x + 9, $y + 4, $z - 2 ), Block::get(Block::SANDSTONE ));
-
+ BuildingUtils::fill($this->level, new Vector3($x + 3, $y, $z + 1 + ($direction2 === self::DIRECTION_PLUSZ ? 2 : 0)), new Vector3($x + 8, $y + 4, $z - 1 + ($direction2 === self::DIRECTION_MINZ ? -2 : 0)), Block::get(Block::SANDSTONE));
+
// Other side pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x - 2, $y + $h, $z + 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + $h, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + $h, $z, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x - 2, $y + $h, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + $h, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + $h, $z, Block::SANDSTONE, 1);
@@ -651,12 +654,12 @@ class Temple extends Object {
$this->placeBlock($x - 2, $y + 7, $z, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + 7, $z + 1, Block::SANDSTONE, 2);
break;
-
+
case self::DIRECTION_PLUSZ : // z+ (2)
- // Stairs
+ // Stairs
switch ($direction2) {
case self::DIRECTION_PLUSX :
- for($xx = $x + 1; $xx >= $x; $xx --) {
+ for ($xx = $x + 1; $xx >= $x; $xx--) {
$this->placeBlock($xx, $y + 1, $z - 1);
$this->placeBlock($xx, $y + 2, $z - 1);
}
@@ -664,19 +667,19 @@ class Temple extends Object {
$this->placeBlock($x + 1, $y + 1, $z);
$this->placeSlab($x + 1, $y + 2, $z);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 2, $y + $h, $z + 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + $h, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + $h, $z, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 2, $y + $h, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 2, $y + $h, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 2, $y + $h, $z, Block::SANDSTONE, 1);
@@ -687,12 +690,12 @@ class Temple extends Object {
$this->placeBlock($x + 2, $y + 7, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 7, $z, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 7, $z + 1, Block::SANDSTONE, 2);
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z - 9 ), new Vector3($x - 5, $y + 7, $z - 7 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z - 8 ), new Vector3($x - 5, $y + 6, $z - 8 ), Block::get(Block::AIR ));
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z - 9), new Vector3($x - 5, $y + 7, $z - 7), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z - 8), new Vector3($x - 5, $y + 6, $z - 8), Block::get(Block::AIR));
break;
case self::DIRECTION_MINX :
- for($xx = $x - 1; $xx <= $x; $xx ++) {
+ for ($xx = $x - 1; $xx <= $x; $xx++) {
$this->placeBlock($xx, $y + 1, $z - 1);
$this->placeBlock($xx, $y + 2, $z - 1);
}
@@ -700,19 +703,19 @@ class Temple extends Object {
$this->placeBlock($x - 1, $y + 1, $z);
$this->placeSlab($x - 1, $y + 2, $z);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x - 2, $y + $h, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + $h, $z + 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + $h, $z, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x - 2, $y + $h, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + $h, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + $h, $z, Block::SANDSTONE, 1);
@@ -723,12 +726,12 @@ class Temple extends Object {
$this->placeBlock($x - 2, $y + 7, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + 7, $z, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + 7, $z + 1, Block::SANDSTONE, 2);
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z - 9 ), new Vector3($x + 5, $y + 7, $z - 7 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z - 8 ), new Vector3($x + 5, $y + 6, $z - 8 ), Block::get(Block::AIR ));
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z - 9), new Vector3($x + 5, $y + 7, $z - 7), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z - 8), new Vector3($x + 5, $y + 6, $z - 8), Block::get(Block::AIR));
break;
}
-
+
// Finishing stairs system
$this->placeBlock($x, $y + 3, $z - 2, Block::SANDSTONE_STAIRS, 3);
$this->placeBlock($x, $y + 4, $z - 3, Block::SANDSTONE_STAIRS, 3);
@@ -736,22 +739,22 @@ class Temple extends Object {
$this->placeBlock($x, $y + 5, $z - 2, Block::AIR);
$this->placeBlock($x, $y + 6, $z - 2, Block::AIR);
// Making path from stairs to first floor.
- BuildingUtils::fill($this->level, new Vector3($x + 2, $y, $z - 4 ), new Vector3($x - 2, $y + 4, $z - 9 ), Block::get(Block::SANDSTONE ));
-
+ BuildingUtils::fill($this->level, new Vector3($x + 1 + ($direction2 === self::DIRECTION_PLUSX ? 2 : 0), $y, $z - 3), new Vector3($x - 1 + ($direction2 === self::DIRECTION_MINX ? -2 : 0), $y + 4, $z - 8), Block::get(Block::SANDSTONE));
+
// Other side pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x - 1, $y + $h, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 1, $y + $h, $z + 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x, $y + $h, $z + 2, Block::SANDSTONE, 1);
@@ -763,12 +766,12 @@ class Temple extends Object {
$this->placeBlock($x, $y + 7, $z + 2, Block::SANDSTONE, 2);
$this->placeBlock($x + 1, $y + 7, $z + 2, Block::SANDSTONE, 2);
break;
-
+
case self::DIRECTION_MINZ : // z- (3)
- // Stairs
+ // Stairs
switch ($direction2) {
case self::DIRECTION_PLUSX :
- for($xx = $x + 1; $xx >= $x; $xx --) {
+ for ($xx = $x + 1; $xx >= $x; $xx--) {
$this->placeBlock($xx, $y + 1, $z + 1);
$this->placeBlock($xx, $y + 2, $z + 1);
}
@@ -776,19 +779,19 @@ class Temple extends Object {
$this->placeBlock($x + 1, $y + 1, $z);
$this->placeSlab($x + 1, $y + 2, $z);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 2, $y + $h, $z + 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + $h, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + $h, $z, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 2, $y + $h, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 2, $y + $h, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x + 2, $y + $h, $z, Block::SANDSTONE, 1);
@@ -799,12 +802,12 @@ class Temple extends Object {
$this->placeBlock($x + 2, $y + 7, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 7, $z, Block::SANDSTONE, 2);
$this->placeBlock($x + 2, $y + 7, $z + 1, Block::SANDSTONE, 2);
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z + 9 ), new Vector3($x - 5, $y + 7, $z + 7 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z + 8 ), new Vector3($x - 5, $y + 6, $z + 8 ), Block::get(Block::AIR ));
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z + 9), new Vector3($x - 5, $y + 7, $z + 7), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x - 4, $y + 5, $z + 8), new Vector3($x - 5, $y + 6, $z + 8), Block::get(Block::AIR));
break;
case self::DIRECTION_MINX :
- for($xx = $x - 1; $xx <= $x; $xx ++) {
+ for ($xx = $x - 1; $xx <= $x; $xx++) {
$this->placeBlock($xx, $y + 1, $z + 1);
$this->placeBlock($xx, $y + 2, $z + 1);
}
@@ -812,19 +815,19 @@ class Temple extends Object {
$this->placeBlock($x - 1, $y + 1, $z);
$this->placeSlab($x - 1, $y + 2, $z);
// Pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x - 2, $y + $h, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + $h, $z + 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + $h, $z, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x - 2, $y + $h, $z - 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + $h, $z + 1, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 2, $y + $h, $z, Block::SANDSTONE, 1);
@@ -835,12 +838,12 @@ class Temple extends Object {
$this->placeBlock($x - 2, $y + 7, $z - 1, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + 7, $z, Block::SANDSTONE, 2);
$this->placeBlock($x - 2, $y + 7, $z + 1, Block::SANDSTONE, 2);
- // Building entrance to second floor.
- BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z + 9 ), new Vector3($x + 5, $y + 7, $z + 7 ), Block::get(Block::SANDSTONE, 2 ));
- BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z + 8 ), new Vector3($x + 5, $y + 6, $z + 8 ), Block::get(Block::AIR ));
+ // Building entrance to second floor. //TODO
+ BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z + 9), new Vector3($x + 5, $y + 7, $z + 7), Block::get(Block::SANDSTONE, 2));
+ BuildingUtils::fill($this->level, new Vector3($x + 4, $y + 5, $z + 8), new Vector3($x + 5, $y + 6, $z + 8), Block::get(Block::AIR));
break;
}
-
+
// Finishing stairs system
$this->placeBlock($x, $y + 3, $z + 2, Block::SANDSTONE_STAIRS, 2);
$this->placeBlock($x, $y + 4, $z + 3, Block::SANDSTONE_STAIRS, 2);
@@ -848,22 +851,22 @@ class Temple extends Object {
$this->placeBlock($x, $y + 5, $z + 2, Block::AIR);
$this->placeBlock($x, $y + 6, $z + 2, Block::AIR);
// Making path from stairs to first floor.
- BuildingUtils::fill($this->level, new Vector3($x + 2, $y, $z + 4 ), new Vector3($x - 2, $y + 4, $z + 9 ), Block::get(Block::SANDSTONE ));
-
+ BuildingUtils::fill($this->level, new Vector3($x + 1 + ($direction2 === self::DIRECTION_PLUSX ? 2 : 0), $y, $z + 3), new Vector3($x - 1 + ($direction2 === self::DIRECTION_MINX ? -2 : 0), $y + 4, $z + 8), Block::get(Block::SANDSTONE));
+
// Other side pattern
- foreach([
- 1,
- 2,
- 4
- ] as $h ) {
+ foreach ([
+ 1,
+ 2,
+ 4
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x - 1, $y + $h, $z - 2, Block::SANDSTONE, 2);
$this->placeBlock($x, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
}
- foreach([
- 3,
- 5
- ] as $h ) {
+ foreach ([
+ 3,
+ 5
+ ] as $h) {
$this->placeBlock($x + 1, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x - 1, $y + $h, $z - 2, Block::STAINED_HARDENED_CLAY, 1);
$this->placeBlock($x, $y + $h, $z - 2, Block::SANDSTONE, 1);
@@ -876,21 +879,36 @@ class Temple extends Object {
$this->placeBlock($x + 1, $y + 7, $z - 2, Block::SANDSTONE, 2);
break;
}
-
+
// Making top
- BuildingUtils::top($this->level, new Vector3($x - 1, $y + 9, $z - 1 ), new Vector3($x + 1, $y, $z + 1 ), Block::get(Block::SANDSTONE ));
+ BuildingUtils::top($this->level, new Vector3($x - 1, $y + 9, $z - 1), new Vector3($x + 1, $y, $z + 1), Block::get(Block::SANDSTONE));
$this->placeBlock($x - 2, $y + 9, $z, Block::SANDSTONE_STAIRS, 0);
$this->placeBlock($x + 2, $y + 9, $z, Block::SANDSTONE_STAIRS, 1);
$this->placeBlock($x, $y + 9, $z - 2, Block::SANDSTONE_STAIRS, 2);
$this->placeBlock($x, $y + 9, $z + 2, Block::SANDSTONE_STAIRS, 3);
}
-
- /*
- * Inverses a direction
+
+
+ /**
+ * Places a slab
+ * @param $x int
+ * @param $y int
+ * @param $z int
+ * @param $id int
+ * @param $meta int
+ * @return void
+ */
+ protected function placeSlab($x, $y, $z, $id = 44, $meta = 1, $top = false) {
+ if ($top) $meta &= 0x08;
+ $this->placeBlock($x, $y, $z, $id, $meta);
+ }
+
+ /**
+ * Inverts a direction
* @param $direction int
* @return int
*/
- protected function getInversedDirection(int $direction): int {
+ protected function getInvertedDirection(int $direction): int {
switch ($direction) {
case self::DIRECTION_PLUSX : // x+ (0)
return self::DIRECTION_MINX;
@@ -905,7 +923,7 @@ class Temple extends Object {
return self::DIRECTION_PLUSZ;
break;
default :
- return - 1;
+ return -1;
break;
}
}
diff --git a/src/Ad5001/BetterGen/structure/Well.php b/src/Ad5001/BetterGen/structure/Well.php
index a9421e5..dcd55b9 100644
--- a/src/Ad5001/BetterGen/structure/Well.php
+++ b/src/Ad5001/BetterGen/structure/Well.php
@@ -7,7 +7,7 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
@@ -17,11 +17,13 @@ namespace Ad5001\BetterGen\structure;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
-use pocketmine\utils\Random;
use pocketmine\level\generator\object\Object;
+use pocketmine\utils\Random;
class Well extends Object {
+ /** @var ChunkManager */
+ private $level;
public $overridable = [
Block::AIR => true,
6 => true,
@@ -52,17 +54,18 @@ class Well extends Object {
1
]
];
-
+
/*
* Checks if a well is placeable
- * @param $level pocketmine\level\ChunkManager
+ * @param $level ChunkManager
* @param $x int
* @param $y int
* @param $z int
- * @param $random pocketmine\utils\Random
+ * @param $random Random
* @return bool
*/
public function canPlaceObject(ChunkManager $level, $x, $y, $z, Random $random) {
+ $this->level = $level;
for($xx = $x - 2; $xx <= $x + 2; $xx ++)
for($yy = $y; $yy <= $y + 3; $yy ++)
for($zz = $z - 2; $zz <= $z + 2; $zz ++)
@@ -73,16 +76,16 @@ class Well extends Object {
/*
* Places a well
- * @param $level pocketmine\level\ChunkManager
+ * @param $level ChunkManager
* @param $x int
* @param $y int
* @param $z int
- * @param $random pocketmine\utils\Random
+ * @param $random Random
*/
public function placeObject(ChunkManager $level, $x, $y, $z, Random $random) {
$this->level = $level;
foreach($this->directions as $direction ) {
- // Building pillard
+ // Building pillars
for($yy = $y; $yy < $y + 3; $yy ++)
$this->placeBlock($x + $direction [0], $yy, $z + $direction [1], Block::SANDSTONE);
@@ -92,32 +95,20 @@ class Well extends Object {
$this->placeBlock($x + ($direction [0] * 2), $y, $z + ($direction [1] * 2), Block::SANDSTONE);
// Building slabs on the sides. Places two times due to all directions.
- $this->placeSlab($x + ($direction [0] * 2), $y, $z);
- $this->placeSlab($x, $y, $z + ($direction [1] * 2));
+ $this->placeBlock($x + ($direction [0] * 2), $y, $z, Block::SANDSTONE, 1);
+ $this->placeBlock($x, $y, $z + ($direction [1] * 2), Block::SANDSTONE, 1);
// Placing water.Places two times due to all directions.
$this->placeBlock($x + $direction [0], $y, $z, Block::WATER);
$this->placeBlock($x, $y, $z + $direction [1], Block::WATER);
}
- // Finitions
+ // Final things
for($xx = $x - 1; $xx <= $x + 1; $xx ++)
for($zz = $z - 1; $zz <= $z + 1; $zz ++)
- $this->placeSlab($xx, $y + 3, $zz);
- $this->placeSlab($x, $y + 3, $z, Block::SANDSTONE);
- $this->placeSlab($x, $y, $z, Block::WATER);
- }
-
- /*
- * Places a slab
- * @param $x int
- * @param $y int
- * @param $z int
- * @return void
- */
- public function placeSlab($x, $y, $z) {
- $this->level->setBlockIdAt($x, $y, $z, 44);
- $this->level->setBlockDataAt($x, $y, $z, 1);
+ $this->placeBlock($xx, $y + 3, $zz);
+ $this->placeBlock($x, $y + 3, $z, Block::SANDSTONE, 1);
+ $this->placeBlock($x, $y, $z, Block::WATER);
}
/*
@@ -128,7 +119,8 @@ class Well extends Object {
* @param $id int
* @return void
*/
- public function placeBlock($x, $y, $z, $id) {
+ public function placeBlock($x, $y, $z, $id = 0, $meta = 0) {
$this->level->setBlockIdAt($x, $y, $z, $id);
+ $this->level->setBlockDataAt($x, $y, $z, $meta);
}
}
\ No newline at end of file
diff --git a/src/Ad5001/BetterGen/utils/BuildingUtils.php b/src/Ad5001/BetterGen/utils/BuildingUtils.php
index c987582..cd9cf3e 100644
--- a/src/Ad5001/BetterGen/utils/BuildingUtils.php
+++ b/src/Ad5001/BetterGen/utils/BuildingUtils.php
@@ -7,16 +7,16 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\utils;
-use pocketmine\math\Vector3;
use pocketmine\block\Block;
use pocketmine\level\ChunkManager;
+use pocketmine\math\Vector3;
use pocketmine\utils\Random;
class BuildingUtils {
diff --git a/src/Ad5001/BetterGen/utils/CommonUtils.php b/src/Ad5001/BetterGen/utils/CommonUtils.php
index edf21db..13af710 100644
--- a/src/Ad5001/BetterGen/utils/CommonUtils.php
+++ b/src/Ad5001/BetterGen/utils/CommonUtils.php
@@ -7,17 +7,17 @@
* \ \ \L\ \/\ __/ \ \ \_ \ \ \_ /\ __/\ \ \/ \ \ \/, \/\ __/ /\ \/\ \
* \ \____/\ \____\ \ \__\ \ \__\\ \____\\ \_\ \ \____/\ \____\\ \_\ \_\
* \/___/ \/____/ \/__/ \/__/ \/____/ \/_/ \/___/ \/____/ \/_/\/_/
- * Tommorow's pocketmine generator.
+ * Tomorrow's pocketmine generator.
* @author Ad5001
* @link https://github.com/Ad5001/BetterGen
*/
namespace Ad5001\BetterGen\utils;
- # Communs utils under no namespace made for a specific usage
+ # Common utils under no namespace made for a specific usage
class CommonUtils {
/**
- * Searches case insensitivly array $haystack for $needle.
+ * Searches case insensitively array $haystack for $needle.
* src: http://php.net/manual/en/function.in-array.php#89256
* @param mixed $needle
* @param array $haystack