/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 2 , ĠVal ap he e . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . val ap he e . net code . mc be . world . entity . player Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Creator Ċ import Ġcom . fasterxml . jackson . annotation . Json Format Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Ċ import Ġcom . fasterxml . jackson . annotation . JsonProperty Ċ import Ġcom . val ap he e . net code . mc be . network . Packet Buffer Ċ import Ġcom . val ap he e . net code . util . safe List Ċ Ċ /** Ċ Ġ* Ġ@ author ĠKevin ĠL ud w ig Ċ Ġ*/ Ċ data Ġclass ĠAp pearance Ġconstructor ( ĊĠĠĠ Ġval Ġskin Id : ĠString , ĊĠĠĠ Ġval Ġplay Fab Id : ĠString ?, ĊĠĠĠ Ġval Ġskin Resource Patch : ĠByteArray , ĊĠĠĠ Ġ/*@ Json Un wrapped ( prefix Ġ= Ġ" Skin ") */ @ get : JsonIgnore Ġval Ġskin Image : ĠAp pearance Image , ĊĠĠĠ Ġval Ġanimations : ĠList < Animation >, ĊĠĠĠ Ġ/*@ Json Un wrapped ( prefix Ġ= Ġ" C ape ") */ @ get : JsonIgnore Ġval Ġc ape Image : ĠAp pearance Image , ĊĠĠĠ Ġval Ġgeometry Data : ĠByteArray , ĊĠĠĠ Ġval Ġgeometry Data Engine Version : ĠString ?, ĊĠĠĠ Ġval Ġanimation Data : ĠByteArray , ĊĠĠĠ Ġval Ġc ape Id : ĠString , ĊĠĠĠ Ġ@ get : JsonIgnore Ġvar Ġid : ĠString ?, ĊĠĠĠ Ġval Ġarm Size : ĠString , ĊĠĠĠ Ġval Ġskin Color : ĠString , ĊĠĠĠ Ġval Ġperson a Pieces : ĠList < Person a Piece >, ĊĠĠĠ Ġval Ġperson a Piece T ints : ĠList < Person a Piece Tint >, ĊĠĠĠ Ġval Ġprem ium Skin : ĠBoolean , ĊĠĠĠ Ġval Ġperson a Skin : ĠBoolean , ĊĠĠĠ Ġval Ġc ape On Classic Skin : ĠBoolean , ĊĠĠĠ Ġ@ get : JsonIgnore Ġval Ġprimary User : ĠBoolean , ĊĠĠĠ Ġ@ get : JsonIgnore Ġvar Ġtrusted : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġdata Ġclass ĠAnimation Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ JsonIgnore Ġval Ġimage : ĠAp pearance Image , ĊĠĠĠĠĠĠĠ Ġval Ġtype : ĠType , ĊĠĠĠĠĠĠĠ Ġval Ġframes : ĠFloat , ĊĠĠĠĠĠĠĠ Ġval Ġexpression : ĠExpression Ġ= ĠExpression . Linear ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Json Format ( shape Ġ= ĠJson Format . Shape . NUMBER ) ĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠType Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNone , ĠHead , ĠBody 3 2 , ĠBody 1 2 8 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Json Format ( shape Ġ= ĠJson Format . Shape . NUMBER ) ĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠExpression Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinear , ĠB linking ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Width Ġget () Ġ= Ġimage . width ĊĠĠĠĠĠĠĠ Ġval Ġimage Height Ġget () Ġ= Ġimage . height ĊĠĠĠĠĠĠĠ Ġval Ġimage Data Ġget () Ġ= Ġimage . data ĊĊĠĠĠĠĠĠĠ Ġ@ Json Creator ĊĠĠĠĠĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Image Width ") Ġimage Width : ĠInt ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Image Height ") Ġimage Height : ĠInt ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Image ") Ġimage Data : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Type ") Ġtype : ĠType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Frames ") Ġframes : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Animation Expression ") Ġexpression : ĠExpression Ġ= ĠExpression . Linear ĊĠĠĠĠĠĠĠ Ġ) Ġ: Ġthis ( Appearance Image ( image Width , Ġimage Height , Ġimage Data ), Ġtype , Ġframes , Ġexpression ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠPerson a Piece ( ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" Piece Id ") Ġval Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" Piece Type ") Ġval Ġtype : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" Pack Id ") Ġval Ġpack Id : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" Is Default ") Ġval Ġdefault : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" ProductId ") Ġval ĠproductId : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠPerson a Piece Tint ( ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" Piece Type ") Ġval Ġtype : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ get : JsonProperty (" Colors ") Ġval Ġcolors : ĠList < String > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġskin Width Ġget () Ġ= Ġskin Image . width ĊĠĠĠ Ġval Ġskin Height Ġget () Ġ= Ġskin Image . height ĊĠĠĠ Ġval Ġskin Data Ġget () Ġ= Ġskin Image . data ĊĠĠĠ Ġval Ġc ape Width Ġget () Ġ= Ġc ape Image . width ĊĠĠĠ Ġval Ġc ape Height Ġget () Ġ= Ġc ape Image . height ĊĠĠĠ Ġval Ġc ape Data Ġget () Ġ= Ġc ape Image . data ĊĊĠĠĠ Ġ@ Json Creator ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Id ") Ġskin Id : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Play Fab Id ") Ġplay Fab Id : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Resource Patch ") Ġskin Resource Patch : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Image Width ") Ġskin Width : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Image Height ") Ġskin Height : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Data ") Ġskin Data : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Animated ImageData ") Ġanimations : ĠList < Animation >, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" C ape Image Width ") Ġc ape Width : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" C ape Image Height ") Ġc ape Height : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" C ape Data ") Ġc ape Data : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Geometry Data ") Ġgeometry Data : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Geometry Data Engine Version ") Ġgeometry Data Engine Version : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Animation Data ") Ġanimation Data : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" C ape Id ") Ġc ape Id : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Arm Size ") Ġarm Size : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Skin Color ") Ġskin Color : ĠString Ġ= Ġ"# 0 ", ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Person a Pieces ") Ġperson a Pieces : ĠList < Person a Piece > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Piece Tint Colors ") Ġperson a Piece T ints : ĠList < Person a Piece Tint > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Prem ium Skin ") Ġprem ium Skin : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" Person a Skin ") Ġperson a Skin : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġ@ JsonProperty (" C ape On Classic Skin ") Ġc ape On Classic Skin : ĠBoolean ĊĠĠĠ Ġ) Ġ: Ġthis ( skin Id , Ġplay Fab Id , Ġskin Resource Patch , ĠAp pearance Image ( skin Width , Ġskin Height , Ġskin Data ), Ġanimations , ĠAp pearance Image ( cape Width , Ġc ape Height , Ġc ape Data ), Ġgeometry Data , Ġgeometry Data Engine Version , Ġanimation Data , Ġc ape Id , Ġnull , Ġarm Size , Ġskin Color , Ġperson a Pieces , Ġperson a Piece T ints , Ġprem ium Skin , Ġperson a Skin , Ġc ape On Classic Skin , Ġfalse , Ġfalse ) Ċ } Ċ Ċ fun ĠPacket Buffer . read Appearance Pre 3 9 0 (): ĠAp pearance Ġ{ ĊĠĠĠ Ġval Ġskin Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Resource Patch Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġskin Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġanimations Ġ= Ġmutable ListOf < Appearance . Animation >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Animation ( read Appearance Image (), ĠAp pearance . Animation . Type . values ()[ readInt LE ()], Ġbuffer . read Float LE ())) Ġ} Ġ} ĊĠĠĠ Ġval Ġc ape Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġgeometry Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġanimation Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġprem ium Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġperson a Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape On Classic Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġid Ġ= Ġread String () ĊĠĠĠ Ġreturn ĠAp pearance ( skin Id , Ġ"", Ġskin Resource Patch , Ġskin Image , Ġanimations , Ġc ape Image , Ġgeometry Data , Ġ"", Ġanimation Data , Ġc ape Id , Ġid , Ġ"", Ġ"", Ġempty List (), Ġempty List (), Ġprem ium Skin , Ġperson a Skin , Ġc ape On Classic Skin , Ġfalse , Ġfalse ) Ċ } Ċ Ċ fun ĠPacket Buffer . read Appearance Pre 4 1 9 (): ĠAp pearance Ġ{ ĊĠĠĠ Ġval Ġskin Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Resource Patch Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġskin Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġanimations Ġ= Ġmutable ListOf < Appearance . Animation >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Animation ( read Appearance Image (), ĠAp pearance . Animation . Type . values ()[ buffer . readInt LE ()], Ġbuffer . read Float LE ())) Ġ} Ġ} ĊĠĠĠ Ġval Ġc ape Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġgeometry Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġanimation Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġprem ium Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġperson a Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape On Classic Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġid Ġ= Ġread String () ĊĠĠĠ Ġval Ġarm Size Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Color Ġ= Ġread String () ĊĠĠĠ Ġval Ġperson a Pieces Ġ= Ġmutable ListOf < Appearance . Person a Piece >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece ( readString (), Ġread String (), Ġread String (), Ġread Boolean (), Ġread String ())) Ġ} Ġ} ĊĠĠĠ Ġval Ġperson a Piece T ints Ġ= Ġmutable ListOf < Appearance . Person a Piece Tint >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece Tint ( readString (), Ġsafe List ( readInt LE ()) Ġ{ Ġread String () Ġ})) Ġ} Ġ} ĊĠĠĠ Ġreturn ĠAp pearance ( skin Id , Ġ"", Ġskin Resource Patch , Ġskin Image , Ġanimations , Ġc ape Image , Ġgeometry Data , Ġ"", Ġanimation Data , Ġc ape Id , Ġid , Ġarm Size , Ġskin Color , Ġperson a Pieces , Ġperson a Piece T ints , Ġprem ium Skin , Ġperson a Skin , Ġc ape On Classic Skin , Ġfalse , Ġfalse ) Ċ } Ċ Ċ fun ĠPacket Buffer . read Appearance Pre 4 2 8 (): ĠAp pearance Ġ{ ĊĠĠĠ Ġval Ġskin Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Resource Patch Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġskin Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġanimations Ġ= Ġmutable ListOf < Appearance . Animation >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Animation ( read Appearance Image (), ĠAp pearance . Animation . Type . values ()[ buffer . readInt LE ()], Ġbuffer . read Float LE (), ĠAp pearance . Animation . Expression . values ()[ buffer . readInt LE () ])) Ġ} Ġ} ĊĠĠĠ Ġval Ġc ape Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġgeometry Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġanimation Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġprem ium Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġperson a Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape On Classic Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġid Ġ= Ġread String () ĊĠĠĠ Ġval Ġarm Size Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Color Ġ= Ġread String () ĊĠĠĠ Ġval Ġperson a Pieces Ġ= Ġmutable ListOf < Appearance . Person a Piece >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece ( readString (), Ġread String (), Ġread String (), Ġread Boolean (), Ġread String ())) Ġ} Ġ} ĊĠĠĠ Ġval Ġperson a Piece T ints Ġ= Ġmutable ListOf < Appearance . Person a Piece Tint >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece Tint ( readString (), Ġsafe List ( readInt LE ()) Ġ{ Ġread String () Ġ})) Ġ} Ġ} ĊĠĠĠ Ġreturn ĠAp pearance ( skin Id , Ġ"", Ġskin Resource Patch , Ġskin Image , Ġanimations , Ġc ape Image , Ġgeometry Data , Ġ"", Ġanimation Data , Ġc ape Id , Ġid , Ġarm Size , Ġskin Color , Ġperson a Pieces , Ġperson a Piece T ints , Ġprem ium Skin , Ġperson a Skin , Ġc ape On Classic Skin , Ġfalse , Ġfalse ) Ċ } Ċ Ċ fun ĠPacket Buffer . read Appearance Pre 4 6 5 (): ĠAp pearance Ġ{ ĊĠĠĠ Ġval Ġskin Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġplay Fab Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Resource Patch Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġskin Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġanimations Ġ= Ġmutable ListOf < Appearance . Animation >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Animation ( read Appearance Image (), ĠAp pearance . Animation . Type . values ()[ buffer . readInt LE ()], Ġbuffer . read Float LE (), ĠAp pearance . Animation . Expression . values ()[ buffer . readInt LE () ])) Ġ} Ġ} ĊĠĠĠ Ġval Ġc ape Image Ġ= Ġread Appearance Image () ĊĠĠĠ Ġval Ġgeometry Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġanimation Data Ġ= Ġread ByteArray () ĊĠĠĠ Ġval Ġprem ium Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġperson a Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape On Classic Skin Ġ= Ġread Boolean () ĊĠĠĠ Ġval Ġc ape Id Ġ= Ġread String () ĊĠĠĠ Ġval Ġid Ġ= Ġread String () ĊĠĠĠ Ġval Ġarm Size Ġ= Ġread String () ĊĠĠĠ Ġval Ġskin Color Ġ= Ġread String () ĊĠĠĠ Ġval Ġperson a Pieces Ġ= Ġmutable ListOf < Appearance . Person a Piece >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece ( readString (), Ġread String (), Ġread String (), Ġread Boolean (), Ġread String ())) Ġ} Ġ} ĊĠĠĠ Ġval Ġperson a Piece T ints Ġ= Ġmutable ListOf < Appearance . Person a Piece Tint >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece Tint ( readString (), Ġsafe List ( readInt LE ()) Ġ{ Ġread String () Ġ})) Ġ} Ġ} ĊĠĠĠ Ġreturn ĠAp pearance ( skin Id , Ġplay Fab Id , Ġskin Resource Patch , Ġskin Image , Ġanimations , Ġc ape Image , Ġgeometry Data , Ġ"", Ġanimation Data , Ġc ape Id , Ġid , Ġarm Size , Ġskin Color , Ġperson a Pieces , Ġperson a Piece T ints , Ġprem ium Skin , Ġperson a Skin , Ġc ape On Classic Skin , Ġfalse , Ġfalse ) Ċ } Ċ Ċ fun ĠPacket Buffer . read Appearance () Ġ= ĠAp pearance ( ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġread ByteArray (), ĊĠĠĠ Ġread Appearance Image (), ĊĠĠĠ Ġmutable ListOf < Appearance . Animation >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Animation ( read Appearance Image (), ĠAp pearance . Animation . Type . values ()[ buffer . readInt LE ()], Ġbuffer . read Float LE (), ĠAp pearance . Animation . Expression . values ()[ buffer . readInt LE () ])) Ġ} Ġ}, ĊĠĠĠ Ġread Appearance Image (), ĊĠĠĠ Ġread ByteArray (), ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġread ByteArray (), ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġread String (), ĊĠĠĠ Ġmutable ListOf < Appearance . Person a Piece >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece ( readString (), Ġread String (), Ġread String (), Ġread Boolean (), Ġread String ())) Ġ} Ġ}, ĊĠĠĠ Ġmutable ListOf < Appearance . Person a Piece Tint >(). apply Ġ{ Ġrepeat ( readInt LE ()) Ġ{ Ġadd ( Appearance . Person a Piece Tint ( readString (), Ġsafe List ( readInt LE ()) Ġ{ Ġread String () Ġ})) Ġ} Ġ}, ĊĠĠĠ Ġread Boolean (), ĊĠĠĠ Ġread Boolean (), ĊĠĠĠ Ġread Boolean (), ĊĠĠĠ Ġread Boolean (), ĊĠĠĠ Ġfalse Ċ ) Ċ Ċ fun ĠPacket Buffer . write Appearance Pre 3 9 0 ( value : ĠAp pearance ) Ġ{ ĊĠĠĠ Ġwrite String ( value . skin Id ) ĊĠĠĠ Ġwrite ByteArray ( value . skin Resource Patch ) ĊĠĠĠ Ġwrite Appearance Image ( value . skin Image ) ĊĠĠĠ Ġwrite Int LE ( value . animations . size ) ĊĠĠĠ Ġvalue . animations . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Appearance Image ( it . image ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . type . ordinal ) ĊĠĠĠĠĠĠĠ Ġwrite Float LE ( it . frames ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Appearance Image ( value . cape Image ) ĊĠĠĠ Ġwrite ByteArray ( value . geometry Data ) ĊĠĠĠ Ġwrite ByteArray ( value . animation Data ) ĊĠĠĠ Ġwrite Boolean ( value . premium Skin ) ĊĠĠĠ Ġwrite Boolean ( value . persona Skin ) ĊĠĠĠ Ġwrite Boolean ( value . cape On Classic Skin ) ĊĠĠĠ Ġwrite String ( value . cape Id ) ĊĠĠĠ Ġwrite String ( value . id !! ) Ċ } Ċ Ċ fun ĠPacket Buffer . write Appearance Pre 4 1 9 ( value : ĠAp pearance ) Ġ{ ĊĠĠĠ Ġwrite Appearance Pre 3 9 0 ( value ) ĊĠĠĠ Ġwrite String ( value . arm Size ) ĊĠĠĠ Ġwrite String ( value . skin Color ) ĊĠĠĠ Ġwrite Int LE ( value . persona Pieces . size ) ĊĠĠĠ Ġvalue . persona Pieces . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . id ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . pack Id ) ĊĠĠĠĠĠĠĠ Ġwrite Boolean ( it . default ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . productId ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Int LE ( value . persona Piece T ints . size ) ĊĠĠĠ Ġvalue . persona Piece T ints . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġval Ġperson a Piece Tint Colors Ġ= Ġit . colors ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( persona Piece Tint Colors . size ) ĊĠĠĠĠĠĠĠ Ġperson a Piece Tint Colors . forEach Ġ{ Ġwrite String ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠPacket Buffer . write Appearance Pre 4 2 8 ( value : ĠAp pearance ) Ġ{ ĊĠĠĠ Ġwrite String ( value . skin Id ) ĊĠĠĠ Ġwrite ByteArray ( value . skin Resource Patch ) ĊĠĠĠ Ġwrite Appearance Image ( value . skin Image ) ĊĠĠĠ Ġwrite Int LE ( value . animations . size ) ĊĠĠĠ Ġvalue . animations . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Appearance Image ( it . image ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . type . ordinal ) ĊĠĠĠĠĠĠĠ Ġwrite Float LE ( it . frames ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . expression . ordinal ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Appearance Image ( value . cape Image ) ĊĠĠĠ Ġwrite ByteArray ( value . geometry Data ) ĊĠĠĠ Ġwrite ByteArray ( value . animation Data ) ĊĠĠĠ Ġwrite Boolean ( value . premium Skin ) ĊĠĠĠ Ġwrite Boolean ( value . persona Skin ) ĊĠĠĠ Ġwrite Boolean ( value . cape On Classic Skin ) ĊĠĠĠ Ġwrite String ( value . cape Id ) ĊĠĠĠ Ġwrite String ( value . id !! ) ĊĠĠĠ Ġwrite String ( value . arm Size ) ĊĠĠĠ Ġwrite String ( value . skin Color ) ĊĠĠĠ Ġwrite Int LE ( value . persona Pieces . size ) ĊĠĠĠ Ġvalue . persona Pieces . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . id ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . pack Id ) ĊĠĠĠĠĠĠĠ Ġwrite Boolean ( it . default ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . productId ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Int LE ( value . persona Piece T ints . size ) ĊĠĠĠ Ġvalue . persona Piece T ints . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġval Ġperson a Piece Tint Colors Ġ= Ġit . colors ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( persona Piece Tint Colors . size ) ĊĠĠĠĠĠĠĠ Ġperson a Piece Tint Colors . forEach Ġ{ Ġwrite String ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠPacket Buffer . write Appearance Pre 4 6 5 ( value : ĠAp pearance ) Ġ{ ĊĠĠĠ Ġwrite String ( value . skin Id ) ĊĠĠĠ Ġwrite String ( value . play Fab Id Ġ?: Ġ"") ĊĠĠĠ Ġwrite ByteArray ( value . skin Resource Patch ) ĊĠĠĠ Ġwrite Appearance Image ( value . skin Image ) ĊĠĠĠ Ġwrite Int LE ( value . animations . size ) ĊĠĠĠ Ġvalue . animations . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Appearance Image ( it . image ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . type . ordinal ) ĊĠĠĠĠĠĠĠ Ġwrite Float LE ( it . frames ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . expression . ordinal ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Appearance Image ( value . cape Image ) ĊĠĠĠ Ġwrite ByteArray ( value . geometry Data ) ĊĠĠĠ Ġwrite ByteArray ( value . animation Data ) ĊĠĠĠ Ġwrite Boolean ( value . premium Skin ) ĊĠĠĠ Ġwrite Boolean ( value . persona Skin ) ĊĠĠĠ Ġwrite Boolean ( value . cape On Classic Skin ) ĊĠĠĠ Ġwrite String ( value . cape Id ) ĊĠĠĠ Ġwrite String ( value . id !! ) ĊĠĠĠ Ġwrite String ( value . arm Size ) ĊĠĠĠ Ġwrite String ( value . skin Color ) ĊĠĠĠ Ġwrite Int LE ( value . persona Pieces . size ) ĊĠĠĠ Ġvalue . persona Pieces . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . id ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . pack Id ) ĊĠĠĠĠĠĠĠ Ġwrite Boolean ( it . default ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . productId ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Int LE ( value . persona Piece T ints . size ) ĊĠĠĠ Ġvalue . persona Piece T ints . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġval Ġperson a Piece Tint Colors Ġ= Ġit . colors ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( persona Piece Tint Colors . size ) ĊĠĠĠĠĠĠĠ Ġperson a Piece Tint Colors . forEach Ġ{ Ġwrite String ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠPacket Buffer . write Appearance ( value : ĠAp pearance ) Ġ{ ĊĠĠĠ Ġwrite String ( value . skin Id ) ĊĠĠĠ Ġwrite String ( value . play Fab Id Ġ?: Ġ"") ĊĠĠĠ Ġwrite ByteArray ( value . skin Resource Patch ) ĊĠĠĠ Ġwrite Appearance Image ( value . skin Image ) ĊĠĠĠ Ġwrite Int LE ( value . animations . size ) ĊĠĠĠ Ġvalue . animations . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Appearance Image ( it . image ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . type . ordinal ) ĊĠĠĠĠĠĠĠ Ġwrite Float LE ( it . frames ) ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( it . expression . ordinal ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Appearance Image ( value . cape Image ) ĊĠĠĠ Ġwrite ByteArray ( value . geometry Data ) ĊĠĠĠ Ġwrite String ( value . geometry Data Engine Version Ġ?: Ġ"") ĊĠĠĠ Ġwrite ByteArray ( value . animation Data ) ĊĠĠĠ Ġwrite String ( value . cape Id ) ĊĠĠĠ Ġwrite String ( value . id !! ) ĊĠĠĠ Ġwrite String ( value . arm Size ) ĊĠĠĠ Ġwrite String ( value . skin Color ) ĊĠĠĠ Ġwrite Int LE ( value . persona Pieces . size ) ĊĠĠĠ Ġvalue . persona Pieces . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . id ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . pack Id ) ĊĠĠĠĠĠĠĠ Ġwrite Boolean ( it . default ) ĊĠĠĠĠĠĠĠ Ġwrite String ( it . productId ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Int LE ( value . persona Piece T ints . size ) ĊĠĠĠ Ġvalue . persona Piece T ints . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite String ( it . type ) ĊĠĠĠĠĠĠĠ Ġval Ġperson a Piece Tint Colors Ġ= Ġit . colors ĊĠĠĠĠĠĠĠ Ġwrite Int LE ( persona Piece Tint Colors . size ) ĊĠĠĠĠĠĠĠ Ġperson a Piece Tint Colors . forEach Ġ{ Ġwrite String ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġwrite Boolean ( value . premium Skin ) ĊĠĠĠ Ġwrite Boolean ( value . persona Skin ) ĊĠĠĠ Ġwrite Boolean ( value . cape On Classic Skin ) ĊĠĠĠ Ġwrite Boolean ( value . primary User ) Ċ } Ċ