package Ġgg . r sm od . plugins . content . me chan ics . appearance Ċ Ċ import Ġgg . r sm od . game . model . appearance .* Ċ import Ġgg . r sm od . game . model . attr . AP PE AR ANCE _ SET _ ATTR Ċ import Ġgg . r sm od . game . sync . block . Update BlockType Ċ import Ġgg . r sm od . plugins . content . me chan ics . appearance . Appearance _ interface _ plugin . Appearance Ops . Companion . get Op Ċ import Ġgg . r sm od . plugins . content . me chan ics . appearance . Appearance _ interface _ plugin . Appearance Ops . Companion . is Colour Op Ċ import Ġgg . r sm od . plugins . content . me chan ics . appearance . Appearance _ interface _ plugin . Appearance Ops . Companion . is Look Op Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ val ĠAP PE AR ANCE _ INTERFACE _ ID Ġ= Ġ 6 7 9 Ċ Ċ /** Ċ Ġ* ĠChange Ġ[ Gender ] Ġto Ġ[ Gender . M ALE ] Ċ Ġ*/ Ċ on _ button ( AP PE AR ANCE _ INTERFACE _ ID , Ġ 6 5 ) Ġ{ ĊĠĠĠ Ġplayer . set Var bit ( 1 1 6 9 7 , Ġ 0 ) ĊĠĠĠ Ġplayer . appearance Ġ= ĠAp pearance . DEFAULT _ M ALE ĊĠĠĠ Ġplayer . add Block ( Update BlockType . AP PE AR ANCE ) Ċ } Ċ Ċ /** Ċ Ġ* ĠChange Ġ[ Gender ] Ġto Ġ[ Gender . F EM ALE ] Ċ Ġ*/ Ċ on _ button ( AP PE AR ANCE _ INTERFACE _ ID , Ġ 6 6 ) Ġ{ ĊĠĠĠ Ġplayer . set Var bit ( 1 1 6 9 7 , Ġ 1 ) ĊĠĠĠ Ġplayer . appearance Ġ= ĠAp pearance . DEFAULT _ F EM ALE ĊĠĠĠ Ġplayer . add Block ( Update BlockType . AP PE AR ANCE ) Ċ } Ċ Ċ /** Ċ Ġ* ĠConf ir ms Ġ[ Player ] Ġ[ Appearance ] Ġselection Ġand Ġcloses Ġinterface Ċ Ġ*/ Ċ on _ button ( AP PE AR ANCE _ INTERFACE _ ID , Ġ 6 8 ) Ġ{ ĊĠĠĠ Ġplayer . attr [ AP PE AR ANCE _ SET _ ATTR ] Ġ= Ġtrue ĊĠĠĠ Ġplayer . unlock () ĊĠĠĠ Ġplayer . close Interface ( AP PE AR ANCE _ INTERFACE _ ID ) Ċ } Ċ Ċ enum Ġclass ĠAp pearance Ops ( val Ġcomponent : ĠInt ) Ġ{ ĊĠĠĠ ĠHEAD ( 1 0 ), ĊĠĠĠ ĠJ AW ( 1 4 ), ĊĠĠĠ ĠTOR SO ( 1 8 ), ĊĠĠĠ ĠAR MS ( 2 2 ), ĊĠĠĠ ĠHAND S ( 2 6 ), ĊĠĠĠ ĠLE GS ( 3 0 ), ĊĠĠĠ ĠFE ET ( 3 4 ), ĊĠĠĠ ĠHA IR _ CO LO UR ( 4 1 ), ĊĠĠĠ ĠTOR SO _ CO LO UR ( 4 5 ), ĊĠĠĠ ĠLE GS _ CO LO UR ( 4 9 ), ĊĠĠĠ ĠFE ET _ CO LO UR ( 5 3 ), ĊĠĠĠ ĠSK IN _ CO LO UR ( 5 7 ), ĊĠĠĠ ĠNONE ( 0 ); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠisValid Op ( option : ĠInt ): ĠBoolean Ġ= Ġ( option Ġ>= Ġ 1 0 Ġ|| Ġoption Ġ<= Ġ 6 0 ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Look Op ( option : ĠInt ): ĠBoolean Ġ= Ġ( option Ġin Ġ 1 0 .. 3 7 ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Colour Op ( option : ĠInt ): ĠBoolean Ġ= Ġ( option Ġin Ġ 4 1 .. 6 0 ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Op ( option : ĠInt ): ĠAp pearance Ops Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! isValid Op ( option ) Ġ-> ĠNONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Look Op ( option ) Ġ-> Ġget Look Op ( option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Colour Op ( option ) Ġ-> Ġget Colour Op ( option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠNONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Look Op ( option : ĠInt ): ĠAp pearance Ops Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen (( option - 1 0 )/ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠHEAD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠJ AW ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠTOR SO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠAR MS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠHAND S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠLE GS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> ĠFE ET ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠNONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Colour Op ( option : ĠInt ): ĠAp pearance Ops Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen (( option - 4 1 )/ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠHA IR _ CO LO UR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠTOR SO _ CO LO UR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠLE GS _ CO LO UR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠFE ET _ CO LO UR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠSK IN _ CO LO UR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠNONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ Appearance Ops . values (). filter Not Ġ{ Ġit Ġ== ĠAp pearance Ops . NONE Ġ}. forEach Ġ{ Ġop Ġ-> ĊĊĠĠĠ Ġ// Ġdecrement Ġoption ĊĠĠĠ Ġon _ button ( AP PE AR ANCE _ INTERFACE _ ID , Ġop . component + 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopt Ġ= Ġop . component ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Look Op ( opt ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġ( opt - 1 0 )/ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġwhen ( player . appearance . gender ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . M ALE Ġ-> Ġplayer . appearance . look s [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . F EM ALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos Ġ== Ġ 0 ) Ġplayer . appearance . look s [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( pos Ġ== Ġ 1 ) Ġthrow ĠIllegalArgumentException (" female Ġj aw Ġoption Ġil leg ally Ġattempted Ġchange ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġplayer . appearance . look s [ pos - 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlooks Ġ= Ġget L ooks ( opt , Ġplayer . appearance . gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Ġ= Ġif ( current - 1 Ġ< Ġ 0 ) Ġlooks . size - 1 Ġelse Ġcurrent - 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( player . appearance . gender ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . M ALE Ġ-> Ġplayer . appearance . look s [ pos ] Ġ= Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . F EM ALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( pos Ġ== Ġ 0 ) Ġplayer . appearance . look s [ pos ] Ġ= Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( pos Ġ== Ġ 1 ) Ġthrow ĠIllegalArgumentException (" female Ġj aw Ġoption Ġil leg ally Ġattempted Ġchange ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġplayer . appearance . look s [ pos - 1 ] Ġ= Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Block ( Update BlockType . AP PE AR ANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Colour Op ( opt ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġ( opt - 4 1 )/ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġplayer . appearance . colors [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= Ġget Colo urs ( opt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Ġ= Ġif ( current - 1 Ġ< Ġ 0 ) Ġcolors . size - 1 Ġelse Ġcurrent - 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . appearance . colors [ pos ] Ġ= Ġprevious ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Block ( Update BlockType . AP PE AR ANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġincrement Ġoption ĊĠĠĠ Ġon _ button ( AP PE AR ANCE _ INTERFACE _ ID , Ġop . component + 3 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopt Ġ= Ġop . component ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Look Op ( opt ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġ( opt - 1 0 )/ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġwhen ( player . appearance . gender ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . M ALE Ġ-> Ġplayer . appearance . look s [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . F EM ALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos Ġ== Ġ 0 ) Ġplayer . appearance . look s [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( pos Ġ== Ġ 1 ) Ġthrow ĠIllegalArgumentException (" female Ġj aw Ġoption Ġil leg ally Ġattempted Ġchange ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġplayer . appearance . look s [ pos - 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlooks Ġ= Ġget L ooks ( opt , Ġplayer . appearance . gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġif ( current + 1 Ġ> Ġlooks . size ) Ġ 0 Ġelse Ġcurrent + 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( player . appearance . gender ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . M ALE Ġ-> Ġplayer . appearance . look s [ pos ] Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGender . F EM ALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pos Ġ== Ġ 0 ) Ġplayer . appearance . look s [ pos ] Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( pos Ġ== Ġ 1 ) Ġthrow ĠIllegalArgumentException (" female Ġj aw Ġoption Ġil leg ally Ġattempted Ġchange ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġplayer . appearance . look s [ pos - 1 ] Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Block ( Update BlockType . AP PE AR ANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Colour Op ( opt ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġ( opt - 4 1 )/ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġplayer . appearance . colors [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= Ġget Colo urs ( opt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġif ( current + 1 Ġ> Ġcolors . size ) Ġ 0 Ġelse Ġcurrent + 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . appearance . colors [ pos ] Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add Block ( Update BlockType . AP PE AR ANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget L ooks ( option : ĠInt , Ġgender : ĠGender ): ĠArray < Int > Ġ{ ĊĠĠĠ Ġwhen ( gender ){ ĊĠĠĠĠĠĠĠ ĠGender . M ALE Ġ-> Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen (( option - 1 0 )/ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠLooks . get Head s ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠLooks . get J aws ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠLooks . getT ors os ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠLooks . get Ar ms ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠLooks . get H ands ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠLooks . get Le gs ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> ĠLooks . get Fe ets ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠarrayOf (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠGender . F EM ALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen (( option - 1 0 )/ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠLooks . get Head s ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠLooks . getT ors os ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠLooks . get Ar ms ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠLooks . get H ands ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠLooks . get Le gs ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> ĠLooks . get Fe ets ( gender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠarrayOf (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Colo urs ( option : ĠInt ): ĠArray < Int > Ġ{ ĊĠĠĠ Ġreturn Ġwhen (( option - 4 1 )/ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> ĠCo lo urs . HA IR _ CO LO UR S ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠCo lo urs . TOR SO _ CO LO UR S ĊĠĠĠĠĠĠĠĠ 2 Ġ-> ĠCo lo urs . LEG _ CO LO UR S ĊĠĠĠĠĠĠĠĠ 3 Ġ-> ĠCo lo urs . FE ET _ CO LO UR S ĊĠĠĠĠĠĠĠĠ 4 Ġ-> ĠCo lo urs . SK IN _ CO LO UR S ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠarrayOf (- 1 ) ĊĠĠĠ Ġ} Ċ }