Merge branch 'stable'

This commit is contained in:
Dylan K. Taylor
2020-04-18 13:19:31 +01:00
12 changed files with 399 additions and 7 deletions

View File

@ -48,6 +48,8 @@ use pocketmine\network\mcpe\protocol\types\entity\MetadataProperty;
use pocketmine\network\mcpe\protocol\types\entity\ShortMetadataProperty;
use pocketmine\network\mcpe\protocol\types\entity\StringMetadataProperty;
use pocketmine\network\mcpe\protocol\types\entity\Vec3MetadataProperty;
use pocketmine\network\mcpe\protocol\types\PersonaPieceTintColor;
use pocketmine\network\mcpe\protocol\types\PersonaSkinPiece;
use pocketmine\network\mcpe\protocol\types\SkinAnimation;
use pocketmine\network\mcpe\protocol\types\SkinData;
use pocketmine\network\mcpe\protocol\types\SkinImage;
@ -117,8 +119,35 @@ class NetworkBinaryStream extends BinaryStream{
$capeOnClassic = $this->getBool();
$capeId = $this->getString();
$fullSkinId = $this->getString();
$armSize = $this->getString();
$skinColor = $this->getString();
$personaPieceCount = $this->getLInt();
$personaPieces = [];
for($i = 0; $i < $personaPieceCount; ++$i){
$personaPieces[] = new PersonaSkinPiece(
$pieceId = $this->getString(),
$pieceType = $this->getString(),
$packId = $this->getString(),
$isDefaultPiece = $this->getBool(),
$productId = $this->getString()
);
}
$pieceTintColorCount = $this->getLInt();
$pieceTintColors = [];
for($i = 0; $i < $pieceTintColorCount; ++$i){
$pieceType = $this->getString();
$colorCount = $this->getLInt();
$colors = [];
for($j = 0; $j < $colorCount; ++$j){
$colors[] = $this->getString();
}
$pieceTintColors[] = new PersonaPieceTintColor(
$pieceType,
$colors
);
}
return new SkinData($skinId, $skinResourcePatch, $skinData, $animations, $capeData, $geometryData, $animationData, $premium, $persona, $capeOnClassic, $capeId, $fullSkinId);
return new SkinData($skinId, $skinResourcePatch, $skinData, $animations, $capeData, $geometryData, $animationData, $premium, $persona, $capeOnClassic, $capeId, $fullSkinId, $armSize, $skinColor, $personaPieces, $pieceTintColors);
}
public function putSkin(SkinData $skin): void{
@ -139,6 +168,24 @@ class NetworkBinaryStream extends BinaryStream{
$this->putBool($skin->isPersonaCapeOnClassic());
$this->putString($skin->getCapeId());
$this->putString($skin->getFullSkinId());
$this->putString($skin->getArmSize());
$this->putString($skin->getSkinColor());
$this->putLInt(count($skin->getPersonaPieces()));
foreach($skin->getPersonaPieces() as $piece){
$this->putString($piece->getPieceId());
$this->putString($piece->getPieceType());
$this->putString($piece->getPackId());
$this->putBool($piece->isDefaultPiece());
$this->putString($piece->getProductId());
}
$this->putLInt(count($skin->getPieceTintColors()));
foreach($skin->getPieceTintColors() as $tint){
$this->putString($tint->getPieceType());
$this->putLInt(count($tint->getColors()));
foreach($tint->getColors() as $color){
$this->putString($color);
}
}
}
private function getSkinImage() : SkinImage{