From 05160314e6899ece75779dbd2e5b691ed581c2b9 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Mon, 13 Oct 2025 21:09:29 +0200 Subject: feat: add debug mode to custom block texture areas --- src/main/kotlin/Firmament.kt | 2 +- src/main/kotlin/commands/rome.kt | 9 +++++---- src/main/kotlin/events/CommandEvent.kt | 1 + src/main/kotlin/util/render/RenderInWorldContext.kt | 11 +++++++++++ 4 files changed, 18 insertions(+), 5 deletions(-) (limited to 'src/main') diff --git a/src/main/kotlin/Firmament.kt b/src/main/kotlin/Firmament.kt index 795619e..8e31848 100644 --- a/src/main/kotlin/Firmament.kt +++ b/src/main/kotlin/Firmament.kt @@ -124,7 +124,7 @@ object Firmament { @Suppress("UNUSED_PARAMETER") ctx: CommandRegistryAccess ) { - registerFirmamentCommand(dispatcher) + registerFirmamentCommand(dispatcher, ctx) CommandEvent.publish(CommandEvent(dispatcher, ctx, MC.networkHandler?.commandDispatcher)) } diff --git a/src/main/kotlin/commands/rome.kt b/src/main/kotlin/commands/rome.kt index affc860..97acf73 100644 --- a/src/main/kotlin/commands/rome.kt +++ b/src/main/kotlin/commands/rome.kt @@ -6,6 +6,7 @@ import com.mojang.brigadier.arguments.StringArgumentType.string import io.ktor.client.statement.bodyAsText import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource import kotlinx.coroutines.launch +import net.minecraft.command.CommandRegistryAccess import net.minecraft.nbt.NbtOps import net.minecraft.text.Text import net.minecraft.text.TextCodecs @@ -45,7 +46,7 @@ import moe.nea.firmament.util.tr import moe.nea.firmament.util.unformattedString -fun firmamentCommand() = literal("firmament") { +fun firmamentCommand(ctx: CommandRegistryAccess) = literal("firmament") { thenLiteral("config") { thenExecute { AllConfigsGui.showAllGuis() @@ -406,12 +407,12 @@ fun firmamentCommand() = literal("firmament") { thenExecute { AllConfigsGui.showAllGuis() } - CommandEvent.SubCommand.publish(CommandEvent.SubCommand(this@literal)) + CommandEvent.SubCommand.publish(CommandEvent.SubCommand(this@literal, ctx)) } -fun registerFirmamentCommand(dispatcher: CommandDispatcher) { - val firmament = dispatcher.register(firmamentCommand()) +fun registerFirmamentCommand(dispatcher: CommandDispatcher, ctx: CommandRegistryAccess) { + val firmament = dispatcher.register(firmamentCommand(ctx)) dispatcher.register(literal("firm") { redirect(firmament) }) diff --git a/src/main/kotlin/events/CommandEvent.kt b/src/main/kotlin/events/CommandEvent.kt index cc9cf45..63ed115 100644 --- a/src/main/kotlin/events/CommandEvent.kt +++ b/src/main/kotlin/events/CommandEvent.kt @@ -23,6 +23,7 @@ data class CommandEvent( */ data class SubCommand( val builder: CaseInsensitiveLiteralCommandNode.Builder, + val commandRegistryAccess: CommandRegistryAccess, ) : FirmamentEvent() { companion object : FirmamentEventBus() diff --git a/src/main/kotlin/util/render/RenderInWorldContext.kt b/src/main/kotlin/util/render/RenderInWorldContext.kt index 12a061d..b1ba9d0 100644 --- a/src/main/kotlin/util/render/RenderInWorldContext.kt +++ b/src/main/kotlin/util/render/RenderInWorldContext.kt @@ -7,7 +7,9 @@ import util.render.CustomRenderLayers import kotlin.math.pow import net.minecraft.client.render.Camera import net.minecraft.client.render.RenderLayer +import net.minecraft.client.render.RenderLayers import net.minecraft.client.render.RenderTickCounter +import net.minecraft.client.render.TexturedRenderLayers import net.minecraft.client.render.VertexConsumer import net.minecraft.client.render.VertexConsumerProvider import net.minecraft.client.texture.Sprite @@ -15,6 +17,7 @@ import net.minecraft.client.util.math.MatrixStack import net.minecraft.text.Text import net.minecraft.util.Identifier import net.minecraft.util.math.BlockPos +import net.minecraft.util.math.Box import net.minecraft.util.math.Vec3d import moe.nea.firmament.events.WorldRenderLastEvent import moe.nea.firmament.util.FirmFormatters @@ -34,6 +37,14 @@ class RenderInWorldContext private constructor( matrixStack.pop() } + fun box(aabb: Box, color: Int) { + matrixStack.push() + matrixStack.translate(aabb.minX, aabb.minY, aabb.minZ) + matrixStack.scale(aabb.lengthX.toFloat(), aabb.lengthY.toFloat(), aabb.lengthZ.toFloat()) + buildCube(matrixStack.peek().positionMatrix, vertexConsumers.getBuffer(CustomRenderLayers.COLORED_QUADS), color) + matrixStack.pop() + } + fun sharedVoxelSurface(blocks: Set, color: Int) { val m = BlockPos.Mutable() val l = vertexConsumers.getBuffer(CustomRenderLayers.COLORED_QUADS) -- cgit