mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-12 16:59: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\DimensionIds;
|
||||
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\SkinData;
|
||||
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){
|
||||
$animations[] = new SkinAnimation(new SkinImage($animation["ImageHeight"], $animation["ImageWidth"], $animation["Image"]), $animation["Type"], $animation["Frames"]);
|
||||
}
|
||||
new SkinData(
|
||||
|
||||
$skinData = new SkinData(
|
||||
$packet->clientData["SkinId"],
|
||||
base64_decode($packet->clientData["SkinResourcePatch"] ?? ""),
|
||||
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"] ?? ""
|
||||
);
|
||||
|
||||
$skinData = base64_decode($packet->clientData["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"] ?? "")
|
||||
);
|
||||
$skin = SkinAdapterSingleton::get()->fromSkinData($skinData);
|
||||
|
||||
if(!$skin->isValid()){
|
||||
$this->close("", "disconnectionScreen.invalidSkin");
|
||||
|
@ -32,6 +32,10 @@ class LegacySkinAdapter implements SkinAdapter{
|
||||
}
|
||||
|
||||
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