package Ġtab ool ib . platform Ċ Ċ import Ġcn . n uk kit . Server Ċ import Ġcn . n uk kit . command . Command Ċ import Ġcn . n uk kit . command . Command Sender Ċ import Ġcn . n uk kit . command . data . Command Data Ċ import Ġtab ool ib . common . platform . Aw ake Ċ import Ġtab ool ib . common . platform . Platform Ċ import Ġtab ool ib . common . platform . Platform Side Ċ import Ġtab ool ib . common . platform . Proxy Command Sender Ċ import Ġtab ool ib . common . platform . command . Command Builder Ċ import Ġtab ool ib . common . platform . command . Command Comp leter Ċ import Ġtab ool ib . common . platform . command . Command Executor Ċ import Ġtab ool ib . common . platform . command . Command Structure Ċ import Ġtab ool ib . common . platform . function . adapt Command Sender Ċ import Ġtab ool ib . common . platform . service . Platform Command Ċ import Ġtab ool ib . common . reflect . Ref lex . Companion . getProperty Ċ Ċ /** Ċ Ġ* ĠTab oo Lib Ċ Ġ* Ġtab ool ib . platform . N uk kit Command Ċ Ġ* Ċ Ġ* Ġ@ author Ġsky Ċ Ġ* Ġ@ since Ġ 2 0 2 1 / 7 / 3 Ġ 1 : 1 5 Ġä¸Ĭ åįĪ Ċ Ġ*/ Ċ @ Aw ake Ċ @ Platform Side ([ Platform . NU KK IT ]) Ċ class ĠN uk kit Command Ġ: ĠPlatform Command Ġ{ ĊĊĠĠĠ Ġval Ġplugin : ĠN uk kit Plugin ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠN uk kit Plugin . getInstance () ĊĊĠĠĠ Ġval Ġknown Commands Ġ= ĠArrayList < Command Structure >() ĊĊĠĠĠ Ġval Ġregistered Commands Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠServer . getInstance (). command Registry . getProperty < Mutable Map < String , ĠCommand >> (" registered Commands ") !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Command ( ĊĠĠĠĠĠĠĠ Ġcommand : ĠCommand Structure , ĊĠĠĠĠĠĠĠ Ġexecutor : ĠCommand Executor , ĊĠĠĠĠĠĠĠ Ġcomp leter : ĠCommand Comp leter , ĊĠĠĠĠĠĠĠ Ġcommand Builder : ĠCommand Builder . Command Base . () Ġ-> ĠUnit , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 2 0 2 1 / 7 / 1 5 ĠNot ĠSupport ĠSuggest ions ĊĠĠĠĠĠĠĠ Ġval Ġregister Command Ġ= Ġobject Ġ: ĠCommand ( command . name , ĠCommand Data . builder ( command . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ( command . description . if Empty Ġ{ Ġcommand . name Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Usage Message ( command . usage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Permission ( command . permission . if Empty Ġ{ Ġ"${ plugin . name }. command . use " Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Permission Message ( command . permission Message . if Empty Ġ{ ĠPlatform Command . default Permission Message Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute ( sender : ĠCommand Sender , Ġcommand Label : ĠString , Ġargs : ĠArray < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexecutor . execute ( adapt Command Sender ( sender ), Ġcommand , Ġcommand Label , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġknown Commands Ġ+= Ġcommand ĊĠĠĠĠĠĠĠ Ġregistered Commands [ command . name ] Ġ= Ġregister Command ĊĠĠĠĠĠĠĠ Ġcommand . aliases . forEach Ġ{ Ġregistered Commands [ it ] Ġ= Ġregister Command Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Command ( command : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregistered Commands . remove ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Commands () Ġ{ ĊĠĠĠĠĠĠĠ Ġknown Commands . forEach Ġ{ Ġregistered Commands . remove ( it . name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunknown Command ( sender : ĠProxy Command Sender , Ġcommand : ĠString , Ġstate : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġsender . cast < Command Sender >(). sendMessage (" Â§ c Unknown Ġor Ġincomplete Ġcommand , Ġsee Ġbelow Ġfor Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġsender . cast < Command Sender >(). sendMessage (" Â§ c Incorrect Ġargument Ġfor Ġcommand ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsender . cast < Command Sender >(). sendMessage ("$ command Â§ r Â§ c Â§ o < -- [ HERE ]") ĊĠĠĠ Ġ} Ċ }