diff options
Diffstat (limited to 'src')
14 files changed, 62 insertions, 91 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/ItemStackMixin.java b/src/main/java/com/dulkirfabric/mixin/ItemStackMixin.java index 7820bf3..f083290 100644 --- a/src/main/java/com/dulkirfabric/mixin/ItemStackMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/ItemStackMixin.java @@ -1,7 +1,7 @@ package com.dulkirfabric.mixin; import com.dulkirfabric.util.render.ItemChangeHandler; -import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.item.TooltipType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -20,7 +20,7 @@ public abstract class ItemStackMixin { @Shadow public abstract Item getItem(); @Inject(method = "getTooltip", at = @At("HEAD")) - private void onGetTooltip(@Nullable PlayerEntity player, TooltipContext context, CallbackInfoReturnable<List<Text>> cir) { + private void onGetTooltip(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable<List<Text>> cir) { ItemChangeHandler.INSTANCE.handle(this.getItem().getName().getString()); } } diff --git a/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java b/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java index 76dd828..d805170 100644 --- a/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/io/MouseMixin.java @@ -19,16 +19,6 @@ public class MouseMixin { return (int) (originalScaledHeight / InventoryScale.INSTANCE.getScale()); } - @ModifyExpressionValue(method = "onCursorPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledWidth()I")) - public int onCursorPosWidth(int originalScaledWidth) { - return (int) (originalScaledWidth / InventoryScale.INSTANCE.getScale()); - } - - @ModifyExpressionValue(method = "onCursorPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledHeight()I")) - public int onCursorPosHeight(int originalScaledHeight) { - return (int) (originalScaledHeight / InventoryScale.INSTANCE.getScale()); - } - @ModifyExpressionValue(method = "onMouseScroll", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getScaledWidth()I")) public int onMouseScrollWidth(int originalScaledWidth) { return (int) (originalScaledWidth / InventoryScale.INSTANCE.getScale()); diff --git a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java index 995b8af..7ab1671 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java @@ -3,14 +3,14 @@ package com.dulkirfabric.mixin.render; import com.dulkirfabric.config.DulkirConfig; import com.dulkirfabric.util.Utils; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.text.Text; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.scoreboard.number.BlankNumberFormat; +import net.minecraft.scoreboard.number.NumberFormat; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(InGameHud.class) @@ -21,36 +21,32 @@ public class InGameHudMixin { at = @At("HEAD"), cancellable = true ) - public void onRenderStatusEffectOverlay(DrawContext context, CallbackInfo ci) { + public void onRenderStatusEffectOverlay(DrawContext context, float tickDelta, CallbackInfo ci) { if (DulkirConfig.ConfigVars.getConfigOptions().getStatusEffectHidden()) { ci.cancel(); } } - @Redirect( - method = "method_55440([Lnet/minecraft/client/gui/hud/InGameHud$SidebarEntry;ILnet/minecraft/client/gui/DrawContext;Lnet/minecraft/text/Text;I)V", + @ModifyExpressionValue( + method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/gui/DrawContext;drawText(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIZ)I", - ordinal = 2 + target = "Lnet/minecraft/scoreboard/ScoreboardObjective;getNumberFormatOr(Lnet/minecraft/scoreboard/number/NumberFormat;)Lnet/minecraft/scoreboard/number/NumberFormat;" ) ) - public int removeScoreBoardNumbers(DrawContext instance, TextRenderer textRenderer, Text text, int x, int y, int color, boolean shadow) { - return 0; + public NumberFormat removeScoreBoardNumbers(NumberFormat original) { + return BlankNumberFormat.INSTANCE; } - @ModifyExpressionValue( - method = "renderStatusBars(Lnet/minecraft/client/gui/DrawContext;)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/entity/player/PlayerEntity;getArmor()I" - ) + @Inject( + method = "renderArmor", + at = @At("HEAD"), + cancellable = true ) - public int onGrabArmorAmount(int original) { + private static void onGrabArmorAmount(DrawContext context, PlayerEntity player, int i, int j, int k, int x, CallbackInfo ci) { if (DulkirConfig.ConfigVars.getConfigOptions().getHideArmorOverlay() && Utils.INSTANCE.isInSkyblock()) { - return 0; + ci.cancel(); } - return original; } @ModifyExpressionValue( diff --git a/src/main/java/com/dulkirfabric/mixin/render/LoomScreenMixin.java b/src/main/java/com/dulkirfabric/mixin/render/LoomScreenMixin.java deleted file mode 100644 index 0270251..0000000 --- a/src/main/java/com/dulkirfabric/mixin/render/LoomScreenMixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dulkirfabric.mixin.render; - -import com.dulkirfabric.features.InventoryScale; -import net.minecraft.block.entity.BannerPattern; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.ingame.LoomScreen; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtList; -import net.minecraft.registry.entry.RegistryEntry; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -@Mixin(LoomScreen.class) -public class LoomScreenMixin { - @Inject(method = "drawBanner", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;push()V", shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) - public void onCreateMatrix(DrawContext context, RegistryEntry<BannerPattern> pattern, int x, int y, CallbackInfo ci, NbtCompound nbtCompound, NbtList nbtList, ItemStack itemStack, MatrixStack matrixStack) { - matrixStack.scale(InventoryScale.INSTANCE.getScale(), InventoryScale.INSTANCE.getScale(), 1F); - } -} - diff --git a/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java b/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java index 58558e0..676cccf 100644 --- a/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java +++ b/src/main/java/com/dulkirfabric/mixin/render/WorldRendererMixin.java @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.At; @Mixin(WorldRenderer.class) public class WorldRendererMixin { - @ModifyExpressionValue(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V", + @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getTeamColorValue()I")) public int getGlowColor(int existing, @Local Entity entity) { if (entity instanceof GlowingEntityInterface dEntity) { 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() diff --git a/src/main/resources/dulkirmod-fabric.mixins.json b/src/main/resources/dulkirmod-fabric.mixins.json index 310dd23..c97509b 100644 --- a/src/main/resources/dulkirmod-fabric.mixins.json +++ b/src/main/resources/dulkirmod-fabric.mixins.json @@ -17,7 +17,6 @@ "render.HeldItemRendererMixin", "render.InGameHudMixin", "render.InGameOverlayRendererMixin", - "render.LoomScreenMixin", "render.MinecraftClientMixin", "render.ParticleManagerMixin", "render.PerspectiveMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index fabcfeb..2ae0320 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -35,11 +35,11 @@ "dulkirmod-fabric.mixins.json" ], "depends": { - "fabricloader": ">=0.14.21", - "minecraft": "~1.20.1", - "java": ">=17", - "fabric-api": ">=0.86.0+1.20.1", - "fabric-language-kotlin": ">=1.8.21" + "fabricloader": ">=0.15.0", + "minecraft": "~1.20.6", + "java": ">=21", + "fabric-api": ">=0.98.0+1.20.6", + "fabric-language-kotlin": ">=1.9.23" }, "suggests": { "Farsight": "https://www.curseforge.com/minecraft/mc-mods/farsight-fabric/files", |