Package-level declarations

Core DSL primitives and node builders used to construct command trees.

This package contains:

All functionality here is platform-agnostic and does not depend on Paper or Minecraft classes.

Types

Link copied to clipboard

Scope for building a required argument node. Extends LiteralNode with suggests.

Link copied to clipboard
annotation class CommandDsl

Marks Kraftlin command DSL scopes to prevent accidental nesting.

Link copied to clipboard

Receiver for command execution blocks. Prevents nesting DSL scopes inside executes.

Link copied to clipboard
class KContext<S>(val rawContext: CommandContext<S>)

Typed accessor for retrieving parsed argument values from a Brigadier CommandContext.

Link copied to clipboard
open class LiteralNode<S>

Scope for building a command tree node. Provides literal, argument, executes, and requires.

Link copied to clipboard

Abstraction over platform-specific command source handling.

Functions

Link copied to clipboard
fun <S, T> LiteralNode<S>.argument(name: String, type: ArgumentType<T>, block: ArgumentNode<S, T>.() -> Unit)

Adds a required argument of the given Brigadier type. Prefer the typed helpers (e.g. string, integer).

Link copied to clipboard
fun <S> LiteralNode<S>.boolean(name: String, block: ArgumentNode<S, Boolean>.() -> Unit)

Adds a boolean argument.

Link copied to clipboard
fun <S> brigadierCommand(name: String, block: LiteralNode<S>.() -> Unit): LiteralCommandNode<S>

Builds a Brigadier command tree rooted at a literal node named name.

Link copied to clipboard
fun <S> LiteralNode<S>.double(name: String, block: ArgumentNode<S, Double>.() -> Unit)

Adds a double argument.

fun <S> LiteralNode<S>.double(name: String, min: Double, block: ArgumentNode<S, Double>.() -> Unit)

Adds a double argument with minimum min.

fun <S> LiteralNode<S>.double(name: String, min: Double, max: Double, block: ArgumentNode<S, Double>.() -> Unit)

Adds a double argument bounded to min..max.

Link copied to clipboard

Registers the execution handler for this node. Returns Command.SINGLE_SUCCESS automatically.

Execution handler that extracts the platform Sender before invoking block.

Link copied to clipboard

Registers an execution handler that returns a custom Brigadier result code.

Execution handler with custom result code that extracts the platform Sender before invoking block.

Link copied to clipboard
fun <S> LiteralNode<S>.float(name: String, block: ArgumentNode<S, Float>.() -> Unit)

Adds a float argument.

fun <S> LiteralNode<S>.float(name: String, min: Float, block: ArgumentNode<S, Float>.() -> Unit)

Adds a float argument with minimum min.

fun <S> LiteralNode<S>.float(name: String, min: Float, max: Float, block: ArgumentNode<S, Float>.() -> Unit)

Adds a float argument bounded to min..max.

Link copied to clipboard

Returns the string value. Alias for string. @see LiteralNode.greedyString

fun <S> LiteralNode<S>.greedyString(name: String, block: ArgumentNode<S, String>.() -> Unit)

Adds a greedy string argument that consumes all remaining input. @see KContext.greedyString

Link copied to clipboard
fun <S> LiteralNode<S>.integer(name: String, block: ArgumentNode<S, Int>.() -> Unit)

Adds an integer argument.

fun <S> LiteralNode<S>.integer(name: String, min: Int, block: ArgumentNode<S, Int>.() -> Unit)

Adds an integer argument with minimum min.

fun <S> LiteralNode<S>.integer(name: String, min: Int, max: Int, block: ArgumentNode<S, Int>.() -> Unit)

Adds an integer argument bounded to min..max.

Link copied to clipboard
fun <S> LiteralNode<S>.literal(name: String, vararg aliases: String, block: LiteralNode<S>.() -> Unit)

Adds a literal sub-command named name with optional aliases that redirect to it.

Link copied to clipboard
fun <S> LiteralNode<S>.long(name: String, block: ArgumentNode<S, Long>.() -> Unit)

Adds a long argument.

fun <S> LiteralNode<S>.long(name: String, min: Long, block: ArgumentNode<S, Long>.() -> Unit)

Adds a long argument with minimum min.

fun <S> LiteralNode<S>.long(name: String, min: Long, max: Long, block: ArgumentNode<S, Long>.() -> Unit)

Adds a long argument bounded to min..max.

Link copied to clipboard
fun <S> LiteralNode<S>.requires(predicate: (S) -> Boolean)

Adds a requirement that must be true for this node to be visible and executable. Stacks with previous requirements.

Link copied to clipboard

Requires the source to have the given permission, checked via platform.

Link copied to clipboard
fun <S, Sender> LiteralNode<S>.requiresSender(platform: PlatformAdapter<S, Sender>, predicate: (Sender) -> Boolean)

Requires the platform sender to match a predicate (e.g. to check sender type).

Link copied to clipboard
fun <S> LiteralNode<S>.string(name: String, block: ArgumentNode<S, String>.() -> Unit)

Adds a quoted or single-word string argument.

Link copied to clipboard
fun <S, T> ArgumentNode<S, T>.suggests(provider: (KContext<S>, SuggestionsBuilder) -> CompletableFuture<Suggestions>)

Registers a dynamic suggestion provider for this argument.

Link copied to clipboard
fun <S, T> ArgumentNode<S, T>.suggestsStatic(vararg values: String)

Registers a fixed set of suggestion values for this argument.

Link copied to clipboard
fun <S> KContext<S>.word(name: String): String

Returns the string value. Alias for string. @see LiteralNode.word

fun <S> LiteralNode<S>.word(name: String, block: ArgumentNode<S, String>.() -> Unit)

Adds a single-word string argument. @see KContext.word