package Ġcn . ber ber man . em eral d . dsl . command Ċ Ċ import Ġcn . ber ber man . em eral d . E mer ald Ċ import Ġcn . ber ber man . em eral d . extension . info Ċ import Ġcn . ber ber man . em eral d . extension . sendMessage Ċ import Ġcn . ber ber man . em eral d . extension . times Ċ import Ġorg . bukkit . Chat Color Ċ import Ġorg . bukkit . command . Command Ċ import Ġorg . bukkit . command . Command Sender Ċ import Ġorg . bukkit . command . Tab Comp leter Ċ Ċ /** Ċ Ġ* ĠPack ing Ġbu kkit Ġcommand , Ġoverride Ġits Ġmethod Ġ[ execute ] Ċ Ġ* Ġ@ param Ġname Ġcommand Ġname Ċ Ġ* Ġ@ param Ġdescription Ġcommand Ġdescription Ċ Ġ* Ġ@ param Ġusage Message Ġcommand Ġusage Message Ċ Ġ* Ġ@ param Ġaliases Ġcommand Ġaliases Ċ Ġ* Ġ@ param Ġaction Ġaction Ġinvoked Ġwhen Ġexecute Ġcommand Ċ Ġ* Ġ@ param Ġpermission Ġpermission Ġcommand Ġneeds Ċ Ġ* Ġ@ param Ġpermission Message Ġmessage Ġto Ġsay Ġif Ġsender Ġdoesn 't Ġhave Ġpermission Ċ Ġ* Ġ@ param Ġbefore Ġaction Ġbefore Ġexecute Ċ Ġ* Ġ@ param Ġafter Ġaction Ġafter Ġexecute Ċ Ġ* Ġ@ author Ġber ber man Ċ Ġ*/ Ċ internal Ġclass ĠPack ing Command Ċ ( name : ĠString , Ċ Ġdescription : ĠString , Ċ Ġusage Message : ĠString , Ċ Ġaliases : ĠList < String >, Ċ Ġprivate Ġval Ġaction : ĠAction , Ċ Ġpermission : ĠString , Ċ Ġpermission Message : ĠString , Ċ Ġprivate Ġval Ġbefore : Ġ( Command Sender , ĠString ) Ġ-> ĠUnit , Ċ Ġprivate Ġval Ġafter : Ġ( Command Sender , ĠString ) Ġ-> ĠUnit , Ċ Ġprivate Ġval Ġcomp leter : ĠTab Comp leter Ċ ) Ġ: ĠCommand ( name , Ċĉ ĉ description , Ċĉ ĉ usage Message , Ċĉ ĉ aliases ) Ġ{ Ċ ĉ init Ġ{ Ċĉ ĉ if Ġ( permission Message . isNotBlank ()) Ċĉĉ ĉ super . set Permission Message ( permission Message ) Ċĉ ĉ if Ġ( permission . isNotBlank ()) Ċĉĉ ĉ super . set Permission ( permission ) Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠOverride Ġexecute Ġmethod , Ġinvoke Ġactions . Ċĉ Ġ* ĠThis Ġmethod Ġwill Ġbe Ġinvoked Ġby ĠServer . Ċĉ Ġ* Ġ@ param Ġp 0 Ġsender Ċĉ Ġ* Ġ@ param Ġp 1 Ġcommand Ġname Ċĉ Ġ* Ġ@ param Ġp Ġcommand Ġparameters Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġexecute ( p 0 : ĠCommand Sender , Ġp 1 : ĠString , Ġp : ĠArray < out ĠString >): ĠBoolean Ġ{ Ċĉ ĉ before ( p 0 , Ġp 1 ) Ċĉ ĉ return Ġaction ( p 0 , Ġp 1 , Ġp ). let Ġ{ Ġresult Ġ-> Ċĉĉ ĉ if Ġ( result Ġ=== ĠCommand Result . Successful ) Ġtrue Ċĉĉ ĉ else Ġ{ Ċĉĉĉ ĉ p 0 ĠsendMessage ĠChat Color . RED Ġ* Ġresult . message Ċĉĉĉ ĉ if Ġ( E mer ald . debug ) Ċĉĉĉĉ ĉ info (" command :/ $ p 1 Ġexecute Ġerror ! Ġmessage : Ġ${ result . message }") Ċĉĉĉ ĉ after ( p 0 , Ġp 1 ) Ċĉĉĉ ĉ false Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ override Ġfun Ġtab Complete ( sender : ĠCommand Sender , Ġalias : ĠString , Ġargs : ĠArray < out ĠString >): ĠList < String > Ġ{ Ċĉ ĉ return Ġcomp leter . on Tab Complete ( sender , Ġthis , Ġalias , Ġargs ) Ċ ĉ } Ċ }