/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġk ot x __ Ċ Ġ*/ Ċ Ċ package Ġdev . kot x . fly lib Ċ Ċ import Ġdev . kot x . fly lib . command . Command Ċ import Ġdev . kot x . fly lib . command . Permission Ċ import Ġorg . bukkit . event . Event Ċ import Ġorg . bukkit . event . Event Priority Ċ import Ġorg . bukkit . event . Handler List Ċ import Ġorg . bukkit . event . Listener Ċ import Ġorg . bukkit . plugin . Registered Listener Ċ import Ġorg . bukkit . plugin . java . Java Plugin Ċ Ċ /** Ċ Ġ* ĠA Ġbuilder Ġthat Ġcreates ĠFly ĠLib . Ċ Ġ*/ Ċ class ĠFly Lib Builder < T >( ĊĠĠĠ Ġprivate Ġval Ġplugin : ĠJava Plugin Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcommands Ġ= Ġmutable ListOf < Command < T >>() ĊĠĠĠ Ġprivate Ġval Ġlistener Actions Ġ= Ġmutable Map Of < Handler List , ĠPair < Registered Listener , ĠClass <* >> >() ĊĠĠĠ Ġprivate Ġvar Ġdefault Permission Ġ= ĠPermission . OP ĊĠĠĠ Ġprivate Ġvar Ġconfig : ĠT ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbase CommandName : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġcommand . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcommand ( var arg Ġcommand : ĠCommand < T >): ĠFly Lib Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġcommand . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . commands . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġthe Ġdefault Ġpermissions Ġthat Ġwill Ġbe Ġassigned Ġif Ġthe Ġcommand Ġpermissions Ġare Ġnot Ġspecified . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdefault Permission ( permission : ĠPermission ): ĠFly Lib Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Permission Ġ= Ġpermission ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfig ( base CommandName : ĠString ? Ġ= Ġnull , Ġconfig : ĠT ): ĠFly Lib Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . base CommandName Ġ= Ġbase CommandName ĊĠĠĠĠĠĠĠ Ġthis . config Ġ= Ġconfig ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList ens Ġto Ġthe Ġspecified Ġevent Ġwith Ġthe Ġspecified Ġpriority . ĠThe Ġevent ĠListen Ġis Ġregistered Ġwhen Ġthe Ġcalling Ġplugin Ġis Ġenabled , Ġnot Ġwhen Ġthis Ġmethod Ġis Ġcalled , Ġand Ġis Ġun registered Ġwhen Ġthe Ġcalling Ġplugin Ġis Ġdisabled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEvent > Ġlisten ( ĊĠĠĠĠĠĠĠ Ġclazz : ĠClass < E >, ĊĠĠĠĠĠĠĠ Ġpriority : ĠEvent Priority Ġ= ĠEvent Priority . NORMAL , ĊĠĠĠĠĠĠĠ Ġignore Cancelled : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġaction : ĠListener Action < E > ĊĠĠĠ Ġ): ĠFly Lib Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz . methods . find Ġ{ Ġit . name Ġ== Ġ" get Handler List " Ġ} ?. invoke ( null ) Ġas ? ĠHandler List Ġ?: Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠRegistered Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠListener Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_, Ġevent Ġ-> Ġaction . execute ( event Ġas ĠE ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġignore Cancelled ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġlistener Actions [ handler List ] Ġ= Ġlistener Ġto Ġclazz ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġbuild (): ĠFly Lib < T > Ġ= ĊĠĠĠĠĠĠĠ ĠFly Lib Impl ( plugin , Ġcommands , Ġdefault Permission , Ġconfig , Ġbase CommandName , Ġlistener Actions ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAn Ġinterface Ġthat Ġtakes ĠFly Lib Builder Ġas Ġan Ġargument . Ċ Ġ* ĠIn ĠJava , Ġit Ġcan Ġbe Ġused Ġfor ĠSAM Ġconversion . Ċ Ġ*/ Ċ fun Ġinterface ĠFly Lib Action < T > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġmethod Ġwhich Ġreplacing Ġkotlin Ġapply Ġblock . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠFly Lib Builder < T >. initialize () Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġhandler Ġthat Ġhandles Ġevents . Ċ Ġ* ĠJava Ġdoes ĠSAM Ġconversion . Ċ Ġ*/ Ċ fun Ġinterface ĠListener Action < T Ġ: ĠEvent > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġmethod Ġwhich Ġreplacing Ġkotlin Ġapply Ġblock . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute ( event : ĠT ) Ċ }