skinId = $skinId; $this->skinData = $skinData; $this->capeData = $capeData; $this->geometryName = $geometryName; $this->geometryData = $geometryData; } public function isValid() : bool{ return ( $this->skinId !== "" and (($s = strlen($this->skinData)) === 16384 or $s === 8192) and ($this->capeData === "" or strlen($this->capeData) === 8192) ); } /** * @return string */ public function getSkinId() : string{ return $this->skinId; } /** * @return string */ public function getSkinData() : string{ return $this->skinData; } /** * @return string */ public function getCapeData() : string{ return $this->capeData; } /** * @return string */ public function getGeometryName() : string{ return $this->geometryName; } /** * @return string */ public function getGeometryData() : string{ return $this->geometryData; } /** * Hack to cut down on network overhead due to skins, by un-pretty-printing geometry JSON. * * Mojang, some stupid reason, send every single model for every single skin in the selected skin-pack. * Not only that, they are pretty-printed. * TODO: find out what model crap can be safely dropped from the packet (unless it gets fixed first) */ public function debloatGeometryData() : void{ if($this->geometryData !== ""){ $this->geometryData = (string) json_encode(json_decode($this->geometryData)); } } }