Friendly BC skins (persona not supported)

This commit is contained in:
Stephen
2019-11-10 21:04:38 -05:00
parent 635bb08fb9
commit e2fc7cdf88
5 changed files with 42 additions and 135 deletions

View File

@ -120,16 +120,10 @@ class Human extends Creature implements ProjectileSource, InventoryHolder{
protected static function deserializeSkinNBT(CompoundTag $skinTag) : Skin{
$skin = new Skin(
$skinTag->getString("Name"),
$skinTag->getString("SkinResourcePatch", ""),
new SerializedImage($skinTag->getInt("SkinImageHeight"), $skinTag->getInt("SkinImageWidth"), $skinTag->getByteArray("Data")),
"", //TODO: animations
new SerializedImage($skinTag->getInt("CapeImageHeight"), $skinTag->getInt("CapeImageWidth"), $skinTag->getByteArray("CapeData")),
$skinTag->getByteArray("GeometryData", ""),
$skinTag->getByteArray("AnimationData", ""),
$skinTag->getByte("PremiumSkin") === 1,
$skinTag->getByte("PersonaSkin") === 1,
$skinTag->getByte("CapeOnClassic") === 1,
$skinTag->getString("CapeId", "")
$skinTag->hasTag("Data", StringTag::class) ? $skinTag->getString("Data") : $skinTag->getByteArray("Data"), //old data (this used to be saved as a StringTag in older versions of PM)
$skinTag->getByteArray("CapeData", ""),
$skinTag->getString("GeometryName", ""),
$skinTag->getByteArray("GeometryData", "")
);
$skin->validate();
return $skin;
@ -839,19 +833,10 @@ class Human extends Creature implements ProjectileSource, InventoryHolder{
if($this->skin !== null){
$this->namedtag->setTag(new CompoundTag("Skin", [
new StringTag("Name", $this->skin->getSkinId()),
new StringTag("SkinResourcePatch", $this->skin->getSkinResourcePatch()),
new ByteArrayTag("Data", $this->skin->getSkinData()->getData()),
new IntTag("SkinImageHeight", $this->skin->getSkinData()->getHeight()),
new IntTag("SkinImageWidth", $this->skin->getSkinData()->getWidth()),
new ByteArrayTag("CapeData", $this->skin->getCapeData()->getData()),
new IntTag("CapeImageHeight", $this->skin->getCapeData()->getHeight()),
new IntTag("CapeImageWidth", $this->skin->getCapeData()->getWidth()),
new ByteArrayTag("GeometryData", $this->skin->getGeometryData()),
new ByteArrayTag("AnimationData", $this->skin->getAnimationData()),
new ByteTag("PremiumSkin", $this->skin->getPremium() ? 1 : 0),
new ByteTag("PersonaSkin", $this->skin->getPersona() ? 1 : 0),
new ByteTag("CapeOnClassic", $this->skin->getCapeOnClassic() ? 1 : 0),
new StringTag("CapeId", $this->skin->getCapeId())
new ByteArrayTag("Data", $this->skin->getSkinData()),
new ByteArrayTag("CapeData", $this->skin->getCapeData()),
new StringTag("GeometryName", $this->skin->getGeometryName()),
new ByteArrayTag("GeometryData", $this->skin->getGeometryData())
]));
}
}