diff --git a/src/main/java/at/hannibal2/skyhanni/config/commands/CommandBuilder.kt b/src/main/java/at/hannibal2/skyhanni/config/commands/CommandBuilder.kt index beb21b74b0f6..9fc673c0f8aa 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/commands/CommandBuilder.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/commands/CommandBuilder.kt @@ -1,9 +1,5 @@ package at.hannibal2.skyhanni.config.commands -import net.minecraft.command.ICommandSender -import net.minecraft.util.BlockPos - -// TODO: Gravy's dm class CommandBuilder(val name: String) { var description: String = "" var category: CommandCategory = CommandCategory.MAIN @@ -11,25 +7,6 @@ class CommandBuilder(val name: String) { var autoComplete: ((Array) -> List) = { listOf() } var callback: (Array) -> Unit = {} - fun toSimpleCommand() = SimpleCommand( - name.lowercase(), - aliases, - createCommand(callback), - object : SimpleCommand.TabCompleteRunnable { - override fun tabComplete( - sender: ICommandSender?, - args: Array?, - pos: BlockPos?, - ): List { - return autoComplete(args ?: emptyArray()) - } - }, - ) - - private fun createCommand(function: (Array) -> Unit) = object : SimpleCommand.ProcessCommandRunnable() { - override fun processCommand(sender: ICommandSender?, args: Array?) { - if (args != null) function(args.asList().toTypedArray()) - } - } + fun toSimpleCommand() = SimpleCommand(name.lowercase(), aliases, callback, autoComplete) } diff --git a/src/main/java/at/hannibal2/skyhanni/config/commands/SimpleCommand.kt b/src/main/java/at/hannibal2/skyhanni/config/commands/SimpleCommand.kt index f1b74edc2dce..6240b43bf8e5 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/commands/SimpleCommand.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/commands/SimpleCommand.kt @@ -6,36 +6,25 @@ import net.minecraft.command.ICommandSender import net.minecraft.util.BlockPos class SimpleCommand( - private val commandName: String, - private var aliases: List, - private val runnable: ProcessCommandRunnable, - private var tabRunnable: TabCompleteRunnable?, + private val name: String, + private val aliases: List, + private val callback: (Array) -> Unit, + private val tabCallback: ((Array) -> List) = { emptyList() }, ) : CommandBase() { - abstract class ProcessCommandRunnable { - abstract fun processCommand(sender: ICommandSender?, args: Array?) - } - - interface TabCompleteRunnable { - fun tabComplete(sender: ICommandSender?, args: Array?, pos: BlockPos?): List - } - override fun canCommandSenderUseCommand(sender: ICommandSender) = true - - override fun getCommandName() = commandName - + override fun getCommandName() = name override fun getCommandAliases() = aliases - - override fun getCommandUsage(sender: ICommandSender) = "/$commandName" + override fun getCommandUsage(sender: ICommandSender) = "/$name" override fun processCommand(sender: ICommandSender, args: Array) { try { - runnable.processCommand(sender, args) + callback(args) } catch (e: Throwable) { - ErrorManager.logErrorWithData(e, "Error while running command /$commandName") + ErrorManager.logErrorWithData(e, "Error while running command /$name") } } override fun addTabCompletionOptions(sender: ICommandSender, args: Array, pos: BlockPos) = - if (tabRunnable != null) tabRunnable!!.tabComplete(sender, args, pos) else null + tabCallback(args).takeIf { it.isNotEmpty() } }