From 221e6db47d815c1cd8fc3af0d291a88c77b3a67d Mon Sep 17 00:00:00 2001 From: Stephen Date: Thu, 21 Nov 2019 14:21:08 -0500 Subject: [PATCH] Remove persona capes off of classic skins, add checks for empty cape data when converting --- .../mcpe/protocol/types/LegacySkinAdapter.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php b/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php index 86a7ce923..da22c402f 100644 --- a/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php +++ b/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php @@ -28,19 +28,26 @@ use pocketmine\entity\Skin; class LegacySkinAdapter implements SkinAdapter{ public function toSkinData(Skin $skin) : SkinData{ + $capeData = new SkinImage(32, 64, $skin->getCapeData()); + if($capeData === ""){ + $capeData = new SkinImage(0, 0, $skin->getCapeData()); + } return new SkinData( $skin->getSkinId(), json_encode(["geometry" => ["default" => $skin->getGeometryName()]]), SkinImage::fromLegacy($skin->getSkinData()), [], - new SkinImage(32, 64, $skin->getCapeData()), - $skin->getGeometryData()); + $capeData, + $skin->getGeometryData() + ); } public function fromSkinData(SkinData $data) : Skin{ - $skinData = $data->getSkinImage()->getData(); + $capeData = $data->getCapeImage()->getData(); if($data->isPersona()){ return new Skin("Standard_Custom", str_repeat(random_bytes(3) . "\xff", 2048), "", "geometry.humanoid.custom"); + }elseif($data->isPersonaCapeOnClassic()){ + $capeData = ""; } - return new Skin($data->getSkinId(), $skinData, $data->getCapeImage()->getData(), json_decode($data->getResourcePatch(), true)["geometry"]["default"], $data->getGeometryData()); + return new Skin($data->getSkinId(), $data->getSkinImage()->getData(), $capeData, json_decode($data->getResourcePatch(), true)["geometry"]["default"], $data->getGeometryData()); } } \ No newline at end of file