mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 01:09:44 +00:00
Move persona skin hack to legacyskinadapter
This commit is contained in:
parent
be9c413a9e
commit
c8d0cb315b
@ -146,6 +146,7 @@ use pocketmine\network\mcpe\protocol\types\CommandParameter;
|
|||||||
use pocketmine\network\mcpe\protocol\types\ContainerIds;
|
use pocketmine\network\mcpe\protocol\types\ContainerIds;
|
||||||
use pocketmine\network\mcpe\protocol\types\DimensionIds;
|
use pocketmine\network\mcpe\protocol\types\DimensionIds;
|
||||||
use pocketmine\network\mcpe\protocol\types\PlayerPermissions;
|
use pocketmine\network\mcpe\protocol\types\PlayerPermissions;
|
||||||
|
use pocketmine\network\mcpe\protocol\types\SkinAdapterSingleton;
|
||||||
use pocketmine\network\mcpe\protocol\types\SkinAnimation;
|
use pocketmine\network\mcpe\protocol\types\SkinAnimation;
|
||||||
use pocketmine\network\mcpe\protocol\types\SkinData;
|
use pocketmine\network\mcpe\protocol\types\SkinData;
|
||||||
use pocketmine\network\mcpe\protocol\types\SkinImage;
|
use pocketmine\network\mcpe\protocol\types\SkinImage;
|
||||||
@ -1922,7 +1923,8 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
foreach($packet->clientData["AnimatedImageData"] as $animation){
|
foreach($packet->clientData["AnimatedImageData"] as $animation){
|
||||||
$animations[] = new SkinAnimation(new SkinImage($animation["ImageHeight"], $animation["ImageWidth"], $animation["Image"]), $animation["Type"], $animation["Frames"]);
|
$animations[] = new SkinAnimation(new SkinImage($animation["ImageHeight"], $animation["ImageWidth"], $animation["Image"]), $animation["Type"], $animation["Frames"]);
|
||||||
}
|
}
|
||||||
new SkinData(
|
|
||||||
|
$skinData = new SkinData(
|
||||||
$packet->clientData["SkinId"],
|
$packet->clientData["SkinId"],
|
||||||
base64_decode($packet->clientData["SkinResourcePatch"] ?? ""),
|
base64_decode($packet->clientData["SkinResourcePatch"] ?? ""),
|
||||||
new SkinImage($packet->clientData["SkinImageHeight"], $packet->clientData["SkinImageWidth"], base64_decode($packet->clientData["SkinData"])),
|
new SkinImage($packet->clientData["SkinImageHeight"], $packet->clientData["SkinImageWidth"], base64_decode($packet->clientData["SkinData"])),
|
||||||
@ -1936,18 +1938,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
$packet->clientData["CapeId"] ?? ""
|
$packet->clientData["CapeId"] ?? ""
|
||||||
);
|
);
|
||||||
|
|
||||||
$skinData = base64_decode($packet->clientData["SkinData"]);
|
$skin = SkinAdapterSingleton::get()->fromSkinData($skinData);
|
||||||
if((bool) $packet->clientData["PersonaSkin"]){
|
|
||||||
$skinData = str_repeat(random_bytes(3) . "\xff", 2048);
|
|
||||||
}
|
|
||||||
|
|
||||||
$skin = new Skin(
|
|
||||||
$packet->clientData["SkinId"],
|
|
||||||
$skinData,
|
|
||||||
base64_decode($packet->clientData["CapeData"] ?? ""),
|
|
||||||
base64_decode($packet->clientData["SkinResourcePatch"] ?? ""),
|
|
||||||
base64_decode($packet->clientData["SkinGeometryData"] ?? "")
|
|
||||||
);
|
|
||||||
|
|
||||||
if(!$skin->isValid()){
|
if(!$skin->isValid()){
|
||||||
$this->close("", "disconnectionScreen.invalidSkin");
|
$this->close("", "disconnectionScreen.invalidSkin");
|
||||||
|
@ -32,6 +32,10 @@ class LegacySkinAdapter implements SkinAdapter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function fromSkinData(SkinData $data) : Skin{
|
public function fromSkinData(SkinData $data) : Skin{
|
||||||
return new Skin($data->skinId, $data->skinImage->getData(), $data->capeImage->getData(), $data->resourcePatch, $data->geometryData);
|
$skinData = $data->skinImage->getData();
|
||||||
|
if($data->persona){
|
||||||
|
$skinData = str_repeat(random_bytes(3) . "\xff", 2048);
|
||||||
|
}
|
||||||
|
return new Skin($data->skinId, $skinData, $data->capeImage->getData(), $data->resourcePatch, $data->geometryData);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user