/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠGl are Ċ Ġ* Ċ Ġ* Ġ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 . gl are m asters . guild s . listeners Ċ Ċ import Ġme . gl are m asters . guild s . guild . Guild Handler Ċ import Ġme . gl are m asters . guild s . guild . Guild Role Perm Ċ import Ġorg . bukkit . event . Event Ċ import Ġorg . bukkit . event . EventHandler Ċ import Ġorg . bukkit . event . Listener Ċ import Ġorg . bukkit . event . block . Block Break Event Ċ import Ġorg . bukkit . event . block . Block Place Event Ċ import Ġorg . bukkit . event . player . Player Interact Event Ċ import Ġorg . code mc . world guard wrapper . World Guard Wrapper Ċ import Ġorg . code mc . world guard wrapper . flag . Wrapped State Ċ Ċ class ĠWorld Guard Listener ( private Ġval Ġguild Handler : ĠGuild Handler ) Ġ: ĠListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġwrapper Ġ= ĠWorld Guard Wrapper . getInstance () ĊĊĠĠĠ Ġ@ EventHandler ĊĠĠĠ Ġfun ĠBlock Place Event . on Place () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġguild Handler . get Guild ( player ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġwrapper . get Regions ( block . location ). first OrNull Ġ{ Ġregion Ġ-> Ġregion . id Ġ== Ġguild . id . toString () Ġ} Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġflag ToCheck Ġ= Ġwrapper . get Flag (" block - place ", ĠWr apped State :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġblock Place Ġ= Ġflag ToCheck . flatMap Ġ{ Ġregion . get Flag ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( block Place . isPresent Ġ&& Ġblock Place . get () Ġ== ĠWr apped State . DEN Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! guild . member Has Permission ( player , ĠGuild Role Perm . PLACE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ EventHandler ĊĠĠĠ Ġfun ĠBlock Break Event . on Break () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġguild Handler . get Guild ( player ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġwrapper . get Regions ( block . location ). first OrNull Ġ{ Ġregion Ġ-> Ġregion . id Ġ== Ġguild . id . toString () Ġ} Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġflag ToCheck Ġ= Ġwrapper . get Flag (" block - break ", ĠWr apped State :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġblock Break Ġ= Ġflag ToCheck . flatMap Ġ{ Ġregion . get Flag ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( block Break . isPresent Ġ&& Ġblock Break . get () Ġ== ĠWr apped State . DEN Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! guild . member Has Permission ( player , ĠGuild Role Perm . DESTROY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancelled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ EventHandler ĊĠĠĠ Ġfun ĠPlayer Interact Event . on Interact () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Inter acted Block () Ġ== ĠEvent . Result . DEN Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġguild Handler . get Guild ( player ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġregion Ġ= Ġwrapper . get Regions ( player . location ). first OrNull Ġ{ Ġregion Ġ-> Ġregion . id Ġ== Ġguild . id . toString () Ġ} Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! guild . member Has Permission ( player , ĠGuild Role Perm . INTER ACT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Use Inter acted Block ( Event . Result . DEN Y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ