package Ġxyz . ac ry lic style . armor stand s Ċ Ċ import Ġorg . bukkit . Chat Color Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . plugin . java . Java Plugin Ċ import Ġxyz . ac ry lic style . armor stand s . Util . get Armor Stand Data Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . lang . Number FormatException Ċ import Ġkotlin . math . max Ċ Ċ class ĠArm or St ands Plugin : ĠJava Plugin () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġinstance : ĠArm or St ands Plugin ĊĠĠĠĠĠĠĠ Ġval Ġframes Ġ= ĠArrayList < Buffered Image >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinstance Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġserver . plugin Manager . register Events ( Cleanup On Quit Listener , Ġthis ) ĊĠĠĠĠĠĠĠ Ġget Command (" asp awn ") ?. set Executor Ġ{ Ġsender , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( frames . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED } Frames Ġaren 't Ġloaded . ĠPlease Ġdo Ġ/ aload Ġto Ġload Ġthem .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . get Armor Stand Data (). spawn All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Command (" aload ") ?. set Executor Ġ{ Ġsender , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . GREEN } Loading Ġframes ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframes . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframes . addAll ( Image Util . read Frames ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . GREEN } Loaded Ġ${ frames . size } Ġframes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Command (" ast art ") ?. set Executor Ġ{ Ġsender , Ġ_, Ġ_, Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED }/ ast art Ġ< fps : Ġ 1 - 1 2 0 >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfps Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( args [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED }/ ast art Ġ< fps : Ġ 1 - 1 2 0 >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fps Ġ<= Ġ 0 Ġ|| Ġfps Ġ> Ġ 1 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED }/ ast art Ġ< fps : Ġ 1 - 1 2 0 >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Frame Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġsender . get Armor Stand Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! data . removed Ġ&& Ġcurrent Frame Ġ- Ġ 1 Ġ< Ġframes . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġframe Ġ= Ġframes [ current Frame ++] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . update Text ( frame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . update All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġd ms Ġ= Ġ 1 6 Ġ- Ġ( end Ġ- Ġstart ) Ġ/ Ġ 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdns Ġ= Ġ 6 6 6 6 6 6 Ġ- Ġ( end Ġ- Ġstart ). toInt () Ġ% Ġ 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dns Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdns Ġ+= Ġ 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd ms -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d ms Ġ>= Ġ 0 Ġ|| Ġdns Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . wait ( max ( 0 , Ġd ms ), Ġdns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Command (" ast op ") ?. set Executor Ġ{ Ġsender , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ