From a91cef37f63c73c6cb5023e02bb02e21e28e7e7f Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 1 Dec 2024 16:42:30 +0000 Subject: [PATCH] Move some gamemode checks to instabreak checks --- src/block/DragonEgg.php | 3 ++- src/block/Ice.php | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/block/DragonEgg.php b/src/block/DragonEgg.php index 10fec6394..7c32a5c11 100644 --- a/src/block/DragonEgg.php +++ b/src/block/DragonEgg.php @@ -29,6 +29,7 @@ use pocketmine\block\utils\SupportType; use pocketmine\event\block\BlockTeleportEvent; use pocketmine\item\Item; use pocketmine\math\Vector3; +use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\GameMode; use pocketmine\player\Player; use pocketmine\world\particle\DragonEggTeleportParticle; @@ -50,7 +51,7 @@ class DragonEgg extends Transparent implements Fallable{ } public function onAttack(Item $item, int $face, ?Player $player = null) : bool{ - if($player !== null && $player->getGamemode() !== GameMode::CREATIVE){ + if($player !== null && !$player->hasPermission(DefaultPermissionNames::GAME_BLOCK_DELETE)){ $this->teleport(); return true; } diff --git a/src/block/Ice.php b/src/block/Ice.php index ca0302f90..e3def5e0a 100644 --- a/src/block/Ice.php +++ b/src/block/Ice.php @@ -26,6 +26,7 @@ namespace pocketmine\block; use pocketmine\block\utils\BlockEventHelper; use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\Item; +use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; class Ice extends Transparent{ @@ -39,7 +40,8 @@ class Ice extends Transparent{ } public function onBreak(Item $item, ?Player $player = null, array &$returnedItems = []) : bool{ - if(($player === null || $player->isSurvival()) && !$item->hasEnchantment(VanillaEnchantments::SILK_TOUCH())){ + //TODO: we should probably pass instaBreak in here, since events can override it + if(($player === null || !$player->hasPermission(DefaultPermissionNames::GAME_BLOCK_DELETE)) && !$item->hasEnchantment(VanillaEnchantments::SILK_TOUCH())){ $this->position->getWorld()->setBlock($this->position, VanillaBlocks::WATER()); return true; }