Move some gamemode checks to instabreak checks

This commit is contained in:
Dylan K. Taylor 2024-12-01 16:42:30 +00:00
parent 26afa97cdc
commit a91cef37f6
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 5 additions and 2 deletions

View File

@ -29,6 +29,7 @@ use pocketmine\block\utils\SupportType;
use pocketmine\event\block\BlockTeleportEvent; use pocketmine\event\block\BlockTeleportEvent;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\math\Vector3; use pocketmine\math\Vector3;
use pocketmine\permission\DefaultPermissionNames;
use pocketmine\player\GameMode; use pocketmine\player\GameMode;
use pocketmine\player\Player; use pocketmine\player\Player;
use pocketmine\world\particle\DragonEggTeleportParticle; 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{ 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(); $this->teleport();
return true; return true;
} }

View File

@ -26,6 +26,7 @@ namespace pocketmine\block;
use pocketmine\block\utils\BlockEventHelper; use pocketmine\block\utils\BlockEventHelper;
use pocketmine\item\enchantment\VanillaEnchantments; use pocketmine\item\enchantment\VanillaEnchantments;
use pocketmine\item\Item; use pocketmine\item\Item;
use pocketmine\permission\DefaultPermissionNames;
use pocketmine\player\Player; use pocketmine\player\Player;
class Ice extends Transparent{ class Ice extends Transparent{
@ -39,7 +40,8 @@ class Ice extends Transparent{
} }
public function onBreak(Item $item, ?Player $player = null, array &$returnedItems = []) : bool{ 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()); $this->position->getWorld()->setBlock($this->position, VanillaBlocks::WATER());
return true; return true;
} }