Changed block construction calls to Block::get()

This commit is contained in:
Dylan K. Taylor 2017-08-19 13:46:17 +01:00
parent 276fccf4bb
commit 0e24596aed
22 changed files with 50 additions and 63 deletions

View File

@ -2492,7 +2492,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
} }
$block = $target->getSide($packet->face); $block = $target->getSide($packet->face);
if($block->getId() === Block::FIRE){ if($block->getId() === Block::FIRE){
$this->level->setBlock($block, new Air()); $this->level->setBlock($block, Block::get(Block::AIR));
break; break;
} }

View File

@ -76,7 +76,7 @@ class Block extends Position implements BlockIds, Metadatable{
self::$transparent = new \SplFixedArray(256); self::$transparent = new \SplFixedArray(256);
self::$diffusesSkyLight = new \SplFixedArray(256); self::$diffusesSkyLight = new \SplFixedArray(256);
self::registerBlock(new Air()); self::registerBlock(Block::get(Block::AIR));
self::registerBlock(new Stone()); self::registerBlock(new Stone());
self::registerBlock(new Grass()); self::registerBlock(new Grass());
self::registerBlock(new Dirt()); self::registerBlock(new Dirt());
@ -511,7 +511,7 @@ class Block extends Position implements BlockIds, Metadatable{
* @return bool * @return bool
*/ */
public function onBreak(Item $item) : bool{ public function onBreak(Item $item) : bool{
return $this->getLevel()->setBlock($this, new Air(), true, true); return $this->getLevel()->setBlock($this, Block::get(Block::AIR), true, true);
} }
/** /**

View File

@ -90,7 +90,7 @@ class Cactus extends Transparent{
for($y = 1; $y < 3; ++$y){ for($y = 1; $y < 3; ++$y){
$b = $this->getLevel()->getBlock(new Vector3($this->x, $this->y + $y, $this->z)); $b = $this->getLevel()->getBlock(new Vector3($this->x, $this->y + $y, $this->z));
if($b->getId() === self::AIR){ if($b->getId() === self::AIR){
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($b, new Cactus())); Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($b, Block::get(Block::CACTUS)));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$this->getLevel()->setBlock($b, $ev->getNewState(), true); $this->getLevel()->setBlock($b, $ev->getNewState(), true);
} }

View File

@ -76,7 +76,7 @@ class Cake extends Transparent implements FoodSource{
public function onUpdate(int $type){ public function onUpdate(int $type){
if($type === Level::BLOCK_UPDATE_NORMAL){ if($type === Level::BLOCK_UPDATE_NORMAL){
if($this->getSide(Vector3::SIDE_DOWN)->getId() === self::AIR){ //Replace with common break method if($this->getSide(Vector3::SIDE_DOWN)->getId() === self::AIR){ //Replace with common break method
$this->getLevel()->setBlock($this, new Air(), true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true);
return Level::BLOCK_UPDATE_NORMAL; return Level::BLOCK_UPDATE_NORMAL;
} }
@ -114,7 +114,7 @@ class Cake extends Transparent implements FoodSource{
$clone = clone $this; $clone = clone $this;
$clone->meta++; $clone->meta++;
if($clone->meta >= 0x06){ if($clone->meta >= 0x06){
$clone = new Air(); $clone = Block::get(Block::AIR);
} }
return $clone; return $clone;
} }

View File

@ -129,7 +129,7 @@ class Chest extends Transparent{
if($t instanceof TileChest){ if($t instanceof TileChest){
$t->unpair(); $t->unpair();
} }
$this->getLevel()->setBlock($this, new Air(), true, true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true, true);
return true; return true;
} }

View File

@ -204,9 +204,9 @@ abstract class Door extends Transparent{
public function onUpdate(int $type){ public function onUpdate(int $type){
if($type === Level::BLOCK_UPDATE_NORMAL){ if($type === Level::BLOCK_UPDATE_NORMAL){
if($this->getSide(Vector3::SIDE_DOWN)->getId() === self::AIR){ //Replace with common break method if($this->getSide(Vector3::SIDE_DOWN)->getId() === self::AIR){ //Replace with common break method
$this->getLevel()->setBlock($this, new Air(), false); $this->getLevel()->setBlock($this, Block::get(Block::AIR), false);
if($this->getSide(Vector3::SIDE_UP) instanceof Door){ if($this->getSide(Vector3::SIDE_UP) instanceof Door){
$this->getLevel()->setBlock($this->getSide(Vector3::SIDE_UP), new Air(), false); $this->getLevel()->setBlock($this->getSide(Vector3::SIDE_UP), Block::get(Block::AIR), false);
} }
return Level::BLOCK_UPDATE_NORMAL; return Level::BLOCK_UPDATE_NORMAL;
@ -250,15 +250,15 @@ abstract class Door extends Transparent{
if(($this->getDamage() & 0x08) === 0x08){ if(($this->getDamage() & 0x08) === 0x08){
$down = $this->getSide(Vector3::SIDE_DOWN); $down = $this->getSide(Vector3::SIDE_DOWN);
if($down->getId() === $this->getId()){ if($down->getId() === $this->getId()){
$this->getLevel()->setBlock($down, new Air(), true); $this->getLevel()->setBlock($down, Block::get(Block::AIR), true);
} }
}else{ }else{
$up = $this->getSide(Vector3::SIDE_UP); $up = $this->getSide(Vector3::SIDE_UP);
if($up->getId() === $this->getId()){ if($up->getId() === $this->getId()){
$this->getLevel()->setBlock($up, new Air(), true); $this->getLevel()->setBlock($up, Block::get(Block::AIR), true);
} }
} }
$this->getLevel()->setBlock($this, new Air(), true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true);
return true; return true;
} }

View File

@ -87,14 +87,14 @@ class Fire extends Flowable{
return false; return false;
} }
} }
$this->getLevel()->setBlock($this, new Air(), true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true);
return Level::BLOCK_UPDATE_NORMAL; return Level::BLOCK_UPDATE_NORMAL;
}elseif($type === Level::BLOCK_UPDATE_RANDOM){ }elseif($type === Level::BLOCK_UPDATE_RANDOM){
if($this->getSide(Vector3::SIDE_DOWN)->getId() !== self::NETHERRACK){ if($this->getSide(Vector3::SIDE_DOWN)->getId() !== self::NETHERRACK){
if(mt_rand(0, 2) === 0){ if(mt_rand(0, 2) === 0){
if($this->meta === 0x0F){ if($this->meta === 0x0F){
$this->level->setBlock($this, new Air()); $this->level->setBlock($this, Block::get(Block::AIR));
}else{ }else{
$this->meta++; $this->meta++;
$this->level->setBlock($this, $this); $this->level->setBlock($this, $this);

View File

@ -105,12 +105,12 @@ class Grass extends Solid{
return true; return true;
}elseif($item->isHoe()){ }elseif($item->isHoe()){
$item->useOn($this); $item->useOn($this);
$this->getLevel()->setBlock($this, new Farmland()); $this->getLevel()->setBlock($this, Block::get(Block::FARMLAND));
return true; return true;
}elseif($item->isShovel() and $this->getSide(Vector3::SIDE_UP)->getId() === Block::AIR){ }elseif($item->isShovel() and $this->getSide(Vector3::SIDE_UP)->getId() === Block::AIR){
$item->useOn($this); $item->useOn($this);
$this->getLevel()->setBlock($this, new GrassPath()); $this->getLevel()->setBlock($this, Block::get(Block::GRASS_PATH));
return true; return true;
} }

View File

@ -52,7 +52,7 @@ class Ice extends Transparent{
} }
public function onBreak(Item $item) : bool{ public function onBreak(Item $item) : bool{
$this->getLevel()->setBlock($this, new Water(), true); $this->getLevel()->setBlock($this, Block::get(Block::WATER), true);
return true; return true;
} }

View File

@ -241,7 +241,7 @@ abstract class Liquid extends Transparent{
if($k !== $decay){ if($k !== $decay){
$decay = $k; $decay = $k;
if($decay < 0){ if($decay < 0){
$this->getLevel()->setBlock($this, new Air(), true, true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true, true);
}else{ }else{
$this->getLevel()->setBlock($this, Block::get($this->id, $decay), true, true); $this->getLevel()->setBlock($this, Block::get($this->id, $decay), true, true);
$this->getLevel()->scheduleDelayedBlockUpdate($this, $this->tickRate()); $this->getLevel()->scheduleDelayedBlockUpdate($this, $this->tickRate());

View File

@ -68,7 +68,7 @@ class MelonStem extends Crops{
$side = $this->getSide(mt_rand(2, 5)); $side = $this->getSide(mt_rand(2, 5));
$d = $side->getSide(Vector3::SIDE_DOWN); $d = $side->getSide(Vector3::SIDE_DOWN);
if($side->getId() === self::AIR and ($d->getId() === self::FARMLAND or $d->getId() === self::GRASS or $d->getId() === self::DIRT)){ if($side->getId() === self::AIR and ($d->getId() === self::FARMLAND or $d->getId() === self::GRASS or $d->getId() === self::DIRT)){
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($side, new Melon())); Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($side, Block::get(Block::MELON_BLOCK)));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$this->getLevel()->setBlock($side, $ev->getNewState(), true); $this->getLevel()->setBlock($side, $ev->getNewState(), true);
} }

View File

@ -65,7 +65,7 @@ class Mycelium extends Solid{
$block = $this->getLevel()->getBlock(new Vector3($x, $y, $z)); $block = $this->getLevel()->getBlock(new Vector3($x, $y, $z));
if($block->getId() === Block::DIRT){ if($block->getId() === Block::DIRT){
if($block->getSide(Vector3::SIDE_UP) instanceof Transparent){ if($block->getSide(Vector3::SIDE_UP) instanceof Transparent){
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Mycelium())); Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, Block::get(Block::MYCELIUM)));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$this->getLevel()->setBlock($block, $ev->getNewState()); $this->getLevel()->setBlock($block, $ev->getNewState());
} }

View File

@ -68,7 +68,7 @@ class PumpkinStem extends Crops{
$side = $this->getSide(mt_rand(2, 5)); $side = $this->getSide(mt_rand(2, 5));
$d = $side->getSide(Vector3::SIDE_DOWN); $d = $side->getSide(Vector3::SIDE_DOWN);
if($side->getId() === self::AIR and ($d->getId() === self::FARMLAND or $d->getId() === self::GRASS or $d->getId() === self::DIRT)){ if($side->getId() === self::AIR and ($d->getId() === self::FARMLAND or $d->getId() === self::GRASS or $d->getId() === self::DIRT)){
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($side, new Pumpkin())); Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($side, Block::get(Block::PUMPKIN)));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$this->getLevel()->setBlock($side, $ev->getNewState(), true); $this->getLevel()->setBlock($side, $ev->getNewState(), true);
} }

View File

@ -50,7 +50,7 @@ class Sugarcane extends Flowable{
for($y = 1; $y < 3; ++$y){ for($y = 1; $y < 3; ++$y){
$b = $this->getLevel()->getBlock(new Vector3($this->x, $this->y + $y, $this->z)); $b = $this->getLevel()->getBlock(new Vector3($this->x, $this->y + $y, $this->z));
if($b->getId() === self::AIR){ if($b->getId() === self::AIR){
Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($b, new Sugarcane())); Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($b, Block::get(Block::SUGARCANE_BLOCK)));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$this->getLevel()->setBlock($b, $ev->getNewState(), true); $this->getLevel()->setBlock($b, $ev->getNewState(), true);
} }
@ -84,7 +84,7 @@ class Sugarcane extends Flowable{
for($y = 1; $y < 3; ++$y){ for($y = 1; $y < 3; ++$y){
$b = $this->getLevel()->getBlock(new Vector3($this->x, $this->y + $y, $this->z)); $b = $this->getLevel()->getBlock(new Vector3($this->x, $this->y + $y, $this->z));
if($b->getId() === self::AIR){ if($b->getId() === self::AIR){
$this->getLevel()->setBlock($b, new Sugarcane(), true); $this->getLevel()->setBlock($b, Block::get(Block::SUGARCANE_BLOCK), true);
break; break;
} }
} }
@ -105,7 +105,7 @@ class Sugarcane extends Flowable{
public function place(Item $item, Block $block, Block $target, int $face, float $fx, float $fy, float $fz, Player $player = null) : bool{ public function place(Item $item, Block $block, Block $target, int $face, float $fx, float $fy, float $fz, Player $player = null) : bool{
$down = $this->getSide(Vector3::SIDE_DOWN); $down = $this->getSide(Vector3::SIDE_DOWN);
if($down->getId() === self::SUGARCANE_BLOCK){ if($down->getId() === self::SUGARCANE_BLOCK){
$this->getLevel()->setBlock($block, new Sugarcane(), true); $this->getLevel()->setBlock($block, Block::get(Block::SUGARCANE_BLOCK), true);
return true; return true;
}elseif($down->getId() === self::GRASS or $down->getId() === self::DIRT or $down->getId() === self::SAND){ }elseif($down->getId() === self::GRASS or $down->getId() === self::DIRT or $down->getId() === self::SAND){
@ -114,7 +114,7 @@ class Sugarcane extends Flowable{
$block2 = $down->getSide(Vector3::SIDE_WEST); $block2 = $down->getSide(Vector3::SIDE_WEST);
$block3 = $down->getSide(Vector3::SIDE_EAST); $block3 = $down->getSide(Vector3::SIDE_EAST);
if(($block0 instanceof Water) or ($block1 instanceof Water) or ($block2 instanceof Water) or ($block3 instanceof Water)){ if(($block0 instanceof Water) or ($block1 instanceof Water) or ($block2 instanceof Water) or ($block3 instanceof Water)){
$this->getLevel()->setBlock($block, new Sugarcane(), true); $this->getLevel()->setBlock($block, Block::get(Block::SUGARCANE_BLOCK), true);
return true; return true;
} }

View File

@ -60,7 +60,7 @@ class TNT extends Solid{
} }
public function ignite(int $fuse = 80){ public function ignite(int $fuse = 80){
$this->getLevel()->setBlock($this, new Air(), true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true);
$mot = (new Random())->nextSignedFloat() * M_PI * 2; $mot = (new Random())->nextSignedFloat() * M_PI * 2;
$tnt = Entity::createEntity("PrimedTNT", $this->getLevel(), new CompoundTag("", [ $tnt = Entity::createEntity("PrimedTNT", $this->getLevel(), new CompoundTag("", [

View File

@ -64,7 +64,7 @@ class TallGrass extends Flowable{
public function onUpdate(int $type){ public function onUpdate(int $type){
if($type === Level::BLOCK_UPDATE_NORMAL){ if($type === Level::BLOCK_UPDATE_NORMAL){
if($this->getSide(Vector3::SIDE_DOWN)->isTransparent() === true){ //Replace with common break method if($this->getSide(Vector3::SIDE_DOWN)->isTransparent() === true){ //Replace with common break method
$this->getLevel()->setBlock($this, new Air(), true, true); $this->getLevel()->setBlock($this, Block::get(Block::AIR), true, true);
return Level::BLOCK_UPDATE_NORMAL; return Level::BLOCK_UPDATE_NORMAL;
} }

View File

@ -56,7 +56,7 @@ class Bucket extends Item{
$result->setDamage($target->getId()); $result->setDamage($target->getId());
$player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $block, $face, $this, $result)); $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $block, $face, $this, $result));
if(!$ev->isCancelled()){ if(!$ev->isCancelled()){
$player->getLevel()->setBlock($target, new Air(), true, true); $player->getLevel()->setBlock($target, Block::get(Block::AIR), true, true);
if($player->isSurvival()){ if($player->isSurvival()){
$player->getInventory()->setItemInHand($ev->getItem()); $player->getInventory()->setItemInHand($ev->getItem());
} }

View File

@ -36,7 +36,7 @@ class FlintSteel extends Tool{
public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz){ public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz){
if($block->getId() === self::AIR and ($target instanceof Solid)){ if($block->getId() === self::AIR and ($target instanceof Solid)){
$level->setBlock($block, new Fire(), true); $level->setBlock($block, Block::get(Block::FIRE), true);
if(($player->gamemode & 0x01) === 0 and $this->useOn($block)){ if(($player->gamemode & 0x01) === 0 and $this->useOn($block)){
if($this->getDamage() >= $this->getMaxDurability()){ if($this->getDamage() >= $this->getMaxDurability()){
$player->getInventory()->setItemInHand(new Item(Item::AIR, 0, 0)); $player->getInventory()->setItemInHand(new Item(Item::AIR, 0, 0));

View File

@ -1656,7 +1656,7 @@ class Level implements ChunkManager, Metadatable{
$above = $this->getBlock(new Vector3($target->x, $target->y + 1, $target->z)); $above = $this->getBlock(new Vector3($target->x, $target->y + 1, $target->z));
if($above !== null){ if($above !== null){
if($above->getId() === Item::FIRE){ if($above->getId() === Item::FIRE){
$this->setBlock($above, new Air(), true); $this->setBlock($above, Block::get(Block::AIR), true);
} }
} }

View File

@ -23,17 +23,11 @@ declare(strict_types=1);
namespace pocketmine\level\generator; namespace pocketmine\level\generator;
use pocketmine\block\CoalOre; use pocketmine\block\Block;
use pocketmine\block\DiamondOre;
use pocketmine\block\Dirt;
use pocketmine\block\GoldOre;
use pocketmine\block\Gravel;
use pocketmine\block\IronOre;
use pocketmine\block\LapisOre;
use pocketmine\block\RedstoneOre;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\level\ChunkManager; use pocketmine\level\ChunkManager;
use pocketmine\level\format\Chunk; use pocketmine\level\format\Chunk;
use pocketmine\level\generator\object\OreType;
use pocketmine\level\generator\populator\Ore; use pocketmine\level\generator\populator\Ore;
use pocketmine\level\generator\populator\Populator; use pocketmine\level\generator\populator\Populator;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
@ -67,14 +61,14 @@ class Flat extends Generator{
if(isset($this->options["decoration"])){ if(isset($this->options["decoration"])){
$ores = new Ore(); $ores = new Ore();
$ores->setOreTypes([ $ores->setOreTypes([
new object\OreType(new CoalOre(), 20, 16, 0, 128), new OreType(Block::get(Block::COAL_ORE), 20, 16, 0, 128),
new object\OreType(new IronOre(), 20, 8, 0, 64), new OreType(Block::get(Block::IRON_ORE), 20, 8, 0, 64),
new object\OreType(new RedstoneOre(), 8, 7, 0, 16), new OreType(Block::get(Block::REDSTONE_ORE), 8, 7, 0, 16),
new object\OreType(new LapisOre(), 1, 6, 0, 32), new OreType(Block::get(Block::LAPIS_ORE), 1, 6, 0, 32),
new object\OreType(new GoldOre(), 2, 8, 0, 32), new OreType(Block::get(Block::GOLD_ORE), 2, 8, 0, 32),
new object\OreType(new DiamondOre(), 1, 7, 0, 16), new OreType(Block::get(Block::DIAMOND_ORE), 1, 7, 0, 16),
new object\OreType(new Dirt(), 20, 32, 0, 128), new OreType(Block::get(Block::DIRT), 20, 32, 0, 128),
new object\OreType(new Gravel(), 10, 16, 0, 128) new OreType(Block::get(Block::GRAVEL), 10, 16, 0, 128)
]); ]);
$this->populators[] = $ores; $this->populators[] = $ores;
} }

View File

@ -24,14 +24,6 @@ declare(strict_types=1);
namespace pocketmine\level\generator\normal; namespace pocketmine\level\generator\normal;
use pocketmine\block\Block; use pocketmine\block\Block;
use pocketmine\block\CoalOre;
use pocketmine\block\DiamondOre;
use pocketmine\block\Dirt;
use pocketmine\block\GoldOre;
use pocketmine\block\Gravel;
use pocketmine\block\IronOre;
use pocketmine\block\LapisOre;
use pocketmine\block\RedstoneOre;
use pocketmine\level\ChunkManager; use pocketmine\level\ChunkManager;
use pocketmine\level\generator\biome\Biome; use pocketmine\level\generator\biome\Biome;
use pocketmine\level\generator\biome\BiomeSelector; use pocketmine\level\generator\biome\BiomeSelector;
@ -179,14 +171,14 @@ class Normal extends Generator{
$ores = new Ore(); $ores = new Ore();
$ores->setOreTypes([ $ores->setOreTypes([
new OreType(new CoalOre(), 20, 16, 0, 128), new OreType(Block::get(Block::COAL_ORE), 20, 16, 0, 128),
new OreType(New IronOre(), 20, 8, 0, 64), new OreType(Block::get(Block::IRON_ORE), 20, 8, 0, 64),
new OreType(new RedstoneOre(), 8, 7, 0, 16), new OreType(Block::get(Block::REDSTONE_ORE), 8, 7, 0, 16),
new OreType(new LapisOre(), 1, 6, 0, 32), new OreType(Block::get(Block::LAPIS_ORE), 1, 6, 0, 32),
new OreType(new GoldOre(), 2, 8, 0, 32), new OreType(Block::get(Block::GOLD_ORE), 2, 8, 0, 32),
new OreType(new DiamondOre(), 1, 7, 0, 16), new OreType(Block::get(Block::DIAMOND_ORE), 1, 7, 0, 16),
new OreType(new Dirt(), 20, 32, 0, 128), new OreType(Block::get(Block::DIRT), 20, 32, 0, 128),
new OreType(new Gravel(), 10, 16, 0, 128) new OreType(Block::get(Block::GRAVEL), 10, 16, 0, 128)
]); ]);
$this->populators[] = $ores; $this->populators[] = $ores;
} }

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\level\generator\populator; namespace pocketmine\level\generator\populator;
use pocketmine\block\Block;
use pocketmine\block\Water; use pocketmine\block\Water;
use pocketmine\level\ChunkManager; use pocketmine\level\ChunkManager;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
@ -38,7 +39,7 @@ class Pond extends Populator{
$x = $random->nextRange($chunkX << 4, ($chunkX << 4) + 16); $x = $random->nextRange($chunkX << 4, ($chunkX << 4) + 16);
$y = $random->nextBoundedInt(128); $y = $random->nextBoundedInt(128);
$z = $random->nextRange($chunkZ << 4, ($chunkZ << 4) + 16); $z = $random->nextRange($chunkZ << 4, ($chunkZ << 4) + 16);
$pond = new \pocketmine\level\generator\object\Pond($random, new Water()); $pond = new \pocketmine\level\generator\object\Pond($random, Block::get(Block::WATER));
if($pond->canPlaceObject($level, $v = new Vector3($x, $y, $z))){ if($pond->canPlaceObject($level, $v = new Vector3($x, $y, $z))){
$pond->placeObject($level, $v); $pond->placeObject($level, $v);
} }