From 169f7d296c62807f7bbc90289ac91f7804f84966 Mon Sep 17 00:00:00 2001 From: Muqsit Date: Mon, 25 Mar 2024 18:40:06 +0000 Subject: [PATCH] Implement PlayerPortalTeleportEvent::$block_position (position of the portal block) --- plugin.yml | 2 +- .../event/player/PlayerPortalTeleportEvent.php | 2 ++ src/muqsit/dimensionportals/player/PlayerInstance.php | 4 ++-- src/muqsit/dimensionportals/player/PlayerPortalInfo.php | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/plugin.yml b/plugin.yml index ee90904..c7765d0 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,4 +1,4 @@ name: DimensionPortals main: muqsit\dimensionportals\Loader api: 5.10.0 -version: 0.2.1 \ No newline at end of file +version: 0.2.2 \ No newline at end of file diff --git a/src/muqsit/dimensionportals/event/player/PlayerPortalTeleportEvent.php b/src/muqsit/dimensionportals/event/player/PlayerPortalTeleportEvent.php index e976608..94e67b4 100644 --- a/src/muqsit/dimensionportals/event/player/PlayerPortalTeleportEvent.php +++ b/src/muqsit/dimensionportals/event/player/PlayerPortalTeleportEvent.php @@ -10,6 +10,7 @@ use pocketmine\event\Cancellable; use pocketmine\event\CancellableTrait; use pocketmine\player\Player; +use pocketmine\world\Position; class PlayerPortalTeleportEvent extends DimensionPortalsEvent implements Cancellable{ use CancellableTrait; @@ -17,6 +18,7 @@ class PlayerPortalTeleportEvent extends DimensionPortalsEvent implements Cancell public function __construct( readonly public Player $player, readonly public PortalExoBlock $block, + readonly public Position $block_position, public Location $target ){} diff --git a/src/muqsit/dimensionportals/player/PlayerInstance.php b/src/muqsit/dimensionportals/player/PlayerInstance.php index 3289b40..4a5ed53 100644 --- a/src/muqsit/dimensionportals/player/PlayerInstance.php +++ b/src/muqsit/dimensionportals/player/PlayerInstance.php @@ -39,7 +39,7 @@ public function __construct(Player $player, Logger $logger){ public function onEnterPortal(PortalExoBlock $block, Position $position) : void{ ($ev = new PlayerEnterPortalEvent($this->player, $block, $position, $this->player->isCreative() ? 0 : $block->teleportation_duration))->call(); if(!$ev->isCancelled()){ - $this->in_portal = new PlayerPortalInfo($block, $ev->teleport_duration); + $this->in_portal = new PlayerPortalInfo($block, $position, $ev->teleport_duration); PlayerManager::scheduleTicking($this->player); } } @@ -91,7 +91,7 @@ private function teleport() : void{ $to = $this->in_portal->block->getTargetWorldInstance(); $world = (WorldManager::get($this->player->getWorld()) === $to ? WorldManager::getOverworld() : $to)->world; $target = Location::fromObject($world->getSpawnLocation(), $world, 0.0, 0.0); - ($ev = new PlayerPortalTeleportEvent($this->player, $this->in_portal->block, $target))->call(); + ($ev = new PlayerPortalTeleportEvent($this->player, $this->in_portal->block, $this->in_portal->block_position, $target))->call(); if(!$ev->isCancelled()){ $this->player->teleport($ev->target); } diff --git a/src/muqsit/dimensionportals/player/PlayerPortalInfo.php b/src/muqsit/dimensionportals/player/PlayerPortalInfo.php index 4ea6125..14bc04f 100644 --- a/src/muqsit/dimensionportals/player/PlayerPortalInfo.php +++ b/src/muqsit/dimensionportals/player/PlayerPortalInfo.php @@ -5,6 +5,7 @@ namespace muqsit\dimensionportals\player; use muqsit\dimensionportals\exoblock\PortalExoBlock; +use pocketmine\world\Position; final class PlayerPortalInfo{ @@ -12,6 +13,7 @@ final class PlayerPortalInfo{ public function __construct( readonly public PortalExoBlock $block, + readonly public Position $block_position, readonly public int $max_duration ){}