init 9
This commit is contained in:
@@ -2,6 +2,7 @@ package xyz.fortern.minehunt
|
|||||||
|
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
import xyz.fortern.minehunt.command.MinehuntCommand
|
||||||
import xyz.fortern.minehunt.command.TestCommand
|
import xyz.fortern.minehunt.command.TestCommand
|
||||||
import xyz.fortern.minehunt.listener.PlayerListener
|
import xyz.fortern.minehunt.listener.PlayerListener
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ class Minehunt : JavaPlugin() {
|
|||||||
|
|
||||||
// 注册事件
|
// 注册事件
|
||||||
Bukkit.getPluginCommand("test")!!.setExecutor(TestCommand())
|
Bukkit.getPluginCommand("test")!!.setExecutor(TestCommand())
|
||||||
|
Bukkit.getPluginCommand("minehunt")!!.setExecutor(MinehuntCommand(console))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,30 +1,135 @@
|
|||||||
package xyz.fortern.minehunt.command
|
package xyz.fortern.minehunt.command
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component
|
||||||
import org.bukkit.command.Command
|
import org.bukkit.command.Command
|
||||||
import org.bukkit.command.CommandExecutor
|
|
||||||
import org.bukkit.command.CommandSender
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.command.TabExecutor
|
||||||
|
import xyz.fortern.minehunt.Console
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主命令 minehunt
|
* 主命令 minehunt
|
||||||
*/
|
*/
|
||||||
class MinehuntCommand: CommandExecutor {
|
class MinehuntCommand(
|
||||||
|
val console: Console
|
||||||
|
) : TabExecutor {
|
||||||
|
|
||||||
|
private val subCommand: List<String> = listOf("help", "join", "leave", "rule", "stat", "stop")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行命令
|
||||||
|
*/
|
||||||
override fun onCommand(
|
override fun onCommand(
|
||||||
sender: CommandSender,
|
sender: CommandSender,
|
||||||
command: Command,
|
command: Command,
|
||||||
label: String,
|
label: String,
|
||||||
args: Array<out String>?
|
args: Array<out String>
|
||||||
): Boolean {
|
): Boolean {
|
||||||
if (args!!.isEmpty()) {
|
handlerCommand(sender, args.toList(), true)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令补全
|
||||||
|
*/
|
||||||
|
override fun onTabComplete(
|
||||||
|
sender: CommandSender,
|
||||||
|
command: Command,
|
||||||
|
label: String,
|
||||||
|
args: Array<out String>
|
||||||
|
): List<String>? {
|
||||||
|
return handlerCommand(
|
||||||
|
sender,
|
||||||
|
args.filterIndexed { index, s -> s != "" || index == args.size - 1 },
|
||||||
|
false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行命令或补全命令
|
||||||
|
*
|
||||||
|
* @param flag true 表示执行命令,false 表示补全命令
|
||||||
|
* @param args 命令的参数列表,除最后一条前面的每一条都应当是非空的
|
||||||
|
*/
|
||||||
|
private fun handlerCommand(sender: CommandSender, args: List<String>, flag: Boolean): List<String>? {
|
||||||
|
if (args.isEmpty() || args[0] == "" || args[0] == "help" || args[0] == "?")
|
||||||
|
return if (flag) sendHelp(sender) else subCommand
|
||||||
|
|
||||||
|
return when (args[0]) {
|
||||||
|
"join" -> {
|
||||||
|
onJoin(sender, args, flag)
|
||||||
|
}
|
||||||
|
|
||||||
|
"leave" -> {
|
||||||
|
onLeave(sender, args, flag)
|
||||||
|
}
|
||||||
|
|
||||||
|
"start" -> {
|
||||||
|
onStart(sender, args, flag)
|
||||||
|
}
|
||||||
|
|
||||||
|
"stop" -> {
|
||||||
|
onStop(sender, args, flag)
|
||||||
|
}
|
||||||
|
|
||||||
|
"rule" -> {
|
||||||
|
onRule(sender, args, flag)
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
if (flag) {
|
||||||
|
sender.sendMessage(Component.text("错误的子命令"))
|
||||||
|
null
|
||||||
|
} else {
|
||||||
|
if (args.size == 1) subCommand.filter { it.startsWith(args[0]) } else null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看或修改游戏规则
|
||||||
|
*/
|
||||||
|
private fun onRule(sender: CommandSender, args: List<String>, execute: Boolean): List<String>? {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏结束
|
||||||
|
*/
|
||||||
|
private fun onStop(sender: CommandSender, args: List<String>, execute: Boolean): List<String>? {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏开始
|
||||||
|
*/
|
||||||
|
private fun onStart(sender: CommandSender, args: List<String>, execute: Boolean): List<String>? {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 玩家离开队伍
|
||||||
|
*/
|
||||||
|
private fun onLeave(sender: CommandSender, args: List<String>, execute: Boolean): List<String>? {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 玩家加入队伍
|
||||||
|
*/
|
||||||
|
private fun onJoin(sender: CommandSender, args: List<String>, execute: Boolean): List<String>? {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送帮助信息
|
||||||
|
*/
|
||||||
|
private fun sendHelp(sender: CommandSender): List<String>? {
|
||||||
sender.sendMessage("§aMinehunt v1.0.0")
|
sender.sendMessage("§aMinehunt v1.0.0")
|
||||||
sender.sendMessage("§a/minehunt help")
|
sender.sendMessage("§a/minehunt help")
|
||||||
sender.sendMessage("§a/minehunt start")
|
sender.sendMessage("§a/minehunt start")
|
||||||
sender.sendMessage("§a/minehunt stop")
|
sender.sendMessage("§a/minehunt stop")
|
||||||
sender.sendMessage("§a/minehunt pause")
|
|
||||||
sender.sendMessage("§a/minehunt resume")
|
|
||||||
sender.sendMessage("§a/minehunt set <time>")
|
sender.sendMessage("§a/minehunt set <time>")
|
||||||
sender.sendMessage("§a/minehunt set <time>")
|
return null
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,3 +9,6 @@ authors: [ Fortern ]
|
|||||||
commands:
|
commands:
|
||||||
test:
|
test:
|
||||||
description: "测试"
|
description: "测试"
|
||||||
|
minehunt:
|
||||||
|
description: "游戏主命令"
|
||||||
|
aliases: [mh]
|
||||||
|
|||||||
Reference in New Issue
Block a user