Skip to content

Commit c601d1d

Browse files
committed
Last update.
1 parent 1e02312 commit c601d1d

File tree

11 files changed

+90
-47
lines changed

11 files changed

+90
-47
lines changed

src/main/kotlin/me/scoretwo/fastscript/FastScript.kt

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package me.scoretwo.fastscript
33
import me.scoretwo.fastscript.api.plugin.FastScriptMain
44
import me.scoretwo.fastscript.api.script.ScriptManager
55
import me.scoretwo.fastscript.commands.CommandManager
6+
import me.scoretwo.fastscript.config.MessageConfig
7+
import me.scoretwo.fastscript.config.SettingConfig
68
import java.io.File
79

810
class FastScript(main: FastScriptMain) {
@@ -18,7 +20,7 @@ class FastScript(main: FastScriptMain) {
1820
fun hasPermission(sender: Any, string: String) = main.hasPermission(sender, string)
1921
fun setPlaceholder(player: Any, string: String) = main.setPlaceholder(player, string)
2022
fun sendMessage(sender: Any, string: String, colorIndex: Boolean) = main.sendMessage(sender, string, colorIndex)
21-
fun sendMessage(sender: Any, strings: Array<String>, colorIndex: Boolean) = strings.forEach { main.sendMessage(sender, it, colorIndex) }
23+
fun translateStringColors(string: String): String = main.translateStringColors(string)
2224

2325
init {
2426
CONSOLE = main.CONSOLE
@@ -72,6 +74,13 @@ class FastScript(main: FastScriptMain) {
7274
companion object {
7375
lateinit var instance: FastScript
7476
var CONSOLE = Any()
77+
78+
fun setBootstrap(main: FastScriptMain) {
79+
/*if (initialized) {
80+
throw UnsupportedOperationException("Cannot redefine instance")
81+
}*/
82+
instance = FastScript(main)
83+
}
7584
/*
7685
@JvmStatic
7786
fun main(args: Array<out String>) {
@@ -136,23 +145,6 @@ class FastScript(main: FastScriptMain) {
136145
println()
137146
}
138147
*/
139-
140-
fun sendMessage(sender: Any, string: String, colorIndex: Boolean = false) {
141-
instance.sendMessage(sender, string, colorIndex)
142-
}
143-
fun sendMessage(sender: Any, strings: Array<String>, colorIndex: Boolean = false) {
144-
instance.sendMessage(sender, strings, colorIndex)
145-
}
146-
147-
fun setBootstrap(main: FastScriptMain) {
148-
if (instance != null) {
149-
throw UnsupportedOperationException("Cannot redefine instance")
150-
}
151-
152-
instance = FastScript(main)
153-
}
154-
155-
156148
}
157149

158150
}
@@ -163,12 +155,25 @@ fun Any.hasPermission(string: String): Boolean {
163155
return FastScript.instance.hasPermission(this, string)
164156
}
165157

158+
159+
fun Any.sendMessage(formatHeader: FormatHeader, strings: Array<String>, colorIndex: Boolean = false) {
160+
strings.forEach {
161+
this.sendMessage(formatHeader, it, colorIndex)
162+
}
163+
}
164+
165+
fun Any.sendMessage(formatHeader: FormatHeader, string: String, colorIndex: Boolean = false) {
166+
this.sendMessage("${SettingConfig.instance.defaultLanguage.getLowerCaseYAMLObject("FORMAT-HEADER").getLowerCaseString(formatHeader.name)}${string}", colorIndex)
167+
}
168+
166169
fun Any.sendMessage(string: String, colorIndex: Boolean = false) {
167170
FastScript.instance.sendMessage(this, string, colorIndex)
168171
}
169172

170173
fun Any.sendMessage(strings: Array<String>, colorIndex: Boolean = false) {
171-
FastScript.instance.sendMessage(this, strings, colorIndex)
174+
strings.forEach {
175+
this.sendMessage(it, colorIndex)
176+
}
172177
}
173178

174179
fun String.setPlaceholder(sender: Any): String {

src/main/kotlin/me/scoretwo/fastscript/api/plugin/FastScriptMain.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ interface FastScriptMain {
2121

2222
fun hasPermission(sender: Any, string: String): Boolean
2323

24+
fun translateStringColors(string: String): String
2425

2526
}

src/main/kotlin/me/scoretwo/fastscript/api/script/Script.kt

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package me.scoretwo.fastscript.api.script
22

33
import me.scoretwo.fastscript.FastScript
4+
import me.scoretwo.fastscript.FormatHeader
45
import me.scoretwo.fastscript.api.script.ScriptImport.Companion.TYPE.*
56
import me.scoretwo.fastscript.api.yaml.YAMLObject
67
import me.scoretwo.fastscript.config.SettingConfig
8+
import me.scoretwo.fastscript.sendMessage
9+
import me.scoretwo.fastscript.utils.StreamUtils
710
import me.scoretwo.fastscript.utils.Utils
811
import java.io.File
912
import java.io.FileInputStream
1013
import java.io.InputStream
1114
import javax.script.ScriptEngine
1215
import javax.script.ScriptEngineManager
16+
import javax.script.ScriptException
1317

1418
abstract class Script {
1519

@@ -40,6 +44,15 @@ abstract class Script {
4044
onReload()
4145
}
4246

47+
fun directEval(): String? {
48+
return try {
49+
scriptEngine.eval(StreamUtils.toString(inputStream)).toString()
50+
} catch (e: ScriptException) {
51+
e.printStackTrace()
52+
null
53+
}
54+
}
55+
4356
fun onReload() {
4457
if (scriptFile == null) return
4558
Utils.saveDefaultResource(scriptFile!!, inputStream)
@@ -56,34 +69,34 @@ abstract class Script {
5669
when (it.type) {
5770
INIT -> {
5871
this.scriptEngine.put(
59-
it.name,
60-
Utils.getObjectInit(this, Utils.findClass(this, it.obj!!.clazz)!!, it.obj.args)
72+
it.name,
73+
Utils.getObjectInit(this, Utils.findClass(this, it.obj!!.clazz)!!, it.obj.args)
6174
)
6275
}
6376
OBJECT -> {
6477
this.scriptEngine.put(
65-
it.name,
66-
Utils.getObjectMethodResults(
67-
this,
68-
Utils.findClass(this, it.obj!!.clazz)!!,
69-
it.obj.args,
70-
it.met!!.name,
71-
it.met.args
72-
)
78+
it.name,
79+
Utils.getObjectMethodResults(
80+
this,
81+
Utils.findClass(this, it.obj!!.clazz)!!,
82+
it.obj.args,
83+
it.met!!.name,
84+
it.met.args
85+
)
7386
)
7487
}
7588
STATIC -> {
7689
this.scriptEngine.put(
77-
it.name,
78-
Utils.getStaticMethodResults(
79-
this,
80-
Utils.findClass(this, it.obj!!.clazz)!!,
81-
it.met!!.name
82-
)
90+
it.name,
91+
Utils.getStaticMethodResults(
92+
this,
93+
Utils.findClass(this, it.obj!!.clazz)!!,
94+
it.met!!.name
95+
)
8396
)
8497
}
8598
else -> {
86-
FastScript.sendMessage(FastScript.CONSOLE, "§7[§2Fast§aScript§7] §cERROR §8| §7脚本 §c$name §7元素 §c${it.name} §7导入失败, 无法识别该元素的形式.")
99+
FastScript.CONSOLE.sendMessage(FormatHeader.ERROR,"脚本 §c$name §7元素 §c${it.name} §7导入失败, 无法识别该元素的形式.")
87100
}
88101
}
89102
}

src/main/kotlin/me/scoretwo/fastscript/bukkit/BukkitSection.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package me.scoretwo.fastscript.bukkit
22

33
import me.scoretwo.fastscript.FastScript
4+
import me.scoretwo.fastscript.FormatHeader
45
import me.scoretwo.fastscript.api.plugin.FastScriptMain
56
import me.scoretwo.fastscript.bukkit.hooks.PlaceholderAPIHook
7+
import me.scoretwo.fastscript.sendMessage
68
import net.md_5.bungee.api.ChatColor
79
import net.md_5.bungee.api.ChatMessageType
810
import net.md_5.bungee.api.chat.TextComponent
@@ -55,13 +57,17 @@ class BukkitSection: JavaPlugin(), FastScriptMain {
5557
}
5658

5759
override fun sendMessage(sender: Any, string: String, colorIndex: Boolean) {
58-
asSender(sender)?.sendMessage(if (colorIndex) ChatColor.translateAlternateColorCodes('&', string) else string)
60+
asSender(sender)?.sendMessage(if (colorIndex) translateStringColors(string) else string)
5961
}
6062

6163
override fun hasPermission(sender: Any, string: String): Boolean {
6264
return asSender(sender)?.hasPermission(string)!!
6365
}
6466

67+
override fun translateStringColors(string: String): String {
68+
return ChatColor.translateAlternateColorCodes('&', string)
69+
}
70+
6571
fun asSender(sender: Any): CommandSender? {
6672
return sender as? CommandSender
6773
}
@@ -70,7 +76,7 @@ class BukkitSection: JavaPlugin(), FastScriptMain {
7076
if (PAPIHook == null) {
7177
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
7278
PAPIHook = PlaceholderAPIHook(this)
73-
FastScript.sendMessage(CONSOLE,"&7[&2Fast&aScript&7] &6HOOKED &8| &2成功挂钩 PlaceholderAPI!")
79+
FastScript.CONSOLE.sendMessage(FormatHeader.HOOKED,"成功挂钩 §ePlaceholderAPI!")
7480
}
7581
}
7682
}

src/main/kotlin/me/scoretwo/fastscript/bukkit/hooks/PlaceholderAPIHook.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class PlaceholderAPIHook(val javaPlugin: JavaPlugin): PlaceholderExpansion() {
2828
}
2929

3030
companion object {
31-
3231
fun setPlaceholder(player: Player?, string: String): String = PlaceholderAPI.setPlaceholders(player, string)
3332
}
3433
}

src/main/kotlin/me/scoretwo/fastscript/bungee/BungeeSection.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ class BungeeSection: Plugin(), FastScriptMain {
3939
return string
4040
}
4141

42+
override fun translateStringColors(string: String): String {
43+
return ChatColor.translateAlternateColorCodes('&', string)
44+
}
45+
4246
override fun sendMessage(sender: Any, string: String, colorIndex: Boolean) {
43-
asSender(sender)?.sendMessage(if (colorIndex) ChatColor.translateAlternateColorCodes('&', string) else string)
47+
asSender(sender)?.sendMessage(if (colorIndex) translateStringColors(string) else string)
4448
}
4549

4650
override fun hasPermission(sender: Any, string: String): Boolean {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package me.scoretwo.fastscript.commands
2+
3+
class ScriptCommand: SubCommand("script") {
4+
override fun execute(sender: Any, args: Array<String>) {
5+
TODO("Not yet implemented")
6+
}
7+
}

src/main/kotlin/me/scoretwo/fastscript/utils/Utils.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package me.scoretwo.fastscript.utils
22

33
import me.scoretwo.fastscript.FastScript
4+
import me.scoretwo.fastscript.FormatHeader
45
import me.scoretwo.fastscript.api.script.Script
6+
import me.scoretwo.fastscript.sendMessage
57
import java.io.File
68
import java.io.InputStream
79
import java.lang.reflect.InvocationTargetException
@@ -19,7 +21,8 @@ object Utils {
1921
Class.forName(target)
2022
} catch (e: ClassNotFoundException) {
2123
e.printStackTrace()
22-
FastScript.sendMessage(FastScript.CONSOLE,"§7[§2Fast§aScript§7] §cERROR §8| §c脚本 §4${script.name} 没有找到类 ${target}, 依赖于该类的方法将不会起作用!")
24+
FastScript.CONSOLE.sendMessage(FormatHeader.ERROR, "脚本 §c${script.name} §7没有找到类 §c${target}§7, 错误如下:")
25+
FastScript.CONSOLE.sendMessage("§7${e.message}")
2326
null
2427
}
2528
}
@@ -31,8 +34,8 @@ object Utils {
3134
constructor.newInstance(args)
3235
} catch (e: Exception) {
3336
e.printStackTrace()
34-
FastScript.sendMessage(FastScript.CONSOLE,"§7[§2Fast§aScript§7] §cERROR §8| §7脚本 §c${script.name} §7执行初始化时发生错误, 错误如下:")
35-
FastScript.sendMessage(FastScript.CONSOLE, "§7${e.message}")
37+
FastScript.CONSOLE.sendMessage(FormatHeader.ERROR, "脚本 §c${script.name} §7执行初始化时发生错误, 错误如下:")
38+
FastScript.CONSOLE.sendMessage("§7${e.message}")
3639
null
3740
}
3841
}
@@ -80,8 +83,8 @@ object Utils {
8083
return method.invoke(obj, args)
8184
} catch (e: Exception) {
8285
e.printStackTrace()
83-
FastScript.sendMessage(FastScript.CONSOLE,"§7[§2Fast§aScript§7] §cERROR §8| §7脚本 §c${script.name} §7访问方法 §c${method.name} §7时发生错误, 错误如下:")
84-
FastScript.sendMessage(FastScript.CONSOLE, "§7${e.message}")
86+
FastScript.CONSOLE.sendMessage(FormatHeader.ERROR, "脚本 §c${script.name} §7访问方法 §c${method.name} §7时发生错误, 错误如下:")
87+
FastScript.CONSOLE.sendMessage("§7${e.message}")
8588
}
8689
return null
8790
}

src/main/resources/lang/zh_CN.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FORMAT-HEADER:
2+
INFO: '&7[&2Fast&aScript&7] &b信息 &8| &7'
3+
WARN: '&7[&2Fast&aScript&7] &e警告 &8| &7'
4+
ERROR: '&7[&2Fast&aScript&7] &c错误 &8| &7'
5+
TIPS: '&7[&2Fast&aScript&7] &2提示 &8| &7'
6+
HOOKED: '&7[&2Fast&aScript&7] &6挂钩 &8| &7'
7+
DEBUG: '&7[&2Fast&aScript&7] &3调试 &8| &7'

0 commit comments

Comments
 (0)