package Ġcom . ill uz ion z stud ios . mist . requirement Ċ Ċ import Ġcom . ill uz ion z stud ios . mist . Logger Ċ import Ġcom . ill uz ion z stud ios . mist . data . controller . Bu kkit Player Controller Ċ import Ġcom . ill uz ion z stud ios . mist . data . controller . Game Player Controller Ċ import Ġcom . ill uz ion z stud ios . mist . plugin . Hooks Ċ import Ġcom . ill uz ion z stud ios . mist . util . Player Util Ċ import Ġnet . md _ 5 . b ungee . api . Chat Color Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . Location Ċ import Ġorg . bukkit . World Ċ import Ġorg . bukkit . entity . Player Ċ import Ġjava . util . function . Predicate Ċ import Ġjava . util . regex . Matcher Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠA Ġcustom Ġplayer Ġfilter Ġthat Ġfilters Ġthings Ġbased Ġon Ġthe Ġplayer . ĠUsed Ċ Ġ* Ġas Ġa Ġrequirement Ġas Ġthe Ġplayer Ġneeds Ġto Ġrequire Ġthings Ċ Ġ* Ċ Ġ* Ġ@ param Ġtype ĠThe Ġtype Ġof Ġrequirement Ċ Ġ* Ġ@ param Ġargs ĠArguments Ġfor Ġthe Ġrequirement Ċ Ġ*/ Ċ class ĠPlayer Requirement ( val Ġtype : ĠRequirement Type , Ġprivate Ġval Ġarguments : ĠList < Any ?> ): ĠPredicate < Player > Ġ{ ĊĊĠĠĠ Ġconstructor ( type : ĠRequirement Type , Ġvar arg Ġarguments : ĠAny ?): Ġthis ( type , Ġarguments . toList ()) ĊĊĠĠĠ Ġoverride Ġfun Ġtest ( player : ĠPlayer ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠProcess ĠP API Ġplaceholders ĊĠĠĠĠĠĠĠ Ġval Ġargs : ĠMutable List < Any ?> Ġ= ĠArrayList (); ĊĠĠĠĠĠĠĠ Ġfor Ġ( arg Ġin Ġarguments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ( Hooks . p api Place holders ( arg . toString (), Ġplayer )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġargs [ 0 ] Ġis Ġthe Ġfirst Ġvalue , Ġargs [ 1 .. 2 .. 3 ] Ġetc Ġare Ġother Ġarguments ĊĠĠĠĠĠĠĠ Ġval Ġstr Arg : ĠString Ġ= Ġargs [ 0 ]. toString () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġcheck Ġbased Ġon Ġtypes ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . PERMISSION Ġ-> ĠPlayer Util . has Perm ( player , Ġstr Arg ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . REGION Ġ-> ĠHooks . world guard ?. get Regions At ( player . location )?. contains ( str Arg ) Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . EX PER I ENCE Ġ-> Ġplayer . exp Ġ>= Ġargs [ 0 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . NEAR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtokens : ĠList < String > Ġ= Ġstr Arg . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġworld : ĠWorld Ġ= ĠBu kkit . get World ( tokens [ 0 ]) Ġ?: ĠBu kkit . get World s ()[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= ĠInteger . parseInt ( tokens [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= ĠInteger . parseInt ( tokens [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz Ġ= ĠInteger . parseInt ( tokens [ 3 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation ( world , Ġx . toDouble (), Ġy . toDouble (), Ġz . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġ( args [ 1 ] Ġas ĠInt ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplayer . location . distance Squared ( location ) Ġ<= Ġ( distance Ġ* Ġdistance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . WORLD Ġ-> Ġplayer . location . world ?. name . equals ( str Arg , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . STRING _ EQUAL S Ġ-> Ġstr Arg Ġ== Ġargs [ 1 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . STRING _ EQUAL S _ IG NO REC ASE Ġ-> Ġstr Arg . equals ( args [ 1 ]. toString (), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . STRING _ CONTAIN S Ġ-> Ġstr Arg . contains ( args [ 1 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . REGEX Ġ-> ĠPattern . compile ( args [ 1 ]. toString ()). matcher ( str Arg ). find () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . EQUAL Ġ-> Ġargs [ 0 ] Ġas ĠInt Ġ== Ġargs [ 1 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . GRE ATER _ THAN _ OR _ EQUAL Ġ-> Ġargs [ 0 ] Ġas ĠInt Ġ>= Ġargs [ 1 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . LESS _ THAN _ OR _ EQUAL Ġ-> Ġargs [ 0 ] Ġas ĠInt Ġ<= Ġargs [ 1 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . NOT _ EQUAL Ġ-> Ġargs [ 0 ] Ġas ĠInt Ġ!= Ġargs [ 1 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . GRE ATER _ THAN Ġ-> Ġargs [ 0 ] Ġas ĠInt Ġ> Ġargs [ 1 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequirement Type . LESS _ THAN Ġ-> Ġ( args [ 0 ] Ġas ĠInt ) Ġ< Ġ( args [ 1 ] Ġas ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDefault Ġto Ġyes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }