diff --git a/composer.json b/composer.json index 03b37a014..26de28c15 100644 --- a/composer.json +++ b/composer.json @@ -34,8 +34,8 @@ "adhocore/json-comment": "^1.1", "fgrosse/phpasn1": "^2.3", "netresearch/jsonmapper": "^4.0", - "pocketmine/bedrock-data": "~1.13.0+bedrock-1.19.50", - "pocketmine/bedrock-protocol": "~18.1.0+bedrock-1.19.50", + "pocketmine/bedrock-data": "~1.14.0+bedrock-1.19.60", + "pocketmine/bedrock-protocol": "~19.0.0+bedrock-1.19.60", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", "pocketmine/classloader": "^0.2.0", diff --git a/composer.lock b/composer.lock index dc1ee168f..6ff40e421 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8b0866fdb437375a50307205a9e01643", + "content-hash": "f516e1546e5d16c31fef01d2a98c0da8", "packages": [ { "name": "adhocore/json-comment", @@ -250,16 +250,16 @@ }, { "name": "pocketmine/bedrock-data", - "version": "1.13.0+bedrock-1.19.50", + "version": "1.14.0+bedrock-1.19.60", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockData.git", - "reference": "57337ddc9433a0e245a1ce48c51af05f0573d58d" + "reference": "7b06234ec6e1f4fb06ad4b2f177e606c25df9b46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/57337ddc9433a0e245a1ce48c51af05f0573d58d", - "reference": "57337ddc9433a0e245a1ce48c51af05f0573d58d", + "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/7b06234ec6e1f4fb06ad4b2f177e606c25df9b46", + "reference": "7b06234ec6e1f4fb06ad4b2f177e606c25df9b46", "shasum": "" }, "type": "library", @@ -270,22 +270,22 @@ "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/BedrockData/issues", - "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.19.50" + "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.19.60" }, - "time": "2022-11-30T16:19:59+00:00" + "time": "2023-02-08T18:32:01+00:00" }, { "name": "pocketmine/bedrock-protocol", - "version": "18.1.0+bedrock-1.19.50", + "version": "19.0.0+bedrock-1.19.60", "source": { "type": "git", "url": "https://github.com/pmmp/BedrockProtocol.git", - "reference": "c34f22847a1cc362a3f1c45698576d30d1e8392f" + "reference": "3c8cf08d09b8b3fafc209d184e66e50d2e34c06c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/c34f22847a1cc362a3f1c45698576d30d1e8392f", - "reference": "c34f22847a1cc362a3f1c45698576d30d1e8392f", + "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/3c8cf08d09b8b3fafc209d184e66e50d2e34c06c", + "reference": "3c8cf08d09b8b3fafc209d184e66e50d2e34c06c", "shasum": "" }, "require": { @@ -317,9 +317,9 @@ "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", "support": { "issues": "https://github.com/pmmp/BedrockProtocol/issues", - "source": "https://github.com/pmmp/BedrockProtocol/tree/18.1.0+bedrock-1.19.50" + "source": "https://github.com/pmmp/BedrockProtocol/tree/19.0.0+bedrock-1.19.60" }, - "time": "2023-01-20T12:35:30+00:00" + "time": "2023-02-08T18:38:02+00:00" }, { "name": "pocketmine/binaryutils", diff --git a/src/entity/Human.php b/src/entity/Human.php index 58911a07c..50034e5c3 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\AbilitiesData; use pocketmine\network\mcpe\protocol\types\command\CommandPermissions; use pocketmine\network\mcpe\protocol\types\DeviceOS; use pocketmine\network\mcpe\protocol\types\entity\EntityIds; @@ -60,7 +61,7 @@ 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\types\AbilitiesLayer; use pocketmine\network\mcpe\protocol\UpdateAbilitiesPacket; use pocketmine\player\Player; use pocketmine\utils\Limits; @@ -507,14 +508,14 @@ class Human extends Living implements ProjectileSource, InventoryHolder{ GameMode::SURVIVAL, $this->getAllNetworkData(), new PropertySyncData([], []), - 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), + UpdateAbilitiesPacket::create(new AbilitiesData(CommandPermissions::NORMAL, PlayerPermissions::VISITOR, $this->getId() /* TODO: this should be unique ID */, [ + new AbilitiesLayer( + AbilitiesLayer::LAYER_BASE, + array_fill(0, AbilitiesLayer::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/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 49f87793f..4e7f05127 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -90,6 +90,7 @@ use pocketmine\network\mcpe\protocol\TakeItemActorPacket; use pocketmine\network\mcpe\protocol\TextPacket; use pocketmine\network\mcpe\protocol\ToastRequestPacket; use pocketmine\network\mcpe\protocol\TransferPacket; +use pocketmine\network\mcpe\protocol\types\AbilitiesData; use pocketmine\network\mcpe\protocol\types\BlockPosition; use pocketmine\network\mcpe\protocol\types\command\CommandData; use pocketmine\network\mcpe\protocol\types\command\CommandEnum; @@ -103,7 +104,7 @@ use pocketmine\network\mcpe\protocol\types\inventory\ContainerIds; 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\types\AbilitiesLayer; use pocketmine\network\mcpe\protocol\UpdateAbilitiesPacket; use pocketmine\network\mcpe\protocol\UpdateAdventureSettingsPacket; use pocketmine\network\mcpe\protocol\UpdateAttributesPacket; @@ -848,33 +849,33 @@ class NetworkSession{ //ALL of these need to be set for the base layer, otherwise the client will cry $boolAbilities = [ - UpdateAbilitiesPacketLayer::ABILITY_ALLOW_FLIGHT => $for->getAllowFlight(), - UpdateAbilitiesPacketLayer::ABILITY_FLYING => $for->isFlying(), - UpdateAbilitiesPacketLayer::ABILITY_NO_CLIP => !$for->hasBlockCollision(), - UpdateAbilitiesPacketLayer::ABILITY_OPERATOR => $isOp, - UpdateAbilitiesPacketLayer::ABILITY_TELEPORT => $for->hasPermission(DefaultPermissionNames::COMMAND_TELEPORT_SELF), - UpdateAbilitiesPacketLayer::ABILITY_INVULNERABLE => $for->isCreative(), - UpdateAbilitiesPacketLayer::ABILITY_MUTED => false, - UpdateAbilitiesPacketLayer::ABILITY_WORLD_BUILDER => false, - UpdateAbilitiesPacketLayer::ABILITY_INFINITE_RESOURCES => !$for->hasFiniteResources(), - UpdateAbilitiesPacketLayer::ABILITY_LIGHTNING => false, - UpdateAbilitiesPacketLayer::ABILITY_BUILD => !$for->isSpectator(), - UpdateAbilitiesPacketLayer::ABILITY_MINE => !$for->isSpectator(), - UpdateAbilitiesPacketLayer::ABILITY_DOORS_AND_SWITCHES => !$for->isSpectator(), - UpdateAbilitiesPacketLayer::ABILITY_OPEN_CONTAINERS => !$for->isSpectator(), - UpdateAbilitiesPacketLayer::ABILITY_ATTACK_PLAYERS => !$for->isSpectator(), - UpdateAbilitiesPacketLayer::ABILITY_ATTACK_MOBS => !$for->isSpectator(), + AbilitiesLayer::ABILITY_ALLOW_FLIGHT => $for->getAllowFlight(), + AbilitiesLayer::ABILITY_FLYING => $for->isFlying(), + AbilitiesLayer::ABILITY_NO_CLIP => !$for->hasBlockCollision(), + AbilitiesLayer::ABILITY_OPERATOR => $isOp, + AbilitiesLayer::ABILITY_TELEPORT => $for->hasPermission(DefaultPermissionNames::COMMAND_TELEPORT_SELF), + AbilitiesLayer::ABILITY_INVULNERABLE => $for->isCreative(), + AbilitiesLayer::ABILITY_MUTED => false, + AbilitiesLayer::ABILITY_WORLD_BUILDER => false, + AbilitiesLayer::ABILITY_INFINITE_RESOURCES => !$for->hasFiniteResources(), + AbilitiesLayer::ABILITY_LIGHTNING => false, + AbilitiesLayer::ABILITY_BUILD => !$for->isSpectator(), + AbilitiesLayer::ABILITY_MINE => !$for->isSpectator(), + AbilitiesLayer::ABILITY_DOORS_AND_SWITCHES => !$for->isSpectator(), + AbilitiesLayer::ABILITY_OPEN_CONTAINERS => !$for->isSpectator(), + AbilitiesLayer::ABILITY_ATTACK_PLAYERS => !$for->isSpectator(), + AbilitiesLayer::ABILITY_ATTACK_MOBS => !$for->isSpectator(), ]; - $this->sendDataPacket(UpdateAbilitiesPacket::create( + $this->sendDataPacket(UpdateAbilitiesPacket::create(new AbilitiesData( $isOp ? CommandPermissions::OPERATOR : CommandPermissions::NORMAL, $isOp ? PlayerPermissions::OPERATOR : PlayerPermissions::MEMBER, $for->getId(), [ //TODO: dynamic flying speed! FINALLY!!!!!!!!!!!!!!!!! - new UpdateAbilitiesPacketLayer(UpdateAbilitiesPacketLayer::LAYER_BASE, $boolAbilities, 0.05, 0.1), + new AbilitiesLayer(AbilitiesLayer::LAYER_BASE, $boolAbilities, 0.05, 0.1), ] - )); + ))); } public function syncAdventureSettings() : void{