Skip to content

Commit 1e02312

Browse files
committed
Update Language(part).
1 parent 7b2c732 commit 1e02312

File tree

13 files changed

+141
-14
lines changed

13 files changed

+141
-14
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
group 'me.scoretwo'
77
version '0.11'
88

9-
defaultTasks 'clean', 'build', 'test', 'jar'
9+
defaultTasks 'clean', 'build', 'test', 'shadowJar'
1010

1111
repositories {
1212
jcenter()

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

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

3-
import com.andreapivetta.kolor.*
43
import me.scoretwo.fastscript.api.plugin.FastScriptMain
54
import me.scoretwo.fastscript.api.script.ScriptManager
65
import me.scoretwo.fastscript.commands.CommandManager
@@ -16,13 +15,14 @@ class FastScript(main: FastScriptMain) {
1615
val dataFolder = main.getDataFolder()
1716
val classLoader = main.getPluginClassLoader()
1817

19-
18+
fun hasPermission(sender: Any, string: String) = main.hasPermission(sender, string)
2019
fun setPlaceholder(player: Any, string: String) = main.setPlaceholder(player, string)
2120
fun sendMessage(sender: Any, string: String, colorIndex: Boolean) = main.sendMessage(sender, string, colorIndex)
2221
fun sendMessage(sender: Any, strings: Array<String>, colorIndex: Boolean) = strings.forEach { main.sendMessage(sender, it, colorIndex) }
2322

2423
init {
2524
CONSOLE = main.CONSOLE
25+
printLogo()
2626
}
2727

2828
/**
@@ -37,6 +37,7 @@ class FastScript(main: FastScriptMain) {
3737
main.onReload()
3838
initInternalScripts()
3939
scriptManager.loadScripts()
40+
commandManager.initCommands()
4041
}
4142

4243
/**
@@ -65,7 +66,7 @@ class FastScript(main: FastScriptMain) {
6566
it[index] = String(line).replaceFirst(replace, "§${arrayOf('9', 'b', '3').random()}$replace§8")
6667
}
6768
}
68-
sendMessage(CONSOLE, it, false)
69+
CONSOLE.sendMessage(it)
6970
}
7071

7172
companion object {
@@ -154,4 +155,22 @@ class FastScript(main: FastScriptMain) {
154155

155156
}
156157

158+
}
159+
160+
enum class FormatHeader { INFO, WARN, ERROR, TIPS, HOOKED, DEBUG }
161+
162+
fun Any.hasPermission(string: String): Boolean {
163+
return FastScript.instance.hasPermission(this, string)
164+
}
165+
166+
fun Any.sendMessage(string: String, colorIndex: Boolean = false) {
167+
FastScript.instance.sendMessage(this, string, colorIndex)
168+
}
169+
170+
fun Any.sendMessage(strings: Array<String>, colorIndex: Boolean = false) {
171+
FastScript.instance.sendMessage(this, strings, colorIndex)
172+
}
173+
174+
fun String.setPlaceholder(sender: Any): String {
175+
return FastScript.instance.setPlaceholder(sender, this)
157176
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,7 @@ interface FastScriptMain {
1919

2020
fun sendMessage(sender: Any, string: String, colorIndex: Boolean)
2121

22+
fun hasPermission(sender: Any, string: String): Boolean
23+
2224

2325
}

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,15 @@ class BukkitSection: JavaPlugin(), FastScriptMain {
5555
}
5656

5757
override fun sendMessage(sender: Any, string: String, colorIndex: Boolean) {
58-
(sender as? CommandSender)?.sendMessage(if (colorIndex) ChatColor.translateAlternateColorCodes('&', string) else string)
58+
asSender(sender)?.sendMessage(if (colorIndex) ChatColor.translateAlternateColorCodes('&', string) else string)
59+
}
60+
61+
override fun hasPermission(sender: Any, string: String): Boolean {
62+
return asSender(sender)?.hasPermission(string)!!
63+
}
64+
65+
fun asSender(sender: Any): CommandSender? {
66+
return sender as? CommandSender
5967
}
6068

6169
override fun onReload() {

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,15 @@ class BungeeSection: Plugin(), FastScriptMain {
4040
}
4141

4242
override fun sendMessage(sender: Any, string: String, colorIndex: Boolean) {
43-
(sender as? org.bukkit.command.CommandSender)?.sendMessage(if (colorIndex) ChatColor.translateAlternateColorCodes('&', string) else string)
43+
asSender(sender)?.sendMessage(if (colorIndex) ChatColor.translateAlternateColorCodes('&', string) else string)
44+
}
45+
46+
override fun hasPermission(sender: Any, string: String): Boolean {
47+
return asSender(sender)?.hasPermission(string)!!
48+
}
49+
50+
fun asSender(sender: Any): CommandSender? {
51+
return sender as? CommandSender
4452
}
4553

4654
override fun onReload() {
Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,76 @@
11
package me.scoretwo.fastscript.commands
22

3+
import me.scoretwo.fastscript.hasPermission
4+
import me.scoretwo.fastscript.sendMessage
5+
import java.util.*
6+
import java.util.function.Predicate
7+
import java.util.stream.Collectors
8+
9+
310
class CommandManager {
411

5-
val commands = mutableListOf<SubCommand>()
12+
val commandMap = mutableMapOf<String, SubCommand>()
13+
14+
lateinit var globalHelp: SubCommand
615

716
fun initCommands() {
8-
commands.add(HelpCommand())
17+
globalHelp = HelpCommand()
18+
register(globalHelp)
19+
20+
21+
}
22+
23+
fun register(subCommand: SubCommand) {
24+
commandMap[subCommand.name] = subCommand
925
}
1026

1127
fun execute(sender: Any, args: Array<String>) {
12-
for (command in commands) {
13-
TODO()
28+
if (args.isEmpty()) {
29+
if (sender.hasPermission("fastscript.${globalHelp.name}"))
30+
globalHelp.execute(sender, args)
31+
else
32+
sender.sendMessage("§7[§2Fast§aScript§7] §6WARN §8| §7权限不足以运行该命令.")
33+
return
34+
}
35+
36+
for (command in commandMap) {
37+
if (command.key.toLowerCase() == args[0].toLowerCase()) {
38+
if (command.value.sendLimit == SubCommand.Companion.SendLimit.PERMISSION && !sender.hasPermission("fastscript.${command.key}")) {
39+
sender.sendMessage("§7[§2Fast§aScript§7] §6WARN §8| §7权限不足以运行该命令.")
40+
return
41+
}
42+
val rawArgs = args.clone()
43+
rawArgs.toMutableList().removeAt(0)
44+
45+
command.value.execute(sender, rawArgs)
46+
}
1447
}
1548
}
1649

1750
fun tabComplete(sender: Any, args: Array<String>): MutableList<String> {
18-
TODO()
51+
if (!sender.hasPermission("fastscript.tabcomplete")) {
52+
return mutableListOf()
53+
}
54+
if (args.isEmpty()) {
55+
return commandMap.keys.toMutableList()
56+
}
57+
58+
if (args.size == 1) {
59+
return Arrays.stream(commandMap.keys.toTypedArray()).filter { it.startsWith(args[0]) }.collect(Collectors.toList())
60+
}
61+
62+
for (command in commandMap) {
63+
if (command.key.toLowerCase() == args[0].toLowerCase()) {
64+
if (command.value.sendLimit == SubCommand.Companion.SendLimit.PERMISSION && !sender.hasPermission("fastscript.${command.key}")) {
65+
return mutableListOf()
66+
}
67+
val rawArgs = args.clone()
68+
rawArgs.toMutableList().removeAt(0)
69+
return Arrays.stream(command.value.tabComplete(sender, rawArgs).toTypedArray()).filter { it.startsWith(args[args.size - 1]) }.collect(Collectors.toList())
70+
}
71+
}
72+
73+
return mutableListOf()
1974
}
2075

2176
}
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 ReloadCommand: SubCommand("reload") {
4+
override fun execute(sender: Any, args: Array<String>) {
5+
TODO("Not yet implemented")
6+
}
7+
}

src/main/kotlin/me/scoretwo/fastscript/commands/SubCommand.kt

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

3-
abstract class SubCommand(val name: String, val sendLimit: SendLimit = SendLimit.ALL, val alias: Array<String> = arrayOf()) {
3+
abstract class SubCommand(val name: String, val sendLimit: SendLimit = SendLimit.PERMISSION, val alias: Array<String> = arrayOf()) {
44

55
abstract fun execute(sender: Any, args: Array<String>)
66

@@ -9,7 +9,9 @@ abstract class SubCommand(val name: String, val sendLimit: SendLimit = SendLimit
99
}
1010

1111
companion object {
12-
enum class SendLimit { PLAYER, CONSOLE, ALL }
12+
enum class SendLimit {
13+
PLAYER, CONSOLE, ALL, PERMISSION
14+
}
1315

1416

1517
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package me.scoretwo.fastscript.config
2+
3+
import java.io.File
4+
5+
class MessageConfig(file: File): Config(file) {
6+
7+
override fun onReload() {
8+
TODO("Not yet implemented")
9+
}
10+
11+
12+
}

src/main/kotlin/me/scoretwo/fastscript/config/SettingConfig.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ class SettingConfig: Config(File(FastScript.instance.dataFolder, "settings.yml")
1010

1111
lateinit var defaultScriptOption: ScriptOption
1212

13+
lateinit var defaultLanguage: MessageConfig
14+
1315
val scriptPaths = mutableListOf<File>()
1416

1517
init {
@@ -21,6 +23,9 @@ class SettingConfig: Config(File(FastScript.instance.dataFolder, "settings.yml")
2123
setMap(loadConfiguration(file))
2224
for (s in getLowerCaseYAMLArray("load-script-files")) { if (s is String) { scriptPaths.add(File(s)) } }
2325
defaultScriptOption = ScriptOption.fromConfigSection(getLowerCaseYAMLObject("default-script-options"))
26+
defaultLanguage = MessageConfig(File(
27+
"${FastScript.instance.dataFolder}/languages",
28+
"${getLowerCaseYAMLObject("options").getLowerCaseString("language")}.yml"))
2429
}
2530

2631
companion object {

0 commit comments

Comments
 (0)