/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġi H Developer Ġ( ĠH am za ĠAl j ua id Ġ) Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġme . ih developer . the h unter s Ċ Ċ import Ġme . ih developer . the h unter s . component . Adventure Component Ċ import Ġme . ih developer . the h unter s . component . Clear Inventory Component Ċ import Ġme . ih developer . the h unter s . component . Clear P otion Effect Component Ċ import Ġme . ih developer . the h unter s . component . Count down Component Ċ import Ġme . ih developer . the h unter s . component . De fe ated Component Ċ import Ġme . ih developer . the h unter s . component . Disable Block Break Component Ċ import Ġme . ih developer . the h unter s . component . Disable Block Place Component Ċ import Ġme . ih developer . the h unter s . component . Disable Item Collect Component Ċ import Ġme . ih developer . the h unter s . component . Disable Item Drop Component Ċ import Ġme . ih developer . the h unter s . component . Fly Component Ċ import Ġme . ih developer . the h unter s . component . No Damage Component Ċ import Ġme . ih developer . the h unter s . component . No H un ger Component Ċ import Ġme . ih developer . the h unter s . component . No Interact Component Ċ import Ġme . ih developer . the h unter s . component . Reset Health Component Ċ import Ġme . ih developer . the h unter s . component . The End Broadcast Component Ċ import Ġme . ih developer . the h unter s . component . The End Chat Component Ċ import Ġme . ih developer . the h unter s . component . Title Component Ċ import Ġme . ih developer . the h unter s . component . V ictory Component Ċ import Ġme . ih developer . the h unter s . component . game play . TYPE _ GAME PLAY _ H UN TER _ SCORE BOARD Ċ import Ġme . ih developer . the h unter s . component . game play . TYPE _ GAME PLAY _ TARGET Ċ import Ġme . ih developer . the h unter s . component . game play . TYPE _ GAME PLAY _ TARGET _ SCORE BOARD Ċ import Ġme . ih developer . the h unter s . util . COLOR _ YELLOW Ċ import Ġme . ih developer . the h unter s . util . COUNT DOWN _ RE START ING Ċ Ċ class ĠThe End Ġ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrestart Count down : ĠInt Ġ= Ġ 6 0 , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwon : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠGameObject ( ĊĠĠĠĠĠĠĠ Ġcomponents Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThe End Broadcast Component (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThe End Chat Component () ĊĠĠĠĠĠĠĠ Ġ) Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrestart Message Ġ= ĠStringBuilder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("$ COLOR _ YELLOW ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" The Ġgame Ġis Ġrestart ing ...") ĊĠĠĠĠĠĠĠ Ġ}. toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcount down Ġ= ĠCount down Component ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠCOUNT DOWN _ RE START ING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Start Ġ= Ġ 2 0 Ġ* Ġrestart Count down , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Finish Ġ= Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Game Player >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGame . players . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . entity . kick Player ( restart Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGame . restart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Init () Ġ{ ĊĠĠĠĠĠĠĠ ĠGame . lock () ĊĊĠĠĠĠĠĠĠ ĠGame . players . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġit . has ( TYPE _ GAME PLAY _ TARGET ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Target ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset H unter ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Title Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Fly Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Adventure Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( No H un ger Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Disable Item Collect Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Disable Item Drop Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( No Damage Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Disable Block Place Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Disable Block Break Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( No Interact Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Clear Inventory Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Clear P otion Effect Component ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Reset Health Component ( this )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( won ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( De fe ated Component ( true , Ġthis )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( V ictory Component ( false , Ġthis )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( V ictory Component ( true , Ġthis )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add ( De fe ated Component ( false , Ġthis )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcount down . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Target ( player : ĠGame Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( filter Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ== ĠTYPE _ GAME PLAY _ TARGET _ SCORE BOARD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset H unter ( player : ĠGame Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayer . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( filter Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ== ĠTYPE _ GAME PLAY _ H UN TER _ SCORE BOARD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ