diff --git a/src/pocketmine/block/DragonEgg.php b/src/pocketmine/block/DragonEgg.php index e9c44045f..e91f7eb58 100644 --- a/src/pocketmine/block/DragonEgg.php +++ b/src/pocketmine/block/DragonEgg.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\utils\Fallable; use pocketmine\block\utils\FallableTrait; +use pocketmine\event\block\BlockTeleportEvent; use pocketmine\item\Item; use pocketmine\item\TieredTool; use pocketmine\level\Level; @@ -76,8 +77,14 @@ class DragonEgg extends Transparent implements Fallable{ $this->z + mt_rand(-16, 16) ); if($block instanceof Air){ + $ev = new BlockTeleportEvent($this, $block); + $ev->call(); + if($ev->isCancelled()){ + break; + }else{ + $block = $ev->getTo(); + } $this->level->addParticle($this, new DragonEggTeleportParticle($this->x - $block->x, $this->y - $block->y, $this->z - $block->z)); - //TODO: add events $this->level->setBlock($this, BlockFactory::get(BlockLegacyIds::AIR)); $this->level->setBlock($block, $this); break; diff --git a/src/pocketmine/event/block/BlockTeleportEvent.php b/src/pocketmine/event/block/BlockTeleportEvent.php new file mode 100644 index 000000000..ac4d6ae51 --- /dev/null +++ b/src/pocketmine/event/block/BlockTeleportEvent.php @@ -0,0 +1,59 @@ +to = $to; + } + + /** + * @return Vector3 + */ + public function getTo() : Vector3{ + return $this->to; + } + + /** + * @param Vector3 $to + */ + public function setTo(Vector3 $to) : void{ + $this->to = $to; + } +}