feat: Add dye logger for armor stands

This commit is contained in:
Linnea Gräf
2025-03-15 17:52:35 +01:00
parent ce2e4f48d4
commit 03cf4e465c
5 changed files with 92 additions and 28 deletions

View File

@@ -0,0 +1,51 @@
package moe.nea.firmament.features.debug
import net.minecraft.component.DataComponentTypes
import net.minecraft.entity.Entity
import moe.nea.firmament.annotations.Subscribe
import moe.nea.firmament.commands.thenExecute
import moe.nea.firmament.commands.thenLiteral
import moe.nea.firmament.events.CommandEvent
import moe.nea.firmament.events.EntityUpdateEvent
import moe.nea.firmament.util.MC
import moe.nea.firmament.util.skyBlockId
import moe.nea.firmament.util.tr
object AnimatedClothingScanner {
var observedEntity: Entity? = null
@OptIn(ExperimentalStdlibApi::class)
@Subscribe
fun onUpdate(event: EntityUpdateEvent) {
if (event.entity != observedEntity) return
if (event is EntityUpdateEvent.EquipmentUpdate) {
event.newEquipment.forEach {
val id = it.second.skyBlockId?.neuItem
val colour = it.second.get(DataComponentTypes.DYED_COLOR)
?.rgb?.toHexString(HexFormat.UpperCase)
?.let { " #$it" } ?: ""
MC.sendChat(tr("firmament.fitstealer.update",
"[FIT CHECK][${MC.currentTick}] ${it.first.asString()} => ${id}${colour}"))
}
}
}
@Subscribe
fun onSubCommand(event: CommandEvent.SubCommand) {
event.subcommand("dev") {
thenLiteral("stealthisfit") {
thenExecute {
observedEntity =
if (observedEntity == null) MC.instance.targetedEntity else null
MC.sendChat(
observedEntity?.let {
tr("firmament.fitstealer.targeted", "Observing the equipment of ${it.name}.")
} ?: tr("firmament.fitstealer.targetlost", "No longer logging equipment."),
)
}
}
}
}
}