From 5e3b3a0700956a8c4094696789c862c1d7cb023d Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Jul 2022 17:51:02 +0100 Subject: [PATCH] Fix assert spam on debug clients --- src/entity/Human.php | 13 ++++++++++++- src/world/particle/FloatingTextParticle.php | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/entity/Human.php b/src/entity/Human.php index 683e0c7d6..ae323f0f8 100644 --- a/src/entity/Human.php +++ b/src/entity/Human.php @@ -50,6 +50,7 @@ use pocketmine\network\mcpe\convert\TypeConverter; use pocketmine\network\mcpe\protocol\AddPlayerPacket; use pocketmine\network\mcpe\protocol\PlayerListPacket; use pocketmine\network\mcpe\protocol\PlayerSkinPacket; +use pocketmine\network\mcpe\protocol\types\command\CommandPermissions; use pocketmine\network\mcpe\protocol\types\DeviceOS; use pocketmine\network\mcpe\protocol\types\entity\EntityIds; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties; @@ -57,12 +58,15 @@ use pocketmine\network\mcpe\protocol\types\entity\StringMetadataProperty; use pocketmine\network\mcpe\protocol\types\GameMode; use pocketmine\network\mcpe\protocol\types\inventory\ItemStackWrapper; use pocketmine\network\mcpe\protocol\types\PlayerListEntry; +use pocketmine\network\mcpe\protocol\types\PlayerPermissions; +use pocketmine\network\mcpe\protocol\types\UpdateAbilitiesPacketLayer; use pocketmine\network\mcpe\protocol\UpdateAbilitiesPacket; use pocketmine\player\Player; use pocketmine\utils\Limits; use pocketmine\world\sound\TotemUseSound; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\UuidInterface; +use function array_fill; use function array_filter; use function array_key_exists; use function array_merge; @@ -481,7 +485,14 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ ItemStackWrapper::legacy(TypeConverter::getInstance()->coreItemStackToNet($this->getInventory()->getItemInHand())), GameMode::SURVIVAL, $this->getAllNetworkData(), - UpdateAbilitiesPacket::create(0, 0, $this->getId() /* TODO: this should be unique ID */, []), + UpdateAbilitiesPacket::create(CommandPermissions::NORMAL, PlayerPermissions::VISITOR, $this->getId() /* TODO: this should be unique ID */, [ + new UpdateAbilitiesPacketLayer( + UpdateAbilitiesPacketLayer::LAYER_BASE, + array_fill(0, UpdateAbilitiesPacketLayer::NUMBER_OF_ABILITIES, false), + 0.0, + 0.0 + ) + ]), [], //TODO: entity links "", //device ID (we intentionally don't send this - secvuln) DeviceOS::UNKNOWN //we intentionally don't send this (secvuln) diff --git a/src/world/particle/FloatingTextParticle.php b/src/world/particle/FloatingTextParticle.php index be1fdd5dc..1534d94fa 100644 --- a/src/world/particle/FloatingTextParticle.php +++ b/src/world/particle/FloatingTextParticle.php @@ -30,6 +30,7 @@ use pocketmine\network\mcpe\convert\SkinAdapterSingleton; use pocketmine\network\mcpe\protocol\AddPlayerPacket; use pocketmine\network\mcpe\protocol\PlayerListPacket; use pocketmine\network\mcpe\protocol\RemoveActorPacket; +use pocketmine\network\mcpe\protocol\types\command\CommandPermissions; use pocketmine\network\mcpe\protocol\types\DeviceOS; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataFlags; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataProperties; @@ -39,8 +40,11 @@ use pocketmine\network\mcpe\protocol\types\GameMode; use pocketmine\network\mcpe\protocol\types\inventory\ItemStack; use pocketmine\network\mcpe\protocol\types\inventory\ItemStackWrapper; use pocketmine\network\mcpe\protocol\types\PlayerListEntry; +use pocketmine\network\mcpe\protocol\types\PlayerPermissions; +use pocketmine\network\mcpe\protocol\types\UpdateAbilitiesPacketLayer; use pocketmine\network\mcpe\protocol\UpdateAbilitiesPacket; use Ramsey\Uuid\Uuid; +use function array_fill; use function str_repeat; class FloatingTextParticle implements Particle{ @@ -119,7 +123,14 @@ class FloatingTextParticle implements Particle{ ItemStackWrapper::legacy(ItemStack::null()), GameMode::SURVIVAL, $actorMetadata, - UpdateAbilitiesPacket::create(0, 0, $this->entityId, []), + UpdateAbilitiesPacket::create(CommandPermissions::NORMAL, PlayerPermissions::VISITOR, $this->entityId, [ + new UpdateAbilitiesPacketLayer( + UpdateAbilitiesPacketLayer::LAYER_BASE, + array_fill(0, UpdateAbilitiesPacketLayer::NUMBER_OF_ABILITIES, false), + 0.0, + 0.0 + ) + ]), [], "", DeviceOS::UNKNOWN