From c10ce84035e1248a54ec43eaf9487e6d08b19203 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 7 Dec 2019 10:02:22 +0000 Subject: [PATCH 1/4] fix invisible legacy skins which have empty geometry names --- src/pocketmine/level/particle/FloatingTextParticle.php | 4 +--- .../network/mcpe/protocol/types/LegacySkinAdapter.php | 8 ++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/level/particle/FloatingTextParticle.php b/src/pocketmine/level/particle/FloatingTextParticle.php index 29ef05133..4ec0ccce2 100644 --- a/src/pocketmine/level/particle/FloatingTextParticle.php +++ b/src/pocketmine/level/particle/FloatingTextParticle.php @@ -97,9 +97,7 @@ class FloatingTextParticle extends Particle{ $add = new PlayerListPacket(); $add->type = PlayerListPacket::TYPE_ADD; - $add->entries = [PlayerListEntry::createAdditionEntry($uuid, $this->entityId, $name, SkinAdapterSingleton::get()->toSkinData(new Skin( - "Standard_Custom", str_repeat("\x00", 8192), "", "geometry.humanoid.custom" - )))]; + $add->entries = [PlayerListEntry::createAdditionEntry($uuid, $this->entityId, $name, SkinAdapterSingleton::get()->toSkinData(new Skin("Standard_Custom", str_repeat("\x00", 8192))))]; $p[] = $add; $pk = new AddPlayerPacket(); diff --git a/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php b/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php index 6434e90d4..8c5406c4b 100644 --- a/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php +++ b/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php @@ -35,9 +35,13 @@ class LegacySkinAdapter implements SkinAdapter{ if($skin->getCapeData() === ""){ $capeData = new SkinImage(0, 0, $skin->getCapeData()); } + $geometryName = $skin->getGeometryName(); + if($geometryName === ""){ + $geometryName = "geometry.humanoid.custom"; + } return new SkinData( $skin->getSkinId(), - json_encode(["geometry" => ["default" => $skin->getGeometryName()]]), + json_encode(["geometry" => ["default" => $geometryName]]), SkinImage::fromLegacy($skin->getSkinData()), [], $capeData, $skin->getGeometryData() @@ -54,7 +58,7 @@ class LegacySkinAdapter implements SkinAdapter{ //TODO: Kick for invalid skin } if($data->isPersona()){ - return new Skin("Standard_Custom", str_repeat(random_bytes(3) . "\xff", 2048), "", "geometry.humanoid.custom"); + return new Skin("Standard_Custom", str_repeat(random_bytes(3) . "\xff", 2048)); }elseif($data->isPersonaCapeOnClassic()){ $capeData = ""; } From 733d530ed0b2d5cfba9103d4275c4f6e5bea0a03 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 7 Dec 2019 10:08:29 +0000 Subject: [PATCH 2/4] fixing EOF newlines on new files --- .../network/mcpe/protocol/CompletedUsingItemPacket.php | 2 +- .../network/mcpe/protocol/types/LegacySkinAdapter.php | 2 +- .../network/mcpe/protocol/types/PotionContainerChangeRecipe.php | 2 +- src/pocketmine/network/mcpe/protocol/types/PotionTypeRecipe.php | 2 +- src/pocketmine/network/mcpe/protocol/types/SkinAdapter.php | 2 +- .../network/mcpe/protocol/types/SkinAdapterSingleton.php | 2 +- src/pocketmine/network/mcpe/protocol/types/SkinData.php | 2 +- src/pocketmine/network/mcpe/protocol/types/SkinImage.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pocketmine/network/mcpe/protocol/CompletedUsingItemPacket.php b/src/pocketmine/network/mcpe/protocol/CompletedUsingItemPacket.php index 2a7381f23..27e6688e2 100644 --- a/src/pocketmine/network/mcpe/protocol/CompletedUsingItemPacket.php +++ b/src/pocketmine/network/mcpe/protocol/CompletedUsingItemPacket.php @@ -63,4 +63,4 @@ class CompletedUsingItemPacket extends DataPacket{ public function handle(NetworkSession $session) : bool{ return $session->handleCompletedUsingItem($this); } -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php b/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php index 8c5406c4b..676868b3e 100644 --- a/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php +++ b/src/pocketmine/network/mcpe/protocol/types/LegacySkinAdapter.php @@ -64,4 +64,4 @@ class LegacySkinAdapter implements SkinAdapter{ } return new Skin($data->getSkinId(), $data->getSkinImage()->getData(), $capeData, $geometryName, $data->getGeometryData()); } -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/PotionContainerChangeRecipe.php b/src/pocketmine/network/mcpe/protocol/types/PotionContainerChangeRecipe.php index 8d3ad196e..16855e27e 100644 --- a/src/pocketmine/network/mcpe/protocol/types/PotionContainerChangeRecipe.php +++ b/src/pocketmine/network/mcpe/protocol/types/PotionContainerChangeRecipe.php @@ -48,4 +48,4 @@ class PotionContainerChangeRecipe{ public function getOutputItemId() : int{ return $this->outputItemId; } -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/PotionTypeRecipe.php b/src/pocketmine/network/mcpe/protocol/types/PotionTypeRecipe.php index faacb6bf1..642e156a9 100644 --- a/src/pocketmine/network/mcpe/protocol/types/PotionTypeRecipe.php +++ b/src/pocketmine/network/mcpe/protocol/types/PotionTypeRecipe.php @@ -48,4 +48,4 @@ class PotionTypeRecipe{ public function getOutputPotionType() : int{ return $this->outputPotionType; } -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/SkinAdapter.php b/src/pocketmine/network/mcpe/protocol/types/SkinAdapter.php index 56b940063..f030f4488 100644 --- a/src/pocketmine/network/mcpe/protocol/types/SkinAdapter.php +++ b/src/pocketmine/network/mcpe/protocol/types/SkinAdapter.php @@ -45,4 +45,4 @@ interface SkinAdapter{ * @return Skin */ public function fromSkinData(SkinData $data) : Skin; -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/SkinAdapterSingleton.php b/src/pocketmine/network/mcpe/protocol/types/SkinAdapterSingleton.php index b75f228b3..f749752bb 100644 --- a/src/pocketmine/network/mcpe/protocol/types/SkinAdapterSingleton.php +++ b/src/pocketmine/network/mcpe/protocol/types/SkinAdapterSingleton.php @@ -40,4 +40,4 @@ class SkinAdapterSingleton{ public static function set(SkinAdapter $adapter) : void{ self::$skinAdapter = $adapter; } -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/SkinData.php b/src/pocketmine/network/mcpe/protocol/types/SkinData.php index 025595a92..0e46d0a4f 100644 --- a/src/pocketmine/network/mcpe/protocol/types/SkinData.php +++ b/src/pocketmine/network/mcpe/protocol/types/SkinData.php @@ -152,4 +152,4 @@ class SkinData{ return $this->capeId; } -} \ No newline at end of file +} diff --git a/src/pocketmine/network/mcpe/protocol/types/SkinImage.php b/src/pocketmine/network/mcpe/protocol/types/SkinImage.php index cbd7ebc16..0c0dea6df 100644 --- a/src/pocketmine/network/mcpe/protocol/types/SkinImage.php +++ b/src/pocketmine/network/mcpe/protocol/types/SkinImage.php @@ -64,4 +64,4 @@ class SkinImage{ public function getData() : string{ return $this->data; } -} \ No newline at end of file +} From 3486db3f1b64cf09cb44251ea2fdbdd857fb8c44 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 7 Dec 2019 14:20:35 +0000 Subject: [PATCH 3/4] update RakLib to 0.12.6 --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 26b239330..5f3a84baf 100644 --- a/composer.lock +++ b/composer.lock @@ -201,16 +201,16 @@ }, { "name": "pocketmine/raklib", - "version": "0.12.5", + "version": "0.12.6", "source": { "type": "git", "url": "https://github.com/pmmp/RakLib.git", - "reference": "874db2d3c24117db2221c1e4550380478aeea852" + "reference": "18450e01185e6064790bda563ac672e7141c6992" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/RakLib/zipball/874db2d3c24117db2221c1e4550380478aeea852", - "reference": "874db2d3c24117db2221c1e4550380478aeea852", + "url": "https://api.github.com/repos/pmmp/RakLib/zipball/18450e01185e6064790bda563ac672e7141c6992", + "reference": "18450e01185e6064790bda563ac672e7141c6992", "shasum": "" }, "require": { @@ -235,10 +235,10 @@ ], "description": "A RakNet server implementation written in PHP", "support": { - "source": "https://github.com/pmmp/RakLib/tree/0.12", + "source": "https://github.com/pmmp/RakLib/tree/0.12.6", "issues": "https://github.com/pmmp/RakLib/issues" }, - "time": "2019-07-22T14:38:20+00:00" + "time": "2019-12-07T13:43:34+00:00" }, { "name": "pocketmine/snooze", From 4eb59c03723566f859e9c433287af440008574a2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 7 Dec 2019 16:41:41 +0000 Subject: [PATCH 4/4] Release 3.10.1 --- changelogs/3.10.md | 6 +++++- src/pocketmine/VersionInfo.php | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/changelogs/3.10.md b/changelogs/3.10.md index 90e8e93f5..190a5c347 100644 --- a/changelogs/3.10.md +++ b/changelogs/3.10.md @@ -13,4 +13,8 @@ Plugin developers should **only** update their required API to this version if y ## Note about skins PocketMine-MP **does not support skins made in the Charactor Creator** (known as Persona skins), due to technical changes which would require premature backwards compatibility breaks. The dev team has decided not to support Persona yet. These skins will be **replaced with a random solid-colour skin. This is not a bug.** -Skins chosen from the Classic tab (classic skins) will continue to work as normal. \ No newline at end of file +Skins chosen from the Classic tab (classic skins) will continue to work as normal. + +# 3.10.1 +- Fixed custom plugin-created skins being invisible when no geometry name was specified. +- Updated RakLib to 0.12.6 to fix security bugs. \ No newline at end of file diff --git a/src/pocketmine/VersionInfo.php b/src/pocketmine/VersionInfo.php index 314a46f06..1e13f8f2d 100644 --- a/src/pocketmine/VersionInfo.php +++ b/src/pocketmine/VersionInfo.php @@ -31,5 +31,5 @@ const _VERSION_INFO_INCLUDED = true; const NAME = "PocketMine-MP"; const BASE_VERSION = "3.10.1"; -const IS_DEVELOPMENT_BUILD = true; +const IS_DEVELOPMENT_BUILD = false; const BUILD_NUMBER = 0;