From e0613cd05278222b0a2ac1c79a2d4ef317c9cea1 Mon Sep 17 00:00:00 2001 From: Hare Date: Sun, 7 Dec 2025 04:20:43 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20boot=E3=81=AE=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kommand-lib/arguments/ArgumentTypes.kt | 14 ++++++++++++++ .../hareworks/kommand-lib/dsl/RegistryBuilders.kt | 5 +++++ 2 files changed, 19 insertions(+) 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,