/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 1 9 ĠThe Ġlg ou 2 w Ġ< lg ou 2 w @ hotmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . lg ou 2 w . ld k . bukkit . cmd Ċ Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġorg . bukkit . command . Command Sender Ċ import Ġjava . util . Collections Ċ Ċ /** Ċ Ġ* Ġ## ĠComp leter Ġ( è¡¥ åħ¨ åĻ¨ ) Ċ Ġ* Ċ Ġ* Ġ@ see Ġ[ Comp letes ] Ċ Ġ* Ġ@ author Ġlg ou 2 w Ċ Ġ*/ Ċ @ Functional Interface Ċ interface ĠComp leter Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ* ĠCalled Ġwhen Ġthe Ġparameter Ġneeds Ġto Ġbe ĠTAB Ġcompletion . ĊĠĠĠĠ Ġ* Ġ* Ġå½ĵ åıĤæķ° éľĢè¦ģ è¿Ľè¡Į ĠTAB Ġ è¡¥ åħ¨ æĹ¶ è°ĥçĶ¨ . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġparameter ĠExecutor Ġparameter . ĊĠĠĠĠ Ġ* Ġ@ param Ġparameter Ġæī§è¡Į åĻ¨ åıĤæķ° . ĊĠĠĠĠ Ġ* Ġ@ param Ġsender ĠExecutor . ĊĠĠĠĠ Ġ* Ġ@ param Ġsender Ġæī§è¡Į èĢħ . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠCompletion Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġ è¡¥ åħ¨ åĢ¼ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonComplete ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter : ĠCommand Executor . Parameter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠCommand Sender , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠ Ġ): ĠList < String >? ĊĊĠĠĠ Ġcompanion Ġobject ĠConstants Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* ĠAn Ġempty Ġcomp leter . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġè¡¨ç¤º ç©º çļĦ è¡¥ åħ¨ åĻ¨ . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠEMPTY Ġ= Ġobject Ġ: ĠComp leter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter : ĠCommand Executor . Parameter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠCommand Sender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* ĠIndic ate Ġthe Ġdefault Ġgeneric Ġtype Ġcomp leter . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġè¡¨ç¤º é»ĺè®¤ éĢļ çĶ¨ ç±»åŀĭ è¡¥ åħ¨ åĻ¨ . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT Ġ= Ġobject Ġ: ĠComp leter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter : ĠCommand Executor . Parameter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠCommand Sender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalias Ġ= Ġif Ġ( parameter . var arg Ġ== Ġnull ) Ġparameter . name Ġ?: Ġparameter . type . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġparameter . name Ġ?: Ġparameter . var arg . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( parameter . can Nullable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . var arg Ġ== Ġnull ) ĠCollections . singletonList (" [$ alias =${ parameter . def Value }] ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠCollections . singletonList (" [$ alias =${ parameter . def Value } ... ]") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . var arg Ġ== Ġnull ) ĠCollections . singletonList ("< $ alias >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠCollections . singletonList ("< $ alias ... >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . is Player Name Ġ&& ĠBu kkit . get Online Players (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Mutable List (). apply Ġ{ Ġadd All ( Comp letes . match Online Players ( sender , Ġvalue )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* ĠIndic ate Ġthe Ġplayer Ġ[ org . bukkit . entity . Player ] Ġtype Ġcomp leter . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġè¡¨ç¤º çİ© å®¶ Ġ[ org . bukkit . entity . Player ] Ġ ç±»åŀĭ è¡¥ åħ¨ åĻ¨ . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠP LAYER Ġ= Ġobject Ġ: ĠComp leter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter : ĠCommand Executor . Parameter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠCommand Sender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠComp letes . match Online Players ( sender , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* ĠIndic ate Ġthe Ġenum Ġ[ Enum ] Ġtype Ġcomp leter . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġè¡¨ç¤º æŀļ ä¸¾ Ġ[ Enum ] Ġ ç±»åŀĭ è¡¥ åħ¨ åĻ¨ . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠEN UM Ġ= Ġobject Ġ: ĠComp leter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter : ĠCommand Executor . Parameter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠCommand Sender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( parameter . type . is Enum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstants Ġ= Ġparameter . type . enum Constants ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstants . map Ġ{ Ġit Ġas ĠEnum < *> Ġ}. filter Ġ{ Ġenum Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenum . name . startsWith ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġenum Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenum . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* ĠIndic ate Ġthe Ġboolean Ġ[ Boolean ] Ġtype Ġcomp leter . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġè¡¨ç¤º å¸ĥ å°Ķ Ġ[ Boolean ] Ġ ç±»åŀĭ è¡¥ åħ¨ åĻ¨ . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠBOOLEAN Ġ= Ġobject Ġ: ĠComp leter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter : ĠCommand Executor . Parameter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠCommand Sender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalias Ġ= Ġif Ġ( parameter . var arg Ġ== Ġnull ) Ġparameter . name Ġ?: Ġ" Boolean " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġparameter . name Ġ?: Ġparameter . var arg . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter . is Nullable Ġ-> Ġ" null " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter . def Value Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . var arg Ġ== Ġnull ) Ġ" [$ alias =${ parameter . def Value }] " Ġelse Ġ" [$ alias =${ parameter . def Value } ... ]" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . var arg Ġ== Ġnull ) Ġ"< $ alias >" Ġelse Ġ"< $ alias ... >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( first , Ġ" false ", Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . startsWith ( value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ