package Ġorg . run est ar . client . plugins . castle w ars Ċ Ċ import Ġcom . google . common . base . Stop watch Ċ import Ġorg . run est ar . client . api . util . Disposable Plugin Ċ import Ġorg . run est ar . client . cache ids . Npc Id Ċ import Ġorg . run est ar . client . game . api . H sl Color Ċ import Ġorg . run est ar . client . game . api . Npc Definition Ċ import Ġorg . run est ar . client . game . api . Component Id Ċ import Ġorg . run est ar . client . game . api . live . Np cs Ċ import Ġorg . run est ar . client . game . api . live . Components Ċ import Ġorg . run est ar . client . game . raw . CLIENT Ċ import Ġorg . run est ar . client . game . raw . access . X Client Ċ import Ġorg . run est ar . client . game . raw . access . XN PC Type Ċ import Ġorg . run est ar . client . plugins . spi . Plugin Settings Ċ import Ġjava . time . Duration Ċ Ċ class ĠCast le W ars Ġ: ĠDis posable Plugin < Castle W ars . Settings >() Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠZ AM _ CADE Ġ= ĠNpc Id . B ARR IC ADE _ 5 7 2 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠZ AM _ CADE _ BUR NING Ġ= ĠNpc Id . B ARR IC ADE _ 5 7 2 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS ARA _ CADE Ġ= ĠNpc Id . B ARR IC ADE _ 5 7 2 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS ARA _ CADE _ BUR NING Ġ= ĠNpc Id . B ARR IC ADE _ 5 7 2 3 ĊĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ CADE _ TI E _ COLOR Ġ= ĠH sl Color ( 2 3 9 6 ) ĊĠĠĠĠĠĠĠ Ġval ĠZ AM _ CADE _ TI E _ COLOR Ġ= ĠH sl Color . from Rgb ( 1 . 0 , Ġ 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠS ARA _ CADE _ TI E _ COLOR Ġ= ĠH sl Color . from Rgb ( 0 . 1 , Ġ 0 . 5 , Ġ 1 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠONE _ MINUTE : ĠDuration Ġ= ĠDuration . of Minutes ( 1 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġdefault Settings Ġ= ĠSettings () ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" Castle ĠW ars " ĊĊĠĠĠ Ġprivate Ġvar Ġgame Timer Minutes : ĠDuration Ġ= ĠDuration . ZERO ĊĊĠĠĠ Ġprivate Ġval Ġgame Timer Seconds : ĠStop watch Ġ= ĠStop watch . create Un started () ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( XN PC Type . post Decode . exit . subscribe Ġ{ Ġon NPC Type Init ( Npc Definition ( it . instance )) Ġ}) ĊĠĠĠĠĠĠĠ Ġreset NP CT ypes () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( settings . show Timer Seconds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( X Client . draw LoggedIn . enter . subscribe Ġ{ Ġon Draw Components () Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon NPC Type Init ( def : ĠNpc Definition ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is B arr ic ade ( def . id )) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . show B arr ic ades On Min imap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef . draw Map Dot Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . show B arr ic ade Team Colors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef . re color ( DEFAULT _ CADE _ TI E _ COLOR , Ġb arr ic ade T ie Color ( def . id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Draw Components () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġw Ġ= ĠComponents [ Component Id . CAST LE _ WAR S _ Z AM OR AK _ TIME _ LEFT ] ĊĠĠĠĠĠĠĠ Ġif Ġ( w Ġ== Ġnull Ġ|| Ġw . accessor . cycle Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Ġ= ĠComponents [ Component Id . CAST LE _ WAR S _ SAR ADO MIN _ TIME _ LEFT ] Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġw . text Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( s . endsWith (" ĠMin ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġs . remove Suffix (" ĠMin "). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= ĠDuration . of Minutes ( m . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( game Timer Minutes Ġ!= Ġminutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Timer Seconds . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Timer Seconds . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Timer Minutes Ġ= Ġminutes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġelapsed Ġ= Ġgame Timer Seconds . elapsed (). coerce At Most ( ONE _ MINUTE ) ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġgame Timer Minutes . minus ( elapsed ) ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġtime . to Minutes () ĊĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġtime . seconds Ġ% Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġw . text Ġ= Ġ"% d :% 0 2 d ". format ( minutes , Ġseconds ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġreset NP CT ypes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis B arr ic ade ( npc Id : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( npc Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ARA _ CADE , ĠS ARA _ CADE _ BUR NING , ĠZ AM _ CADE , ĠZ AM _ CADE _ BUR NING Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġb arr ic ade T ie Color ( npc Id : ĠInt ): ĠH sl Color Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( npc Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠZ AM _ CADE , ĠZ AM _ CADE _ BUR NING Ġ-> ĠZ AM _ CADE _ TI E _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ARA _ CADE , ĠS ARA _ CADE _ BUR NING Ġ-> ĠS ARA _ CADE _ TI E _ COLOR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror ( npc Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset NP CT ypes () Ġ{ ĊĠĠĠĠĠĠĠ ĠCLIENT . npc Type _ cached Models . clear () ĊĠĠĠĠĠĠĠ ĠCLIENT . npc Type _ cached . clear () ĊĠĠĠĠĠĠĠ ĠN pcs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . accessor . type Ġ= ĠCLIENT . get NPC Type ( it . accessor . type . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSettings ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow B arr ic ades On Min imap : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow B arr ic ade Team Colors : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow Timer Seconds : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ) Ġ: ĠPlugin Settings () Ċ }