package Ġch atter box . util . commands Ċ Ċ import Ġch atter box . log Info Ċ import Ġch atter box . log Se vere Ċ import Ġch atter box . log Warn Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . command . Command Ċ import Ġorg . bukkit . command . Command Map Ċ import Ġjava . lang . reflect . Field Ċ Ċ val ĠHEL P _ ARGS Ġ= ĠarrayOf (" help ", Ġ" h ", Ġ"? ") Ċ Ċ class ĠDynamic Command Registry ( private Ġval Ġow ning Plugin : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġregistered Commands Ġ= Ġmutable Set Of < Dynamic Plugin Command >() ĊĊĠĠĠ Ġprivate Ġfun Ġhas Registered Command ( dynamic Command : ĠDynamic Command ) Ġ= Ġregistered Commands . any Ġ{ Ġit . name Ġ== Ġdynamic Command . aliases [ 0 ] Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠDynamic Plugin Command > Ġregister Command ( cmd : Ġ() Ġ-> ĠT ): ĠDynamic Command Registry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġcmd () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( t :: class . annotations . any Ġ{ Ġit Ġis ĠDynamic Command Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregistration : ĠDynamic Command Ġ= Ġt :: class . annotations . first Ġ{ Ġit Ġis ĠDynamic Command Ġ} Ġas ĠDynamic Command ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregistration Name ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġregistration . aliases [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Registered Command ( registration )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Warn (" At tempted Ġto Ġdoub ly Ġregister Ġcommand Ġ\"$ registration Name \" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . own ing Plugin Ġ= Ġow ning Plugin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . name ĠĠĠĠĠĠĠĠ Ġ= Ġregistration Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . label ĠĠĠĠĠĠĠ Ġ= Ġregistration Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . aliases ĠĠĠĠĠ Ġ= Ġregistration . aliases . copyOf Range ( 1 , Ġregistration . aliases . size Ġ- Ġ 1 ). asList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . arg bounds ĠĠĠ Ġ= Ġregistration . bounds ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . usage ĠĠĠĠĠĠĠ Ġ= Ġregistration . help ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . player Only ĠĠ Ġ= Ġregistration . player Only ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t :: class . annotations . any Ġ{ Ġit Ġis ĠDescription Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc : ĠDescription Ġ= Ġt :: class . annotations . first Ġ{ Ġit Ġis ĠDescription Ġ} Ġas ĠDescription ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . description ĠĠĠĠĠĠĠĠ Ġ= Ġdesc . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcommand From Map ( command Map : ĠCommand Map , Ġcommand Name : ĠString ): ĠCommand ? Ġ= Ġcommand Map . get Command ( command Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Map Field : ĠField Ġ= ĠBu kkit . getServer (). java Class . getDeclared Field (" command Map ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Map Field . is Accessible Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Map : ĠCommand Map Ġ= Ġcommand Map Field . get ( Bu kkit . getServer ()) Ġas ĠCommand Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd From Map Ġ= Ġcommand From Map ( command Map , Ġregistration Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cmd From Map Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Warn (" Did Ġnot Ġregister Ġ\"$ registration Name \" Ġdue Ġto Ġalready Ġexisting Ġcommand ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Info (" Successfully Ġregistered Ġ\"$ registration Name \" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Map . register ( t . label , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistered Commands . add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Se vere (" Invalid Ġregistration Ġfor Ġcommand Ġclass Ġencountered : Ġ\" ${ t :: class . simple Name }\" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ }