From 36ab34df294ce803e818cf5d35340d7dd6a8b7ba Mon Sep 17 00:00:00 2001 From: zSALLAZAR <59490940+zSALLAZAR@users.noreply.github.com> Date: Wed, 23 Nov 2022 13:57:26 +0100 Subject: [PATCH] Implement BlockDeathEvent (#5420) closes #4711 --- src/block/BaseCoral.php | 7 ++++++- src/block/CoralBlock.php | 7 ++++++- src/event/block/BlockDeathEvent.php | 32 +++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/event/block/BlockDeathEvent.php diff --git a/src/block/BaseCoral.php b/src/block/BaseCoral.php index f3bb9255d..0912a85ba 100644 --- a/src/block/BaseCoral.php +++ b/src/block/BaseCoral.php @@ -26,6 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\utils\SupportType; +use pocketmine\event\block\BlockDeathEvent; use pocketmine\item\Item; abstract class BaseCoral extends Transparent{ @@ -50,7 +51,11 @@ abstract class BaseCoral extends Transparent{ //TODO: check water inside the block itself (not supported on the API yet) if(!$hasWater){ - $world->setBlock($this->position, $this->setDead(true)); + $ev = new BlockDeathEvent($this, $this->setDead(true)); + $ev->call(); + if(!$ev->isCancelled()){ + $world->setBlock($this->position, $ev->getNewState()); + } } } } diff --git a/src/block/CoralBlock.php b/src/block/CoralBlock.php index e29591b3d..0718112eb 100644 --- a/src/block/CoralBlock.php +++ b/src/block/CoralBlock.php @@ -27,6 +27,7 @@ use pocketmine\block\utils\CoralType; use pocketmine\block\utils\CoralTypeTrait; use pocketmine\block\utils\InvalidBlockStateException; use pocketmine\data\bedrock\CoralTypeIdMap; +use pocketmine\event\block\BlockDeathEvent; use pocketmine\item\Item; use function mt_rand; @@ -77,7 +78,11 @@ final class CoralBlock extends Opaque{ } } if(!$hasWater){ - $world->setBlock($this->position, $this->setDead(true)); + $ev = new BlockDeathEvent($this, $this->setDead(true)); + $ev->call(); + if(!$ev->isCancelled()){ + $world->setBlock($this->position, $ev->getNewState()); + } } } } diff --git a/src/event/block/BlockDeathEvent.php b/src/event/block/BlockDeathEvent.php new file mode 100644 index 000000000..c07e3ad6e --- /dev/null +++ b/src/event/block/BlockDeathEvent.php @@ -0,0 +1,32 @@ +