diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index c87fb9c11..8c738c533 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -652,7 +652,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $pos = $this->level->getSafeSpawn($this); - $this->server->getPluginManager()->callEvent($ev = new PlayerRespawnEvent($this, $pos)); + $this->server->getPluginManager()->callEvent($ev = PlayerRespawnEvent::createEvent($this, $pos)); $this->teleport($ev->getRespawnPosition()); @@ -660,7 +660,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->inventory->sendContents($this); $this->inventory->sendArmorContents($this); - $this->server->getPluginManager()->callEvent($ev = new PlayerJoinEvent($this, TextFormat::YELLOW . $this->getName() . " joined the game")); + $this->server->getPluginManager()->callEvent($ev = PlayerJoinEvent::createEvent($this, TextFormat::YELLOW . $this->getName() . " joined the game")); if(strlen(trim($ev->getJoinMessage())) > 0){ $this->server->broadcastMessage($ev->getJoinMessage()); } @@ -745,7 +745,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($this->connected === false){ return false; } - $this->server->getPluginManager()->callEvent($ev = new DataPacketSendEvent($this, $packet)); + $this->server->getPluginManager()->callEvent($ev = DataPacketSendEvent::createEvent($this, $packet)); if($ev->isCancelled()){ return false; } @@ -771,7 +771,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($this->connected === false){ return false; } - $this->server->getPluginManager()->callEvent($ev = new DataPacketSendEvent($this, $packet)); + $this->server->getPluginManager()->callEvent($ev = DataPacketSendEvent::createEvent($this, $packet)); if($ev->isCancelled()){ return false; } @@ -803,7 +803,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ } } - $this->server->getPluginManager()->callEvent($ev = new PlayerBedEnterEvent($this, $this->level->getBlock($pos))); + $this->server->getPluginManager()->callEvent($ev = PlayerBedEnterEvent::createEvent($this, $this->level->getBlock($pos))); if($ev->isCancelled()){ return false; } @@ -842,7 +842,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ public function stopSleep(){ if($this->sleeping instanceof Vector3){ - $this->server->getPluginManager()->callEvent($ev = new PlayerBedLeaveEvent($this, $this->level->getBlock($this->sleeping))); + $this->server->getPluginManager()->callEvent($ev = PlayerBedLeaveEvent::createEvent($this, $this->level->getBlock($this->sleeping))); $this->sleeping = null; @@ -892,7 +892,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ return false; } } - $this->server->getPluginManager()->callEvent($ev = new PlayerAchievementAwardedEvent($this, $achievementId)); + $this->server->getPluginManager()->callEvent($ev = PlayerAchievementAwardedEvent::createEvent($this, $achievementId)); if(!$ev->isCancelled()){ $this->achievements[$achievementId] = true; Achievement::broadcast($this, $achievementId); @@ -926,7 +926,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ return false; } - $this->server->getPluginManager()->callEvent($ev = new PlayerGameModeChangeEvent($this, (int) $gm)); + $this->server->getPluginManager()->callEvent($ev = PlayerGameModeChangeEvent::createEvent($this, (int) $gm)); if($ev->isCancelled()){ return false; } @@ -1116,7 +1116,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->lastYaw = $to->yaw; $this->lastPitch = $to->pitch; - $ev = new PlayerMoveEvent($this, $from, $to); + $ev = PlayerMoveEvent::createEvent($this, $from, $to); $this->server->getPluginManager()->callEvent($ev); @@ -1200,7 +1200,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ continue; } - $this->server->getPluginManager()->callEvent($ev = new InventoryPickupItemEvent($this->inventory, $item)); + $this->server->getPluginManager()->callEvent($ev = InventoryPickupItemEvent::createEvent($this->inventory, $item)); if($ev->isCancelled()){ continue; } @@ -1225,7 +1225,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ continue; } - $this->server->getPluginManager()->callEvent($ev = new InventoryPickupItemEvent($this->inventory, $item)); + $this->server->getPluginManager()->callEvent($ev = InventoryPickupItemEvent::createEvent($this->inventory, $item)); if($ev->isCancelled()){ continue; } @@ -1282,7 +1282,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ return; } - $this->server->getPluginManager()->callEvent($ev = new DataPacketReceiveEvent($this, $packet)); + $this->server->getPluginManager()->callEvent($ev = DataPacketReceiveEvent::createEvent($this, $packet)); if($ev->isCancelled()){ return; } @@ -1324,7 +1324,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ return; } - $this->server->getPluginManager()->callEvent($ev = new PlayerPreLoginEvent($this, "Plugin reason")); + $this->server->getPluginManager()->callEvent($ev = PlayerPreLoginEvent::createEvent($this, "Plugin reason")); if($ev->isCancelled()){ $this->close("", $ev->getKickMessage()); @@ -1399,7 +1399,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ parent::__construct($this->level->getChunk($nbt["Pos"][0] >> 4, $nbt["Pos"][2] >> 4, true), $nbt); $this->loggedIn = true; - $this->server->getPluginManager()->callEvent($ev = new PlayerLoginEvent($this, "Plugin reason")); + $this->server->getPluginManager()->callEvent($ev = PlayerLoginEvent::createEvent($this, "Plugin reason")); if($ev->isCancelled()){ $this->close(TextFormat::YELLOW . $this->username . " has left the game", $ev->getKickMessage()); @@ -1673,7 +1673,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ ]); $f = 1.5; - $ev = new EntityShootBowEvent($this, $bow, new Arrow($this->chunk, $nbt, $this), $f); + $ev = EntityShootBowEvent::createEvent($this, $bow, new Arrow($this->chunk, $nbt, $this), $f); $this->server->getPluginManager()->callEvent($ev); @@ -1690,7 +1690,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ } } if($ev->getProjectile() instanceof Projectile){ - $this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($ev->getProjectile())); + $this->server->getPluginManager()->callEvent($projectileEv = ProjectileLaunchEvent::createEvent($ev->getProjectile())); if($projectileEv->isCancelled()){ $ev->getProjectile()->kill(); }else{ @@ -1852,7 +1852,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $damage[EntityDamageEvent::MODIFIER_ARMOR] = -intval($damage[EntityDamageEvent::MODIFIER_BASE] * $points * 0.04); } - $ev = new EntityDamageByEntityEvent($this, $target, EntityDamageEvent::CAUSE_ENTITY_ATTACK, $damage); + $ev = EntityDamageByEntityEvent::createEvent($this, $target, EntityDamageEvent::CAUSE_ENTITY_ATTACK, $damage); if($cancelled){ $ev->setCancelled(); } @@ -1882,7 +1882,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ break; } - $this->server->getPluginManager()->callEvent($ev = new PlayerAnimationEvent($this, $packet->action)); + $this->server->getPluginManager()->callEvent($ev = PlayerAnimationEvent::createEvent($this, $packet->action)); if($ev->isCancelled()){ break; } @@ -1899,7 +1899,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->craftingType = 0; - $this->server->getPluginManager()->callEvent($ev = new PlayerRespawnEvent($this, $this->getSpawn())); + $this->server->getPluginManager()->callEvent($ev = PlayerRespawnEvent::createEvent($this, $this->getSpawn())); $this->teleport($ev->getRespawnPosition()); $this->fireTicks = 0; @@ -1955,7 +1955,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ ]; $slot = $this->inventory->getItemInHand(); if($this->getHealth() < 20 and isset($items[$slot->getID()])){ - $this->server->getPluginManager()->callEvent($ev = new PlayerItemConsumeEvent($this, $slot)); + $this->server->getPluginManager()->callEvent($ev = PlayerItemConsumeEvent::createEvent($this, $slot)); if($ev->isCancelled()){ $this->inventory->sendContents($this); break; @@ -1969,7 +1969,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ Server::broadcastPacket($this->getViewers(), $pk); $amount = $items[$slot->getID()]; - $this->server->getPluginManager()->callEvent($ev = new EntityRegainHealthEvent($this, $amount, EntityRegainHealthEvent::CAUSE_EATING)); + $this->server->getPluginManager()->callEvent($ev = EntityRegainHealthEvent::createEvent($this, $amount, EntityRegainHealthEvent::CAUSE_EATING)); if(!$ev->isCancelled()){ $this->heal($ev->getAmount(), $ev); } @@ -1989,7 +1989,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ } $packet->eid = $this->id; $item = $this->inventory->getItemInHand(); - $ev = new PlayerDropItemEvent($this, $item); + $ev = PlayerDropItemEvent::createEvent($this, $item); $this->server->getPluginManager()->callEvent($ev); if($ev->isCancelled()){ $this->inventory->sendContents($this); @@ -2014,7 +2014,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $packet->message = TextFormat::clean($packet->message); if(trim($packet->message) != "" and strlen($packet->message) <= 255){ $message = $packet->message; - $this->server->getPluginManager()->callEvent($ev = new PlayerCommandPreprocessEvent($this, $message)); + $this->server->getPluginManager()->callEvent($ev = PlayerCommandPreprocessEvent::createEvent($this, $message)); if($ev->isCancelled()){ break; } @@ -2023,7 +2023,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->server->dispatchCommand($ev->getPlayer(), substr($ev->getMessage(), 1)); Timings::$playerCommandTimer->stopTiming(); }else{ - $this->server->getPluginManager()->callEvent($ev = new PlayerChatEvent($this, $ev->getMessage())); + $this->server->getPluginManager()->callEvent($ev = PlayerChatEvent::createEvent($this, $ev->getMessage())); if(!$ev->isCancelled()){ $this->server->broadcastMessage(sprintf($ev->getFormat(), $ev->getPlayer()->getDisplayName(), $ev->getMessage()), $ev->getRecipients()); } @@ -2037,7 +2037,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->craftingType = 0; $this->currentTransaction = null; if(isset($this->windowIndex[$packet->windowid])){ - $this->server->getPluginManager()->callEvent(new InventoryCloseEvent($this->windowIndex[$packet->windowid], $this)); + $this->server->getPluginManager()->callEvent(InventoryCloseEvent::createEvent($this->windowIndex[$packet->windowid], $this)); $this->removeWindow($this->windowIndex[$packet->windowid]); }else{ unset($this->windowIndex[$packet->windowid]); @@ -2192,7 +2192,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($nbt["id"] !== Tile::SIGN){ $t->spawnTo($this); }else{ - $ev = new SignChangeEvent($t->getBlock(), $this, [ + $ev = SignChangeEvent::createEvent($t->getBlock(), $this, [ $nbt["Text1"], $nbt["Text2"], $nbt["Text3"], $nbt["Text4"] ]); @@ -2223,7 +2223,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ * @return bool */ public function kick($reason = ""){ - $this->server->getPluginManager()->callEvent($ev = new PlayerKickEvent($this, $reason, TextFormat::YELLOW . $this->username . " has left the game")); + $this->server->getPluginManager()->callEvent($ev = PlayerKickEvent::createEvent($this, $reason, TextFormat::YELLOW . $this->username . " has left the game")); if(!$ev->isCancelled()){ $message = "Kicked by admin." . ($reason !== "" ? " Reason: " . $reason : ""); $this->sendMessage($message); @@ -2269,7 +2269,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($this->connected and !$this->closed){ $this->connected = false; if($this->username != ""){ - $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message)); + $this->server->getPluginManager()->callEvent($ev = PlayerQuitEvent::createEvent($this, $message)); if($this->server->getAutoSave() and $this->loggedIn === true){ $this->save(); } @@ -2439,7 +2439,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ Entity::kill(); - $this->server->getPluginManager()->callEvent($ev = new PlayerDeathEvent($this, $this->getDrops(), $message)); + $this->server->getPluginManager()->callEvent($ev = PlayerDeathEvent::createEvent($this, $this->getDrops(), $message)); if(!$ev->getKeepInventory()){ foreach($ev->getDrops() as $item){ diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 6cb8bfaf6..8ae5dde89 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -31,6 +31,7 @@ use pocketmine\command\CommandSender; use pocketmine\command\ConsoleCommandSender; use pocketmine\command\PluginIdentifiableCommand; use pocketmine\command\SimpleCommandMap; +use pocketmine\event\Event; use pocketmine\event\HandlerList; use pocketmine\event\level\LevelInitEvent; use pocketmine\event\level\LevelLoadEvent; @@ -974,7 +975,7 @@ class Server{ $level->initLevel(); - $this->getPluginManager()->callEvent(new LevelLoadEvent($level)); + $this->getPluginManager()->callEvent(LevelLoadEvent::createEvent($level)); /*foreach($entities->getAll() as $entity){ if(!isset($entity["id"])){ @@ -1109,9 +1110,9 @@ class Server{ $level->initLevel(); - $this->getPluginManager()->callEvent(new LevelInitEvent($level)); + $this->getPluginManager()->callEvent(LevelInitEvent::createEvent($level)); - $this->getPluginManager()->callEvent(new LevelLoadEvent($level)); + $this->getPluginManager()->callEvent(LevelLoadEvent::createEvent($level)); $this->getLogger()->notice("Spawn terrain for level \"$name\" is being generated in the background"); @@ -1743,7 +1744,7 @@ class Server{ public function checkConsole(){ Timings::$serverCommandTimer->startTiming(); if(($line = $this->console->getLine()) !== null){ - $this->pluginManager->callEvent($ev = new ServerCommandEvent($this->consoleSender, $line)); + $this->pluginManager->callEvent($ev = ServerCommandEvent::createEvent($this->consoleSender, $line)); if(!$ev->isCancelled()){ $this->dispatchCommand($ev->getSender(), $ev->getCommand()); } @@ -2119,6 +2120,9 @@ class Server{ Vector3::clearVectorList(); Position::clearPositionList(); AxisAlignedBB::clearBoundingBoxPool(); + if(($this->tickCounter % 4) === 0){ + Event::clearAllPools(); + } Timings::$serverTickTimer->stopTiming(); diff --git a/src/pocketmine/block/Cactus.php b/src/pocketmine/block/Cactus.php index b7e11434e..a0f0e3f43 100644 --- a/src/pocketmine/block/Cactus.php +++ b/src/pocketmine/block/Cactus.php @@ -55,7 +55,7 @@ class Cactus extends Transparent{ } public function onEntityCollide(Entity $entity){ - $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_CONTACT, 1); + $ev = EntityDamageByBlockEvent::createEvent($this, $entity, EntityDamageEvent::CAUSE_CONTACT, 1); Server::getInstance()->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $entity->attack($ev->getFinalDamage(), $ev); @@ -81,7 +81,7 @@ class Cactus extends Transparent{ for($y = 1; $y < 3; ++$y){ $b = $this->getLevel()->getBlock(Vector3::createVector($this->x, $this->y + $y, $this->z)); if($b->getID() === self::AIR){ - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($b, new Cactus())); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockGrowEvent::createEvent($b, new Cactus())); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($b, $ev->getNewState(), true); } diff --git a/src/pocketmine/block/Cake.php b/src/pocketmine/block/Cake.php index 7cff10727..8b6c6b1ce 100644 --- a/src/pocketmine/block/Cake.php +++ b/src/pocketmine/block/Cake.php @@ -81,7 +81,7 @@ class Cake extends Transparent{ public function onActivate(Item $item, Player $player = null){ if($player instanceof Player and $player->getHealth() < 20){ ++$this->meta; - Server::getInstance()->getPluginManager()->callEvent($ev = new EntityRegainHealthEvent($player, 3, EntityRegainHealthEvent::CAUSE_EATING)); + Server::getInstance()->getPluginManager()->callEvent($ev = EntityRegainHealthEvent::createEvent($player, 3, EntityRegainHealthEvent::CAUSE_EATING)); if(!$ev->isCancelled()){ $player->heal($ev->getAmount(), $ev); } diff --git a/src/pocketmine/block/Crops.php b/src/pocketmine/block/Crops.php index f7241c186..0324ea633 100644 --- a/src/pocketmine/block/Crops.php +++ b/src/pocketmine/block/Crops.php @@ -57,7 +57,7 @@ abstract class Crops extends Flowable{ $block->meta = 7; } - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($this, $block)); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockGrowEvent::createEvent($this, $block)); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($this, $ev->getNewState(), true, true); @@ -82,7 +82,7 @@ abstract class Crops extends Flowable{ if($this->meta < 0x07){ $block = clone $this; ++$block->meta; - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($this, $block)); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockGrowEvent::createEvent($this, $block)); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($this, $ev->getNewState(), true, true); diff --git a/src/pocketmine/block/Fire.php b/src/pocketmine/block/Fire.php index 7670c4c29..65b2488be 100644 --- a/src/pocketmine/block/Fire.php +++ b/src/pocketmine/block/Fire.php @@ -46,13 +46,13 @@ class Fire extends Flowable{ } public function onEntityCollide(Entity $entity){ - $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); + $ev = EntityDamageByBlockEvent::createEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1); Server::getInstance()->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $entity->attack($ev->getFinalDamage(), $ev); } - $ev = new EntityCombustByBlockEvent($this, $entity, 8); + $ev = EntityCombustByBlockEvent::createEvent($this, $entity, 8); Server::getInstance()->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $entity->setOnFire($ev->getDuration()); diff --git a/src/pocketmine/block/Grass.php b/src/pocketmine/block/Grass.php index 167b8a11a..cc6a870e1 100644 --- a/src/pocketmine/block/Grass.php +++ b/src/pocketmine/block/Grass.php @@ -58,7 +58,7 @@ class Grass extends Solid{ if($block === Block::DIRT){ $block = Block::get($block, $this->getLevel()->getBlockDataAt($x, $y, $z), Position::createPosition($x, $y, $z, $this->getLevel())); if($block->getSide(1) instanceof Transparent){ - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Grass())); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockSpreadEvent::createEvent($block, $this, new Grass())); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($block, $ev->getNewState()); } diff --git a/src/pocketmine/block/Lava.php b/src/pocketmine/block/Lava.php index 8d1e1127e..2fc2dfc6c 100644 --- a/src/pocketmine/block/Lava.php +++ b/src/pocketmine/block/Lava.php @@ -38,13 +38,13 @@ class Lava extends Liquid{ public function onEntityCollide(Entity $entity){ $entity->fallDistance *= 0.5; - $ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4); + $ev = EntityDamageByBlockEvent::createEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4); Server::getInstance()->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $entity->attack($ev->getFinalDamage(), $ev); } - $ev = new EntityCombustByBlockEvent($this, $entity, 15); + $ev = EntityCombustByBlockEvent::createEvent($this, $entity, 15); Server::getInstance()->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $entity->setOnFire($ev->getDuration()); diff --git a/src/pocketmine/block/Leaves.php b/src/pocketmine/block/Leaves.php index 45f28e72c..337860352 100644 --- a/src/pocketmine/block/Leaves.php +++ b/src/pocketmine/block/Leaves.php @@ -124,7 +124,7 @@ class Leaves extends Transparent{ $visited = []; $check = 0; - Server::getInstance()->getPluginManager()->callEvent($ev = new LeavesDecayEvent($this)); + Server::getInstance()->getPluginManager()->callEvent($ev = LeavesDecayEvent::createEvent($this)); if($ev->isCancelled() or $this->findLog($this, $visited, 0, $check) === true){ $this->getLevel()->setBlock($this, $this, false, false); diff --git a/src/pocketmine/block/Leaves2.php b/src/pocketmine/block/Leaves2.php index 8c9083dd2..79f0d0f47 100644 --- a/src/pocketmine/block/Leaves2.php +++ b/src/pocketmine/block/Leaves2.php @@ -116,7 +116,7 @@ class Leaves2 extends Leaves{ $visited = []; $check = 0; - Server::getInstance()->getPluginManager()->callEvent($ev = new LeavesDecayEvent($this)); + Server::getInstance()->getPluginManager()->callEvent($ev = LeavesDecayEvent::createEvent($this)); if($ev->isCancelled() or $this->findLog($this, $visited, 0, $check) === true){ $this->getLevel()->setBlock($this, $this, false, false); diff --git a/src/pocketmine/block/MelonStem.php b/src/pocketmine/block/MelonStem.php index 3e69c11e0..62a10b370 100644 --- a/src/pocketmine/block/MelonStem.php +++ b/src/pocketmine/block/MelonStem.php @@ -42,7 +42,7 @@ class MelonStem extends Crops{ if($this->meta < 0x07){ $block = clone $this; ++$block->meta; - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($this, $block)); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockGrowEvent::createEvent($this, $block)); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($this, $ev->getNewState(), true); } @@ -58,7 +58,7 @@ class MelonStem extends Crops{ $side = $this->getSide(mt_rand(2, 5)); $d = $side->getSide(0); 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 = BlockGrowEvent::createEvent($side, new Melon())); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($side, $ev->getNewState(), true); } diff --git a/src/pocketmine/block/Mycelium.php b/src/pocketmine/block/Mycelium.php index 784d2350d..6052f5157 100644 --- a/src/pocketmine/block/Mycelium.php +++ b/src/pocketmine/block/Mycelium.php @@ -49,7 +49,7 @@ class Mycelium extends Solid{ if($block === Block::DIRT){ $block = Block::get($block, $this->getLevel()->getBlockDataAt($x, $y, $z), Position::createPosition($x, $y, $z, $this->getLevel())); if($block->getSide(1) instanceof Transparent){ - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockSpreadEvent($block, $this, new Mycelium())); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockSpreadEvent::createEvent($block, $this, new Mycelium())); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($block, $ev->getNewState()); } diff --git a/src/pocketmine/block/PumpkinStem.php b/src/pocketmine/block/PumpkinStem.php index 7123e7201..4ea7d7da0 100644 --- a/src/pocketmine/block/PumpkinStem.php +++ b/src/pocketmine/block/PumpkinStem.php @@ -42,7 +42,7 @@ class PumpkinStem extends Crops{ if($this->meta < 0x07){ $block = clone $this; ++$block->meta; - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($this, $block)); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockGrowEvent::createEvent($this, $block)); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($this, $ev->getNewState(), true); } @@ -58,7 +58,7 @@ class PumpkinStem extends Crops{ $side = $this->getSide(mt_rand(2, 5)); $d = $side->getSide(0); 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 = BlockGrowEvent::createEvent($side, new Pumpkin())); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($side, $ev->getNewState(), true); } diff --git a/src/pocketmine/block/Sugarcane.php b/src/pocketmine/block/Sugarcane.php index bf6cba252..c2c8679b2 100644 --- a/src/pocketmine/block/Sugarcane.php +++ b/src/pocketmine/block/Sugarcane.php @@ -51,7 +51,7 @@ class Sugarcane extends Flowable{ for($y = 1; $y < 3; ++$y){ $b = $this->getLevel()->getBlock(Vector3::createVector($this->x, $this->y + $y, $this->z)); if($b->getID() === self::AIR){ - Server::getInstance()->getPluginManager()->callEvent($ev = new BlockGrowEvent($b, new Sugarcane())); + Server::getInstance()->getPluginManager()->callEvent($ev = BlockGrowEvent::createEvent($b, new Sugarcane())); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($b, $ev->getNewState(), true); } diff --git a/src/pocketmine/command/defaults/KillCommand.php b/src/pocketmine/command/defaults/KillCommand.php index 35cb93451..184dbb471 100644 --- a/src/pocketmine/command/defaults/KillCommand.php +++ b/src/pocketmine/command/defaults/KillCommand.php @@ -45,7 +45,7 @@ class KillCommand extends VanillaCommand{ } if($sender instanceof Player){ - $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($sender, EntityDamageEvent::CAUSE_SUICIDE, 1000)); + $sender->getServer()->getPluginManager()->callEvent($ev = EntityDamageEvent::createEvent($sender, EntityDamageEvent::CAUSE_SUICIDE, 1000)); if($ev->isCancelled()){ return true; diff --git a/src/pocketmine/entity/Arrow.php b/src/pocketmine/entity/Arrow.php index 1e4ec4c78..086e5158a 100644 --- a/src/pocketmine/entity/Arrow.php +++ b/src/pocketmine/entity/Arrow.php @@ -123,13 +123,13 @@ class Arrow extends Projectile{ if($movingObjectPosition !== null){ if($movingObjectPosition->entityHit !== null){ - $this->server->getPluginManager()->callEvent(new ProjectileHitEvent($this)); + $this->server->getPluginManager()->callEvent(ProjectileHitEvent::createEvent($this)); $motion = sqrt($this->motionX ** 2 + $this->motionY ** 2 + $this->motionZ ** 2); $damage = ceil($motion * $this->damage); - $ev = new EntityDamageByEntityEvent($this->shootingEntity === null ? $this : $this->shootingEntity, $movingObjectPosition->entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); + $ev = EntityDamageByEntityEvent::createEvent($this->shootingEntity === null ? $this : $this->shootingEntity, $movingObjectPosition->entityHit, EntityDamageEvent::CAUSE_PROJECTILE, $damage); $this->server->getPluginManager()->callEvent($ev); @@ -138,7 +138,7 @@ class Arrow extends Projectile{ } if($this->fireTicks > 0){ - $ev = new EntityCombustByEntityEvent($this, $movingObjectPosition->entityHit, 5); + $ev = EntityCombustByEntityEvent::createEvent($this, $movingObjectPosition->entityHit, 5); $this->server->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $movingObjectPosition->entityHit->setOnFire($ev->getDuration()); @@ -157,7 +157,7 @@ class Arrow extends Projectile{ $this->motionY = 0; $this->motionZ = 0; - $this->server->getPluginManager()->callEvent(new ProjectileHitEvent($this)); + $this->server->getPluginManager()->callEvent(ProjectileHitEvent::createEvent($this)); } if(!$this->onGround or $this->motionX != 0 or $this->motionY != 0 or $this->motionZ != 0){ diff --git a/src/pocketmine/entity/DroppedItem.php b/src/pocketmine/entity/DroppedItem.php index 9584e2fe5..1ca2d8a38 100644 --- a/src/pocketmine/entity/DroppedItem.php +++ b/src/pocketmine/entity/DroppedItem.php @@ -70,7 +70,7 @@ class DroppedItem extends Entity{ $this->item = Item::get($this->namedtag->Item["id"], $this->namedtag->Item["Damage"], $this->namedtag->Item["Count"]); - $this->server->getPluginManager()->callEvent(new ItemSpawnEvent($this)); + $this->server->getPluginManager()->callEvent(ItemSpawnEvent::createEvent($this)); } public function onUpdate($currentTick){ @@ -113,7 +113,7 @@ class DroppedItem extends Entity{ } if($this->age > 6000){ - $this->server->getPluginManager()->callEvent($ev = new ItemDespawnEvent($this)); + $this->server->getPluginManager()->callEvent($ev = ItemDespawnEvent::createEvent($this)); if($ev->isCancelled()){ $this->age = 0; }else{ diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 6fd22b953..3d63b1299 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -213,7 +213,7 @@ abstract class Entity extends Location implements Metadatable{ $this->level->addEntity($this); $this->initEntity(); $this->lastUpdate = $this->server->getTick(); - $this->server->getPluginManager()->callEvent(new EntitySpawnEvent($this)); + $this->server->getPluginManager()->callEvent(EntitySpawnEvent::createEvent($this)); $this->scheduleUpdate(); @@ -483,7 +483,7 @@ abstract class Entity extends Location implements Metadatable{ $this->checkBlockCollision(); if($this->y < 0 and $this->dead !== true){ - $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_VOID, 10)); + $this->server->getPluginManager()->callEvent($ev = EntityDamageEvent::createEvent($this, EntityDamageEvent::CAUSE_VOID, 10)); if(!$ev->isCancelled()){ $this->attack($ev->getFinalDamage(), $ev); } @@ -498,7 +498,7 @@ abstract class Entity extends Location implements Metadatable{ } }else{ if(($this->fireTicks % 20) === 0 or $tickDiff > 20){ - $ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_FIRE_TICK, 1); + $ev = EntityDamageEvent::createEvent($this, EntityDamageEvent::CAUSE_FIRE_TICK, 1); $this->server->getPluginManager()->callEvent($ev); if(!$ev->isCancelled()){ $this->attack($ev->getFinalDamage(), $ev); @@ -675,7 +675,7 @@ abstract class Entity extends Location implements Metadatable{ public function fall($fallDistance){ $damage = floor($fallDistance - 3); if($damage > 0){ - $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_FALL, $damage)); + $this->server->getPluginManager()->callEvent($ev = EntityDamageEvent::createEvent($this, EntityDamageEvent::CAUSE_FALL, $damage)); if($ev->isCancelled()){ return; } @@ -701,7 +701,7 @@ abstract class Entity extends Location implements Metadatable{ protected function switchLevel(Level $targetLevel){ if($this->isValid()){ - $this->server->getPluginManager()->callEvent($ev = new EntityLevelChangeEvent($this, $this->level, $targetLevel)); + $this->server->getPluginManager()->callEvent($ev = EntityLevelChangeEvent::createEvent($this, $this->level, $targetLevel)); if($ev->isCancelled()){ return false; } @@ -1088,7 +1088,7 @@ abstract class Entity extends Location implements Metadatable{ public function setMotion(Vector3 $motion){ if(!$this->justCreated){ - $this->server->getPluginManager()->callEvent($ev = new EntityMotionEvent($this, $motion)); + $this->server->getPluginManager()->callEvent($ev = EntityMotionEvent::createEvent($this, $motion)); if($ev->isCancelled()){ return false; } @@ -1139,7 +1139,7 @@ abstract class Entity extends Location implements Metadatable{ } $from = Position::fromObject($this, $this->level); $to = Position::fromObject($pos, $pos instanceof Position ? $pos->getLevel() : $this->level); - $this->server->getPluginManager()->callEvent($ev = new EntityTeleportEvent($this, $from, $to)); + $this->server->getPluginManager()->callEvent($ev = EntityTeleportEvent::createEvent($this, $from, $to)); if($ev->isCancelled()){ return false; } @@ -1177,7 +1177,7 @@ abstract class Entity extends Location implements Metadatable{ public function close(){ if(!$this->closed){ - $this->server->getPluginManager()->callEvent(new EntityDespawnEvent($this)); + $this->server->getPluginManager()->callEvent(EntityDespawnEvent::createEvent($this)); $this->closed = true; unset($this->level->updateEntities[$this->id]); if($this->chunk instanceof FullChunk){ diff --git a/src/pocketmine/entity/FallingBlock.php b/src/pocketmine/entity/FallingBlock.php index b23fa1067..d9bb4d1ba 100644 --- a/src/pocketmine/entity/FallingBlock.php +++ b/src/pocketmine/entity/FallingBlock.php @@ -115,7 +115,7 @@ class FallingBlock extends Entity{ if(!$block->isFullBlock){ $this->getLevel()->dropItem($this, Item::get($this->getBlock(), $this->getDamage(), 1)); }else{ - $this->server->getPluginManager()->callEvent($ev = new EntityBlockChangeEvent($this, $block, Block::get($this->getBlock(), $this->getDamage()))); + $this->server->getPluginManager()->callEvent($ev = EntityBlockChangeEvent::createEvent($this, $block, Block::get($this->getBlock(), $this->getDamage()))); if(!$ev->isCancelled()){ $this->getLevel()->setBlock($pos, $ev->getTo(), true); } diff --git a/src/pocketmine/entity/Living.php b/src/pocketmine/entity/Living.php index c563ca964..7aa6a7b9f 100644 --- a/src/pocketmine/entity/Living.php +++ b/src/pocketmine/entity/Living.php @@ -124,7 +124,7 @@ abstract class Living extends Entity implements Damageable{ return; } parent::kill(); - $this->server->getPluginManager()->callEvent($ev = new EntityDeathEvent($this, $this->getDrops())); + $this->server->getPluginManager()->callEvent($ev = EntityDeathEvent::createEvent($this, $this->getDrops())); foreach($ev->getDrops() as $item){ $this->getLevel()->dropItem($this, $item); } @@ -135,7 +135,7 @@ abstract class Living extends Entity implements Damageable{ parent::entityBaseTick(); if($this->dead !== true and $this->isInsideOfSolid()){ - $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_SUFFOCATION, 1)); + $this->server->getPluginManager()->callEvent($ev = EntityDamageEvent::createEvent($this, EntityDamageEvent::CAUSE_SUFFOCATION, 1)); if(!$ev->isCancelled()){ $this->attack($ev->getFinalDamage(), $ev); } @@ -146,7 +146,7 @@ abstract class Living extends Entity implements Damageable{ if($this->airTicks <= -20){ $this->airTicks = 0; - $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_DROWNING, 2)); + $this->server->getPluginManager()->callEvent($ev = EntityDamageEvent::createEvent($this, EntityDamageEvent::CAUSE_DROWNING, 2)); if(!$ev->isCancelled()){ $this->attack($ev->getFinalDamage(), $ev); } diff --git a/src/pocketmine/entity/PrimedTNT.php b/src/pocketmine/entity/PrimedTNT.php index 335c3943a..f2843980b 100644 --- a/src/pocketmine/entity/PrimedTNT.php +++ b/src/pocketmine/entity/PrimedTNT.php @@ -128,7 +128,7 @@ class PrimedTNT extends Entity implements Explosive{ } public function explode(){ - $this->server->getPluginManager()->callEvent($ev = new ExplosionPrimeEvent($this, 4)); + $this->server->getPluginManager()->callEvent($ev = ExplosionPrimeEvent::createEvent($this, 4)); if(!$ev->isCancelled()){ $explosion = new Explosion($this, $ev->getForce(), $this); diff --git a/src/pocketmine/event/Event.php b/src/pocketmine/event/Event.php index b1b0e54f7..b9280f199 100644 --- a/src/pocketmine/event/Event.php +++ b/src/pocketmine/event/Event.php @@ -24,16 +24,27 @@ */ namespace pocketmine\event; +use pocketmine\plugin\PluginManager; + abstract class Event{ /** * Any callable event must declare the static variable * * public static $handlerList = null; + * public static $eventPool = []; + * public static $nextEvent = 0; * * Not doing so will deny the proper event initialization */ + /** @var Event[] */ + public static $eventPool = []; + public static $nextEvent = 0; + + /** @var Event[] */ + private static $knownEvents = []; + protected $eventName = null; private $isCancelled = false; @@ -41,7 +52,7 @@ abstract class Event{ * @return string */ final public function getEventName(){ - return $this->eventName !== null ? get_class($this) : $this->eventName; + return $this->eventName !== null ? static::class : $this->eventName; } /** @@ -85,4 +96,40 @@ abstract class Event{ return static::$handlerList; } + public static function clearEventPool(){ + static::$nextEvent = 0; + } + + public static function clearAllPools(){ + foreach(self::$knownEvents as $event){ + $event::clearEventPool(); + } + } + + /** + * @param $params + * + * @return static + */ + public static function createEvent(...$params){ + if(static::$nextEvent >= count(static::$eventPool)){ + static::$eventPool[] = new static(...$params); + return static::$eventPool[static::$nextEvent++]; + } + $ev = static::$eventPool[static::$nextEvent++]; + $ev->__construct(...$params); + if($ev instanceof Cancellable){ + $ev->setCancelled(false); + } + return $ev; + } + + public static function onClassLoaded(){ + self::$knownEvents[static::class] = static::class; + } + + public static function getKnownEvents(){ + return self::$knownEvents; + } + } \ No newline at end of file diff --git a/src/pocketmine/event/block/BlockBreakEvent.php b/src/pocketmine/event/block/BlockBreakEvent.php index 2c4c14257..64113b7b8 100644 --- a/src/pocketmine/event/block/BlockBreakEvent.php +++ b/src/pocketmine/event/block/BlockBreakEvent.php @@ -28,6 +28,8 @@ use pocketmine\Player; class BlockBreakEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var \pocketmine\Player */ protected $player; diff --git a/src/pocketmine/event/block/BlockFormEvent.php b/src/pocketmine/event/block/BlockFormEvent.php index c757b97d2..e21c9db60 100644 --- a/src/pocketmine/event/block/BlockFormEvent.php +++ b/src/pocketmine/event/block/BlockFormEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class BlockFormEvent extends BlockGrowEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; public function __construct(Block $block, Block $newState){ parent::__construct($block, $newState); diff --git a/src/pocketmine/event/block/BlockGrowEvent.php b/src/pocketmine/event/block/BlockGrowEvent.php index cb2c739a4..c4c8b9bb2 100644 --- a/src/pocketmine/event/block/BlockGrowEvent.php +++ b/src/pocketmine/event/block/BlockGrowEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class BlockGrowEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Block */ private $newState; diff --git a/src/pocketmine/event/block/BlockPlaceEvent.php b/src/pocketmine/event/block/BlockPlaceEvent.php index c57755e1c..d3799f1aa 100644 --- a/src/pocketmine/event/block/BlockPlaceEvent.php +++ b/src/pocketmine/event/block/BlockPlaceEvent.php @@ -31,6 +31,8 @@ use pocketmine\Player; */ class BlockPlaceEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var \pocketmine\Player */ protected $player; diff --git a/src/pocketmine/event/block/BlockSpreadEvent.php b/src/pocketmine/event/block/BlockSpreadEvent.php index d5344d5b9..eb2794047 100644 --- a/src/pocketmine/event/block/BlockSpreadEvent.php +++ b/src/pocketmine/event/block/BlockSpreadEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class BlockSpreadEvent extends BlockFormEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Block */ private $source; diff --git a/src/pocketmine/event/block/BlockUpdateEvent.php b/src/pocketmine/event/block/BlockUpdateEvent.php index 5d01b0260..ad5604764 100644 --- a/src/pocketmine/event/block/BlockUpdateEvent.php +++ b/src/pocketmine/event/block/BlockUpdateEvent.php @@ -30,5 +30,7 @@ use pocketmine\Player; */ class BlockUpdateEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/block/LeavesDecayEvent.php b/src/pocketmine/event/block/LeavesDecayEvent.php index 9da0281da..594bc041d 100644 --- a/src/pocketmine/event/block/LeavesDecayEvent.php +++ b/src/pocketmine/event/block/LeavesDecayEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class LeavesDecayEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; public function __construct(Block $block){ parent::__construct($block); diff --git a/src/pocketmine/event/block/SignChangeEvent.php b/src/pocketmine/event/block/SignChangeEvent.php index 0ca3deb6a..5145178ee 100644 --- a/src/pocketmine/event/block/SignChangeEvent.php +++ b/src/pocketmine/event/block/SignChangeEvent.php @@ -30,6 +30,8 @@ use pocketmine\Player; */ class SignChangeEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var \pocketmine\Player */ private $player; diff --git a/src/pocketmine/event/entity/EntityArmorChangeEvent.php b/src/pocketmine/event/entity/EntityArmorChangeEvent.php index a5b5d0ba0..89db05d03 100644 --- a/src/pocketmine/event/entity/EntityArmorChangeEvent.php +++ b/src/pocketmine/event/entity/EntityArmorChangeEvent.php @@ -28,6 +28,8 @@ use pocketmine\item\Item; class EntityArmorChangeEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $oldItem; private $newItem; diff --git a/src/pocketmine/event/entity/EntityBlockChangeEvent.php b/src/pocketmine/event/entity/EntityBlockChangeEvent.php index 3d19301d0..8784ad3dc 100644 --- a/src/pocketmine/event/entity/EntityBlockChangeEvent.php +++ b/src/pocketmine/event/entity/EntityBlockChangeEvent.php @@ -30,6 +30,8 @@ use pocketmine\event\Cancellable; */ class EntityBlockChangeEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $from; private $to; diff --git a/src/pocketmine/event/entity/EntityCombustByBlockEvent.php b/src/pocketmine/event/entity/EntityCombustByBlockEvent.php index 6d3cc450e..dbf33e4d6 100644 --- a/src/pocketmine/event/entity/EntityCombustByBlockEvent.php +++ b/src/pocketmine/event/entity/EntityCombustByBlockEvent.php @@ -25,6 +25,8 @@ use pocketmine\block\Block; use pocketmine\entity\Entity; class EntityCombustByBlockEvent extends EntityCombustEvent{ + public static $eventPool = []; + public static $nextEvent = 0; protected $combuster; diff --git a/src/pocketmine/event/entity/EntityCombustByEntityEvent.php b/src/pocketmine/event/entity/EntityCombustByEntityEvent.php index e72a5e865..a8801cb8c 100644 --- a/src/pocketmine/event/entity/EntityCombustByEntityEvent.php +++ b/src/pocketmine/event/entity/EntityCombustByEntityEvent.php @@ -24,6 +24,8 @@ namespace pocketmine\event\entity; use pocketmine\entity\Entity; class EntityCombustByEntityEvent extends EntityCombustEvent{ + public static $eventPool = []; + public static $nextEvent = 0; protected $combuster; diff --git a/src/pocketmine/event/entity/EntityCombustEvent.php b/src/pocketmine/event/entity/EntityCombustEvent.php index 0bc0d6c27..9cf690df0 100644 --- a/src/pocketmine/event/entity/EntityCombustEvent.php +++ b/src/pocketmine/event/entity/EntityCombustEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class EntityCombustEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; protected $duration; diff --git a/src/pocketmine/event/entity/EntityDamageByBlockEvent.php b/src/pocketmine/event/entity/EntityDamageByBlockEvent.php index 0a92cc578..2ceb3bffd 100644 --- a/src/pocketmine/event/entity/EntityDamageByBlockEvent.php +++ b/src/pocketmine/event/entity/EntityDamageByBlockEvent.php @@ -25,6 +25,8 @@ use pocketmine\block\Block; use pocketmine\entity\Entity; class EntityDamageByBlockEvent extends EntityDamageEvent{ + public static $eventPool = []; + public static $nextEvent = 0; /** @var Block */ private $damager; diff --git a/src/pocketmine/event/entity/EntityDamageByEntityEvent.php b/src/pocketmine/event/entity/EntityDamageByEntityEvent.php index 1845afd68..aa0c757d1 100644 --- a/src/pocketmine/event/entity/EntityDamageByEntityEvent.php +++ b/src/pocketmine/event/entity/EntityDamageByEntityEvent.php @@ -24,6 +24,8 @@ namespace pocketmine\event\entity; use pocketmine\entity\Entity; class EntityDamageByEntityEvent extends EntityDamageEvent{ + public static $eventPool = []; + public static $nextEvent = 0; /** @var Entity */ private $damager; diff --git a/src/pocketmine/event/entity/EntityDamageEvent.php b/src/pocketmine/event/entity/EntityDamageEvent.php index 7d4b12bf4..eb397b84c 100644 --- a/src/pocketmine/event/entity/EntityDamageEvent.php +++ b/src/pocketmine/event/entity/EntityDamageEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class EntityDamageEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; const MODIFIER_BASE = 0; const MODIFIER_ARMOR = 1; diff --git a/src/pocketmine/event/entity/EntityDeathEvent.php b/src/pocketmine/event/entity/EntityDeathEvent.php index 51a5ed54e..3645ddf31 100644 --- a/src/pocketmine/event/entity/EntityDeathEvent.php +++ b/src/pocketmine/event/entity/EntityDeathEvent.php @@ -26,6 +26,8 @@ use pocketmine\item\Item; class EntityDeathEvent extends EntityEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Item[] */ private $drops = []; diff --git a/src/pocketmine/event/entity/EntityDespawnEvent.php b/src/pocketmine/event/entity/EntityDespawnEvent.php index fe080d83b..a5ff67242 100644 --- a/src/pocketmine/event/entity/EntityDespawnEvent.php +++ b/src/pocketmine/event/entity/EntityDespawnEvent.php @@ -33,6 +33,8 @@ use pocketmine\entity\Vehicle; */ class EntityDespawnEvent extends EntityEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $entityType; diff --git a/src/pocketmine/event/entity/EntityExplodeEvent.php b/src/pocketmine/event/entity/EntityExplodeEvent.php index 46476a6eb..367978b38 100644 --- a/src/pocketmine/event/entity/EntityExplodeEvent.php +++ b/src/pocketmine/event/entity/EntityExplodeEvent.php @@ -31,6 +31,8 @@ use pocketmine\level\Position; */ class EntityExplodeEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Position */ protected $position; diff --git a/src/pocketmine/event/entity/EntityInventoryChangeEvent.php b/src/pocketmine/event/entity/EntityInventoryChangeEvent.php index ca50c001c..f98ac426f 100644 --- a/src/pocketmine/event/entity/EntityInventoryChangeEvent.php +++ b/src/pocketmine/event/entity/EntityInventoryChangeEvent.php @@ -28,6 +28,8 @@ use pocketmine\item\Item; class EntityInventoryChangeEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $oldItem; private $newItem; diff --git a/src/pocketmine/event/entity/EntityLevelChangeEvent.php b/src/pocketmine/event/entity/EntityLevelChangeEvent.php index fcf8e4291..df1a0c671 100644 --- a/src/pocketmine/event/entity/EntityLevelChangeEvent.php +++ b/src/pocketmine/event/entity/EntityLevelChangeEvent.php @@ -28,6 +28,8 @@ use pocketmine\level\Level; class EntityLevelChangeEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $originLevel; private $targetLevel; diff --git a/src/pocketmine/event/entity/EntityMotionEvent.php b/src/pocketmine/event/entity/EntityMotionEvent.php index 6c0ea6b75..560bf747c 100644 --- a/src/pocketmine/event/entity/EntityMotionEvent.php +++ b/src/pocketmine/event/entity/EntityMotionEvent.php @@ -28,6 +28,8 @@ use pocketmine\math\Vector3; class EntityMotionEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $mot; diff --git a/src/pocketmine/event/entity/EntityMoveEvent.php b/src/pocketmine/event/entity/EntityMoveEvent.php index 099c9a7a4..378110828 100644 --- a/src/pocketmine/event/entity/EntityMoveEvent.php +++ b/src/pocketmine/event/entity/EntityMoveEvent.php @@ -31,6 +31,8 @@ use pocketmine\math\Vector3; */ class EntityMoveEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var \pocketmine\math\Vector3 */ private $pos; diff --git a/src/pocketmine/event/entity/EntityRegainHealthEvent.php b/src/pocketmine/event/entity/EntityRegainHealthEvent.php index 4be1d27da..37c47d3e3 100644 --- a/src/pocketmine/event/entity/EntityRegainHealthEvent.php +++ b/src/pocketmine/event/entity/EntityRegainHealthEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class EntityRegainHealthEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; const CAUSE_REGEN = 0; const CAUSE_EATING = 1; diff --git a/src/pocketmine/event/entity/EntityShootBowEvent.php b/src/pocketmine/event/entity/EntityShootBowEvent.php index 7efb2cdb5..5fc92b015 100644 --- a/src/pocketmine/event/entity/EntityShootBowEvent.php +++ b/src/pocketmine/event/entity/EntityShootBowEvent.php @@ -29,6 +29,8 @@ use pocketmine\item\Item; class EntityShootBowEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Item */ private $bow; diff --git a/src/pocketmine/event/entity/EntitySpawnEvent.php b/src/pocketmine/event/entity/EntitySpawnEvent.php index d66947e8a..d865c537e 100644 --- a/src/pocketmine/event/entity/EntitySpawnEvent.php +++ b/src/pocketmine/event/entity/EntitySpawnEvent.php @@ -33,6 +33,8 @@ use pocketmine\entity\Vehicle; */ class EntitySpawnEvent extends EntityEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $entityType; diff --git a/src/pocketmine/event/entity/EntityTeleportEvent.php b/src/pocketmine/event/entity/EntityTeleportEvent.php index 230e0e3dc..e4ac41475 100644 --- a/src/pocketmine/event/entity/EntityTeleportEvent.php +++ b/src/pocketmine/event/entity/EntityTeleportEvent.php @@ -28,6 +28,8 @@ use pocketmine\level\Position; class EntityTeleportEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Position */ private $from; diff --git a/src/pocketmine/event/entity/ExplosionPrimeEvent.php b/src/pocketmine/event/entity/ExplosionPrimeEvent.php index e08d3bdca..66944c053 100644 --- a/src/pocketmine/event/entity/ExplosionPrimeEvent.php +++ b/src/pocketmine/event/entity/ExplosionPrimeEvent.php @@ -29,6 +29,8 @@ use pocketmine\event\Cancellable; */ class ExplosionPrimeEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; protected $force; private $blockBreaking; diff --git a/src/pocketmine/event/entity/ItemDespawnEvent.php b/src/pocketmine/event/entity/ItemDespawnEvent.php index f09249fa2..f37b3b51e 100644 --- a/src/pocketmine/event/entity/ItemDespawnEvent.php +++ b/src/pocketmine/event/entity/ItemDespawnEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class ItemDespawnEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param DroppedItem $item diff --git a/src/pocketmine/event/entity/ItemSpawnEvent.php b/src/pocketmine/event/entity/ItemSpawnEvent.php index 52ee95bbd..5e369dde9 100644 --- a/src/pocketmine/event/entity/ItemSpawnEvent.php +++ b/src/pocketmine/event/entity/ItemSpawnEvent.php @@ -25,6 +25,8 @@ use pocketmine\entity\DroppedItem; class ItemSpawnEvent extends EntityEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param DroppedItem $item diff --git a/src/pocketmine/event/entity/ProjectileHitEvent.php b/src/pocketmine/event/entity/ProjectileHitEvent.php index 1da3406b3..51e514d33 100644 --- a/src/pocketmine/event/entity/ProjectileHitEvent.php +++ b/src/pocketmine/event/entity/ProjectileHitEvent.php @@ -25,6 +25,8 @@ use pocketmine\entity\Projectile; class ProjectileHitEvent extends EntityEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param Projectile $entity diff --git a/src/pocketmine/event/entity/ProjectileLaunchEvent.php b/src/pocketmine/event/entity/ProjectileLaunchEvent.php index f2104b5a8..cb945ab10 100644 --- a/src/pocketmine/event/entity/ProjectileLaunchEvent.php +++ b/src/pocketmine/event/entity/ProjectileLaunchEvent.php @@ -26,6 +26,8 @@ use pocketmine\event\Cancellable; class ProjectileLaunchEvent extends EntityEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param Projectile $entity diff --git a/src/pocketmine/event/inventory/CraftItemEvent.php b/src/pocketmine/event/inventory/CraftItemEvent.php index 96eac6d43..d225f24f8 100644 --- a/src/pocketmine/event/inventory/CraftItemEvent.php +++ b/src/pocketmine/event/inventory/CraftItemEvent.php @@ -28,6 +28,8 @@ use pocketmine\inventory\Recipe; class CraftItemEvent extends Event implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var CraftingTransactionGroup */ private $ts; diff --git a/src/pocketmine/event/inventory/FurnaceBurnEvent.php b/src/pocketmine/event/inventory/FurnaceBurnEvent.php index 3294d9ed1..66e7b741a 100644 --- a/src/pocketmine/event/inventory/FurnaceBurnEvent.php +++ b/src/pocketmine/event/inventory/FurnaceBurnEvent.php @@ -28,6 +28,8 @@ use pocketmine\tile\Furnace; class FurnaceBurnEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $furnace; private $fuel; diff --git a/src/pocketmine/event/inventory/FurnaceSmeltEvent.php b/src/pocketmine/event/inventory/FurnaceSmeltEvent.php index cf65d418f..41ff9eaac 100644 --- a/src/pocketmine/event/inventory/FurnaceSmeltEvent.php +++ b/src/pocketmine/event/inventory/FurnaceSmeltEvent.php @@ -28,6 +28,8 @@ use pocketmine\tile\Furnace; class FurnaceSmeltEvent extends BlockEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $furnace; private $source; diff --git a/src/pocketmine/event/inventory/InventoryCloseEvent.php b/src/pocketmine/event/inventory/InventoryCloseEvent.php index 843b4df9e..257fd4ab9 100644 --- a/src/pocketmine/event/inventory/InventoryCloseEvent.php +++ b/src/pocketmine/event/inventory/InventoryCloseEvent.php @@ -26,6 +26,8 @@ use pocketmine\Player; class InventoryCloseEvent extends InventoryEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Player */ private $who; diff --git a/src/pocketmine/event/inventory/InventoryOpenEvent.php b/src/pocketmine/event/inventory/InventoryOpenEvent.php index 8d400cc90..ad68d5572 100644 --- a/src/pocketmine/event/inventory/InventoryOpenEvent.php +++ b/src/pocketmine/event/inventory/InventoryOpenEvent.php @@ -27,6 +27,8 @@ use pocketmine\Player; class InventoryOpenEvent extends InventoryEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Player */ private $who; diff --git a/src/pocketmine/event/inventory/InventoryPickupItemEvent.php b/src/pocketmine/event/inventory/InventoryPickupItemEvent.php index 07793bb10..8f87fdf39 100644 --- a/src/pocketmine/event/inventory/InventoryPickupItemEvent.php +++ b/src/pocketmine/event/inventory/InventoryPickupItemEvent.php @@ -27,6 +27,8 @@ use pocketmine\item\Item; class InventoryPickupItemEvent extends InventoryEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Item */ private $item; diff --git a/src/pocketmine/event/inventory/InventoryTransactionEvent.php b/src/pocketmine/event/inventory/InventoryTransactionEvent.php index 53a4c4e5f..5c8216f45 100644 --- a/src/pocketmine/event/inventory/InventoryTransactionEvent.php +++ b/src/pocketmine/event/inventory/InventoryTransactionEvent.php @@ -31,6 +31,8 @@ use pocketmine\inventory\TransactionGroup; */ class InventoryTransactionEvent extends Event implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var TransactionGroup */ private $ts; diff --git a/src/pocketmine/event/level/ChunkLoadEvent.php b/src/pocketmine/event/level/ChunkLoadEvent.php index cfe99f8bc..6631d52ec 100644 --- a/src/pocketmine/event/level/ChunkLoadEvent.php +++ b/src/pocketmine/event/level/ChunkLoadEvent.php @@ -28,6 +28,8 @@ use pocketmine\level\format\FullChunk; */ class ChunkLoadEvent extends ChunkEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $newChunk; diff --git a/src/pocketmine/event/level/ChunkPopulateEvent.php b/src/pocketmine/event/level/ChunkPopulateEvent.php index b3f2aec8c..943bb1983 100644 --- a/src/pocketmine/event/level/ChunkPopulateEvent.php +++ b/src/pocketmine/event/level/ChunkPopulateEvent.php @@ -26,4 +26,6 @@ namespace pocketmine\event\level; */ class ChunkPopulateEvent extends ChunkEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/level/ChunkUnloadEvent.php b/src/pocketmine/event/level/ChunkUnloadEvent.php index 257865a5f..f16294569 100644 --- a/src/pocketmine/event/level/ChunkUnloadEvent.php +++ b/src/pocketmine/event/level/ChunkUnloadEvent.php @@ -28,4 +28,6 @@ use pocketmine\event\Cancellable; */ class ChunkUnloadEvent extends ChunkEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/level/LevelInitEvent.php b/src/pocketmine/event/level/LevelInitEvent.php index 6e18f17f0..fad150f2a 100644 --- a/src/pocketmine/event/level/LevelInitEvent.php +++ b/src/pocketmine/event/level/LevelInitEvent.php @@ -26,4 +26,6 @@ namespace pocketmine\event\level; */ class LevelInitEvent extends LevelEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/level/LevelLoadEvent.php b/src/pocketmine/event/level/LevelLoadEvent.php index 84d300f13..28ebbabdd 100644 --- a/src/pocketmine/event/level/LevelLoadEvent.php +++ b/src/pocketmine/event/level/LevelLoadEvent.php @@ -26,4 +26,6 @@ namespace pocketmine\event\level; */ class LevelLoadEvent extends LevelEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/level/LevelSaveEvent.php b/src/pocketmine/event/level/LevelSaveEvent.php index 0fa652d6e..211d3ca98 100644 --- a/src/pocketmine/event/level/LevelSaveEvent.php +++ b/src/pocketmine/event/level/LevelSaveEvent.php @@ -26,4 +26,6 @@ namespace pocketmine\event\level; */ class LevelSaveEvent extends LevelEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/level/LevelUnloadEvent.php b/src/pocketmine/event/level/LevelUnloadEvent.php index 412ca7e97..1b42c0f97 100644 --- a/src/pocketmine/event/level/LevelUnloadEvent.php +++ b/src/pocketmine/event/level/LevelUnloadEvent.php @@ -28,4 +28,6 @@ use pocketmine\event\Cancellable; */ class LevelUnloadEvent extends LevelEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; } \ No newline at end of file diff --git a/src/pocketmine/event/level/SpawnChangeEvent.php b/src/pocketmine/event/level/SpawnChangeEvent.php index cc0e82e90..6d4855597 100644 --- a/src/pocketmine/event/level/SpawnChangeEvent.php +++ b/src/pocketmine/event/level/SpawnChangeEvent.php @@ -30,6 +30,8 @@ use pocketmine\level\Position; */ class SpawnChangeEvent extends LevelEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Position */ private $previousSpawn; diff --git a/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php b/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php index 671f391fc..c2d62d787 100644 --- a/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php +++ b/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerAchievementAwardedEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $achievement; diff --git a/src/pocketmine/event/player/PlayerAnimationEvent.php b/src/pocketmine/event/player/PlayerAnimationEvent.php index 5c979cf60..8cd78e6b2 100644 --- a/src/pocketmine/event/player/PlayerAnimationEvent.php +++ b/src/pocketmine/event/player/PlayerAnimationEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerAnimationEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; const ARM_SWING = 1; diff --git a/src/pocketmine/event/player/PlayerBedEnterEvent.php b/src/pocketmine/event/player/PlayerBedEnterEvent.php index 4faf04248..7c547994e 100644 --- a/src/pocketmine/event/player/PlayerBedEnterEvent.php +++ b/src/pocketmine/event/player/PlayerBedEnterEvent.php @@ -27,6 +27,8 @@ use pocketmine\Player; class PlayerBedEnterEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $bed; diff --git a/src/pocketmine/event/player/PlayerBedLeaveEvent.php b/src/pocketmine/event/player/PlayerBedLeaveEvent.php index 80d8cb124..ed375ddbb 100644 --- a/src/pocketmine/event/player/PlayerBedLeaveEvent.php +++ b/src/pocketmine/event/player/PlayerBedLeaveEvent.php @@ -26,6 +26,8 @@ use pocketmine\Player; class PlayerBedLeaveEvent extends PlayerEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $bed; diff --git a/src/pocketmine/event/player/PlayerBucketEmptyEvent.php b/src/pocketmine/event/player/PlayerBucketEmptyEvent.php index 3e0955c53..cdacebdd7 100644 --- a/src/pocketmine/event/player/PlayerBucketEmptyEvent.php +++ b/src/pocketmine/event/player/PlayerBucketEmptyEvent.php @@ -27,6 +27,8 @@ use pocketmine\Player; class PlayerBucketEmptyEvent extends PlayerBucketEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; public function __construct(Player $who, Block $blockClicked, $blockFace, Item $bucket, Item $itemInHand){ parent::__construct($who, $blockClicked, $blockFace, $bucket, $itemInHand); diff --git a/src/pocketmine/event/player/PlayerBucketFillEvent.php b/src/pocketmine/event/player/PlayerBucketFillEvent.php index af19c7bf6..7324fb780 100644 --- a/src/pocketmine/event/player/PlayerBucketFillEvent.php +++ b/src/pocketmine/event/player/PlayerBucketFillEvent.php @@ -27,6 +27,8 @@ use pocketmine\Player; class PlayerBucketFillEvent extends PlayerBucketEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; public function __construct(Player $who, Block $blockClicked, $blockFace, Item $bucket, Item $itemInHand){ parent::__construct($who, $blockClicked, $blockFace, $bucket, $itemInHand); diff --git a/src/pocketmine/event/player/PlayerChatEvent.php b/src/pocketmine/event/player/PlayerChatEvent.php index 95650070b..edc54921a 100644 --- a/src/pocketmine/event/player/PlayerChatEvent.php +++ b/src/pocketmine/event/player/PlayerChatEvent.php @@ -30,6 +30,8 @@ use pocketmine\Server; */ class PlayerChatEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $message; diff --git a/src/pocketmine/event/player/PlayerCommandPreprocessEvent.php b/src/pocketmine/event/player/PlayerCommandPreprocessEvent.php index bd54b7797..a2a9296a8 100644 --- a/src/pocketmine/event/player/PlayerCommandPreprocessEvent.php +++ b/src/pocketmine/event/player/PlayerCommandPreprocessEvent.php @@ -34,6 +34,8 @@ use pocketmine\Player; */ class PlayerCommandPreprocessEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $message; diff --git a/src/pocketmine/event/player/PlayerDeathEvent.php b/src/pocketmine/event/player/PlayerDeathEvent.php index a4b98c82d..33623affc 100644 --- a/src/pocketmine/event/player/PlayerDeathEvent.php +++ b/src/pocketmine/event/player/PlayerDeathEvent.php @@ -27,6 +27,8 @@ use pocketmine\Player; class PlayerDeathEvent extends EntityDeathEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $deathMessage; private $keepInventory = false; diff --git a/src/pocketmine/event/player/PlayerDropItemEvent.php b/src/pocketmine/event/player/PlayerDropItemEvent.php index 0f5cbdd73..b389db8fe 100644 --- a/src/pocketmine/event/player/PlayerDropItemEvent.php +++ b/src/pocketmine/event/player/PlayerDropItemEvent.php @@ -30,6 +30,8 @@ use pocketmine\Player; */ class PlayerDropItemEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Item */ private $drop; diff --git a/src/pocketmine/event/player/PlayerGameModeChangeEvent.php b/src/pocketmine/event/player/PlayerGameModeChangeEvent.php index dedce2fc9..6da670adc 100644 --- a/src/pocketmine/event/player/PlayerGameModeChangeEvent.php +++ b/src/pocketmine/event/player/PlayerGameModeChangeEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerGameModeChangeEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var int */ protected $gamemode; diff --git a/src/pocketmine/event/player/PlayerInteractEvent.php b/src/pocketmine/event/player/PlayerInteractEvent.php index 20a7c2f6a..b5b3f9bfe 100644 --- a/src/pocketmine/event/player/PlayerInteractEvent.php +++ b/src/pocketmine/event/player/PlayerInteractEvent.php @@ -31,6 +31,8 @@ use pocketmine\Player; */ class PlayerInteractEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @var \pocketmine\block\Block; diff --git a/src/pocketmine/event/player/PlayerItemConsumeEvent.php b/src/pocketmine/event/player/PlayerItemConsumeEvent.php index b306230f5..96e7462cc 100644 --- a/src/pocketmine/event/player/PlayerItemConsumeEvent.php +++ b/src/pocketmine/event/player/PlayerItemConsumeEvent.php @@ -30,6 +30,8 @@ use pocketmine\Player; */ class PlayerItemConsumeEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Item */ private $item; diff --git a/src/pocketmine/event/player/PlayerItemHeldEvent.php b/src/pocketmine/event/player/PlayerItemHeldEvent.php index fb359ecb5..0f7008792 100644 --- a/src/pocketmine/event/player/PlayerItemHeldEvent.php +++ b/src/pocketmine/event/player/PlayerItemHeldEvent.php @@ -28,6 +28,8 @@ use pocketmine\Player; class PlayerItemHeldEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $item; private $slot; diff --git a/src/pocketmine/event/player/PlayerJoinEvent.php b/src/pocketmine/event/player/PlayerJoinEvent.php index c684f442c..86169590a 100644 --- a/src/pocketmine/event/player/PlayerJoinEvent.php +++ b/src/pocketmine/event/player/PlayerJoinEvent.php @@ -28,6 +28,8 @@ use pocketmine\Player; */ class PlayerJoinEvent extends PlayerEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $joinMessage; diff --git a/src/pocketmine/event/player/PlayerKickEvent.php b/src/pocketmine/event/player/PlayerKickEvent.php index 27f612fd3..c0eb9dae9 100644 --- a/src/pocketmine/event/player/PlayerKickEvent.php +++ b/src/pocketmine/event/player/PlayerKickEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerKickEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $quitMessage; diff --git a/src/pocketmine/event/player/PlayerLoginEvent.php b/src/pocketmine/event/player/PlayerLoginEvent.php index 6d05df41a..c59ebc7d4 100644 --- a/src/pocketmine/event/player/PlayerLoginEvent.php +++ b/src/pocketmine/event/player/PlayerLoginEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerLoginEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $kickMessage; diff --git a/src/pocketmine/event/player/PlayerMoveEvent.php b/src/pocketmine/event/player/PlayerMoveEvent.php index bf29dd1c0..b8f8da7f9 100644 --- a/src/pocketmine/event/player/PlayerMoveEvent.php +++ b/src/pocketmine/event/player/PlayerMoveEvent.php @@ -27,6 +27,8 @@ use pocketmine\Player; class PlayerMoveEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $from; private $to; diff --git a/src/pocketmine/event/player/PlayerPreLoginEvent.php b/src/pocketmine/event/player/PlayerPreLoginEvent.php index b3df86a1f..c4c0072fe 100644 --- a/src/pocketmine/event/player/PlayerPreLoginEvent.php +++ b/src/pocketmine/event/player/PlayerPreLoginEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerPreLoginEvent extends PlayerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $kickMessage; diff --git a/src/pocketmine/event/player/PlayerQuitEvent.php b/src/pocketmine/event/player/PlayerQuitEvent.php index 713426960..a5fb1c814 100644 --- a/src/pocketmine/event/player/PlayerQuitEvent.php +++ b/src/pocketmine/event/player/PlayerQuitEvent.php @@ -28,6 +28,8 @@ use pocketmine\Player; */ class PlayerQuitEvent extends PlayerEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $quitMessage; diff --git a/src/pocketmine/event/player/PlayerRespawnEvent.php b/src/pocketmine/event/player/PlayerRespawnEvent.php index 64cc2b6b0..25146804b 100644 --- a/src/pocketmine/event/player/PlayerRespawnEvent.php +++ b/src/pocketmine/event/player/PlayerRespawnEvent.php @@ -29,6 +29,8 @@ use pocketmine\Player; */ class PlayerRespawnEvent extends PlayerEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var Position */ protected $position; diff --git a/src/pocketmine/event/plugin/PluginDisableEvent.php b/src/pocketmine/event/plugin/PluginDisableEvent.php index 6fcb68295..1d85e9093 100644 --- a/src/pocketmine/event/plugin/PluginDisableEvent.php +++ b/src/pocketmine/event/plugin/PluginDisableEvent.php @@ -27,6 +27,8 @@ use pocketmine\plugin\Plugin; class PluginDisableEvent extends PluginEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param Plugin $plugin diff --git a/src/pocketmine/event/plugin/PluginEnableEvent.php b/src/pocketmine/event/plugin/PluginEnableEvent.php index 2e5bec73d..94fe2207b 100644 --- a/src/pocketmine/event/plugin/PluginEnableEvent.php +++ b/src/pocketmine/event/plugin/PluginEnableEvent.php @@ -27,6 +27,8 @@ use pocketmine\plugin\Plugin; class PluginEnableEvent extends PluginEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param Plugin $plugin diff --git a/src/pocketmine/event/server/DataPacketReceiveEvent.php b/src/pocketmine/event/server/DataPacketReceiveEvent.php index b8bc6392a..8bba901c2 100644 --- a/src/pocketmine/event/server/DataPacketReceiveEvent.php +++ b/src/pocketmine/event/server/DataPacketReceiveEvent.php @@ -28,6 +28,8 @@ use pocketmine\Player; class DataPacketReceiveEvent extends ServerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $packet; private $player; diff --git a/src/pocketmine/event/server/DataPacketSendEvent.php b/src/pocketmine/event/server/DataPacketSendEvent.php index eefaa0ee7..88afb2d45 100644 --- a/src/pocketmine/event/server/DataPacketSendEvent.php +++ b/src/pocketmine/event/server/DataPacketSendEvent.php @@ -28,6 +28,8 @@ use pocketmine\Player; class DataPacketSendEvent extends ServerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; private $packet; private $player; diff --git a/src/pocketmine/event/server/QueryRegenerateEvent.php b/src/pocketmine/event/server/QueryRegenerateEvent.php index 2d3fe6ea2..810b8ba61 100644 --- a/src/pocketmine/event/server/QueryRegenerateEvent.php +++ b/src/pocketmine/event/server/QueryRegenerateEvent.php @@ -27,6 +27,8 @@ use pocketmine\utils\Binary; class QueryRegenerateEvent extends ServerEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; const GAME_ID = "MINECRAFTPE"; diff --git a/src/pocketmine/event/server/RemoteServerCommandEvent.php b/src/pocketmine/event/server/RemoteServerCommandEvent.php index 412c992c8..a680b1c34 100644 --- a/src/pocketmine/event/server/RemoteServerCommandEvent.php +++ b/src/pocketmine/event/server/RemoteServerCommandEvent.php @@ -28,6 +28,8 @@ use pocketmine\command\CommandSender; */ class RemoteServerCommandEvent extends ServerCommandEvent{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** * @param CommandSender $sender diff --git a/src/pocketmine/event/server/ServerCommandEvent.php b/src/pocketmine/event/server/ServerCommandEvent.php index 6a82e67d7..d5d350b53 100644 --- a/src/pocketmine/event/server/ServerCommandEvent.php +++ b/src/pocketmine/event/server/ServerCommandEvent.php @@ -34,6 +34,8 @@ use pocketmine\event\Cancellable; */ class ServerCommandEvent extends ServerEvent implements Cancellable{ public static $handlerList = null; + public static $eventPool = []; + public static $nextEvent = 0; /** @var string */ protected $command; diff --git a/src/pocketmine/inventory/BaseInventory.php b/src/pocketmine/inventory/BaseInventory.php index fce466242..2f7608ac3 100644 --- a/src/pocketmine/inventory/BaseInventory.php +++ b/src/pocketmine/inventory/BaseInventory.php @@ -131,7 +131,7 @@ abstract class BaseInventory implements Inventory{ $holder = $this->getHolder(); if($holder instanceof Entity){ - Server::getInstance()->getPluginManager()->callEvent($ev = new EntityInventoryChangeEvent($holder, $this->getItem($index), $item, $index)); + Server::getInstance()->getPluginManager()->callEvent($ev = EntityInventoryChangeEvent::createEvent($holder, $this->getItem($index), $item, $index)); if($ev->isCancelled()){ $this->sendContents($this->getViewers()); @@ -298,7 +298,7 @@ abstract class BaseInventory implements Inventory{ $old = $this->slots[$index]; $holder = $this->getHolder(); if($holder instanceof Entity){ - Server::getInstance()->getPluginManager()->callEvent($ev = new EntityInventoryChangeEvent($holder, $old, $item, $index)); + Server::getInstance()->getPluginManager()->callEvent($ev = EntityInventoryChangeEvent::createEvent($holder, $old, $item, $index)); if($ev->isCancelled()){ $this->sendContents($this->getViewers()); @@ -350,7 +350,7 @@ abstract class BaseInventory implements Inventory{ } public function open(Player $who){ - $who->getServer()->getPluginManager()->callEvent($ev = new InventoryOpenEvent($this, $who)); + $who->getServer()->getPluginManager()->callEvent($ev = InventoryOpenEvent::createEvent($this, $who)); if($ev->isCancelled()){ return false; } diff --git a/src/pocketmine/inventory/CraftingTransactionGroup.php b/src/pocketmine/inventory/CraftingTransactionGroup.php index 74d23da20..eb20ca930 100644 --- a/src/pocketmine/inventory/CraftingTransactionGroup.php +++ b/src/pocketmine/inventory/CraftingTransactionGroup.php @@ -92,7 +92,7 @@ class CraftingTransactionGroup extends SimpleTransactionGroup{ return false; } - Server::getInstance()->getPluginManager()->callEvent($ev = new CraftItemEvent($this, $this->getMatchingRecipe())); + Server::getInstance()->getPluginManager()->callEvent($ev = CraftItemEvent::createEvent($this, $this->getMatchingRecipe())); if($ev->isCancelled()){ foreach($this->inventories as $inventory){ $inventory->sendContents($inventory->getViewers()); diff --git a/src/pocketmine/inventory/PlayerInventory.php b/src/pocketmine/inventory/PlayerInventory.php index 05e3eb894..43837f396 100644 --- a/src/pocketmine/inventory/PlayerInventory.php +++ b/src/pocketmine/inventory/PlayerInventory.php @@ -103,7 +103,7 @@ class PlayerInventory extends BaseInventory{ if($slot >= -1 and $slot < $this->getSize()){ $item = $this->getItem($slot); if($this->getHolder() instanceof Player){ - Server::getInstance()->getPluginManager()->callEvent($ev = new PlayerItemHeldEvent($this->getHolder(), $item, $slot, $this->itemInHandIndex)); + Server::getInstance()->getPluginManager()->callEvent($ev = PlayerItemHeldEvent::createEvent($this->getHolder(), $item, $slot, $this->itemInHandIndex)); if($ev->isCancelled()){ $this->sendHeldItem($this->getHolder()); @@ -203,7 +203,7 @@ class PlayerInventory extends BaseInventory{ } if($index >= $this->getSize()){ //Armor change - Server::getInstance()->getPluginManager()->callEvent($ev = new EntityArmorChangeEvent($this->getHolder(), $this->getItem($index), $item, $index)); + Server::getInstance()->getPluginManager()->callEvent($ev = EntityArmorChangeEvent::createEvent($this->getHolder(), $this->getItem($index), $item, $index)); if($ev->isCancelled() and $this->getHolder() instanceof Player){ $this->sendArmorContents($this->getViewers()); $this->sendContents($this->getViewers()); @@ -229,7 +229,7 @@ class PlayerInventory extends BaseInventory{ $item = Item::get(Item::AIR, null, 0); $old = $this->slots[$index]; if($index >= $this->getSize() and $index < $this->size){ //Armor change - Server::getInstance()->getPluginManager()->callEvent($ev = new EntityArmorChangeEvent($this->getHolder(), $old, $item, $index)); + Server::getInstance()->getPluginManager()->callEvent($ev = EntityArmorChangeEvent::createEvent($this->getHolder(), $old, $item, $index)); if($ev->isCancelled()){ $this->sendArmorContents($this->getViewers()); $this->sendContents($this->getViewers()); diff --git a/src/pocketmine/inventory/SimpleTransactionGroup.php b/src/pocketmine/inventory/SimpleTransactionGroup.php index 9f37310a1..6b0da023c 100644 --- a/src/pocketmine/inventory/SimpleTransactionGroup.php +++ b/src/pocketmine/inventory/SimpleTransactionGroup.php @@ -138,7 +138,7 @@ class SimpleTransactionGroup implements TransactionGroup{ return false; } - Server::getInstance()->getPluginManager()->callEvent($ev = new InventoryTransactionEvent($this)); + Server::getInstance()->getPluginManager()->callEvent($ev = InventoryTransactionEvent::createEvent($this)); if($ev->isCancelled()){ foreach($this->inventories as $inventory){ $inventory->sendContents($inventory->getViewers()); diff --git a/src/pocketmine/item/Bucket.php b/src/pocketmine/item/Bucket.php index 7b528a076..0cf8c9eaf 100644 --- a/src/pocketmine/item/Bucket.php +++ b/src/pocketmine/item/Bucket.php @@ -43,7 +43,7 @@ class Bucket extends Item{ if($target instanceof Liquid and $target->getDamage() === 0){ $result = clone $this; $result->setDamage($target->getID()); - $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $block, $face, $this, $result)); + $player->getServer()->getPluginManager()->callEvent($ev = PlayerBucketFillEvent::createEvent($player, $block, $face, $this, $result)); if(!$ev->isCancelled()){ $player->getLevel()->setBlock($target, new Air(), true, true); if($player->isSurvival()){ @@ -57,7 +57,7 @@ class Bucket extends Item{ }elseif($targetBlock instanceof Liquid){ $result = clone $this; $result->setDamage(0); - $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $block, $face, $this, $result)); + $player->getServer()->getPluginManager()->callEvent($ev = PlayerBucketFillEvent::createEvent($player, $block, $face, $this, $result)); if(!$ev->isCancelled()){ $player->getLevel()->setBlock($block, $targetBlock, true, true); if($player->isSurvival()){ diff --git a/src/pocketmine/level/Explosion.php b/src/pocketmine/level/Explosion.php index b4eeaf0e0..aa2920c82 100644 --- a/src/pocketmine/level/Explosion.php +++ b/src/pocketmine/level/Explosion.php @@ -135,7 +135,7 @@ class Explosion{ $yield = (1 / $this->size) * 100; if($this->what instanceof Entity){ - $this->level->getServer()->getPluginManager()->callEvent($ev = new EntityExplodeEvent($this->what, $this->source, $this->affectedBlocks, $yield)); + $this->level->getServer()->getPluginManager()->callEvent($ev = EntityExplodeEvent::createEvent($this->what, $this->source, $this->affectedBlocks, $yield)); if($ev->isCancelled()){ return false; }else{ @@ -166,11 +166,11 @@ class Explosion{ $damage = (int) ((($impact * $impact + $impact) / 2) * 8 * $explosionSize + 1); if($this->what instanceof Entity){ - $ev = new EntityDamageByEntityEvent($this->what, $entity, EntityDamageEvent::CAUSE_ENTITY_EXPLOSION, $damage); + $ev = EntityDamageByEntityEvent::createEvent($this->what, $entity, EntityDamageEvent::CAUSE_ENTITY_EXPLOSION, $damage); }elseif($this->what instanceof Block){ - $ev = new EntityDamageByBlockEvent($this->what, $entity, EntityDamageEvent::CAUSE_BLOCK_EXPLOSION, $damage); + $ev = EntityDamageByBlockEvent::createEvent($this->what, $entity, EntityDamageEvent::CAUSE_BLOCK_EXPLOSION, $damage); }else{ - $ev = new EntityDamageEvent($entity, EntityDamageEvent::CAUSE_BLOCK_EXPLOSION, $damage); + $ev = EntityDamageEvent::createEvent($entity, EntityDamageEvent::CAUSE_BLOCK_EXPLOSION, $damage); } $this->level->getServer()->getPluginManager()->callEvent($ev); diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 908465c38..d88dea416 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -176,6 +176,8 @@ class Level implements ChunkManager, Metadatable{ private $useSections; private $blockOrder; + private $temporalPosition; + protected $chunkTickRadius; protected $chunkTickList = []; protected $chunksPerTick; @@ -267,6 +269,7 @@ class Level implements ChunkManager, Metadatable{ $this->clearChunksOnTick = (bool) $this->server->getProperty("chunk-ticking.clear-tick-list", false); $this->timings = new LevelTimings($this); + $this->temporalPosition = new Position(0, 0, 0, $this); } public function initLevel(){ @@ -318,6 +321,7 @@ class Level implements ChunkManager, Metadatable{ $this->provider = null; $this->blockMetadata = null; $this->blockCache = []; + $this->temporalPosition = null; } /** @@ -343,7 +347,7 @@ class Level implements ChunkManager, Metadatable{ */ public function unload($force = false){ - $ev = new LevelUnloadEvent($this); + $ev = LevelUnloadEvent::createEvent($this); if($this === $this->server->getDefaultLevel() and $force !== true){ $ev->setCancelled(true); @@ -675,7 +679,7 @@ class Level implements ChunkManager, Metadatable{ return false; } - $this->server->getPluginManager()->callEvent(new LevelSaveEvent($this)); + $this->server->getPluginManager()->callEvent(LevelSaveEvent::createEvent($this)); $this->provider->setTime((int) $this->time); $this->saveChunks(); @@ -707,7 +711,7 @@ class Level implements ChunkManager, Metadatable{ } for($side = 0; $side <= 5; ++$side){ - $this->server->getPluginManager()->callEvent($ev = new BlockUpdateEvent($block->getSide($side))); + $this->server->getPluginManager()->callEvent($ev = BlockUpdateEvent::createEvent($block->getSide($side))); if(!$ev->isCancelled()){ $ev->getBlock()->onUpdate(self::BLOCK_UPDATE_NORMAL); } @@ -910,7 +914,7 @@ class Level implements ChunkManager, Metadatable{ return $this->blockCache[$index] = $air; } - return $this->blockCache[$index] = Block::get($blockId, $meta, $pos instanceof Position ? $pos : Position::createPosition($pos->x, $pos->y, $pos->z, $this)); + return $this->blockCache[$index] = Block::get($blockId, $meta, $this->temporalPosition->setComponents($pos->x, $pos->y, $pos->z)); } /** @@ -940,7 +944,7 @@ class Level implements ChunkManager, Metadatable{ if($this->getChunk($pos->x >> 4, $pos->z >> 4, true)->setBlock($pos->x & 0x0f, $pos->y & 0x7f, $pos->z & 0x0f, $block->getID(), $block->getDamage())){ if(!($pos instanceof Position)){ - $pos = Position::createPosition($pos->x, $pos->y, $pos->z, $this); + $pos = $this->temporalPosition->setComponents($pos->x, $pos->y, $pos->z); } $block->position($pos); $index = Level::chunkHash($pos->x >> 4, $pos->z >> 4); @@ -959,7 +963,7 @@ class Level implements ChunkManager, Metadatable{ Server::broadcastPacket($this->getUsingChunk($pos->x >> 4, $pos->z >> 4), $pk); /*}else{ if(!($pos instanceof Position)){ - $pos = new Position($pos->x, $pos->y, $pos->z, $this); + $pos = $this->temporalPosition->setComponents($pos->x, $pos->y, $pos->z); } $block->position($pos); if(!isset($this->changedBlocks[$index])){ @@ -976,7 +980,7 @@ class Level implements ChunkManager, Metadatable{ if($update === true){ $this->updateAround($pos); - $this->server->getPluginManager()->callEvent($ev = new BlockUpdateEvent($block)); + $this->server->getPluginManager()->callEvent($ev = BlockUpdateEvent::createEvent($block)); if(!$ev->isCancelled()){ $ev->getBlock()->onUpdate(self::BLOCK_UPDATE_NORMAL); foreach($this->getNearbyEntities(AxisAlignedBB::getBoundingBoxFromPool($block->x - 1, $block->y - 1, $block->z - 1, $block->x + 2, $block->y + 2, $block->z + 2)) as $entity){ @@ -1044,7 +1048,7 @@ class Level implements ChunkManager, Metadatable{ } if($player instanceof Player){ - $ev = new BlockBreakEvent($player, $target, $item, ($player->getGamemode() & 0x01) === 1 ? true : false); + $ev = BlockBreakEvent::createEvent($player, $target, $item, ($player->getGamemode() & 0x01) === 1 ? true : false); $lastTime = $player->lastBreak - 0.1; //TODO: replace with true lag if(($player->getGamemode() & 0x01) > 0){ @@ -1145,7 +1149,7 @@ class Level implements ChunkManager, Metadatable{ } if($player instanceof Player){ - $ev = new PlayerInteractEvent($player, $item, $target, $face); + $ev = PlayerInteractEvent::createEvent($player, $item, $target, $face); if(!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1){ $t = new Vector2($target->x, $target->z); $s = new Vector2($this->getSpawnLocation()->x, $this->getSpawnLocation()->z); @@ -1210,7 +1214,7 @@ class Level implements ChunkManager, Metadatable{ if($player instanceof Player){ - $ev = new BlockPlaceEvent($player, $hand, $block, $target, $item); + $ev = BlockPlaceEvent::createEvent($player, $hand, $block, $target, $item); if(!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1){ $t = new Vector2($target->x, $target->z); $s = new Vector2($this->getSpawnLocation()->x, $this->getSpawnLocation()->z); @@ -1585,7 +1589,7 @@ class Level implements ChunkManager, Metadatable{ $this->setChunk($x, $z, $chunk); $chunk = $this->getChunk($x, $z); if($chunk instanceof FullChunk and (!($oldChunk instanceof FullChunk) or $oldChunk->isPopulated() === false) and $chunk->isPopulated()){ - $this->server->getPluginManager()->callEvent(new ChunkPopulateEvent($chunk)); + $this->server->getPluginManager()->callEvent(ChunkPopulateEvent::createEvent($chunk)); } } @@ -1669,7 +1673,7 @@ class Level implements ChunkManager, Metadatable{ public function setSpawnLocation(Vector3 $pos){ $previousSpawn = $this->getSpawnLocation(); $this->provider->setSpawn($pos); - $this->server->getPluginManager()->callEvent(new SpawnChangeEvent($this, $previousSpawn)); + $this->server->getPluginManager()->callEvent(SpawnChangeEvent::createEvent($this, $previousSpawn)); } public function requestChunk($x, $z, Player $player, $order = LevelProvider::ORDER_ZXY){ @@ -1832,7 +1836,7 @@ class Level implements ChunkManager, Metadatable{ } } - $this->server->getPluginManager()->callEvent(new ChunkLoadEvent($chunk, !$chunk->isGenerated())); + $this->server->getPluginManager()->callEvent(ChunkLoadEvent::createEvent($chunk, !$chunk->isGenerated())); return true; } @@ -1867,7 +1871,7 @@ class Level implements ChunkManager, Metadatable{ $chunk = $this->getChunk($x, $z); if($chunk instanceof FullChunk){ - $this->server->getPluginManager()->callEvent($ev = new ChunkUnloadEvent($chunk)); + $this->server->getPluginManager()->callEvent($ev = ChunkUnloadEvent::createEvent($chunk)); if($ev->isCancelled()){ return false; } diff --git a/src/pocketmine/level/Position.php b/src/pocketmine/level/Position.php index a3c12460f..8b04aa4dc 100644 --- a/src/pocketmine/level/Position.php +++ b/src/pocketmine/level/Position.php @@ -168,4 +168,18 @@ class Position extends Vector3{ return "Position(level=" . ($this->isValid() ? $this->getLevel()->getName() : "null") . ",x=" . $this->x . ",y=" . $this->y . ",z=" . $this->z . ")"; } + /** + * @param $x + * @param $y + * @param $z + * + * @return Position + */ + public function setComponents($x, $y, $z){ + $this->x = $x; + $this->y = $y; + $this->z = $z; + return $this; + } + } diff --git a/src/pocketmine/network/protocol/DataPacket.php b/src/pocketmine/network/protocol/DataPacket.php index 7d7a599e0..5aa928815 100644 --- a/src/pocketmine/network/protocol/DataPacket.php +++ b/src/pocketmine/network/protocol/DataPacket.php @@ -32,8 +32,7 @@ abstract class DataPacket extends \stdClass{ public static function getFromPool(){ if(static::$next >= count(static::$pool)){ - $pk = static::class; - static::$pool[] = new $pk; + static::$pool[] = new static; } return static::$pool[static::$next++]->clean(); } diff --git a/src/pocketmine/network/query/QueryHandler.php b/src/pocketmine/network/query/QueryHandler.php index 750f5e0ca..90074a7ca 100644 --- a/src/pocketmine/network/query/QueryHandler.php +++ b/src/pocketmine/network/query/QueryHandler.php @@ -58,7 +58,7 @@ class QueryHandler{ } public function regenerateInfo(){ - $this->server->getPluginManager()->callEvent($ev = new QueryRegenerateEvent($this->server, 5)); + $this->server->getPluginManager()->callEvent($ev = QueryRegenerateEvent::createEvent($this->server, 5)); $this->longData = $ev->getLongQuery(); $this->shortData = $ev->getShortQuery(); $this->timeout = microtime(true) + $ev->getTimeout(); diff --git a/src/pocketmine/network/rcon/RCON.php b/src/pocketmine/network/rcon/RCON.php index fa60f7837..6218fb209 100644 --- a/src/pocketmine/network/rcon/RCON.php +++ b/src/pocketmine/network/rcon/RCON.php @@ -94,7 +94,7 @@ class RCON{ $response = new RemoteConsoleCommandSender(); $command = $this->workers[$n]->cmd; - $this->server->getPluginManager()->callEvent($ev = new RemoteServerCommandEvent($response, $command)); + $this->server->getPluginManager()->callEvent($ev = RemoteServerCommandEvent::createEvent($response, $command)); if(!$ev->isCancelled()){ $this->server->dispatchCommand($ev->getSender(), $ev->getCommand()); diff --git a/src/pocketmine/plugin/PharPluginLoader.php b/src/pocketmine/plugin/PharPluginLoader.php index 65efa2d8c..abfda8c91 100644 --- a/src/pocketmine/plugin/PharPluginLoader.php +++ b/src/pocketmine/plugin/PharPluginLoader.php @@ -121,7 +121,7 @@ class PharPluginLoader implements PluginLoader{ $plugin->setEnabled(true); - $this->server->getPluginManager()->callEvent(new PluginEnableEvent($plugin)); + $this->server->getPluginManager()->callEvent(PluginEnableEvent::createEvent($plugin)); } } @@ -132,7 +132,7 @@ class PharPluginLoader implements PluginLoader{ if($plugin instanceof PluginBase and $plugin->isEnabled()){ $this->server->getLogger()->info("Disabling " . $plugin->getDescription()->getFullName()); - $this->server->getPluginManager()->callEvent(new PluginDisableEvent($plugin)); + $this->server->getPluginManager()->callEvent(PluginDisableEvent::createEvent($plugin)); $plugin->setEnabled(false); } diff --git a/src/pocketmine/tile/Furnace.php b/src/pocketmine/tile/Furnace.php index 2f722f500..fc364747d 100644 --- a/src/pocketmine/tile/Furnace.php +++ b/src/pocketmine/tile/Furnace.php @@ -169,7 +169,7 @@ class Furnace extends Tile implements InventoryHolder, Container{ } protected function checkFuel(Item $fuel){ - $this->server->getPluginManager()->callEvent($ev = new FurnaceBurnEvent($this, $fuel, $fuel->getFuelTime())); + $this->server->getPluginManager()->callEvent($ev = FurnaceBurnEvent::createEvent($this, $fuel, $fuel->getFuelTime())); if($ev->isCancelled()){ return; @@ -219,7 +219,7 @@ class Furnace extends Tile implements InventoryHolder, Container{ if($this->namedtag["CookTime"] >= 200){ //10 seconds $product = Item::get($smelt->getResult()->getID(), $smelt->getResult()->getDamage(), $product->getCount() + 1); - $this->server->getPluginManager()->callEvent($ev = new FurnaceSmeltEvent($this, $raw, $product)); + $this->server->getPluginManager()->callEvent($ev = FurnaceSmeltEvent::createEvent($this, $raw, $product)); if(!$ev->isCancelled()){ $this->inventory->setResult($ev->getResult()); diff --git a/src/spl b/src/spl index 1095acf14..dd275a8f9 160000 --- a/src/spl +++ b/src/spl @@ -1 +1 @@ -Subproject commit 1095acf146aaf8c9dffeea4d04999322fd5627d9 +Subproject commit dd275a8f9909cd1e52079173e4447c7a88d7e22e