package Ġxyz . ac ry lic style . maps Ċ Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Chat Color Ċ import Ġorg . bukkit . Material Ċ import Ġorg . bukkit . entity . Player Ċ import Ġorg . bukkit . inventory . ItemStack Ċ import Ġorg . bukkit . inventory . meta . Map Meta Ċ import Ġorg . bukkit . map . Map Palette Ċ import Ġorg . bukkit . map . MapView Ċ import Ġorg . bukkit . plugin . java . Java Plugin Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . lang . Number FormatException Ċ import Ġjava . util . Timer Ċ import Ġjava . util . Timer Task Ċ import Ġkotlin . math . floor Ċ Ċ class ĠMaps Plugin : ĠJava Plugin () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġinstance : ĠMaps Plugin ĊĠĠĠĠĠĠĠ Ġval Ġframes Ġ= ĠArrayList < Buffered Image >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinstance Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Command (" m load ") ?. set Executor Ġ{ Ġsender , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . GREEN } Loading Ġframes ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframes . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠImage Util . read Frames () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . GREEN } Processing Ġ${ list . size } Ġframes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframes . addAll ( list . map Ġ{ ĠMap Palette . resize Image ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . GREEN } Loaded Ġ${ frames . size } Ġframes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Command (" m start ") ?. set Executor Ġ{ Ġsender , Ġ_, Ġ_, Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ! is ĠPlayer ) Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( frames . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED } Frames Ġaren 't Ġloaded . ĠPlease Ġdo Ġ/ m load Ġto Ġload Ġthem .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED }/ m start Ġ< fps : Ġ 1 - 1 2 0 >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfps Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( args [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED }/ m start Ġ< fps : Ġ 1 - 1 2 0 >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fps Ġ<= Ġ 0 Ġ|| Ġfps Ġ> Ġ 1 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ Chat Color . RED }/ m start Ġ< fps : Ġ 1 - 1 2 0 >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaps Renderer . current Frame Ġ= Ġframes [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap View Ġ= ĠBu kkit . create Map ( sender . world ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . render ers . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . scale Ġ= ĠMap View . Scale . F ART HE ST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . add Renderer ( Maps Renderer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Ġ= ĠItemStack ( Material . FIL LED _ MAP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack . item Meta ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ĠMap Meta ). map View Ġ= Ġmap View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . item Meta Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . inventory . addItem ( stack ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Frame Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġactual F ps Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . schedule At Fixed Rate ( object : ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġif Ġ( actual F ps Ġ!= Ġfps ) ĠChat Color . G OLD Ġelse ĠChat Color . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("${ color } Processed Ġ$ actual F ps Ġframes Ġin Ġlast Ġsecond ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Frame Ġ+= Ġfps Ġ- Ġactual F ps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactual F ps Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġim s Ġ= Ġfloor (( 1 0 0 0 . toDouble () Ġ/ Ġ( fps Ġ+ Ġ 1 ))). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthe 6 6 6 6 6 6 Ġ= Ġ((( 1 0 0 0 . toDouble () Ġ/ Ġ( fps Ġ+ Ġ 1 )) Ġ- Ġim s ) Ġ* Ġ 1 0 0 0 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( current Frame Ġ< Ġframes . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage ("$ current Frame ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaps Renderer . current Frame Ġ= Ġframes [ current Frame ++] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactual F ps ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( obj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . wait ( ims , Ġthe 6 6 6 6 6 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Executor Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ