1+ package me.scoretwo.fastscript.command.commands
2+
3+ import me.scoretwo.fastscript.FastScript
4+ import me.scoretwo.fastscript.api.format.FormatHeader
5+ import me.scoretwo.fastscript.command.SimpleCommand
6+ import me.scoretwo.fastscript.debug
7+ import me.scoretwo.fastscript.languages
8+ import me.scoretwo.fastscript.sendMessage
9+ import me.scoretwo.utils.command.executor.CommandExecutor
10+ import me.scoretwo.utils.command.executor.Executors
11+ import me.scoretwo.utils.sender.GlobalSender
12+
13+ /* *
14+ * @author Score2
15+ * @date 2021/2/22 17:34
16+ *
17+ * @project FastScript
18+ */
19+ class DebugCommand : SimpleCommand (arrayOf("debug", "test")) {
20+
21+ override var description = languages[" COMMAND-NEXUS.COMMANDS.DEBUG.DESCRIPTION" ]
22+
23+ override var subCommands = mutableListOf (
24+ nextBuilder().alias(" languages" , " language" )
25+ .description(" Debugging related to language." )
26+ .subCommand(
27+ nextBuilder().alias(" config" )
28+ .description(" Content related to configuration files." )
29+ .subCommand(
30+ nextBuilder().alias(" sections" )
31+ .description(" Print config all sections." )
32+ .execute(object : CommandExecutor {
33+ override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
34+ val name = if (args.isEmpty()) { languages.current.name } else { args[0 ] }
35+ if (! languages.languages.containsKey(name)) {
36+ return false
37+ }
38+ languages.languages[name]?.config?.getKeys(true )?.forEach {
39+ sender.sendMessage(" §7$it : §f${languages.languages[name]?.get(it)} " )
40+ }
41+ return true
42+ }
43+ }).also { builder ->
44+ languages.languages.forEach {
45+ builder.customCommand(it.key, null , " Print ${it.key} 's sections" )
46+ }
47+ }
48+ )
49+ .subCommand(
50+ nextBuilder().alias(" get" )
51+ .description(" Get language content through nodes." )
52+ .executor(object : Executors {
53+ override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
54+ val path = args.joinToString(" " )
55+ if (! languages.current.config.contains(path)) {
56+ sender.sendMessage(" Section $path not found" )
57+ return true
58+ }
59+ if (languages.current.config.isList(path)) {
60+ sender.sendMessage(" $path :" )
61+ languages.current.config.getStringList(path).forEach {
62+ sender.sendMessage(it)
63+ }
64+ sender.sendMessage()
65+ } else {
66+ sender.sendMessage(" $path : ${languages.current[path]} " )
67+ }
68+
69+ return true
70+ }
71+
72+ override fun tabComplete (sender : GlobalSender , parents : Array <String >, args : Array <String >): MutableList <String >? {
73+ return languages.current.config.getKeys(true )?.toMutableList()
74+ }
75+ })
76+ )
77+ )
78+ .build(),
79+ nextBuilder().alias(" enable" )
80+ .description(" Enable debug mode." )
81+ .execute(object : CommandExecutor {
82+ override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
83+ debug = true
84+ sender.sendMessage(FormatHeader .DEBUG , " Debug mode enabled. The server will start sending messages with debug." )
85+ return true
86+ }
87+ })
88+ .build(),
89+ nextBuilder().alias(" disable" )
90+ .description(" Disable debug mode." )
91+ .execute(object : CommandExecutor {
92+ override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
93+ debug = false
94+ sender.sendMessage(FormatHeader .INFO , " Debug mode disabled." )
95+ return true
96+ }
97+ })
98+ .build()
99+ )
100+
101+ }
0 commit comments