package Ġcn . ber ber man . em eral d . event . dsl Ċ Ċ import Ġcn . ber ber man . em eral d . event . Pack ing Event Ċ import Ġorg . bukkit . event . Event Ċ import Ġorg . bukkit . event . Event Priority Ċ import Ġorg . bukkit . plugin . Plugin Ċ Ċ @ Event Set Dsl Ċ class ĠEvent Set Builder Ġinternal Ġconstructor ( private Ġval Ġplugin : ĠPlugin ) Ġ{ ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠEvent > Ġevent ( event Priority : ĠEvent Priority Ġ= ĠEvent Priority . NORMAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Cancelled : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno inline Ġblock : ĠT . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPack ing Event ( T :: class . java , Ġevent Priority , Ġignore Cancelled , Ġblock ). let ( events :: add ). take If Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Event Ġlistener Ġalready Ġexisted ") ĊĊĠĠĠ Ġ@ Published Api ĊĠĠĠ Ġinternal Ġval Ġevents Ġ= Ġmutable Set Of < Pack ing Event <* >>() ĊĊĠĠĠ Ġfun Ġregister All () Ġ= Ġevents . forEach Ġ{ Ġit . register ( plugin ) Ġ} ĊĊĠĠĠ Ġfun Ġunregister All () Ġ= Ġevents . forEach Ġ{ Ġit . unregister ( plugin ) Ġ} Ċ Ċ } ĊĊ Ċ fun Ġregister Event Listeners ( plugin : ĠPlugin , Ġblock : ĠEvent Set Builder . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ ĠEvent Set Builder ( plugin ). apply ( block ). also ( Event Set Builder :: register All ) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠEvent > Ġevent Listener ( event Priority : ĠEvent Priority Ġ= ĠEvent Priority . NORMAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Cancelled : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno inline Ġblock : ĠT . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ ĠPack ing Event ( T :: class . java , Ġevent Priority , Ġignore Cancelled , Ġblock ) Ċ