Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ mod.mc_targets=[VERSIONED]
deps.fabric_loader=0.16.10
deps.kotlin=1.13.2+kotlin.2.1.20
deps.histoire=1.0.0-beta.5
deps.commander=2.0.0
deps.commander=2.1.1
deps.mixinconstraints=1.0.2
deps.hypixel_mod_api=1.0.1
deps.kt_modules=1.0.3

# Global devenv dependencies
deps.devauth=1.2.1
Expand All @@ -32,9 +33,6 @@ deps.fix-linux-keyboard=1.0.1
deps.compacting=1.0.2+1.21.1
deps.hypixel_mod_api_mod=1.0.1+build.1+mc1.21

# Kt modules
deps.kt_modules=1.0.3

# Versioned dependencies
deps.yarn_build=[VERSIONED]
deps.fabric_api=[VERSIONED]
Expand Down
26 changes: 0 additions & 26 deletions src/main/java/me/nobaboy/nobaaddons/utils/JavaUtils.java

This file was deleted.

20 changes: 11 additions & 9 deletions src/main/kotlin/me/nobaboy/nobaaddons/commands/InstanceCommands.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package me.nobaboy.nobaaddons.commands

import com.mojang.brigadier.CommandDispatcher
import dev.celestialfault.commander.CommanderCommand
import dev.celestialfault.commander.annotations.Command
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap
import me.nobaboy.nobaaddons.commands.impl.CommandUtil
import me.nobaboy.nobaaddons.commands.impl.Context
import me.nobaboy.nobaaddons.commands.impl.NobaShortClientCommand
import me.nobaboy.nobaaddons.utils.TextUtils.darkGray
import me.nobaboy.nobaaddons.utils.chat.ChatUtils
import me.nobaboy.nobaaddons.utils.tr
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource

object InstanceCommands {
private val commander by CommandUtil::commander

private val floors = Int2ObjectArrayMap<String>(7).apply {
put(1, "one")
put(2, "two")
Expand Down Expand Up @@ -39,11 +44,8 @@ object InstanceCommands {
}

internal fun register(dispatcher: CommandDispatcher<FabricClientCommandSource>) {
// we unfortunately have to build these commands ourselves, as there's no way to use commander and still
// be able to get the command name from the provided context; at least, not without doing some ugly
// hacky workarounds (which would still be more work than just building the commands ourselves)
INSTANCE_COMMANDS.forEach { command, instance ->
dispatcher.register(ClientCommandManager.literal(command).executes(joinInstanceCommand(command, instance)))
INSTANCE_COMMANDS.keys.forEach {
commander.register(NobaShortClientCommand(it, ::joinInstanceCommand, this), dispatcher)
}
}

Expand All @@ -56,8 +58,8 @@ object InstanceCommands {
ChatUtils.queueCommand("joininstance $instance")
}

private fun joinInstanceCommand(name: String, instance: String): (Context) -> Int = {
joinInstance(name, instance)
0
@Command
fun joinInstanceCommand(ctx: Context) {
joinInstance((ctx.command as CommanderCommand<*>).command.name)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ package me.nobaboy.nobaaddons.commands.adapters
import com.mojang.brigadier.arguments.ArgumentType
import com.mojang.brigadier.context.CommandContext
import dev.celestialfault.commander.ArgumentHandler
import dev.celestialfault.commander.annotations.ExperimentalCommanderApi
import dev.celestialfault.commander.types.brigadier.EnumArgumentTypeImpl
import me.nobaboy.nobaaddons.commands.impl.CommandUtil.getArgument
import me.nobaboy.nobaaddons.utils.JavaUtils
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
import net.minecraft.util.Formatting
import kotlin.reflect.KParameter
import kotlin.reflect.full.hasAnnotation

@OptIn(ExperimentalCommanderApi::class)
object FormattingHandler : ArgumentHandler<Formatting, FabricClientCommandSource> {
@Target(AnnotationTarget.TYPE)
annotation class ColorOnly
Expand All @@ -20,6 +22,6 @@ object FormattingHandler : ArgumentHandler<Formatting, FabricClientCommandSource
override fun parse(ctx: CommandContext<FabricClientCommandSource>, name: String): Formatting =
ctx.getArgument(name)

private val FORMATTING_ARGUMENT_TYPE = JavaUtils.enumArgument(Formatting::class.java)
private val COLOR_ARGUMENT_TYPE = JavaUtils.enumArgument { Formatting.entries.filter { it.colorValue != null }.toTypedArray() }
private val FORMATTING_ARGUMENT_TYPE = EnumArgumentTypeImpl(Formatting::class.java)
private val COLOR_ARGUMENT_TYPE = EnumArgumentTypeImpl { Formatting.entries.filter { it.colorValue != null }.toTypedArray() }
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package me.nobaboy.nobaaddons.commands.debug

import dev.celestialfault.commander.annotations.Command
import dev.celestialfault.commander.annotations.ExperimentalCommanderApi
import dev.celestialfault.commander.annotations.Group
import dev.celestialfault.commander.annotations.RootCommand
import dev.celestialfault.commander.types.brigadier.EnumArgumentTypeImpl
import me.nobaboy.nobaaddons.api.skyblock.MayorAPI
import me.nobaboy.nobaaddons.commands.debug.DebugCommands.dumpInfo
import me.nobaboy.nobaaddons.commands.impl.CommandUtil
import me.nobaboy.nobaaddons.commands.impl.CommandUtil.addHandler
import me.nobaboy.nobaaddons.commands.impl.Context
import me.nobaboy.nobaaddons.core.mayor.Mayor
import me.nobaboy.nobaaddons.core.mayor.MayorPerk
import me.nobaboy.nobaaddons.utils.JavaUtils
import me.nobaboy.nobaaddons.utils.TextUtils.buildLiteral
import me.nobaboy.nobaaddons.utils.TextUtils.gray
import me.nobaboy.nobaaddons.utils.TextUtils.hoverText
Expand All @@ -22,13 +23,13 @@ import me.nobaboy.nobaaddons.utils.chat.ChatUtils
import net.minecraft.text.Text
import net.minecraft.text.Texts

@OptIn(UntranslatedMessage::class)
@OptIn(UntranslatedMessage::class, ExperimentalCommanderApi::class)
@Suppress("unused")
@Group("mayor")
object MayorDebugCommands {
init {
CommandUtil.commander.addHandler(JavaUtils.enumArgument(Mayor::class.java))
CommandUtil.commander.addHandler(JavaUtils.enumArgument(MayorPerk::class.java))
CommandUtil.commander.addHandler(EnumArgumentTypeImpl(Mayor::class.java))
CommandUtil.commander.addHandler(EnumArgumentTypeImpl(MayorPerk::class.java))
}

@RootCommand
Expand Down
22 changes: 8 additions & 14 deletions src/main/kotlin/me/nobaboy/nobaaddons/commands/impl/CommandUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,31 @@ import com.mojang.brigadier.context.CommandContext
import dev.celestialfault.commander.ArgumentHandler
import dev.celestialfault.commander.Commander
import dev.celestialfault.commander.ICommand
import dev.celestialfault.commander.annotations.ExperimentalCommanderApi
import dev.celestialfault.commander.types.brigadier.EnumArgumentTypeImpl
import me.nobaboy.nobaaddons.commands.adapters.*
import me.nobaboy.nobaaddons.core.DebugFlag
import me.nobaboy.nobaaddons.core.Skill
import me.nobaboy.nobaaddons.ui.ElementAlignment
import me.nobaboy.nobaaddons.utils.JavaUtils
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
import net.minecraft.command.CommandSource
import net.minecraft.command.argument.NbtPathArgumentType
import net.minecraft.command.argument.TextArgumentType
import kotlin.reflect.KParameter

typealias Context = CommandContext<FabricClientCommandSource>

object CommandUtil {
private val commands: MutableList<ICommand<FabricClientCommandSource>> = mutableListOf()

@OptIn(ExperimentalCommanderApi::class)
val commander = Commander<FabricClientCommandSource>().apply {
addHandler(FormattingHandler)
addHandler(NbtPathArgumentType.nbtPath())
addHandler(RarityHandler)
addHandler(JavaUtils.enumArgument(ElementAlignment::class.java))
addHandler(JavaUtils.enumArgument(Skill::class.java))
addHandler(JavaUtils.enumArgument(DebugFlag::class.java))
addHandler(EnumArgumentTypeImpl(ElementAlignment::class.java))
addHandler(EnumArgumentTypeImpl(Skill::class.java))
addHandler(EnumArgumentTypeImpl(DebugFlag::class.java))
}

init {
Expand All @@ -46,15 +47,8 @@ object CommandUtil {
commands.add(command)
}

inline fun <reified T : Any, S : CommandSource> Commander<S>.addHandler(handler: ArgumentHandler<T, S>) {
addHandler(T::class, handler)
}

inline fun <reified T : Any, S : CommandSource> Commander<S>.addHandler(handler: ArgumentType<T>) {
addHandler(object : ArgumentHandler<T, S> {
override fun argument(parameter: KParameter): ArgumentType<T> = handler
override fun parse(ctx: CommandContext<S>, name: String): T = ctx.getArgument(name)
})
inline fun <reified T : Any, S : CommandSource> Commander<S>.addHandler(type: ArgumentType<T>) {
addHandler(ArgumentHandler.of(type))
}

inline fun <reified T> CommandContext<*>.getArgument(name: String): T = getArgument(name, T::class.java)
Expand Down