From ac1e70cd96aa654731d61e8893597a184d49ca07 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 1 Dec 2024 16:50:26 +0000 Subject: [PATCH] Added permission for emoting --- src/permission/DefaultPermissionNames.php | 1 + src/permission/DefaultPermissions.php | 1 + src/player/Player.php | 3 +++ 3 files changed, 5 insertions(+) diff --git a/src/permission/DefaultPermissionNames.php b/src/permission/DefaultPermissionNames.php index b3bf46a8cd..ba986a4896 100644 --- a/src/permission/DefaultPermissionNames.php +++ b/src/permission/DefaultPermissionNames.php @@ -91,6 +91,7 @@ final class DefaultPermissionNames{ public const GAME_BLOCK_MINE = "pocketmine.game.block.mine"; public const GAME_BLOCK_PLACE = "pocketmine.game.block.place"; public const GAME_CHAT = "pocketmine.game.chat"; + public const GAME_EMOTE = "pocketmine.game.emote"; public const GAME_ENTITY_ATTACK = "pocketmine.game.entity.attack"; public const GAME_ENTITY_INTERACT = "pocketmine.game.entity.interact"; public const GAME_FLIGHT = "pocketmine.game.flight"; diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index d370594d5b..36cba3b77d 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -116,6 +116,7 @@ abstract class DefaultPermissions{ self::registerPermission(new Permission(Names::COMMAND_XP_SELF, l10n::pocketmine_permission_command_xp_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::GAME_CHAT, "Allows the user to chat"), [$everyoneRoot]); + self::registerPermission(new Permission(Names::GAME_EMOTE, "Allows the user to emote"), [$everyoneRoot]); $survivalRoot = self::registerPermission(new Permission(Names::GROUP_GAMEMODE_SURVIVAL)); $creativeRoot = self::registerPermission(new Permission(Names::GROUP_GAMEMODE_CREATIVE)); diff --git a/src/player/Player.php b/src/player/Player.php index 4b09b06310..ae32515823 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -2067,6 +2067,9 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ if($currentTick - $this->lastEmoteTick > 5){ $this->lastEmoteTick = $currentTick; $event = new PlayerEmoteEvent($this, $emoteId); + if(!$this->hasPermission(DefaultPermissionNames::GAME_EMOTE)){ + $event->cancel(); + } $event->call(); if(!$event->isCancelled()){ $emoteId = $event->getEmoteId();