diff options
Diffstat (limited to 'src/main/kotlin/com/dulkirfabric')
7 files changed, 39 insertions, 28 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/Registrations.kt b/src/main/kotlin/com/dulkirfabric/Registrations.kt index 355abb8..f47182b 100644 --- a/src/main/kotlin/com/dulkirfabric/Registrations.kt +++ b/src/main/kotlin/com/dulkirfabric/Registrations.kt @@ -126,7 +126,12 @@ object Registrations { ModifyCommandEvent(command).also { it.post() }.command } - WorldRenderEvents.END.register { context -> WorldRenderLastEvent(context).post() } + WorldRenderEvents.END.register { context -> + WorldRenderLastEvent( + context, + context.matrixStack()!! // Not null assertion is safe here since this is late enough in rendering + ).post() + } ScreenEvents.BEFORE_INIT.register( ScreenEvents.BeforeInit { client, screen, scaledWidth, scaledHeight -> diff --git a/src/main/kotlin/com/dulkirfabric/events/WorldRenderLastEvent.kt b/src/main/kotlin/com/dulkirfabric/events/WorldRenderLastEvent.kt index 11b7714..e91c2f3 100644 --- a/src/main/kotlin/com/dulkirfabric/events/WorldRenderLastEvent.kt +++ b/src/main/kotlin/com/dulkirfabric/events/WorldRenderLastEvent.kt @@ -2,6 +2,7 @@ package com.dulkirfabric.events import com.dulkirfabric.events.base.Event import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext +import net.minecraft.client.util.math.MatrixStack data class -WorldRenderLastEvent(val context: WorldRenderContext): Event() +WorldRenderLastEvent(val context: WorldRenderContext, val matrixStack: MatrixStack): Event() diff --git a/src/main/kotlin/com/dulkirfabric/features/AotvHighlight.kt b/src/main/kotlin/com/dulkirfabric/features/AotvHighlight.kt index 5cce244..5b1a81d 100644 --- a/src/main/kotlin/com/dulkirfabric/features/AotvHighlight.kt +++ b/src/main/kotlin/com/dulkirfabric/features/AotvHighlight.kt @@ -10,7 +10,9 @@ import com.dulkirfabric.util.render.WorldRenderUtils import meteordevelopment.orbit.EventHandler import net.minecraft.client.MinecraftClient import net.minecraft.client.util.InputUtil +import net.minecraft.component.DataComponentTypes import net.minecraft.entity.Entity +import net.minecraft.nbt.NbtString import net.minecraft.util.hit.BlockHitResult import net.minecraft.util.hit.HitResult import net.minecraft.util.math.BlockPos @@ -29,14 +31,9 @@ object AotvHighlight { fun getHeldItemID(): String { val stack = mc.player?.mainHandStack ?: return "" - val tag = stack.nbt ?: return "" - val id = tag.getCompound("ExtraAttributes").get("id") ?: return "" - return id.toString().trim('"') - } - - @EventHandler - fun onLong(event: LongUpdateEvent) { - //println(heldItemID) + val tag = stack.get(DataComponentTypes.CUSTOM_DATA)?.nbt ?: return "" + val id = tag.get("id") as? NbtString ?: return "" + return id.asString() } @EventHandler diff --git a/src/main/kotlin/com/dulkirfabric/features/BrokenHyp.kt b/src/main/kotlin/com/dulkirfabric/features/BrokenHyp.kt index 85c1f7b..713a9d1 100644 --- a/src/main/kotlin/com/dulkirfabric/features/BrokenHyp.kt +++ b/src/main/kotlin/com/dulkirfabric/features/BrokenHyp.kt @@ -6,6 +6,7 @@ import com.dulkirfabric.events.LongUpdateEvent import com.dulkirfabric.util.TablistUtils import com.dulkirfabric.util.render.HudRenderUtil import meteordevelopment.orbit.EventHandler +import net.minecraft.component.DataComponentTypes import net.minecraft.item.ItemStack import net.minecraft.text.Style import net.minecraft.text.Text @@ -29,11 +30,11 @@ object BrokenHyp { val stack: ItemStack = mc.player?.mainHandStack ?: return // get info about held item - val tag = stack.nbt ?: return - id = tag.getCompound("ExtraAttributes")?.getString("id") ?: "" + val tag = stack.get(DataComponentTypes.CUSTOM_DATA)?.nbt ?: return + id = tag.getString("id") ?: "" - kill = tag.getCompound("ExtraAttributes")?.getInt("stats_book") ?: -1 - championXp = tag.getCompound("ExtraAttributes")?.getDouble("champion_combat_xp") ?: -1.0 + kill = tag.getInt("stats_book") ?: -1 + championXp = tag.getDouble("champion_combat_xp") ?: -1.0 // check if a wither blade, then check if same id if (!(id matches "(HYPERION|ASTRAEA|SCYLLA|VALKYRIE)".toRegex())) { diff --git a/src/main/kotlin/com/dulkirfabric/features/CooldownDisplays.kt b/src/main/kotlin/com/dulkirfabric/features/CooldownDisplays.kt index 0476d51..e562a2e 100644 --- a/src/main/kotlin/com/dulkirfabric/features/CooldownDisplays.kt +++ b/src/main/kotlin/com/dulkirfabric/features/CooldownDisplays.kt @@ -8,6 +8,7 @@ import com.dulkirfabric.util.TrackedCooldown import com.dulkirfabric.util.Utils import meteordevelopment.orbit.EventHandler import net.minecraft.client.sound.Sound +import net.minecraft.component.DataComponentTypes import net.minecraft.item.ItemStack import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable import kotlin.math.round @@ -89,8 +90,8 @@ object CooldownDisplays { } private fun fetchCooldownItem(stack: ItemStack): TrackedCooldown? { - val tag = stack.nbt ?: return null - val id = tag.getCompound("ExtraAttributes").get("id") ?: return null + val tag = stack.get(DataComponentTypes.CUSTOM_DATA)?.nbt ?: return null + val id = tag.get("id") ?: return null val idStr = id.toString().trim('"') trackedCooldowns.forEach { if (idStr matches it.value.itemID) diff --git a/src/main/kotlin/com/dulkirfabric/util/Utils.kt b/src/main/kotlin/com/dulkirfabric/util/Utils.kt index 342dc48..e6342cb 100644 --- a/src/main/kotlin/com/dulkirfabric/util/Utils.kt +++ b/src/main/kotlin/com/dulkirfabric/util/Utils.kt @@ -6,6 +6,7 @@ import com.dulkirfabric.events.WorldLoadEvent import com.dulkirfabric.events.chat.ChatEvents import meteordevelopment.orbit.EventHandler import net.minecraft.block.entity.SkullBlockEntity +import net.minecraft.component.DataComponentTypes import net.minecraft.entity.Entity import net.minecraft.item.ItemStack import net.minecraft.nbt.NbtHelper @@ -72,7 +73,7 @@ object Utils { } fun getSkullTexture(itemStack: ItemStack): String? { - return itemStack.getSubNbt(SkullBlockEntity.SKULL_OWNER_KEY)?.let(NbtHelper::toGameProfile)?.properties?.get( + return itemStack.get(DataComponentTypes.PROFILE)?.properties?.get( "textures")?.first()?.value } }
\ No newline at end of file diff --git a/src/main/kotlin/com/dulkirfabric/util/render/WorldRenderUtils.kt b/src/main/kotlin/com/dulkirfabric/util/render/WorldRenderUtils.kt index d779c23..d1cdab1 100644 --- a/src/main/kotlin/com/dulkirfabric/util/render/WorldRenderUtils.kt +++ b/src/main/kotlin/com/dulkirfabric/util/render/WorldRenderUtils.kt @@ -41,10 +41,10 @@ object WorldRenderUtils { private fun line(matrix: MatrixStack.Entry, buffer: BufferBuilder, from: Vector3f, to: Vector3f) { val normal = to.sub(from, Vector3f()).mul(-1F) - buffer.vertex(matrix.positionMatrix, from.x, from.y, from.z) - .normal(matrix.normalMatrix, normal.x, normal.y, normal.z).next() - buffer.vertex(matrix.positionMatrix, to.x, to.y, to.z) - .normal(matrix.normalMatrix, normal.x, normal.y, normal.z) + buffer.vertex(matrix, from.x, from.y, from.z) + .normal(matrix, normal.x, normal.y, normal.z).next() + buffer.vertex(matrix, to.x, to.y, to.z) + .normal(matrix, normal.x, normal.y, normal.z) .next() } @@ -60,7 +60,7 @@ object WorldRenderUtils { thickness: Float, depthTest: Boolean = true ) { - val matrices = context.matrixStack() + val matrices = context.assertHasMatrixStack() ?: return matrices.push() val prevShader = RenderSystem.getShader() RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram) @@ -114,12 +114,17 @@ object WorldRenderUtils { matrices.pop() } + fun WorldRenderContext.assertHasMatrixStack(): MatrixStack? { + assert(matrixStack() != null) + return matrixStack() + } + /** * This draw line function is intended to be used for drawing very few lines, as it's not the most efficient. * For drawing many lines in a series, save them to an array and use the drawLineArray function. */ fun drawLine(context: WorldRenderContext, startPos: Vec3d, endPos: Vec3d, color: Color, thickness: Float, depthTest: Boolean = true) { - val matrices = context.matrixStack() + val matrices = context.assertHasMatrixStack() ?: return matrices.push() val prevShader = RenderSystem.getShader() RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram) @@ -162,7 +167,7 @@ object WorldRenderUtils { * drawLine function being called many times in series. */ fun drawLineArray(context: WorldRenderContext, posArr: List<Vec3d>, color: Color, thickness: Float, depthTest: Boolean = true) { - val matrices = context.matrixStack() + val matrices = context.assertHasMatrixStack() ?: return matrices.push() val prevShader = RenderSystem.getShader() RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram) @@ -217,6 +222,7 @@ object WorldRenderUtils { depthTest: Boolean = true, scale: Float = 1f ) { + val matrices = context.assertHasMatrixStack() ?: return if (!depthTest) { RenderSystem.disableDepthTest() } @@ -224,8 +230,7 @@ object WorldRenderUtils { RenderSystem.defaultBlendFunc() RenderSystem.disableCull() - val vertexConsumer = context.worldRenderer().bufferBuilders.entityVertexConsumers - val matrices = context.matrixStack() + val vertexConsumer = context.worldRenderer().bufferBuilders.entityVertexConsumers matrices.push() matrices.translate( pos.x - context.camera().pos.x, @@ -277,13 +282,13 @@ object WorldRenderUtils { pos: Vec3d, ) { + val matrices = context.assertHasMatrixStack() ?: return RenderSystem.disableDepthTest() RenderSystem.enableBlend() RenderSystem.defaultBlendFunc() RenderSystem.disableCull() val d: Double = pos.distanceTo(MinecraftClient.getInstance().player?.pos) val distText = Text.literal(d.toInt().toString() + "m").setStyle(Style.EMPTY.withColor(Formatting.YELLOW)) - val matrices = context.matrixStack() val vertexConsumer = context.worldRenderer().bufferBuilders.entityVertexConsumers matrices.push() val magnitude = sqrt((pos.x - context.camera().pos.x).pow(2) + @@ -365,6 +370,7 @@ object WorldRenderUtils { color: Color, depthTest: Boolean ) { + val matrices = context.assertHasMatrixStack() ?: return if (!depthTest) { RenderSystem.disableDepthTest() //RenderSystem.depthMask(false) @@ -375,7 +381,6 @@ object WorldRenderUtils { RenderSystem.enableBlend() RenderSystem.defaultBlendFunc() - val matrices = context.matrixStack() val tes = Tessellator.getInstance() tes.buffer.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR) matrices.push() |