diff --git a/src/main/kotlin/net/hareworks/kommand-lib/arguments/ArgumentTypes.kt b/src/main/kotlin/net/hareworks/kommand-lib/arguments/ArgumentTypes.kt index 192aa84..a16b6f6 100644 --- a/src/main/kotlin/net/hareworks/kommand-lib/arguments/ArgumentTypes.kt +++ b/src/main/kotlin/net/hareworks/kommand-lib/arguments/ArgumentTypes.kt @@ -23,6 +23,20 @@ object WordArgumentType : KommandArgumentType { } } +object BooleanArgumentType : KommandArgumentType { + override fun parse(input: String, context: KommandContext): ArgumentParseResult { + val lower = input.lowercase() + return when (lower) { + "true" -> ArgumentParseResult.Success(true) + "false" -> ArgumentParseResult.Success(false) + else -> ArgumentParseResult.Failure("Expected true/false but got '$input'") + } + } + + override fun suggestions(context: KommandContext, prefix: String): List = + listOf("true", "false").filter { it.startsWith(prefix, ignoreCase = true) } +} + class IntegerArgumentType( val min: Int? = null, val max: Int? = null diff --git a/src/main/kotlin/net/hareworks/kommand-lib/dsl/RegistryBuilders.kt b/src/main/kotlin/net/hareworks/kommand-lib/dsl/RegistryBuilders.kt index 88e343a..41408db 100644 --- a/src/main/kotlin/net/hareworks/kommand-lib/dsl/RegistryBuilders.kt +++ b/src/main/kotlin/net/hareworks/kommand-lib/dsl/RegistryBuilders.kt @@ -147,6 +147,11 @@ abstract class BranchScope internal constructor( block: ValueBuilder.() -> Unit = {} ) = argument(name, FloatArgumentType(min, max), block) + fun bool( + name: String, + block: ValueBuilder.() -> Unit = {} + ) = argument(name, BooleanArgumentType, block) + fun player( name: String, allowSelectors: Boolean = true,