diff --git a/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinGlDebug.java b/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinGlDebug.java new file mode 100644 index 00000000..2767af72 --- /dev/null +++ b/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinGlDebug.java @@ -0,0 +1,37 @@ +package me.cortex.voxy.client.mixin.minecraft; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.client.gl.GlDebug; +import org.slf4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; + +@Mixin(GlDebug.class) +public class MixinGlDebug { + @WrapOperation(method = "onDebugMessage", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;)V")) + private void voxy$wrapDebug(Logger instance, String base, Object msgObj, Operation original) { + if (msgObj instanceof GlDebug.DebugMessage msg) { + var throwable = new Throwable(msg.toString()); + if (isCausedByVoxy(throwable.getStackTrace())) { + original.call(instance, base, throwable); + } else { + original.call(instance, base, msg); + } + } else { + original.call(instance, base, msgObj); + } + } + + @Unique + private boolean isCausedByVoxy(StackTraceElement[] trace) { + for (var elem : trace) { + if (elem.getClassName().startsWith("me.cortex.voxy")) { + return true; + } + } + return false; + } +} diff --git a/src/main/resources/client.voxy.mixins.json b/src/main/resources/client.voxy.mixins.json index 34ecbd66..de18c3fc 100644 --- a/src/main/resources/client.voxy.mixins.json +++ b/src/main/resources/client.voxy.mixins.json @@ -11,6 +11,7 @@ "minecraft.MixinThreadExecutor", "minecraft.MixinWindow", "minecraft.MixinWorldRenderer", + "minecraft.MixinGlDebug", "sodium.MixinDefaultChunkRenderer", "sodium.MixinRenderSectionManager", "sodium.MixinSodiumOptionsGUI" diff --git a/src/main/resources/voxy.accesswidener b/src/main/resources/voxy.accesswidener index fda1138c..ed15ee31 100644 --- a/src/main/resources/voxy.accesswidener +++ b/src/main/resources/voxy.accesswidener @@ -28,4 +28,6 @@ accessible field net/minecraft/world/chunk/PalettedContainer$Data palette Lnet/m accessible field net/minecraft/client/gl/GlGpuBuffer id I accessible field net/minecraft/client/gl/GlResourceManager currentProgram Lnet/minecraft/client/gl/ShaderProgram; -accessible field net/minecraft/client/gl/GlResourceManager currentPipeline Lcom/mojang/blaze3d/pipeline/RenderPipeline; \ No newline at end of file +accessible field net/minecraft/client/gl/GlResourceManager currentPipeline Lcom/mojang/blaze3d/pipeline/RenderPipeline; + +accessible class net/minecraft/client/gl/GlDebug$DebugMessage \ No newline at end of file