Use permissions for more stuff

This commit is contained in:
Dylan K. Taylor 2024-12-01 15:34:00 +00:00
parent df069b0418
commit 74ee38ab99
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
4 changed files with 7 additions and 5 deletions

View File

@ -31,6 +31,7 @@ use pocketmine\nbt\tag\CompoundTag;
use pocketmine\network\mcpe\protocol\types\entity\EntityIds;
use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection;
use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties;
use pocketmine\permission\DefaultPermissionNames;
use pocketmine\player\Player;
use function max;
use function sqrt;
@ -192,7 +193,7 @@ class ExperienceOrb extends Entity{
if($currentTarget === null){
$newTarget = $this->getWorld()->getNearestEntity($this->location, self::MAX_TARGET_DISTANCE, Human::class);
if($newTarget instanceof Human && !($newTarget instanceof Player && $newTarget->isSpectator()) && $newTarget->getXpManager()->canAttractXpOrbs()){
if($newTarget instanceof Human && !($newTarget instanceof Player && !$newTarget->hasPermission(DefaultPermissionNames::GAME_ITEM_PICKUP)) && $newTarget->getXpManager()->canAttractXpOrbs()){
$currentTarget = $newTarget;
}
}

View File

@ -182,7 +182,7 @@ class Arrow extends Projectile{
if(($player->hasFiniteResources() && $playerInventory === null) || !$player->hasPermission(DefaultPermissionNames::GAME_ITEM_PICKUP)){
$ev->cancel();
}
if($this->pickupMode === self::PICKUP_NONE || ($this->pickupMode === self::PICKUP_CREATIVE && !$player->isCreative())){
if($this->pickupMode === self::PICKUP_NONE || ($this->pickupMode === self::PICKUP_CREATIVE && $player->hasFiniteResources())){
$ev->cancel();
}

View File

@ -29,6 +29,7 @@ use pocketmine\entity\projectile\Projectile;
use pocketmine\event\entity\EntityShootBowEvent;
use pocketmine\event\entity\ProjectileLaunchEvent;
use pocketmine\item\enchantment\VanillaEnchantments;
use pocketmine\permission\DefaultPermissionNames;
use pocketmine\player\Player;
use pocketmine\world\sound\BowShootSound;
use function intdiv;
@ -85,7 +86,7 @@ class Bow extends Tool implements Releasable{
}
$ev = new EntityShootBowEvent($player, $this, $entity, $baseForce * 3);
if($baseForce < 0.1 || $diff < 5 || $player->isSpectator()){
if($baseForce < 0.1 || $diff < 5 || !$player->hasPermission(DefaultPermissionNames::GAME_ITEM_USE)){
$ev->cancel();
}

View File

@ -1458,7 +1458,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
$this->fireTicks = 1;
}
if(!$this->isSpectator() && $this->isAlive()){
if($this->isAlive()){
Timings::$playerCheckNearEntities->startTiming();
$this->checkNearEntities();
Timings::$playerCheckNearEntities->stopTiming();
@ -1595,7 +1595,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
foreach($this->inventory->addItem(...$extraReturnedItems) as $drop){
//TODO: we can't generate a transaction for this since the items aren't coming from an inventory :(
$ev = new PlayerDropItemEvent($this, $drop);
if($this->isSpectator()){
if(!$this->hasPermission(DefaultPermissionNames::GAME_ITEM_DROP)){
$ev->cancel();
}
$ev->call();