From 078f7d9fde99f0b57b3970edf4470c8d022b1935 Mon Sep 17 00:00:00 2001 From: StillLutto Date: Mon, 16 Dec 2024 16:07:31 +0100 Subject: [PATCH] feat(dsl-builder): add type-safe kotlin builder using extension functions --- .../com/undefined/stellar/util/Builders.kt | 13 +++++++++++++ .../main/kotlin/com/undefined/stellar/Main.kt | 17 ++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 api/src/main/kotlin/com/undefined/stellar/util/Builders.kt diff --git a/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt b/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt new file mode 100644 index 0000000..f2ee81a --- /dev/null +++ b/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt @@ -0,0 +1,13 @@ +package com.undefined.stellar.util + +import com.undefined.stellar.StellarCommand + +fun command(name: String, description: String, permissions: List, builder: StellarCommand.() -> Unit): StellarCommand { + val command = StellarCommand(name, description) + command.builder() + return command +} + +fun command(name: String, description: String, builder: StellarCommand.() -> Unit): StellarCommand = command(name, description, listOf(), builder) + +fun command(name: String, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", builder) \ No newline at end of file diff --git a/server/src/main/kotlin/com/undefined/stellar/Main.kt b/server/src/main/kotlin/com/undefined/stellar/Main.kt index c665ea5..3c31202 100644 --- a/server/src/main/kotlin/com/undefined/stellar/Main.kt +++ b/server/src/main/kotlin/com/undefined/stellar/Main.kt @@ -1,22 +1,17 @@ package com.undefined.stellar +import com.undefined.stellar.util.command import org.bukkit.entity.Player import org.bukkit.plugin.java.JavaPlugin class Main : JavaPlugin() { override fun onEnable() { - val main = StellarCommand("test") - main.addLocationArgument("location") - .addRequirements(4) - .addOnlinePlayersArgument("string") - .addExecution { - sender.sendMessage(this.getArgument("string").name) - } - .onRegister { - println("This runs on register") - } - .register(this) + command("test") { + addStringArgument("string") + addExecution { sender.sendMessage(getArgument("string")) } + register(this@Main) + } } } \ No newline at end of file