diff --git a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/ChainCommandBuilder.kt b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/ChainCommandBuilder.kt index 558b87f..86024f4 100644 --- a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/ChainCommandBuilder.kt +++ b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/ChainCommandBuilder.kt @@ -4,7 +4,6 @@ import com.mattmx.ktgui.commands.declarative.arg.Argument import com.mattmx.ktgui.commands.declarative.arg.impl.MultiArgument import com.mattmx.ktgui.commands.declarative.invocation.RunnableCommandContext import com.mattmx.ktgui.utils.JavaCompatibility -import org.bukkit.block.data.type.Chain import org.bukkit.command.CommandSender class ChainCommandBuilder(val name: String) { diff --git a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/argTests.kt b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/argTests.kt index 60219d0..d8fd23f 100644 --- a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/argTests.kt +++ b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/argTests.kt @@ -2,6 +2,10 @@ package com.mattmx.ktgui.commands.declarative.arg import com.google.gson.JsonParser import com.mattmx.ktgui.commands.declarative.arg.impl.* +import com.mattmx.ktgui.commands.declarative.div +import com.mattmx.ktgui.commands.declarative.invoke +import com.mattmx.ktgui.utils.not +import org.bukkit.entity.Player import kotlin.math.min class ArgumentProcessor( diff --git a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/MultiChoiceArgument.kt b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/MultiChoiceArgument.kt index 686eda5..e23c3e9 100644 --- a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/MultiChoiceArgument.kt +++ b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/MultiChoiceArgument.kt @@ -1,14 +1,24 @@ package com.mattmx.ktgui.commands.declarative.arg.impl +import com.mattmx.ktgui.commands.declarative.DeclarativeCommandBuilder import com.mattmx.ktgui.commands.declarative.arg.Argument -import com.mattmx.ktgui.commands.declarative.arg.consumer.ArgumentConsumer +import com.mattmx.ktgui.commands.declarative.arg.consumer.SingleArgumentConsumer +import com.mattmx.ktgui.commands.declarative.arg.suggests +import com.mattmx.ktgui.commands.declarative.invocation.BaseCommandContext class MultiChoiceArgument( name: String, - typeName: String, - consumer: ArgumentConsumer -) : Argument(name, typeName, consumer) { - + initialChoices: HashMap +) : Argument(name, "multi-choice", SingleArgumentConsumer()) { + private val choices = initialChoices + init { + suggests { choices.keys.toList() } + } + override fun getValueOfString( + cmd: DeclarativeCommandBuilder, + context: BaseCommandContext<*>, + stringValue: String? + ) = choices[stringValue] } \ No newline at end of file diff --git a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/args.kt b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/args.kt index f23a708..8efe5be 100644 --- a/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/args.kt +++ b/api/src/main/kotlin/com/mattmx/ktgui/commands/declarative/arg/impl/args.kt @@ -3,7 +3,6 @@ package com.mattmx.ktgui.commands.declarative.arg.impl import com.mattmx.ktgui.commands.declarative.arg.Argument import com.mattmx.ktgui.commands.declarative.arg.consumer.GreedyArgumentConsumer import com.mattmx.ktgui.commands.declarative.arg.consumer.SingleArgumentConsumer -import net.kyori.adventure.bossbar.BossBar.Flag import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty @@ -57,4 +56,7 @@ inline fun > enumArgument(type: String = E::class.java.simpl fun flag() = delegateArgument(FlagArgument(DELEGATED_ARG_NAME)) inline fun optionArgument(type: String = T::class.java.simpleName) = - delegateArgument(OptionArgument(DELEGATED_ARG_NAME, type, SingleArgumentConsumer())) \ No newline at end of file + delegateArgument(OptionArgument(DELEGATED_ARG_NAME, type, SingleArgumentConsumer())) + +fun multiChoiceArgument(vararg choices: Pair) = + delegateArgument(MultiChoiceArgument(DELEGATED_ARG_NAME, hashMapOf(*choices))) \ No newline at end of file