package Ġcom . mine in aby ss . st amin ac li mb . st am ina Ċ Ċ import Ġcom . mine in aby ss . id of r ont . messaging . color Ċ import Ġcom . mine in aby ss . st amin ac li mb .* Ċ import Ġcom . mine in aby ss . st amin ac li mb . cli mb ing . Cli mb Behaviour Ċ import Ġcom . mine in aby ss . st amin ac li mb . config . St am ina Config Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Game Mode Ċ import Ġorg . bukkit . Tag Ċ import Ġorg . bukkit . boss . Bar Color Ċ import Ġorg . bukkit . boss . Boss Bar Ċ import Ġorg . bukkit . p otion . P otion Effect Ċ import Ġorg . bukkit . p otion . P otion Effect Type Ċ import Ġorg . bukkit . scheduler . Bu kkit Runnable Ċ Ċ class ĠSt am ina Task Ġ: ĠBu kkit Runnable () Ġ{ ĊĠĠĠ Ġvar Ġlast Tick Nano Ġ= ĠSystem . nano Time () ĊĠĠĠ Ġvar Ġtime Since Last Color Flip Ġ= Ġ 0 L ĊĠĠĠ Ġvar Ġlast Time Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Nano Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠ Ġval Ġlast Tick Nano Backup Ġ= Ġlast Tick Nano ĊĠĠĠĠĠĠĠ Ġlast Tick Nano Ġ= Ġcurrent Nano ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtick Duration Ġ= Ġcalculate Tick Duration ( current Nano , Ġlast Tick Nano Backup ) ĊĊĠĠĠĠĠĠĠ ĠSt am ina Bar . registered Bars . keys . forEach Ġ{ Ġuuid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= ĠBu kkit . getPlayer ( uuid ) Ġ?: ĠSt am ina Bar . registered Bars . remove ( uuid ). let Ġ{ Ġreturn @ forEach Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbar Ġ= ĠSt am ina Bar . registered Bars [ uuid ] Ġ?: Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġbar . progress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Cli mb able : ĠBoolean Ġ= ĠTag . CL IM B ABLE . is Tagged ( player . location . block . type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player . game Mode Ġ== ĠGame Mode . CRE ATIVE Ġ|| Ġplayer . game Mode Ġ== ĠGame Mode . S PECT ATOR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt am ina Bar . unregister Bar ( uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . stop Cli mb ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . allow Flight Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar . isVisible Ġ= Ġprogress Ġ+ ĠSt am ina Config . data . st am ina Re gen Ġ<= Ġ 1 Ġ// hide Ġwhen Ġfull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// regener ate Ġst am ina Ġfor ĠBo ss Bar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! uuid . is Cli mb ing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar . progress Ġ= Ġ( bar . progress Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player . location . apply Ġ{ Ġy Ġ-= Ġ 1 Ġ}. block . is Solid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt am ina Config . data . st am ina Re gen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ(! on Cli mb able ) ĠSt am ina Config . data . st am ina Re gen In Air Ġelse Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). coerce At Most ( 1 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ<= ĠSt am ina Config . data . bar Red ) Ġ{ Ġ// Changing Ġbar Ġcolors Ġand Ġeffects Ġon Ġplayer Ġdepending Ġon Ġits Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar . color Ġ= ĠBar Color . RED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar . setTitle ("& c & l St am ina ". color ()) Ġ// Make ĠSt am ina Ġtitle Ġred ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uuid . is Cli mb ing ) Ġplayer . stop Cli mb ing () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid . can Cli mb Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ// If Ġplayer Ġreaches Ġred Ġzone , Ġthey Ġcan 't Ġcli mb Ġuntil Ġthey Ġget Ġback Ġin Ġgreen Ġzone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add P otion Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP otion Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP otion Effect Type . S LOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . add P otion Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP otion Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP otion Effect Type . WE AK NESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( progress Ġ< Ġ 1 Ġ&& Ġ! uuid . can Cli mb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar . color Ġ= ĠBar Color . RED Ġ// Keep ĠSt am ina ĠBar Ġred Ġeven Ġin Ġyellow Ġzone Ġwhile Ġit 's Ġre generating ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( uuid . is Cli mb ing Ġ|| Ġon Cli mb able ) Ġ&& Ġprogress Ġ<= ĠSt am ina Config . data . bar B link 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Time Ġ= ĠSystem . currentTimeMillis () Ġ- Ġlast Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time Since Last Color Flip Ġ< ĠSt am ina Config . data . bar B link Speed 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Since Last Color Flip Ġ+= Ġdelta Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflip Color ( bar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Since Last Color Flip Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( uuid . is Cli mb ing Ġ|| Ġon Cli mb able ) Ġ&& Ġprogress Ġ<= ĠSt am ina Config . data . bar B link 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Time Ġ= ĠSystem . currentTimeMillis () Ġ- Ġlast Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time Since Last Color Flip Ġ< ĠSt am ina Config . data . bar B link Speed 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Since Last Color Flip Ġ+= Ġdelta Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflip Color ( bar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Since Last Color Flip Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar . color Ġ= ĠBar Color . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar . setTitle ("& l St am ina ". color ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid . can Cli mb Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠCli mb Behaviour . is Cli mb ing . entries . forEach Ġ{ Ġ( uuid , Ġis Cli mb ing ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= ĠBu kkit . getPlayer ( uuid ) Ġ?: ĠCli mb Behaviour . is Cli mb ing . remove ( uuid ). let Ġ{ Ġreturn Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġcli mb ing Ġin Ġcre ative , Ġstop Ġcli mb ing Ġbut Ġkeep Ġflight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player . game Mode Ġ== ĠGame Mode . CRE ATIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . stop Cli mb ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . allow Flight Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . is F lying Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// prevent Ġplayer Ġfrom Ġcli mb ing Ġif Ġthey Ġhave Ġf allen Ġfar Ġenough Ġor Ġin Ġa Ġinvalid Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! player . is F lying Ġ&& Ġis Cli mb ing Ġ|| Ġplayer . fall Distance Ġ> ĠSt am ina Config . data . max Fall Dist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . stop Cli mb ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Wall Multiplier Ġ= Ġplayer . wall Difficulty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( at Wall Multiplier Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uuid . cli mb Cooldown Done ) Ġuuid . restart Cooldown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . allow Flight Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . is F lying Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCli mb Behaviour . is Cli mb ing [ uuid ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Cli mb ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid . is Cli mb ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid . restart Cooldown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . launch In Direction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . is F lying Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . allow Flight Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// only Ġprevent Ġair Ġjump Ġafter ĠA IR _ TIME Ġms ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( uuid . cli mb Cooldown Ġ+ ĠSt am ina Config . data . air Time Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . stop Cli mb ing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Cli mb ing ) Ġuuid . remove Progress ( tick Duration Ġ* ĠSt am ina Config . data . st am ina Remove Per Tick Ġ* Ġat Wall Multiplier ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġflip Color ( bar : ĠBo ss Bar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bar . color Ġ== ĠBar Color . RED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar . color Ġ= ĠBar Color . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar . setTitle ("& l St am ina ". color ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar . color Ġ= ĠBar Color . RED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar . setTitle ("& c & l St am ina ". color ()) Ġ// Make ĠSt am ina Ġtitle Ġred ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Tick Duration ( current Nano : ĠLong , Ġlast Tick Nano : ĠLong ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnano Diff Ġ= Ġ( current Nano Ġ- Ġlast Tick Nano ). toFloat () ĊĠĠĠĠĠĠĠ Ġreturn Ġnano Diff Ġ/ ĠSt am ina Config . NAN O _ PER _ TICK ĊĠĠĠ Ġ} Ċ } Ċ