aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/notenoughupdates/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/commands')
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/commands/dsl.kt81
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/commands/rome.kt66
2 files changed, 0 insertions, 147 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/commands/dsl.kt b/src/main/kotlin/moe/nea/notenoughupdates/commands/dsl.kt
deleted file mode 100644
index 6190d88..0000000
--- a/src/main/kotlin/moe/nea/notenoughupdates/commands/dsl.kt
+++ /dev/null
@@ -1,81 +0,0 @@
-package moe.nea.notenoughupdates.commands
-
-import com.mojang.brigadier.arguments.ArgumentType
-import com.mojang.brigadier.builder.ArgumentBuilder
-import com.mojang.brigadier.builder.LiteralArgumentBuilder
-import com.mojang.brigadier.builder.RequiredArgumentBuilder
-import com.mojang.brigadier.context.CommandContext
-import java.lang.reflect.ParameterizedType
-import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
-import moe.nea.notenoughupdates.util.iterate
-
-
-typealias DefaultSource = FabricClientCommandSource
-
-
-inline val <T : CommandContext<*>> T.context get() = this
-operator fun <T : Any, C : CommandContext<*>> C.get(arg: TypeSafeArg<T>): T {
- return arg.get(this)
-}
-
-fun literal(
- name: String,
- block: LiteralArgumentBuilder<DefaultSource>.() -> Unit
-): LiteralArgumentBuilder<DefaultSource> =
- LiteralArgumentBuilder.literal<DefaultSource>(name).also(block)
-
-data class TypeSafeArg<T : Any>(val name: String, val argument: ArgumentType<T>) {
- val argClass by lazy {
- argument.javaClass
- .iterate<Class<in ArgumentType<T>>> {
- it.superclass
- }
- .map {
- it.genericSuperclass
- }
- .filterIsInstance<ParameterizedType>()
- .find { it.rawType == ArgumentType::class.java }!!
- .let { it.actualTypeArguments[0] as Class<*> }
- }
-
- @JvmName("getWithThis")
- fun <S> CommandContext<S>.get(): T =
- get(this)
-
-
- fun <S> get(ctx: CommandContext<S>): T {
- return ctx.getArgument(name, argClass) as T
- }
-}
-
-
-fun <T : Any> argument(
- name: String,
- argument: ArgumentType<T>,
- block: RequiredArgumentBuilder<DefaultSource, T>.(TypeSafeArg<T>) -> Unit
-): RequiredArgumentBuilder<DefaultSource, T> =
- RequiredArgumentBuilder.argument<DefaultSource, T>(name, argument).also { block(it, TypeSafeArg(name, argument)) }
-
-fun <T : ArgumentBuilder<DefaultSource, T>, AT : Any> T.thenArgument(
- name: String,
- argument: ArgumentType<AT>,
- block: RequiredArgumentBuilder<DefaultSource, AT>.(TypeSafeArg<AT>) -> Unit
-): T = then(argument(name, argument, block))
-
-
-fun <T : ArgumentBuilder<DefaultSource, T>> T.thenLiteral(
- name: String,
- block: LiteralArgumentBuilder<DefaultSource>.() -> Unit
-): T =
- then(literal(name, block))
-
-fun <T : ArgumentBuilder<DefaultSource, T>> T.then(node: ArgumentBuilder<DefaultSource, *>, block: T.() -> Unit): T =
- then(node).also(block)
-
-fun <T : ArgumentBuilder<DefaultSource, T>> T.thenExecute(block: CommandContext<DefaultSource>.() -> Unit): T =
- executes {
- block(it)
- 1
- }
-
-
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/commands/rome.kt b/src/main/kotlin/moe/nea/notenoughupdates/commands/rome.kt
deleted file mode 100644
index a60073a..0000000
--- a/src/main/kotlin/moe/nea/notenoughupdates/commands/rome.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-package moe.nea.notenoughupdates.commands
-
-import com.mojang.brigadier.CommandDispatcher
-import io.github.cottonmc.cotton.gui.client.CottonClientScreen
-import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
-import net.minecraft.text.Text
-import moe.nea.notenoughupdates.features.world.FairySouls
-import moe.nea.notenoughupdates.gui.repoGui
-import moe.nea.notenoughupdates.repo.RepoManager
-import moe.nea.notenoughupdates.util.SBData
-import moe.nea.notenoughupdates.util.ScreenUtil.setScreenLater
-
-
-fun neuCommand() = literal("neu") {
- thenLiteral("repo") {
- thenLiteral("reload") {
- thenLiteral("fetch") {
- thenExecute {
- source.sendFeedback(Text.translatable("notenoughupdates.repo.reload.network")) // TODO better reporting
- RepoManager.launchAsyncUpdate()
- }
- }
- thenExecute {
- source.sendFeedback(Text.translatable("notenoughupdates.repo.reload.disk"))
- RepoManager.reload()
- }
- }
- thenExecute {
- setScreenLater(CottonClientScreen(repoGui()))
- }
- }
- thenLiteral("dev") {
- thenLiteral("config") {
- thenExecute {
- FairySouls.TConfig.showConfigEditor()
- }
- }
- thenLiteral("sbdata") {
- thenExecute {
- source.sendFeedback(Text.translatable("notenoughupdates.sbinfo.profile", SBData.profileCuteName))
- val locrawInfo = SBData.locraw
- if (locrawInfo == null) {
- source.sendFeedback(Text.translatable("notenoughupdates.sbinfo.nolocraw"))
- } else {
- source.sendFeedback(Text.translatable("notenoughupdates.sbinfo.server", locrawInfo.server))
- source.sendFeedback(Text.translatable("notenoughupdates.sbinfo.gametype", locrawInfo.gametype))
- source.sendFeedback(Text.translatable("notenoughupdates.sbinfo.mode", locrawInfo.mode))
- source.sendFeedback(Text.translatable("notenoughupdates.sbinfo.map", locrawInfo.map))
- }
-
- }
- }
- }
-}
-
-
-fun registerNeuCommand(dispatcher: CommandDispatcher<FabricClientCommandSource>) {
- val neu = dispatcher.register(neuCommand())
- dispatcher.register(literal("alsoneu") {
- redirect(neu)
- })
-}
-
-
-
-