diff options
Diffstat (limited to 'src/main/kotlin/commands/rome.kt')
| -rw-r--r-- | src/main/kotlin/commands/rome.kt | 213 |
1 files changed, 134 insertions, 79 deletions
diff --git a/src/main/kotlin/commands/rome.kt b/src/main/kotlin/commands/rome.kt index 9fc5386..727e039 100644 --- a/src/main/kotlin/commands/rome.kt +++ b/src/main/kotlin/commands/rome.kt @@ -3,15 +3,19 @@ package moe.nea.firmament.commands import com.mojang.brigadier.CommandDispatcher import com.mojang.brigadier.arguments.IntegerArgumentType import com.mojang.brigadier.arguments.StringArgumentType.string -import io.ktor.client.statement.bodyAsText +import java.net.http.HttpResponse import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource +import kotlinx.coroutines.launch +import net.minecraft.commands.CommandBuildContext import net.minecraft.nbt.NbtOps -import net.minecraft.text.Text -import net.minecraft.text.TextCodecs +import net.minecraft.network.chat.Component +import net.minecraft.network.chat.ComponentSerialization +import moe.nea.firmament.Firmament import moe.nea.firmament.apis.UrsaManager import moe.nea.firmament.events.CommandEvent import moe.nea.firmament.events.FirmamentEventBus import moe.nea.firmament.features.debug.DebugLogger +import moe.nea.firmament.features.debug.DeveloperFeatures import moe.nea.firmament.features.debug.PowerUserTools import moe.nea.firmament.features.inventory.buttons.InventoryButtons import moe.nea.firmament.features.inventory.storageoverlay.StorageOverlayScreen @@ -19,7 +23,6 @@ import moe.nea.firmament.features.inventory.storageoverlay.StorageOverviewScreen import moe.nea.firmament.features.mining.MiningBlockInfoUi import moe.nea.firmament.gui.config.AllConfigsGui import moe.nea.firmament.gui.config.BooleanHandler -import moe.nea.firmament.gui.config.ManagedConfig import moe.nea.firmament.gui.config.ManagedOption import moe.nea.firmament.init.MixinPlugin import moe.nea.firmament.repo.HypixelStaticData @@ -34,14 +37,16 @@ import moe.nea.firmament.util.SBData import moe.nea.firmament.util.ScreenUtil import moe.nea.firmament.util.SkyblockId import moe.nea.firmament.util.accessors.messages +import moe.nea.firmament.util.asBazaarStock import moe.nea.firmament.util.collections.InstanceList import moe.nea.firmament.util.collections.WeakCache +import moe.nea.firmament.util.data.ManagedConfig import moe.nea.firmament.util.mc.SNbtFormatter import moe.nea.firmament.util.tr import moe.nea.firmament.util.unformattedString -fun firmamentCommand() = literal("firmament") { +fun firmamentCommand(ctx: CommandBuildContext) = literal("firmament") { thenLiteral("config") { thenExecute { AllConfigsGui.showAllGuis() @@ -66,7 +71,7 @@ fun firmamentCommand() = literal("firmament") { val configObj = ManagedConfig.allManagedConfigs.getAll().find { it.name == config } if (configObj == null) { source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.command.toggle.no-config-found", config ) @@ -76,24 +81,24 @@ fun firmamentCommand() = literal("firmament") { val propertyObj = configObj.allOptions[property] if (propertyObj == null) { source.sendFeedback( - Text.stringifiedTranslatable("firmament.command.toggle.no-property-found", property) + Component.translatableEscape("firmament.command.toggle.no-property-found", property) ) return@thenExecute } if (propertyObj.handler !is BooleanHandler) { source.sendFeedback( - Text.stringifiedTranslatable("firmament.command.toggle.not-a-toggle", property) + Component.translatableEscape("firmament.command.toggle.not-a-toggle", property) ) return@thenExecute } propertyObj as ManagedOption<Boolean> propertyObj.value = !propertyObj.value - configObj.save() + configObj.markDirty() source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.command.toggle.toggled", configObj.labelText, propertyObj.labelText, - Text.translatable("firmament.toggle.${propertyObj.value}") + Component.translatable("firmament.toggle.${propertyObj.value}") ) ) } @@ -121,13 +126,13 @@ fun firmamentCommand() = literal("firmament") { thenLiteral("storageoverview") { thenExecute { ScreenUtil.setScreenLater(StorageOverviewScreen()) - MC.player?.networkHandler?.sendChatCommand("storage") + MC.player?.connection?.sendCommand("storage") } } thenLiteral("storage") { thenExecute { ScreenUtil.setScreenLater(StorageOverlayScreen()) - MC.player?.networkHandler?.sendChatCommand("storage") + MC.player?.connection?.sendCommand("storage") } } thenLiteral("repo") { @@ -143,13 +148,13 @@ fun firmamentCommand() = literal("firmament") { thenLiteral("reload") { thenLiteral("fetch") { thenExecute { - source.sendFeedback(Text.translatable("firmament.repo.reload.network")) // TODO better reporting + source.sendFeedback(Component.translatable("firmament.repo.reload.network")) // TODO better reporting RepoManager.launchAsyncUpdate() } } thenExecute { - source.sendFeedback(Text.translatable("firmament.repo.reload.disk")) - RepoManager.reload() + source.sendFeedback(Component.translatable("firmament.repo.reload.disk")) + Firmament.coroutineScope.launch { RepoManager.reload() } } } } @@ -158,33 +163,33 @@ fun firmamentCommand() = literal("firmament") { suggestsList { RepoManager.neuRepo.items.items.keys } thenExecute { val itemName = SkyblockId(get(item)) - source.sendFeedback(Text.stringifiedTranslatable("firmament.price", itemName.neuItem)) - val bazaarData = HypixelStaticData.bazaarData[itemName] + source.sendFeedback(Component.translatableEscape("firmament.price", itemName.neuItem)) + val bazaarData = HypixelStaticData.bazaarData[itemName.asBazaarStock] if (bazaarData != null) { - source.sendFeedback(Text.translatable("firmament.price.bazaar")) + source.sendFeedback(Component.translatable("firmament.price.bazaar")) source.sendFeedback( - Text.stringifiedTranslatable("firmament.price.bazaar.productid", bazaarData.productId.bazaarId) + Component.translatableEscape("firmament.price.bazaar.productid", bazaarData.productId.bazaarId) ) source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.price.bazaar.buy.price", FirmFormatters.formatCommas(bazaarData.quickStatus.buyPrice, 1) ) ) source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.price.bazaar.buy.order", bazaarData.quickStatus.buyOrders ) ) source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.price.bazaar.sell.price", FirmFormatters.formatCommas(bazaarData.quickStatus.sellPrice, 1) ) ) source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.price.bazaar.sell.order", bazaarData.quickStatus.sellOrders ) @@ -193,7 +198,7 @@ fun firmamentCommand() = literal("firmament") { val lowestBin = HypixelStaticData.lowestBin[itemName] if (lowestBin != null) { source.sendFeedback( - Text.stringifiedTranslatable( + Component.translatableEscape( "firmament.price.lowestbin", FirmFormatters.formatCommas(lowestBin, 1) ) @@ -202,11 +207,11 @@ fun firmamentCommand() = literal("firmament") { } } } - thenLiteral("dev") { + thenLiteral(DeveloperFeatures.DEVELOPER_SUBCOMMAND) { thenLiteral("simulate") { thenArgument("message", RestArgumentType) { message -> thenExecute { - MC.instance.messageHandler.onGameMessage(Text.literal(get(message)), false) + MC.instance.chatListener.handleSystemMessage(Component.literal(get(message)), false) } } } @@ -219,10 +224,10 @@ fun firmamentCommand() = literal("firmament") { val enabled = DebugLogger.EnabledLogs.data if (tagText in enabled) { enabled.remove(tagText) - source.sendFeedback(Text.literal("Disabled $tagText debug logging")) + source.sendFeedback(Component.literal("Disabled $tagText debug logging")) } else { enabled.add(tagText) - source.sendFeedback(Text.literal("Enabled $tagText debug logging")) + source.sendFeedback(Component.literal("Enabled $tagText debug logging")) } } } @@ -230,11 +235,15 @@ fun firmamentCommand() = literal("firmament") { } thenLiteral("screens") { thenExecute { - MC.sendChat(Text.literal(""" + MC.sendChat( + Component.literal( + """ |Screen: ${MC.screen} (${MC.screen?.title}) - |Screen Handler: ${MC.handledScreen?.screenHandler} ${MC.handledScreen?.screenHandler?.syncId} - |Player Screen Handler: ${MC.player?.currentScreenHandler} ${MC.player?.currentScreenHandler?.syncId} - """.trimMargin())) + |Screen Handler: ${MC.handledScreen?.menu} ${MC.handledScreen?.menu?.containerId} + |Player Screen Handler: ${MC.player?.containerMenu} ${MC.player?.containerMenu?.containerId} + """.trimMargin() + ) + ) } } thenLiteral("blocks") { @@ -244,17 +253,17 @@ fun firmamentCommand() = literal("firmament") { } thenLiteral("dumpchat") { thenExecute { - MC.inGameHud.chatHud.messages.forEach { - val nbt = TextCodecs.CODEC.encodeStart(NbtOps.INSTANCE, it.content).orThrow + MC.inGameHud.chat.messages.forEach { + val nbt = ComponentSerialization.CODEC.encodeStart(NbtOps.INSTANCE, it.content).orThrow println(nbt) } } thenArgument("search", string()) { search -> thenExecute { - MC.inGameHud.chatHud.messages + MC.inGameHud.chat.messages .filter { this[search] in it.content.unformattedString } .forEach { - val nbt = TextCodecs.CODEC.encodeStart(NbtOps.INSTANCE, it.content).orThrow + val nbt = ComponentSerialization.CODEC.encodeStart(NbtOps.INSTANCE, it.content).orThrow println(SNbtFormatter.prettify(nbt)) } } @@ -262,24 +271,28 @@ fun firmamentCommand() = literal("firmament") { } thenLiteral("sbdata") { thenExecute { - source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.profile", SBData.profileId)) + source.sendFeedback(Component.translatableEscape("firmament.sbinfo.profile", SBData.profileId)) val locrawInfo = SBData.locraw if (locrawInfo == null) { - source.sendFeedback(Text.translatable("firmament.sbinfo.nolocraw")) + source.sendFeedback(Component.translatable("firmament.sbinfo.nolocraw")) } else { - source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.server", locrawInfo.server)) - source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.gametype", locrawInfo.gametype)) - source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.mode", locrawInfo.mode)) - source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.map", locrawInfo.map)) - source.sendFeedback(tr("firmament.sbinfo.custommining", - "Custom Mining: ${formatBool(locrawInfo.skyblockLocation?.hasCustomMining ?: false)}")) + source.sendFeedback(Component.translatableEscape("firmament.sbinfo.server", locrawInfo.server)) + source.sendFeedback(Component.translatableEscape("firmament.sbinfo.gametype", locrawInfo.gametype)) + source.sendFeedback(Component.translatableEscape("firmament.sbinfo.mode", locrawInfo.mode)) + source.sendFeedback(Component.translatableEscape("firmament.sbinfo.map", locrawInfo.map)) + source.sendFeedback( + tr( + "firmament.sbinfo.custommining", + "Custom Mining: ${formatBool(locrawInfo.skyblockLocation?.hasCustomMining ?: false)}" + ) + ) } } } thenLiteral("copyEntities") { thenExecute { val player = MC.player ?: return@thenExecute - player.world.getOtherEntities(player, player.boundingBox.expand(12.0)) + player.level.getEntities(player, player.boundingBox.inflate(12.0)) .forEach(PowerUserTools::showEntity) PowerUserTools.showEntity(player) } @@ -287,9 +300,11 @@ fun firmamentCommand() = literal("firmament") { thenLiteral("callUrsa") { thenArgument("path", string()) { path -> thenExecute { - source.sendFeedback(Text.translatable("firmament.ursa.debugrequest.start")) - val text = UrsaManager.request(this[path].split("/")).bodyAsText() - source.sendFeedback(Text.stringifiedTranslatable("firmament.ursa.debugrequest.result", text)) + Firmament.coroutineScope.launch { + source.sendFeedback(Component.translatable("firmament.ursa.debugrequest.start")) + val text = UrsaManager.request(get(path).split("/"), HttpResponse.BodyHandlers.ofString()) + source.sendFeedback(Component.translatableEscape("firmament.ursa.debugrequest.result", text)) + } } } } @@ -298,26 +313,32 @@ fun firmamentCommand() = literal("firmament") { source.sendFeedback(tr("firmament.event.start", "Event Bus Readout:")) FirmamentEventBus.allEventBuses.forEach { eventBus -> val prefixName = eventBus.eventType.typeName.removePrefix("moe.nea.firmament") - source.sendFeedback(tr( - "firmament.event.bustype", - "- $prefixName:")) + source.sendFeedback( + tr( + "firmament.event.bustype", + "- $prefixName:" + ) + ) eventBus.handlers.forEach { handler -> - source.sendFeedback(tr( - "firmament.event.handler", - " * ${handler.label}")) + source.sendFeedback( + tr( + "firmament.event.handler", + " * ${handler.label}" + ) + ) } } } } thenLiteral("caches") { thenExecute { - source.sendFeedback(Text.literal("Caches:")) + source.sendFeedback(Component.literal("Caches:")) WeakCache.allInstances.getAll().forEach { - source.sendFeedback(Text.literal(" - ${it.name}: ${it.size}")) + source.sendFeedback(Component.literal(" - ${it.name}: ${it.size}")) } - source.sendFeedback(Text.translatable("Instance lists:")) + source.sendFeedback(Component.translatable("Instance lists:")) InstanceList.allInstances.getAll().forEach { - source.sendFeedback(Text.literal(" - ${it.name}: ${it.size}")) + source.sendFeedback(Component.literal(" - ${it.name}: ${it.size}")) } } } @@ -328,8 +349,10 @@ fun firmamentCommand() = literal("firmament") { plugin.appliedMixins .map { it.removePrefix(plugin.mixinPackage) } .forEach { - source.sendFeedback(Text.literal(" - ").withColor(0xD020F0) - .append(Text.literal(it).withColor(0xF6BA20))) + source.sendFeedback( + Component.literal(" - ").withColor(0xD020F0) + .append(Component.literal(it).withColor(0xF6BA20)) + ) } } } @@ -337,33 +360,65 @@ fun firmamentCommand() = literal("firmament") { thenLiteral("repo") { thenExecute { source.sendFeedback(tr("firmament.repo.info.ref", "Repo Upstream: ${RepoManager.getRepoRef()}")) - source.sendFeedback(tr("firmament.repo.info.downloadedref", - "Downloaded ref: ${RepoDownloadManager.latestSavedVersionHash}")) - source.sendFeedback(tr("firmament.repo.info.location", - "Saved location: ${debugPath(RepoDownloadManager.repoSavedLocation)}")) - source.sendFeedback(tr("firmament.repo.info.reloadstatus", - "Incomplete: ${ - formatBool(RepoManager.neuRepo.isIncomplete, - trueIsGood = false) - }, Unstable ${formatBool(RepoManager.neuRepo.isUnstable, trueIsGood = false)}")) - source.sendFeedback(tr("firmament.repo.info.items", - "Loaded items: ${RepoManager.neuRepo.items?.items?.size}")) - source.sendFeedback(tr("firmament.repo.info.itemcache", - "ItemCache flawless: ${formatBool(ItemCache.isFlawless)}")) - source.sendFeedback(tr("firmament.repo.info.itemdir", - "Items on disk: ${debugPath(RepoDownloadManager.repoSavedLocation.resolve("items"))}")) + source.sendFeedback( + tr( + "firmament.repo.info.downloadedref", + "Downloaded ref: ${RepoDownloadManager.latestSavedVersionHash}" + ) + ) + source.sendFeedback( + tr( + "firmament.repo.info.location", + "Saved location: ${debugPath(RepoDownloadManager.repoSavedLocation)}" + ) + ) + source.sendFeedback( + tr( + "firmament.repo.info.reloadstatus", + "Incomplete: ${ + formatBool( + RepoManager.neuRepo.isIncomplete, + trueIsGood = false + ) + }, Unstable ${formatBool(RepoManager.neuRepo.isUnstable, trueIsGood = false)}" + ) + ) + source.sendFeedback( + tr( + "firmament.repo.info.items", + "Loaded items: ${RepoManager.neuRepo.items?.items?.size}" + ) + ) + source.sendFeedback( + tr( + "firmament.repo.info.overlays", + "Overlays: ${RepoManager.overlayData.overlays.size}" + ) + ) + source.sendFeedback( + tr( + "firmament.repo.info.itemcache", + "ItemCache flawless: ${formatBool(ItemCache.isFlawless)}" + ) + ) + source.sendFeedback( + tr( + "firmament.repo.info.itemdir", + "Items on disk: ${debugPath(RepoDownloadManager.repoSavedLocation.resolve("items"))}" + ) + ) } } } thenExecute { AllConfigsGui.showAllGuis() } - CommandEvent.SubCommand.publish(CommandEvent.SubCommand(this@literal)) + CommandEvent.SubCommand.publish(CommandEvent.SubCommand(this@literal, ctx)) } -fun registerFirmamentCommand(dispatcher: CommandDispatcher<FabricClientCommandSource>) { - val firmament = dispatcher.register(firmamentCommand()) +fun registerFirmamentCommand(dispatcher: CommandDispatcher<FabricClientCommandSource>, ctx: CommandBuildContext) { + val firmament = dispatcher.register(firmamentCommand(ctx)) dispatcher.register(literal("firm") { redirect(firmament) }) |
