@@ -10,124 +10,123 @@ import com.lambda.brigadier.get
1010import com.lambda.brigadier.optional
1111import com.lambda.brigadier.required
1212import com.lambda.command.CommandManager.prefix
13- import com.lambda.command.CommandManager.register
1413import com.lambda.command.LambdaCommand
1514import com.lambda.module.ModuleRegistry
1615import com.lambda.threading.runSafe
1716import com.lambda.util.Communication.info
17+ import com.lambda.util.Communication.joinToText
1818import com.lambda.util.Communication.warn
1919import com.lambda.util.StringUtils
20+ import com.lambda.util.primitives.extension.CommandBuilder
2021import com.lambda.util.text.*
2122import com.lambda.util.text.ClickEvents.suggestCommand
2223import java.awt.Color
2324
24- object ModuleCommand : LambdaCommand {
25- override val name = " module"
25+ object ModuleCommand : LambdaCommand(
26+ name = " module" ,
27+ aliases = setOf("mod"),
28+ usage = " module <module name> [enable]" ,
29+ description = " Enable or disable a module"
30+ ) {
31+ override fun CommandBuilder.create () {
32+ executeWithResult {
33+ val enabled = ModuleRegistry .modules.filter {
34+ it.isEnabled
35+ }
2636
27- init {
28- register(name, " mod" ) {
29- executeWithResult {
30- val enabled = ModuleRegistry .modules.filter {
31- it.isEnabled
32- }
37+ if (enabled.isEmpty()) {
38+ info(" No modules are enabled" )
39+ return @executeWithResult success()
40+ }
3341
34- if (enabled.isEmpty()) {
35- info( " No modules are enabled " )
36- return @executeWithResult success( )
42+ this @ModuleCommand.info(buildText {
43+ styled( Color . GRAY ) {
44+ literal( " Enabled Modules: " )
3745 }
38-
39- this @ModuleCommand.info(buildText {
40- styled(Color .GRAY ) {
41- literal(" Enabled Modules: " )
42- }
43- enabled.forEachIndexed { index, module ->
44- if (index != 0 ) {
45- literal(" , " )
46- }
47- clickEvent(suggestCommand(" $prefix${input} ${module.name} " )) {
48- styled(if (module.isEnabled) Color .GREEN else Color .RED ) {
49- literal(module.name)
50- }
46+ joinToText(enabled) {
47+ clickEvent(suggestCommand(" $prefix${input} ${it.name} " )) {
48+ styled(if (it.isEnabled) Color .GREEN else Color .RED ) {
49+ literal(it.name)
5150 }
5251 }
53- })
54- return @executeWithResult success()
55- }
52+ }
53+ })
54+ return @executeWithResult success()
55+ }
5656
57- required(string(" module name" )) { moduleName ->
58- suggests { _, builder ->
59- ModuleRegistry .modules.map {
60- it.name
61- }.forEach {
62- builder.suggest(it)
63- }
64- builder.buildFuture()
57+ required(string(" module name" )) { moduleName ->
58+ suggests { _, builder ->
59+ ModuleRegistry .modules.map {
60+ it.name
61+ }.forEach {
62+ builder.suggest(it)
6563 }
66- optional(boolean(" enable" )) { enable ->
67- executeWithResult {
68- val name = this [moduleName].value()
69- val module = ModuleRegistry .modules.find {
70- it.name.equals(name, true )
71- } ? : return @executeWithResult failure(buildText {
72- styled(Color .RED ) {
73- literal(" Module " )
64+ builder.buildFuture()
65+ }
66+ optional(boolean(" enable" )) { enable ->
67+ executeWithResult {
68+ val name = moduleName().value()
69+ val module = ModuleRegistry .modules.find {
70+ it.name.equals(name, true )
71+ } ? : return @executeWithResult failure(buildText {
72+ styled(Color .RED ) {
73+ literal(" Module " )
74+ styled(Color .GRAY ) {
75+ literal(" $name " )
76+ }
77+ literal(" not found!" )
78+ }
79+ val similarModules = StringUtils .findSimilarStrings(
80+ name,
81+ ModuleRegistry .moduleNames,
82+ 3
83+ )
84+ if (similarModules.isEmpty()) return @buildText
85+
86+ literal(" Did you mean " )
87+ similarModules.forEachIndexed { index, s ->
88+ if (index != 0 ) {
89+ literal(" , " )
90+ }
91+ clickEvent(suggestCommand(" $prefix${input.replace(name, s)} " )) {
7492 styled(Color .GRAY ) {
75- literal(" $name " )
93+ literal(s )
7694 }
77- literal(" not found!" )
7895 }
79- val similarModules = StringUtils .findSimilarStrings(
80- name,
81- ModuleRegistry .moduleNames,
82- 3
83- )
84- if (similarModules.isEmpty()) return @buildText
96+ }
97+ literal(" ?" )
98+ })
8599
86- literal( " Did you mean " )
87- similarModules.forEachIndexed { index, s ->
88- if (index != 0 ) {
89- literal( " , " )
90- }
91- clickEvent(suggestCommand( " $prefix${input.replace(name, s)} " )) {
100+ runSafe {
101+ if (enable == null ) {
102+ module.toggle()
103+ } else {
104+ if (enable().value() == module.isEnabled) {
105+ this @ModuleCommand.warn(buildText {
92106 styled(Color .GRAY ) {
93- literal(s)
107+ literal(" $name already " )
108+ literal(if (module.isEnabled) " enabled" else " disabled" )
94109 }
95- }
110+ })
111+ return @runSafe success()
96112 }
97- literal(" ?" )
98- })
99113
100- runSafe {
101- if (enable == null ) {
102- module.toggle()
114+ if (enable().value()) {
115+ module.enable()
103116 } else {
104- if (enable().value() == module.isEnabled) {
105- this @ModuleCommand.warn(buildText {
106- styled(Color .GRAY ) {
107- literal(" $name already " )
108- literal(if (module.isEnabled) " enabled" else " disabled" )
109- }
110- })
111- return @runSafe success()
112- }
113-
114- if (enable().value()) {
115- module.enable()
116- } else {
117- module.disable()
118- }
117+ module.disable()
119118 }
120- this @ModuleCommand.info(buildText {
121- styled( Color . GRAY ) {
122- literal( " $name " )
123- }
124- styled( if (module.isEnabled) Color . GREEN else Color . RED ) {
125- literal (if (module.isEnabled) " enabled " else " disabled " )
126- }
127- })
128- success( )
129- } ? : failure( " Failed to ${ if (module.isEnabled) " enable " else " disable " } module $name " )
130- }
119+ }
120+ this @ModuleCommand.info(buildText {
121+ styled( Color . GRAY ) {
122+ literal( " $name " )
123+ }
124+ styled (if (module.isEnabled) Color . GREEN else Color . RED ) {
125+ literal( if (module.isEnabled) " enabled " else " disabled " )
126+ }
127+ } )
128+ success( )
129+ } ? : failure( " Failed to ${ if (module.isEnabled) " enable " else " disable " } module $name " )
131130 }
132131 }
133132 }
0 commit comments