From 66e1f74b5c5ad9b2586312df98d1de35b2432676 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 9 Dec 2025 05:58:45 +0900 Subject: [PATCH] feat: block coordinates --- .../net/hareworks/kommand-lib/arguments/ArgumentTypes.kt | 9 +++++++++ .../net/hareworks/kommand-lib/dsl/RegistryBuilders.kt | 6 ++++++ 2 files changed, 15 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 5e8d905..6ed44fa 100644 --- a/src/main/kotlin/net/hareworks/kommand-lib/arguments/ArgumentTypes.kt +++ b/src/main/kotlin/net/hareworks/kommand-lib/arguments/ArgumentTypes.kt @@ -84,3 +84,12 @@ class EntityArgument : KommandArgument> { class CoordinatesArgument : KommandArgument { override fun build(): ArgumentType<*> = ArgumentTypes.finePosition() } + +/** + * Block position argument for integer coordinates. + * Supports relative coordinates like ~ ~1 ~-2. + * Returns a Position (io.papermc.paper.math.Position) after resolving (aligned to block). + */ +class BlockPositionArgument : KommandArgument { + override fun build(): ArgumentType<*> = ArgumentTypes.blockPosition() +} 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 87d110f..2c83e5e 100644 --- a/src/main/kotlin/net/hareworks/kommand-lib/dsl/RegistryBuilders.kt +++ b/src/main/kotlin/net/hareworks/kommand-lib/dsl/RegistryBuilders.kt @@ -173,6 +173,12 @@ abstract class BranchScope internal constructor( allowRelative: Boolean = true, block: ValueBuilder.() -> Unit = {} ) = argument(name, CoordinatesArgument(), block) + + fun blockCoordinates( + name: String, + allowRelative: Boolean = true, + block: ValueBuilder.() -> Unit = {} + ) = argument(name, BlockPositionArgument(), block) } @KommandDsl