@@ -11,9 +11,9 @@ import me.scoretwo.utils.sender.GlobalSender
1111
1212class ScriptCommand : SimpleCommand (arrayOf("script")) {
1313
14- init {
15- scriptCommand = this
16- }
14+ override var description = " 操作脚本重载/评估/运行. "
15+
16+ override var moreArgs : Array < String > ? = arrayOf()
1717
1818 private val runCommand = nextBuilder()
1919 .alias(" run" )
@@ -22,21 +22,30 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
2222 override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
2323 val noReturn = if (args.isEmpty()) false else args[args.size - 1 ] == " :s"
2424
25- val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 4 ]] ? : let {
25+ val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 2 ]] ? : let {
2626 // 似乎不会发生?
27- sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 4 ]} §7! 请检查名称." )
27+ sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 2 ]} §7! 请检查名称." )
28+ return true
29+ }
30+ if (args.isEmpty()) {
31+ sender.sendMessage(FormatHeader .ERROR , " 正确用法: /${parents.joinToString(" " )} §f<${script.texts.keys.joinToString(" /" )} > §7<${script.option.main} > <args...>" )
32+ return true
33+ }
34+ val sign = args[0 ]
35+ if (! script.texts.keys.contains(sign)) {
36+ sender.sendMessage(FormatHeader .ERROR , " 指定的拓展标识 §6$sign §7不正确! 正确用法: /${parents.joinToString(" " )} §f<${script.texts.keys.joinToString(" /" )} > §7<${script.option.main} > <args...>" )
2837 return true
2938 }
3039
3140 val args0: Array <Any ?> = when {
3241 args.size < 2 -> arrayOf()
33- noReturn -> arrayOf(* args.sliceArray(1 .. args.size - 2 ))
34- else -> arrayOf(* args.sliceArray(1 until args.size))
42+ noReturn -> arrayOf(* args.sliceArray(2 .. args.size - 2 ))
43+ else -> arrayOf(* args.sliceArray(2 until args.size))
3544 }
3645
3746 val result = when {
38- args.isEmpty() -> script.execute(parents[parents.size - 3 ] , sender)
39- args.size >= 2 -> script.execute(parents[parents.size - 3 ] , sender, args[0 ], args0)
47+ args.isEmpty() -> script.execute(sign , sender)
48+ args.size >= 2 -> script.execute(sign , sender, args[1 ], args0)
4049 else -> null
4150 }
4251
@@ -52,19 +61,28 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
5261 .build()
5362
5463 private val evaluateCommand = nextBuilder()
55- .alias(" evaluate " )
64+ .alias(" eval " )
5665 .description(" 评估这个脚本并获得返回值(:s 加在最后不返回消息)" )
5766 .executor(object : Executors {
5867 override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
5968 val noReturn = if (args.isEmpty()) false else args[args.size - 1 ] == " :s"
6069
61- val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 4 ]] ? : let {
70+ val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 2 ]] ? : let {
6271 // 似乎不会发生?
63- sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 4 ]} §7! 请检查名称." )
72+ sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 2 ]} §7! 请检查名称." )
73+ return true
74+ }
75+ if (args.isEmpty()) {
76+ sender.sendMessage(FormatHeader .ERROR , " 正确用法: /${parents.joinToString(" " )} §f<${script.texts.keys.joinToString(" /" )} >" )
77+ return true
78+ }
79+ val sign = args[0 ]
80+ if (! script.texts.keys.contains(sign)) {
81+ sender.sendMessage(FormatHeader .ERROR , " 指定的拓展标识 §6$sign §7不正确! 正确用法: /${parents.joinToString(" " )} §f<${script.texts.keys.joinToString(" /" )} >" )
6482 return true
6583 }
6684
67- val result = script.eval(parents[parents.size - 3 ] , sender)
85+ val result = script.eval(sign , sender)
6886
6987 if (! noReturn) {
7088 sender.sendMessage(FormatHeader .INFO , " 脚本 §b${script.name} §7的评估结果: §b${result} " )
@@ -82,9 +100,9 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
82100 .description(" 重新载入这个脚本" )
83101 .execute(object : CommandExecutor {
84102 override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
85- val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 4 ]] ? : let {
103+ val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 2 ]] ? : let {
86104 // 似乎不会发生?
87- sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 4 ]} §7! 请检查名称." )
105+ sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 2 ]} §7! 请检查名称." )
88106 return true
89107 }
90108
@@ -100,31 +118,31 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
100118 .description(" 显示有关这个脚本的信息" )
101119 .execute(object : CommandExecutor {
102120 override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
103- val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 4 ]] ? : let {
121+ val script = FastScript .instance.scriptManager.scripts[parents[parents.size - 2 ]] ? : let {
104122 // 似乎不会发生?
105- sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 4 ]} §7! 请检查名称." )
123+ sender.sendMessage(FormatHeader .WARN , " 没有找到目标脚本 §c${parents[parents.size - 2 ]} §7! 请检查名称." )
106124 return true
107125 }
108126
109- sender.sendMessage(FormatHeader .INFO , StringBuilder (" 脚本 §b${script.name} §7的相关信息:" ).also { builder ->
127+ sender.sendMessage(FormatHeader .INFO , StringBuilder (" 脚本 §b${script.name} §7的相关信息:\n " ).also { builder ->
110128 script.description.version?.also {
111- builder.append(" §7版本: §2$it \n " )
129+ builder.append(" §3§l* § 7版本: §2$it \n " )
112130 }
113131 script.description.authors.let {
114132 if (it.isEmpty())
115133 return @let
116- builder.append(" §7编写者: §3${it.joinToString(" §7, §3" )} \n " )
134+ builder.append(" §3§l* § 7编写者: §3${it.joinToString(" §7, §3" )} \n " )
117135 }
118136 script.description.description?.also {
119- builder.append(" §7描述: §f$it \n " )
137+ builder.append(" §3§l* § 7描述: §f$it \n " )
120138 }
121- builder.append(" §7主函数: §a${script.description.main} \n " )
122- script.bindExpansions.let { expansions ->
139+ builder.append(" §3§l* § 7主函数: §a${script.description.main} \n " )
140+ script.bindExpansions() .let { expansions ->
123141 if (expansions.isEmpty())
124142 return @let
125143 val signs = mutableListOf<String >().also { signs -> expansions.forEach { expansion -> signs.add(expansion.sign) } }
126144
127- builder.append(" §7拓展挂钩 : §6${signs.joinToString(" §7, §6" )} \n " )
145+ builder.append(" §3§l* §7拓展 : §6${signs.joinToString(" §7, §6" )} \n " )
128146 }
129147 }.toString())
130148 return true
@@ -138,6 +156,15 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
138156 val subCommand = nextBuilder()
139157 .alias(it.value.description.name)
140158 .description(" 一个自定义脚本" )
159+ .execute(object : CommandExecutor {
160+ override fun execute (sender : GlobalSender , parents : Array <String >, args : Array <String >): Boolean {
161+ if (args.isEmpty()) {
162+ infoCommand.execute(sender, arrayOf(* parents, " info" ), arrayOf())
163+ return true
164+ }
165+ return false
166+ }
167+ })
141168 .subCommand(runCommand)
142169 .subCommand(evaluateCommand)
143170 .subCommand(reloadCommand)
@@ -148,5 +175,4 @@ class ScriptCommand: SimpleCommand(arrayOf("script")) {
148175 }
149176
150177
151- }
152- lateinit var scriptCommand: ScriptCommand
178+ }
0 commit comments