Merge commit '1a99938e4b5af0295e449379dbdb0a3ffe703efd'

This commit is contained in:
Dylan K. Taylor 2019-12-11 23:15:48 +00:00
commit 19f75768ed

View File

@ -31,10 +31,8 @@ use function is_string;
class LegacySkinAdapter implements SkinAdapter{ class LegacySkinAdapter implements SkinAdapter{
public function toSkinData(Skin $skin) : SkinData{ public function toSkinData(Skin $skin) : SkinData{
$capeData = new SkinImage(32, 64, $skin->getCapeData()); $capeData = $skin->getCapeData();
if($skin->getCapeData() === ""){ $capeImage = $capeData === "" ? new SkinImage(0, 0, "") : new SkinImage(32, 64, $capeData);
$capeData = new SkinImage(0, 0, $skin->getCapeData());
}
$geometryName = $skin->getGeometryName(); $geometryName = $skin->getGeometryName();
if($geometryName === ""){ if($geometryName === ""){
$geometryName = "geometry.humanoid.custom"; $geometryName = "geometry.humanoid.custom";
@ -43,13 +41,18 @@ class LegacySkinAdapter implements SkinAdapter{
$skin->getSkinId(), $skin->getSkinId(),
json_encode(["geometry" => ["default" => $geometryName]]), json_encode(["geometry" => ["default" => $geometryName]]),
SkinImage::fromLegacy($skin->getSkinData()), [], SkinImage::fromLegacy($skin->getSkinData()), [],
$capeData, $capeImage,
$skin->getGeometryData() $skin->getGeometryData()
); );
} }
public function fromSkinData(SkinData $data) : Skin{ public function fromSkinData(SkinData $data) : Skin{
$capeData = $data->getCapeImage()->getData(); if($data->isPersona()){
return new Skin("Standard_Custom", str_repeat(random_bytes(3) . "\xff", 2048));
}
$capeData = $data->isPersonaCapeOnClassic() ? "" : $data->getCapeImage()->getData();
$geometryName = ""; $geometryName = "";
$resourcePatch = json_decode($data->getResourcePatch(), true); $resourcePatch = json_decode($data->getResourcePatch(), true);
if(is_array($resourcePatch["geometry"]) && is_string($resourcePatch["geometry"]["default"])){ if(is_array($resourcePatch["geometry"]) && is_string($resourcePatch["geometry"]["default"])){
@ -57,11 +60,7 @@ class LegacySkinAdapter implements SkinAdapter{
}else{ }else{
//TODO: Kick for invalid skin //TODO: Kick for invalid skin
} }
if($data->isPersona()){
return new Skin("Standard_Custom", str_repeat(random_bytes(3) . "\xff", 2048));
}elseif($data->isPersonaCapeOnClassic()){
$capeData = "";
}
return new Skin($data->getSkinId(), $data->getSkinImage()->getData(), $capeData, $geometryName, $data->getGeometryData()); return new Skin($data->getSkinId(), $data->getSkinImage()->getData(), $capeData, $geometryName, $data->getGeometryData());
} }
} }