Skip to content

Commit

Permalink
feat(dsl-builder): add type-safe kotlin builder using extension funct…
Browse files Browse the repository at this point in the history
…ions
  • Loading branch information
StillLutto committed Dec 16, 2024
1 parent 1ea81e8 commit 078f7d9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
13 changes: 13 additions & 0 deletions api/src/main/kotlin/com/undefined/stellar/util/Builders.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.undefined.stellar.util

import com.undefined.stellar.StellarCommand

fun command(name: String, description: String, permissions: List<String>, 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)
17 changes: 6 additions & 11 deletions server/src/main/kotlin/com/undefined/stellar/Main.kt
Original file line number Diff line number Diff line change
@@ -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<Player> {
sender.sendMessage(this.getArgument<Player>("string").name)
}
.onRegister {
println("This runs on register")
}
.register(this)
command("test") {
addStringArgument("string")
addExecution<Player> { sender.sendMessage(getArgument<String>("string")) }
register(this@Main)
}
}

}

0 comments on commit 078f7d9

Please sign in to comment.