Add debug log enabling

This commit is contained in:
Linnea Gräf
2024-09-25 15:27:22 +02:00
parent 420f2a61e1
commit beb14d73bd
4 changed files with 270 additions and 248 deletions

View File

@@ -8,7 +8,7 @@ root = true
charset = utf-8 charset = utf-8
end_of_line = lf end_of_line = lf
indent_size = 4 indent_size = 4
indent_style = space indent_style = tab
insert_final_newline = true insert_final_newline = true
max_line_length = 120 max_line_length = 120

View File

@@ -8,6 +8,7 @@ import net.minecraft.text.Text
import moe.nea.firmament.apis.UrsaManager import moe.nea.firmament.apis.UrsaManager
import moe.nea.firmament.events.CommandEvent import moe.nea.firmament.events.CommandEvent
import moe.nea.firmament.events.FirmamentEventBus import moe.nea.firmament.events.FirmamentEventBus
import moe.nea.firmament.features.debug.DebugLogger
import moe.nea.firmament.features.debug.PowerUserTools import moe.nea.firmament.features.debug.PowerUserTools
import moe.nea.firmament.features.inventory.buttons.InventoryButtons import moe.nea.firmament.features.inventory.buttons.InventoryButtons
import moe.nea.firmament.features.inventory.storageoverlay.StorageOverlayScreen import moe.nea.firmament.features.inventory.storageoverlay.StorageOverlayScreen
@@ -186,6 +187,24 @@ fun firmamentCommand() = literal("firmament") {
} }
} }
} }
thenLiteral("debuglog") {
thenLiteral("toggle") {
thenArgument("tag", string()) { tag ->
suggestsList { DebugLogger.allInstances.getAll().map { it.tag } + DebugLogger.EnabledLogs.data }
thenExecute {
val tagText = this[tag]
val enabled = DebugLogger.EnabledLogs.data
if (tagText in enabled) {
enabled.remove(tagText)
source.sendFeedback(Text.literal("Disabled $tagText debug logging"))
} else {
enabled.add(tagText)
source.sendFeedback(Text.literal("Enabled $tagText debug logging"))
}
}
}
}
}
thenLiteral("sbdata") { thenLiteral("sbdata") {
thenExecute { thenExecute {
source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.profile", SBData.profileId)) source.sendFeedback(Text.stringifiedTranslatable("firmament.sbinfo.profile", SBData.profileId))

View File

@@ -1,18 +1,22 @@
package moe.nea.firmament.features.debug package moe.nea.firmament.features.debug
import kotlinx.serialization.serializer
import net.minecraft.text.Text import net.minecraft.text.Text
import moe.nea.firmament.util.MC import moe.nea.firmament.util.MC
import moe.nea.firmament.util.collections.InstanceList import moe.nea.firmament.util.collections.InstanceList
import moe.nea.firmament.util.data.DataHolder
class DebugLogger(val tag: String) { class DebugLogger(val tag: String) {
companion object { companion object {
val allInstances = InstanceList<DebugLogger>("DebugLogger") val allInstances = InstanceList<DebugLogger>("DebugLogger")
} }
object EnabledLogs : DataHolder<MutableSet<String>>(serializer(), "DebugLogs", ::mutableSetOf)
init { init {
allInstances.add(this) allInstances.add(this)
} }
fun isEnabled() = DeveloperFeatures.isEnabled // TODO: allow filtering by tag
fun isEnabled() = DeveloperFeatures.isEnabled && EnabledLogs.data.contains(tag)
fun log(text: () -> String) { fun log(text: () -> String) {
if (!isEnabled()) return if (!isEnabled()) return
MC.sendChat(Text.literal(text())) MC.sendChat(Text.literal(text()))

View File

@@ -1,5 +1,3 @@
package moe.nea.firmament.features.debug package moe.nea.firmament.features.debug
import java.nio.file.Path import java.nio.file.Path
@@ -13,7 +11,6 @@ import moe.nea.firmament.features.FirmamentFeature
import moe.nea.firmament.gui.config.ManagedConfig import moe.nea.firmament.gui.config.ManagedConfig
import moe.nea.firmament.util.MC import moe.nea.firmament.util.MC
import moe.nea.firmament.util.TimeMark import moe.nea.firmament.util.TimeMark
import moe.nea.firmament.util.errorBoundary
import moe.nea.firmament.util.iterate import moe.nea.firmament.util.iterate
object DeveloperFeatures : FirmamentFeature { object DeveloperFeatures : FirmamentFeature {
@@ -43,7 +40,9 @@ object DeveloperFeatures : FirmamentFeature {
MC.player?.sendMessage(Text.translatable("firmament.dev.resourcerebuild.start")) MC.player?.sendMessage(Text.translatable("firmament.dev.resourcerebuild.start"))
val startTime = TimeMark.now() val startTime = TimeMark.now()
process.toHandle().onExit().thenApply { process.toHandle().onExit().thenApply {
MC.player?.sendMessage(Text.stringifiedTranslatable("firmament.dev.resourcerebuild.done", startTime.passedTime())) MC.player?.sendMessage(Text.stringifiedTranslatable(
"firmament.dev.resourcerebuild.done",
startTime.passedTime()))
Unit Unit
} }
} else { } else {