Skip to content

Commit

Permalink
feat: various improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
StillLutto committed Jan 11, 2025
1 parent adbbeba commit 91c2635
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 20 deletions.
7 changes: 5 additions & 2 deletions api/src/main/kotlin/com/undefined/stellar/StellarCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@ import org.bukkit.command.CommandSender
import org.bukkit.plugin.java.JavaPlugin
import org.jetbrains.annotations.ApiStatus

class StellarCommand(name: String, permissions: List<String> = listOf()) : AbstractStellarCommand<StellarCommand>(name) {
class StellarCommand(name: String, permissions: List<String> = listOf(), aliases: List<String> = listOf()) : AbstractStellarCommand<StellarCommand>(name) {

constructor(name: String, vararg permissions: String) : this(name, permissions = permissions.toList())
constructor(name: String, vararg aliases: String) : this(name, aliases = aliases.toList())
constructor(name: String, permission: String, vararg aliases: String) : this(name, listOf(permission), aliases.toList())
constructor(name: String, permission: String, aliases: List<String>) : this(name, listOf(permission), aliases)

init {
this.permissionRequirements.addAll(permissions.map { PermissionStellarRequirement(1, it) })
this.aliases.addAll(aliases)
}

private var registered = false
Expand Down
12 changes: 7 additions & 5 deletions api/src/main/kotlin/com/undefined/stellar/util/Builders.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ 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.addRequirements(*permissions.toTypedArray())
fun command(name: String, description: String, permissions: List<String>, aliases: List<String>, builder: StellarCommand.() -> Unit): StellarCommand {
val command = StellarCommand(name, permissions, aliases)
command.setDescription(description)
command.builder()
return command
}

fun command(name: String, description: String, builder: StellarCommand.() -> Unit): StellarCommand = command(name, description, listOf(), builder)

fun command(name: String, description: String, builder: StellarCommand.() -> Unit): StellarCommand = command(name, description, listOf(), listOf(), builder)
fun command(name: String, description: String, permissions: List<String>, builder: StellarCommand.() -> Unit): StellarCommand = command(name, description, permissions, listOf(), builder)
fun command(name: String, permissions: List<String>, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", permissions, listOf(), builder)
fun command(name: String, permissions: List<String>, aliases: List<String>, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", permissions, aliases, builder)
fun command(name: String, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", builder)
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ plugins {

apply(plugin = "maven-publish")
val projectGroupId = "com.undefined"
val projectVersion = "0.0.38"
val projectVersion = "0.0.39"
val projectArtifactId = "stellar"

group = projectGroupId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,39 +93,67 @@ open class ArgumentHandler {
fun <T> addListArgument(
name: String,
list: List<T>,
stringifier: (T) -> Suggestion,
converter: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, stringifier, parse) }
): ListArgument<T> = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, converter, parse) }

fun <T> addListArgument(
type: AbstractStellarArgument<*>,
list: List<T>,
stringifier: (T) -> Suggestion,
converter: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(type, list, stringifier, parse) }
): ListArgument<T> = addArgument { ListArgument(type, list, converter, parse) }

fun <T> addListArgument(
name: String,
list: CommandContext<CommandSender>.() -> List<T>,
stringifier: (T) -> Suggestion,
converter: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, stringifier, parse) }
): ListArgument<T> = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, converter, parse) }

fun <T> addListArgument(
type: AbstractStellarArgument<*>,
list: CommandContext<CommandSender>.() -> List<T>,
stringifier: (T) -> Suggestion,
converter: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(type, list, stringifier, parse) }
): ListArgument<T> = addArgument { ListArgument(type, list, converter, parse) }

fun addStringListArgument(name: String, list: List<String>, type: StringType = StringType.WORD): ListArgument<String> =
addArgument { ListArgument(StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, { it }) }
fun <T> addBasicListArgument(
name: String,
list: List<T>,
converter: (T) -> String,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, { Suggestion.withText(converter(it)) }, parse) }

fun <T> addBasicListArgument(
type: AbstractStellarArgument<*>,
list: List<T>,
converter: (T) -> String,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(type, list, { Suggestion.withText(converter(it)) }, parse) }

fun <T> addBasicListArgument(
name: String,
list: CommandContext<CommandSender>.() -> List<T>,
converter: (T) -> String,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, { Suggestion.withText(converter(it)) }, parse) }

fun <T> addBasicListArgument(
type: AbstractStellarArgument<*>,
list: CommandContext<CommandSender>.() -> List<T>,
converter: (T) -> String,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(type, list, { Suggestion.withText(converter(it)) }, parse) }

fun addStringListArgument(name: String, list: List<String>, type: StringType = StringType.WORD, parse: (Any?) -> Any? = { it }): ListArgument<String> =
addArgument { ListArgument(StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, parse) }

fun addStringListArgument(name: String, vararg list: String): ListArgument<String> =
addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list.toList(), { Suggestion.withText(it.toString()) }, { it }) }

fun addUUIDListArgument(name: String, list: List<UUID>): ListArgument<UUID> =
addArgument { ListArgument(UUIDArgument(base, name), list, parse = { it }) }
fun addUUIDListArgument(name: String, list: List<UUID>, parse: (Any?) -> Any? = { it }): ListArgument<UUID> =
addArgument { ListArgument(UUIDArgument(base, name), list, parse = parse) }

fun addStringListArgument(name: String, list: CommandContext<CommandSender>.() -> List<String>, type: StringType = StringType.WORD): ListArgument<String> =
addArgument { ListArgument(StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, { it }) }
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
kotlin.daemon.jvmargs=-Xmx4096M

0 comments on commit 91c2635

Please sign in to comment.