diff --git a/common/src/main/kotlin/com/undefined/stellar/AbstractStellarCommand.kt b/common/src/main/kotlin/com/undefined/stellar/AbstractStellarCommand.kt index ccf4cad..9a37262 100644 --- a/common/src/main/kotlin/com/undefined/stellar/AbstractStellarCommand.kt +++ b/common/src/main/kotlin/com/undefined/stellar/AbstractStellarCommand.kt @@ -28,8 +28,14 @@ abstract class AbstractStellarCommand(val name: String, var description: Stri @ApiStatus.Internal open val executions: MutableList> = mutableListOf() @ApiStatus.Internal open val runnables: MutableList> = mutableListOf() - fun addAlias(name: String): T { - aliases.add(name) + fun setAliases(vararg aliases: String): T { + this.aliases.clear() + for (alias in aliases) this.aliases.add(alias) + return this as T + } + + fun addAliases(vararg aliases: String): T { + for (alias in aliases) this.aliases.add(alias) return this as T } @@ -43,46 +49,126 @@ abstract class AbstractStellarCommand(val name: String, var description: Stri return this as T } - fun addRequirement(permission: String): T { - permissionRequirements.add(PermissionStellarRequirement(1, permission)) - return this as T + fun setRequirements(permissions: List>): T { + this.requirements.clear() + return addRequirements(permissions) + } + + fun setRequirements(permissions: List): T { + permissionRequirements.clear() + return addRequirements(permissions) + } + + fun setRequirements(vararg permissions: StellarRequirement<*>): T { + this.requirements.clear() + return addRequirements(*permissions) } - fun addRequirement(permissionLevel: Int): T { - permissionRequirements.add(PermissionStellarRequirement(permissionLevel)) + fun setRequirements(vararg permissions: PermissionStellarRequirement): T { + permissionRequirements.clear() + return addRequirements(*permissions) + } + + fun addRequirements(permissions: List>): T { + for (permission in permissions) this.requirements.add(permission) return this as T } - inline fun addRequirement(noinline requirement: C.() -> Boolean): T { - addRequirement(StellarRequirement(requirement)) + fun addRequirements(permissions: List): T { + for (permission in permissions) permissionRequirements.add(permission) return this as T } - fun addRequirement(requirement: StellarRequirement<*>): T { - requirements.add(requirement) + fun addRequirements(vararg permissions: StellarRequirement<*>): T = + addRequirements(permissions.toList()) + + fun addRequirements(vararg permissions: PermissionStellarRequirement): T = + addRequirements(permissions.toList()) + + fun addRequirements(vararg levels: Int): T { + for (level in levels) permissionRequirements.add(PermissionStellarRequirement(level)) return this as T } - fun addFailureMessage(message: String): T { - failureMessages.add(MiniMessage.miniMessage().deserialize(message)) + fun addRequirements(vararg permissions: String): T { + for (permission in permissions) permissionRequirements.add(PermissionStellarRequirement(1, permission)) return this as T } - fun addFailureMessage(message: Component): T { - failureMessages.add(message) + inline fun addRequirement(noinline requirement: C.() -> Boolean): T = + addRequirements(StellarRequirement(requirement)) + + fun setFailureMessages(messages: List): T { + failureMessages.clear() + return addFailureMessages(messages) + } + + fun setFailureMessages(messages: List): T = + setFailureMessages(messages.map { MiniMessage.miniMessage().deserialize(it) }) + + fun setFailureMessages(vararg messages: Component): T = + setFailureMessages(messages.toList()) + + fun setFailureMessages(vararg messages: String): T = + setFailureMessages(messages.toList()) + + fun setPlainFailureMessages(messages: List): T { + failureMessages.clear() + return addFailureMessages(messages.map { Component.text(it) }) + } + + fun setPlainFailureMessages(vararg messages: String): T = + setFailureMessages(messages.toList()) + + fun setGlobalFailureMessages(messages: List): T { + globalFailureMessages.clear() + for (message in messages) globalFailureMessages.add(message) return this as T } - fun addGlobalFailureMessage(message: String): T { - globalFailureMessages.add(MiniMessage.miniMessage().deserialize(message)) + fun setGlobalFailureMessages(messages: List): T = + setGlobalFailureMessages(messages.map { MiniMessage.miniMessage().deserialize(it) }) + + fun setGlobalFailureMessages(vararg messages: String): T = + setGlobalFailureMessages(messages.toList()) + + fun setGlobalFailureMessages(vararg messages: Component): T = + setGlobalFailureMessages(messages.toList()) + + fun addFailureMessages(messages: List): T { + for (message in messages) failureMessages.add(message) return this as T } - fun addGlobalFailureMessage(message: Component): T { - globalFailureMessages.add(message) + fun addFailureMessages(messages: List): T = + addFailureMessages(messages.map { MiniMessage.miniMessage().deserialize(it) }) + + fun addFailureMessages(vararg messages: String): T = + addFailureMessages(messages.toList()) + + fun addFailureMessages(vararg messages: Component): T = + addFailureMessages(messages.toList()) + + fun addPlainFailureMessages(messages: List): T = + addFailureMessages(messages.map { Component.text(it) }) + + fun addPlainFailureMessages(vararg messages: String): T = + addPlainFailureMessages(messages.toList()) + + fun addGlobalFailureMessages(messages: List): T { + for (message in messages) globalFailureMessages.add(message) return this as T } + fun addGlobalFailureMessages(messages: List): T = + addGlobalFailureMessages(messages.map { MiniMessage.miniMessage().deserialize(it) }) + + fun addGlobalFailureMessages(vararg messages: String): T = + addGlobalFailureMessages(messages.toList()) + + fun addGlobalFailureMessages(vararg messages: Component): T = + addGlobalFailureMessages(messages.toList()) + inline fun addFailureExecution(noinline execution: CommandContext.() -> Unit): T { failureExecutions.add(StellarExecution(execution)) return this as T diff --git a/common/src/main/kotlin/com/undefined/stellar/data/requirement/PermissionStellarRequirement.kt b/common/src/main/kotlin/com/undefined/stellar/data/requirement/PermissionStellarRequirement.kt index ee94dda..44511cf 100644 --- a/common/src/main/kotlin/com/undefined/stellar/data/requirement/PermissionStellarRequirement.kt +++ b/common/src/main/kotlin/com/undefined/stellar/data/requirement/PermissionStellarRequirement.kt @@ -1,3 +1,3 @@ package com.undefined.stellar.data.requirement -data class PermissionStellarRequirement(val permissionLevel: Int, val permission: String = "") \ No newline at end of file +data class PermissionStellarRequirement(val level: Int, val permission: String = "") \ 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 ef69c4b..da12f2d 100644 --- a/server/src/main/kotlin/com/undefined/stellar/Main.kt +++ b/server/src/main/kotlin/com/undefined/stellar/Main.kt @@ -1,27 +1,12 @@ package com.undefined.stellar -import org.bukkit.entity.Player import org.bukkit.plugin.java.JavaPlugin class Main : JavaPlugin() { override fun onEnable() { - val main = StellarCommand("test", description = "this is a description", "othertest") - main.addIntegerArgument("int") - .addGreedyStringArgument("args") - .onWord(0) { - addExecution { - source.sendMessage(getArgument(0)) - } - addRunnable { - source.sendMessage("runnable") - true - } - } - .addWordExecution(1) { - source.sendMessage("Execution") - println("execution") - } + StellarCommand("test", "othertest") + .addFailureMessages("") .register(this) } diff --git a/v1_20_6/src/main/kotlin/com/undefined/stellar/v1_20_6/BrigadierCommandHelper.kt b/v1_20_6/src/main/kotlin/com/undefined/stellar/v1_20_6/BrigadierCommandHelper.kt index 6962828..a22c37f 100644 --- a/v1_20_6/src/main/kotlin/com/undefined/stellar/v1_20_6/BrigadierCommandHelper.kt +++ b/v1_20_6/src/main/kotlin/com/undefined/stellar/v1_20_6/BrigadierCommandHelper.kt @@ -30,7 +30,7 @@ object BrigadierCommandHelper { fun fulfillsRequirements(command: AbstractStellarCommand<*>, source: CommandSourceStack): Boolean { val fulfillsExecutionRequirements = command.requirements.all { it(source.bukkitSender) } - val fulfillsPermissionRequirements = command.permissionRequirements.all { source.hasPermission(it.permissionLevel, it.permission) } + val fulfillsPermissionRequirements = command.permissionRequirements.all { source.hasPermission(it.level, it.permission) } return fulfillsExecutionRequirements.and(fulfillsPermissionRequirements) }