feat: add command condition function

This commit is contained in:
Keisuke Hirata 2024-09-21 14:46:20 +09:00
parent 88c4b7c2ae
commit 21702d6997

View File

@ -70,10 +70,6 @@ abstract class Argument(
) { ) {
val routes = routes.toMap() val routes = routes.toMap()
var name: String = "" var name: String = ""
get() = field
protected set(value) {
field = value
}
var permission: String = "" var permission: String = ""
set(value) { set(value) {
field = value field = value
@ -81,7 +77,9 @@ abstract class Argument(
for ((_, route) in routes) { for ((_, route) in routes) {
route.permission = value + "." + route.name route.permission = value + "." + route.name
} }
println("permission setted to $value")
} }
var condition: (CommandSender) -> Boolean = { true }
init { init {
for ((name, route) in routes) { for ((name, route) in routes) {
@ -100,7 +98,7 @@ abstract class Argument(
fun getCompletList(sender: CommandSender, args: Array<String>): List<String> { fun getCompletList(sender: CommandSender, args: Array<String>): List<String> {
return routes return routes
.values .values
.filter { sender.hasPermission(it.permission) } .filter { sender.hasPermission(it.permission) && it.condition(sender) }
.map { it.suggest(sender, args) } .map { it.suggest(sender, args) }
.flatten() .flatten()
} }
@ -120,7 +118,7 @@ class Route(vararg routes: Pair<String, Argument>, execute: (CommandSender, Arra
} }
override fun suggest(sender: CommandSender, args: Array<String>): List<String> { override fun suggest(sender: CommandSender, args: Array<String>): List<String> {
return if (sender.hasPermission(this.permission) && this.name.startsWith(args.last())) return if (sender.hasPermission(this.permission) && this.condition(sender) && this.name.startsWith(args.last()))
listOf(this.name) listOf(this.name)
else listOf() else listOf()
} }