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()
var name: String = ""
get() = field
protected set(value) {
field = value
}
var permission: String = ""
set(value) {
field = value
@ -81,7 +77,9 @@ abstract class Argument(
for ((_, route) in routes) {
route.permission = value + "." + route.name
}
println("permission setted to $value")
}
var condition: (CommandSender) -> Boolean = { true }
init {
for ((name, route) in routes) {
@ -100,7 +98,7 @@ abstract class Argument(
fun getCompletList(sender: CommandSender, args: Array<String>): List<String> {
return routes
.values
.filter { sender.hasPermission(it.permission) }
.filter { sender.hasPermission(it.permission) && it.condition(sender) }
.map { it.suggest(sender, args) }
.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> {
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)
else listOf()
}