diff --git a/api/src/main/kotlin/com/undefined/stellar/StellarCommand.kt b/api/src/main/kotlin/com/undefined/stellar/StellarCommand.kt index 6f41b18..f5e66a6 100644 --- a/api/src/main/kotlin/com/undefined/stellar/StellarCommand.kt +++ b/api/src/main/kotlin/com/undefined/stellar/StellarCommand.kt @@ -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 = listOf()) : AbstractStellarCommand(name) { +class StellarCommand(name: String, permissions: List = listOf(), aliases: List = listOf()) : AbstractStellarCommand(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) : this(name, listOf(permission), aliases) init { this.permissionRequirements.addAll(permissions.map { PermissionStellarRequirement(1, it) }) + this.aliases.addAll(aliases) } private var registered = false diff --git a/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt b/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt index 3cc6661..d2b5ada 100644 --- a/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt +++ b/api/src/main/kotlin/com/undefined/stellar/util/Builders.kt @@ -2,13 +2,15 @@ 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.addRequirements(*permissions.toTypedArray()) +fun command(name: String, description: String, permissions: List, aliases: List, 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, builder: StellarCommand.() -> Unit): StellarCommand = command(name, description, permissions, listOf(), builder) +fun command(name: String, permissions: List, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", permissions, listOf(), builder) +fun command(name: String, permissions: List, aliases: List, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", permissions, aliases, builder) fun command(name: String, builder: StellarCommand.() -> Unit): StellarCommand = command(name, "", builder) \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 588c2d2..d6da3f1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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 diff --git a/common/src/main/kotlin/com/undefined/stellar/argument/ArgumentHandler.kt b/common/src/main/kotlin/com/undefined/stellar/argument/ArgumentHandler.kt index 3488c9d..ae84861 100644 --- a/common/src/main/kotlin/com/undefined/stellar/argument/ArgumentHandler.kt +++ b/common/src/main/kotlin/com/undefined/stellar/argument/ArgumentHandler.kt @@ -93,39 +93,67 @@ open class ArgumentHandler { fun addListArgument( name: String, list: List, - stringifier: (T) -> Suggestion, + converter: (T) -> Suggestion, parse: (Any?) -> T - ): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, stringifier, parse) } + ): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, converter, parse) } fun addListArgument( type: AbstractStellarArgument<*>, list: List, - stringifier: (T) -> Suggestion, + converter: (T) -> Suggestion, parse: (Any?) -> T - ): ListArgument = addArgument { ListArgument(type, list, stringifier, parse) } + ): ListArgument = addArgument { ListArgument(type, list, converter, parse) } fun addListArgument( name: String, list: CommandContext.() -> List, - stringifier: (T) -> Suggestion, + converter: (T) -> Suggestion, parse: (Any?) -> T - ): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, stringifier, parse) } + ): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, converter, parse) } fun addListArgument( type: AbstractStellarArgument<*>, list: CommandContext.() -> List, - stringifier: (T) -> Suggestion, + converter: (T) -> Suggestion, parse: (Any?) -> T - ): ListArgument = addArgument { ListArgument(type, list, stringifier, parse) } + ): ListArgument = addArgument { ListArgument(type, list, converter, parse) } - fun addStringListArgument(name: String, list: List, type: StringType = StringType.WORD): ListArgument = - addArgument { ListArgument(StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, { it }) } + fun addBasicListArgument( + name: String, + list: List, + converter: (T) -> String, + parse: (Any?) -> T + ): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, { Suggestion.withText(converter(it)) }, parse) } + + fun addBasicListArgument( + type: AbstractStellarArgument<*>, + list: List, + converter: (T) -> String, + parse: (Any?) -> T + ): ListArgument = addArgument { ListArgument(type, list, { Suggestion.withText(converter(it)) }, parse) } + + fun addBasicListArgument( + name: String, + list: CommandContext.() -> List, + converter: (T) -> String, + parse: (Any?) -> T + ): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list, { Suggestion.withText(converter(it)) }, parse) } + + fun addBasicListArgument( + type: AbstractStellarArgument<*>, + list: CommandContext.() -> List, + converter: (T) -> String, + parse: (Any?) -> T + ): ListArgument = addArgument { ListArgument(type, list, { Suggestion.withText(converter(it)) }, parse) } + + fun addStringListArgument(name: String, list: List, type: StringType = StringType.WORD, parse: (Any?) -> Any? = { it }): ListArgument = + addArgument { ListArgument(StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, parse) } fun addStringListArgument(name: String, vararg list: String): ListArgument = addArgument { ListArgument(StringArgument(base, name, StringType.WORD), list.toList(), { Suggestion.withText(it.toString()) }, { it }) } - fun addUUIDListArgument(name: String, list: List): ListArgument = - addArgument { ListArgument(UUIDArgument(base, name), list, parse = { it }) } + fun addUUIDListArgument(name: String, list: List, parse: (Any?) -> Any? = { it }): ListArgument = + addArgument { ListArgument(UUIDArgument(base, name), list, parse = parse) } fun addStringListArgument(name: String, list: CommandContext.() -> List, type: StringType = StringType.WORD): ListArgument = addArgument { ListArgument(StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, { it }) } diff --git a/gradle.properties b/gradle.properties index e69de29..5e80635 100644 --- a/gradle.properties +++ b/gradle.properties @@ -0,0 +1 @@ +kotlin.daemon.jvmargs=-Xmx4096M \ No newline at end of file