/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠS pi kot Ġproject Ġauthors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġkr . he ar tp attern . sp ik ot . event . hot Ċ Ċ import Ġorg . bukkit . event . Event Ċ import Ġorg . bukkit . event . Event Priority Ċ import Ġkotlin . reflect . K Class Ċ Ċ object ĠHot Event Manager Ġ{ ĊĠĠĠ Ġprivate Ġval Ġregistry Ġ= ĠHashMap < Class < out ĠEvent >, ĠHot Event Executor Group <* >>() ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġ< E Ġ: ĠEvent > Ġget Executor Group ( event : ĠK Class < E >): ĠHot Event Executor Group < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregistered Ġ= Ġregistry [ event . java ] ĊĠĠĠĠĠĠĠ Ġif Ġ( registered Ġ!= Ġnull ) Ġreturn Ġregistered Ġas ĠHot Event Executor Group < E > ĊĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble Check Ġ= Ġregistry [ event . java ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double Check Ġ!= Ġnull ) Ġreturn Ġdouble Check Ġas ĠHot Event Executor Group < E > ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Ġ= ĠHot Event Executor Group ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistry [ event . java ] Ġ= Ġnew ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< E Ġ: ĠEvent > Ġregister ( ĊĠĠĠĠĠĠĠ Ġevent : ĠK Class < E >, ĊĠĠĠĠĠĠĠ Ġpriority : ĠEvent Priority Ġ= ĠEvent Priority . NORMAL , ĊĠĠĠĠĠĠĠ Ġignore Cancelled : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġlistener : Ġ( E , ĠHot EventListener < E >) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠHot EventListener < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexecutor Group Ġ= Ġget Executor Group ( event ) ĊĠĠĠĠĠĠĠ Ġreturn Ġexecutor Group . register ( priority , Ġignore Cancelled , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠE Ġ: ĠEvent > Ġregister ( ĊĠĠĠĠĠĠĠ Ġpriority : ĠEvent Priority Ġ= ĠEvent Priority . NORMAL , ĊĠĠĠĠĠĠĠ Ġignore Cancelled : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġno inline Ġlistener : Ġ( E , ĠHot EventListener < E >) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠHot EventListener < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġregister ( E :: class , Ġpriority , Ġignore Cancelled , Ġlistener ) ĊĠĠĠ Ġ} Ċ }