From 17d87faa34c9ca710f201f905430a0ac5d5ec85c Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 3 Nov 2024 12:49:16 +0100 Subject: [PATCH 1/3] Update to 1.21.2 --- build.gradle.kts | 2 ++ gradle.properties | 2 +- jGui | 2 +- libs/ReplayStudio | 2 +- root.gradle.kts | 2 ++ settings.gradle.kts | 4 ++- .../com/replaymod/core/versions/MCVer.java | 2 ++ .../versions/scheduler/SchedulerImpl.java | 3 +- .../handler/RecordingEventHandler.java | 12 ++++++-- .../recording/mixin/MixinWorldClient.java | 4 ++- .../render/capturer/OpenGlFrameCapturer.java | 2 +- .../render/gui/GuiVideoRenderer.java | 5 +++- .../render/gui/progress/VirtualWindow.java | 8 +++-- .../render/hooks/MinecraftClientExt.java | 2 ++ .../render/mixin/MixinRenderManager.java | 17 +++++++++-- .../mixin/Mixin_BlockOnChunkRebuilds.java | 15 ++++++++++ .../render/mixin/Mixin_ChromaKeyColorSky.java | 12 ++++++-- .../mixin/Mixin_ChromaKeyDisableFog.java | 21 +++++++++++-- ...Mixin_PreserveDepthDuringGuiRendering.java | 4 +++ ...ixin_PreserveDepthDuringHandRendering.java | 4 +++ ...SuppressFramebufferResizeDuringRender.java | 2 +- ...n_UseGuiFramebufferDuringGuiRendering.java | 30 +++++++++++++++++++ .../render/rendering/VideoRenderer.java | 16 ++++++++-- .../replaymod/replay/FullReplaySender.java | 25 +++++++++++++++- .../com/replaymod/replay/NoGuiScreenshot.java | 2 +- .../com/replaymod/replay/ReplayHandler.java | 20 +++++++++++-- .../replaymod/replay/camera/CameraEntity.java | 11 ++++++- .../replay/mixin/MixinRenderLivingBase.java | 12 ++++++-- .../Mixin_UseReplayTime_ForTexture.java | 11 ++++++- .../gui/GuiKeyframeTimeline.java | 8 ++++- .../preview/PathPreviewRenderer.java | 22 ++++++++++++-- .../resources/mixins.render.replaymod.json | 1 + .../resources/mixins.replay.replaymod.json | 2 ++ .../replay/mixin/MixinViewFrustum.java | 1 + 34 files changed, 252 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/replaymod/render/mixin/Mixin_UseGuiFramebufferDuringGuiRendering.java create mode 100644 versions/1.21.2/src/main/java/com/replaymod/replay/mixin/MixinViewFrustum.java diff --git a/build.gradle.kts b/build.gradle.kts index f18e090a..a331229a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -87,6 +87,7 @@ dependencies { 12004 -> "0.91.2+1.20.4" 12006 -> "0.98.0+1.20.6" 12100 -> "0.100.3+1.21" + 12102 -> "0.106.1+1.21.2" else -> throw UnsupportedOperationException() } val fabricApiModules = mutableListOf( @@ -165,6 +166,7 @@ dependencies { if (platform.isFabric) { val modMenuVersion = when { + mcVersion >= 12102 -> "12.0.0-beta.1" mcVersion >= 12100 -> "11.0.0-rc.4" mcVersion >= 12006 -> "10.0.0-beta.1" mcVersion >= 12003 -> "9.0.0-pre.1" diff --git a/gradle.properties b/gradle.properties index c37f96f1..bd1d027e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ essential.defaults.loom=0 -essential.defaults.loom.fabric-loader=net.fabricmc:fabric-loader:0.15.11 +essential.defaults.loom.fabric-loader=net.fabricmc:fabric-loader:0.16.9 # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. diff --git a/jGui b/jGui index e4d4d127..5f4d3a51 160000 --- a/jGui +++ b/jGui @@ -1 +1 @@ -Subproject commit e4d4d127a1b26ef81b23437577cb55819fa696da +Subproject commit 5f4d3a51ac126ebb8f3f72dbe8d5ccab5542d0d9 diff --git a/libs/ReplayStudio b/libs/ReplayStudio index 696ce89e..4e670490 160000 --- a/libs/ReplayStudio +++ b/libs/ReplayStudio @@ -1 +1 @@ -Subproject commit 696ce89ee3e12cff4eb43e77be81e1dc47481173 +Subproject commit 4e670490d150322deebb22ad793330bb1363f4ad diff --git a/root.gradle.kts b/root.gradle.kts index 14033c19..1a1512be 100755 --- a/root.gradle.kts +++ b/root.gradle.kts @@ -203,6 +203,7 @@ defaultTasks("bundleJar") preprocess { strictExtraMappings.set(true) + val mc12102 = createNode("1.21.2", 12102, "yarn") val mc12100 = createNode("1.21", 12100, "yarn") val mc12006 = createNode("1.20.6", 12006, "yarn") val mc12004 = createNode("1.20.4", 12004, "yarn") @@ -232,6 +233,7 @@ preprocess { val mc10800 = createNode("1.8", 10800, "srg") val mc10710 = createNode("1.7.10", 10710, "srg") + mc12102.link(mc12100) mc12100.link(mc12006) mc12006.link(mc12004) mc12004.link(mc12002, file("versions/mapping-fabric-1.20.4-1.20.2.txt")) diff --git a/settings.gradle.kts b/settings.gradle.kts index dcf932b1..83cb6f27 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,7 +11,7 @@ pluginManagement { maven("https://repo.essential.gg/repository/maven-public") } plugins { - id("gg.essential.multi-version.root") version "0.6.2" + id("gg.essential.multi-version.root") version "0.6.4" id("io.github.goooler.shadow") version "8.1.7" } } @@ -40,6 +40,7 @@ val jGuiVersions = listOf( "1.20.4", "1.20.6", "1.21", + "1.21.2", ) val replayModVersions = listOf( // "1.7.10", @@ -70,6 +71,7 @@ val replayModVersions = listOf( "1.20.4", "1.20.6", "1.21", + "1.21.2", ) rootProject.buildFileName = "root.gradle.kts" diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java index 1f5e5471..41555ea5 100644 --- a/src/main/java/com/replaymod/core/versions/MCVer.java +++ b/src/main/java/com/replaymod/core/versions/MCVer.java @@ -414,7 +414,9 @@ public class MCVer { //#else //$$ RenderSystem.getModelViewStack().pop(); //#endif + //#if MC<12102 //$$ RenderSystem.applyModelViewMatrix(); + //#endif //#else GlStateManager.popMatrix(); //#endif diff --git a/src/main/java/com/replaymod/core/versions/scheduler/SchedulerImpl.java b/src/main/java/com/replaymod/core/versions/scheduler/SchedulerImpl.java index 7c8ac70f..0d204264 100644 --- a/src/main/java/com/replaymod/core/versions/scheduler/SchedulerImpl.java +++ b/src/main/java/com/replaymod/core/versions/scheduler/SchedulerImpl.java @@ -62,8 +62,7 @@ public class SchedulerImpl implements Scheduler { super(string_1); } - @Override - protected Runnable createTask(Runnable runnable) { + @Override public Runnable createTask(Runnable runnable) { return runnable; } diff --git a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java index ec851793..33cfede2 100644 --- a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java @@ -12,7 +12,6 @@ import net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket; import net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket; import net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket; import net.minecraft.network.packet.s2c.play.EntityEquipmentUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; import net.minecraft.network.packet.s2c.play.EntityS2CPacket; import net.minecraft.network.packet.s2c.play.EntitySetHeadYawS2CPacket; import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; @@ -29,6 +28,13 @@ import net.minecraft.server.integrated.IntegratedServer; //$$ import net.minecraftforge.event.entity.player.PlayerEvent.ItemPickupEvent; //#endif +//#if MC>=12102 +//$$ import net.minecraft.entity.player.PlayerPosition; +//$$ import net.minecraft.network.packet.s2c.play.EntityPositionSyncS2CPacket; +//#else +import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; +//#endif + //#if MC>=12002 //$$ import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; //#else @@ -197,7 +203,9 @@ public class RecordingEventHandler extends EventRegistrations { Packet packet; if (force || Math.abs(dx) > maxRelDist || Math.abs(dy) > maxRelDist || Math.abs(dz) > maxRelDist) { - //#if MC>=10800 + //#if MC>=12102 + //$$ packet = new EntityPositionSyncS2CPacket(player.getId(), PlayerPosition.fromEntity(player), player.isOnGround()); + //#elseif MC>=10800 packet = new EntityPositionS2CPacket(player); //#else //$$ // In 1.7.10 the client player entity has its posY at eye height diff --git a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java index b33c0436..496b7a66 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinWorldClient.java @@ -28,7 +28,9 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa @SuppressWarnings("ConstantConditions") protected MixinWorldClient() { - //#if MC>=11904 + //#if MC>=12102 + //$$ super(null, null, null, null, false, false, 0, 0); + //#elseif MC>=11904 //$$ super(null, null, null, null, null, false, false, 0, 0); //#elseif MC>=11900 //$$ super(null, null, null, null, false, false, 0, 0); diff --git a/src/main/java/com/replaymod/render/capturer/OpenGlFrameCapturer.java b/src/main/java/com/replaymod/render/capturer/OpenGlFrameCapturer.java index bc9bdad5..0ff6b9a5 100644 --- a/src/main/java/com/replaymod/render/capturer/OpenGlFrameCapturer.java +++ b/src/main/java/com/replaymod/render/capturer/OpenGlFrameCapturer.java @@ -84,7 +84,7 @@ public abstract class OpenGlFrameCapturer=11400 + //#if MC>=11400 && MC<12102 , false //#endif ); diff --git a/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java b/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java index 1b10cdff..225aefc4 100644 --- a/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java +++ b/src/main/java/com/replaymod/render/gui/GuiVideoRenderer.java @@ -293,7 +293,10 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable { int g = buffer.get() & 0xff; int r = buffer.get() & 0xff; buffer.get(); // alpha - //#if MC>=11400 + //#if MC>=12102 + //$$ int value = 0xff << 24 | r << 16 | g << 8 | b; + //$$ data.setColorArgb(x, y, value); + //#elseif MC>=11400 int value = 0xff << 24 | b << 16 | g << 8 | r; data.setPixelColor(x, y, value); // actually takes ABGR, not RGBA //#else diff --git a/src/main/java/com/replaymod/render/gui/progress/VirtualWindow.java b/src/main/java/com/replaymod/render/gui/progress/VirtualWindow.java index 6f2b2bc0..a45277ad 100644 --- a/src/main/java/com/replaymod/render/gui/progress/VirtualWindow.java +++ b/src/main/java/com/replaymod/render/gui/progress/VirtualWindow.java @@ -68,17 +68,21 @@ public class VirtualWindow implements Closeable { } public void beginWrite() { + MinecraftClientExt.get(mc).setFramebufferDelegate(guiFramebuffer); guiFramebuffer.beginWrite(true); } public void endWrite() { guiFramebuffer.endWrite(); + MinecraftClientExt.get(mc).setFramebufferDelegate(null); } public void flip() { guiFramebuffer.draw(framebufferWidth, framebufferHeight); - //#if MC>=11500 + //#if MC>=12102 + //$$ window.swapBuffers(null); + //#elseif MC>=11500 window.swapBuffers(); //#else //#if MC>=11400 @@ -112,7 +116,7 @@ public class VirtualWindow implements Closeable { //#if MC>=11400 guiFramebuffer.resize(newWidth, newHeight - //#if MC>=11400 + //#if MC>=11400 && MC<12102 , false //#endif ); diff --git a/src/main/java/com/replaymod/render/hooks/MinecraftClientExt.java b/src/main/java/com/replaymod/render/hooks/MinecraftClientExt.java index 6b4295bb..6d6ffd1d 100644 --- a/src/main/java/com/replaymod/render/hooks/MinecraftClientExt.java +++ b/src/main/java/com/replaymod/render/hooks/MinecraftClientExt.java @@ -2,9 +2,11 @@ package com.replaymod.render.hooks; import com.replaymod.render.gui.progress.VirtualWindow; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.Framebuffer; public interface MinecraftClientExt { void setWindowDelegate(VirtualWindow window); + void setFramebufferDelegate(Framebuffer framebuffer); static MinecraftClientExt get(MinecraftClient mc) { return (MinecraftClientExt) mc; diff --git a/src/main/java/com/replaymod/render/mixin/MixinRenderManager.java b/src/main/java/com/replaymod/render/mixin/MixinRenderManager.java index c824b26d..d0c0b102 100644 --- a/src/main/java/com/replaymod/render/mixin/MixinRenderManager.java +++ b/src/main/java/com/replaymod/render/mixin/MixinRenderManager.java @@ -9,6 +9,10 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +//#if MC>=12102 +//$$ import net.minecraft.client.render.entity.EntityRenderer; +//#endif + //#if MC>=11500 import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; @@ -31,7 +35,9 @@ public abstract class MixinRenderManager { //$$ @Shadow private float cameraYaw; //#endif - //#if MC>=11500 + //#if MC>=12102 + //$$ @Inject(method = "render(Lnet/minecraft/entity/Entity;DDDFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/EntityRenderer;)V", at = @At("HEAD")) + //#elseif MC>=11500 @Inject(method = "render", at = @At("HEAD")) //#else //#if MC>=11400 && FABRIC>=1 @@ -45,7 +51,11 @@ public abstract class MixinRenderManager { //#endif //#endif //#if MC>=10904 - private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks, + private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, + //#if MC<12102 + float iDoNotKnow, + //#endif + float partialTicks, //#if MC>=11500 MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, @@ -53,6 +63,9 @@ public abstract class MixinRenderManager { //#else //$$ boolean iDoNotCare, //#endif + //#if MC>=12102 + //$$ EntityRenderer renderer, + //#endif CallbackInfo ci) { //#else //$$ private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks, boolean iDoNotCare, CallbackInfoReturnable ci) { diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_BlockOnChunkRebuilds.java b/src/main/java/com/replaymod/render/mixin/Mixin_BlockOnChunkRebuilds.java index 579e3268..0ea452f3 100644 --- a/src/main/java/com/replaymod/render/mixin/Mixin_BlockOnChunkRebuilds.java +++ b/src/main/java/com/replaymod/render/mixin/Mixin_BlockOnChunkRebuilds.java @@ -21,6 +21,10 @@ import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +//#if MC>=12102 +//$$ import net.minecraft.util.thread.SimpleConsecutiveExecutor; +//#endif + //#if MC>=12003 //$$ import net.minecraft.client.render.chunk.BlockBufferBuilderPool; //#endif @@ -56,7 +60,11 @@ public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHoo @Shadow public abstract boolean upload(); //#endif + //#if MC>=12102 + //$$ @Shadow @Final private SimpleConsecutiveExecutor consecutiveExecutor; + //#else @Shadow @Final private TaskExecutor mailbox; + //#endif @Shadow protected abstract void scheduleRunTasks(); @@ -99,10 +107,17 @@ public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHoo } private boolean waitForMainThreadWork() { + //#if MC>=12102 + //$$ this.consecutiveExecutor.executeAsync(future -> { + //$$ scheduleRunTasks(); + //$$ future.complete(getAvailableBufferCount() == this.totalBufferCount); + //$$ }).join(); + //#else boolean allDone = this.mailbox.ask(reply -> () -> { scheduleRunTasks(); reply.send(getAvailableBufferCount() == this.totalBufferCount); }).join(); + //#endif if (allDone) { return true; diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyColorSky.java b/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyColorSky.java index a98c4ff4..83cb4ca3 100644 --- a/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyColorSky.java +++ b/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyColorSky.java @@ -22,14 +22,20 @@ public abstract class Mixin_ChromaKeyColorSky { //#if MC>=11800 //$$ @Inject( - //#if MC>=12005 + //#if MC>=12102 + //$$ method = "method_62215", + //#elseif MC>=12005 //$$ method = "renderSky(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;FLnet/minecraft/client/render/Camera;ZLjava/lang/Runnable;)V", //#elseif MC>=11802 //$$ method = "renderSky(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/util/math/Matrix4f;FLnet/minecraft/client/render/Camera;ZLjava/lang/Runnable;)V", //#else //$$ method = "renderSky(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/util/math/Matrix4f;FLjava/lang/Runnable;)V", //#endif - //$$ at = @At(value = "INVOKE", target = "Ljava/lang/Runnable;run()V", remap = false, shift = At.Shift.AFTER), + //#if MC>=12102 + //$$ at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/RenderPhase$Target;startDrawing()V", shift = At.Shift.AFTER), + //#else + //$$ at = @At(value = "INVOKE", target = "Ljava/lang/Runnable;run()V", remap = false, shift = At.Shift.AFTER), + //#endif //$$ cancellable = true) //#elseif MC>=11400 || 10710>=MC @Inject(method = "renderSky", at = @At("HEAD"), cancellable = true) @@ -43,7 +49,7 @@ public abstract class Mixin_ChromaKeyColorSky { if (color != null) { GlStateManager.clearColor(color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, 1); GlStateManager.clear(GL11.GL_COLOR_BUFFER_BIT - //#if MC>=11400 + //#if MC>=11400 && MC<12102 , false //#endif ); diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyDisableFog.java b/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyDisableFog.java index 948038e9..7f71d088 100644 --- a/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyDisableFog.java +++ b/src/main/java/com/replaymod/render/mixin/Mixin_ChromaKeyDisableFog.java @@ -1,13 +1,20 @@ package com.replaymod.render.mixin; -import com.mojang.blaze3d.platform.GlStateManager; import com.replaymod.core.versions.MCVer; import com.replaymod.render.hooks.EntityRendererHandler; import net.minecraft.client.render.BackgroundRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; + +//#if MC>=12102 +//$$ import net.minecraft.client.render.Fog; +//$$ import net.minecraft.client.render.FogShape; +//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +//#else +import com.mojang.blaze3d.platform.GlStateManager; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//#endif @Mixin(BackgroundRenderer.class) public abstract class Mixin_ChromaKeyDisableFog { @@ -16,7 +23,13 @@ public abstract class Mixin_ChromaKeyDisableFog { //#if MC>=11500 static //#endif - void replayModRender_onSetupFog(CallbackInfo ci) { + void replayModRender_onSetupFog( + //#if MC>=12102 + //$$ CallbackInfoReturnable ci + //#else + CallbackInfo ci + //#endif + ) { EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler(); if (handler == null) return; @@ -30,9 +43,13 @@ public abstract class Mixin_ChromaKeyDisableFog { // start, as would be the case in these cases. Sodium doing math is also the reason we don't set start // equal to end (that'll result in undefined behavior because it sticks those into a smoothstep on old // versions), and we don't set it to MAX_VALUE because that also gives wrong results. + //#if MC>=12102 + //$$ ci.setReturnValue(new Fog(1E10F, 2E10F, FogShape.CYLINDER, 0f, 0f, 0f, 0f)); + //#else GlStateManager.fogStart(1E10F); GlStateManager.fogEnd(2E10F); ci.cancel(); + //#endif } } } diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringGuiRendering.java b/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringGuiRendering.java index d23765fa..4e595d31 100644 --- a/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringGuiRendering.java +++ b/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringGuiRendering.java @@ -19,7 +19,11 @@ public abstract class Mixin_PreserveDepthDuringGuiRendering { @ModifyArg( //#if MC>=11500 method = "render", + //#if MC>=12102 + //$$ at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clear(I)V"), index = 0 + //#else at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clear(IZ)V"), index = 0 + //#endif //#elseif MC>=11400 //$$ method = "method_4493", //$$ at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;clear(IZ)V"), index = 0 diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringHandRendering.java b/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringHandRendering.java index 948ab355..67962927 100644 --- a/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringHandRendering.java +++ b/src/main/java/com/replaymod/render/mixin/Mixin_PreserveDepthDuringHandRendering.java @@ -16,7 +16,11 @@ public abstract class Mixin_PreserveDepthDuringHandRendering { //$$ method = "renderWorldPass", //#endif //#if MC>=11500 + //#if MC>=12102 + //$$ at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clear(I)V"), + //#else at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clear(IZ)V"), + //#endif //#elseif MC>=11400 //$$ at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;clear(IZ)V", ordinal = 1), //#else diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_SuppressFramebufferResizeDuringRender.java b/src/main/java/com/replaymod/render/mixin/Mixin_SuppressFramebufferResizeDuringRender.java index 707f6952..eb1f551d 100644 --- a/src/main/java/com/replaymod/render/mixin/Mixin_SuppressFramebufferResizeDuringRender.java +++ b/src/main/java/com/replaymod/render/mixin/Mixin_SuppressFramebufferResizeDuringRender.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftClient.class) -public class Mixin_SuppressFramebufferResizeDuringRender implements MinecraftClientExt { +public abstract class Mixin_SuppressFramebufferResizeDuringRender implements MinecraftClientExt { @Unique private VirtualWindow windowDelegate; diff --git a/src/main/java/com/replaymod/render/mixin/Mixin_UseGuiFramebufferDuringGuiRendering.java b/src/main/java/com/replaymod/render/mixin/Mixin_UseGuiFramebufferDuringGuiRendering.java new file mode 100644 index 00000000..c078c5f0 --- /dev/null +++ b/src/main/java/com/replaymod/render/mixin/Mixin_UseGuiFramebufferDuringGuiRendering.java @@ -0,0 +1,30 @@ +package com.replaymod.render.mixin; + +import com.replaymod.render.hooks.MinecraftClientExt; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.Framebuffer; +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; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(MinecraftClient.class) +public abstract class Mixin_UseGuiFramebufferDuringGuiRendering implements MinecraftClientExt { + + @Unique + private Framebuffer framebufferDelegate; + + @Override + public void setFramebufferDelegate(Framebuffer framebuffer) { + this.framebufferDelegate = framebuffer; + } + + @Inject(method = "getFramebuffer", at = @At("HEAD"), cancellable = true) + private void useGuiFramebuffer(CallbackInfoReturnable ci) { + Framebuffer delegate = this.framebufferDelegate; + if (delegate != null) { + ci.setReturnValue(delegate); + } + } +} diff --git a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java index 4cca8e87..11819186 100644 --- a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java +++ b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java @@ -40,6 +40,10 @@ import net.minecraft.util.crash.CrashException; import net.minecraft.sound.SoundCategory; import org.lwjgl.glfw.GLFW; +//#if MC>=12102 +//$$ import com.mojang.blaze3d.systems.ProjectionType; +//#endif + //#if MC>=12000 //$$ import com.mojang.blaze3d.systems.VertexSorter; //$$ import net.minecraft.client.gui.DrawContext; @@ -492,7 +496,7 @@ public class VideoRenderer implements RenderInfo { pushMatrix(); GlStateManager.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT - //#if MC>=11400 + //#if MC>=11400 && MC<12102 , false //#endif ); @@ -502,7 +506,11 @@ public class VideoRenderer implements RenderInfo { guiWindow.beginWrite(); //#if MC>=11500 + //#if MC>=12102 + //$$ RenderSystem.clear(256); + //#else RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC); + //#endif //#if MC>=11700 //$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix( //$$ 0, @@ -512,7 +520,9 @@ public class VideoRenderer implements RenderInfo { //$$ 1000, //$$ 3000 //$$ ) - //#if MC>=12000 + //#if MC>=12102 + //$$ , ProjectionType.ORTHOGRAPHIC + //#elseif MC>=12000 //$$ , VertexSorter.BY_Z //#endif //$$ ); @@ -524,7 +534,9 @@ public class VideoRenderer implements RenderInfo { //$$ matrixStack.loadIdentity(); //$$ matrixStack.translate(0, 0, -2000); //#endif + //#if MC<12102 //$$ RenderSystem.applyModelViewMatrix(); + //#endif //$$ DiffuseLighting.enableGuiDepthLighting(); //#else RenderSystem.matrixMode(GL11.GL_PROJECTION); diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java index 2a2e3f2a..287e2d45 100644 --- a/src/main/java/com/replaymod/replay/FullReplaySender.java +++ b/src/main/java/com/replaymod/replay/FullReplaySender.java @@ -83,6 +83,10 @@ import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; import net.minecraft.network.packet.s2c.play.PaintingSpawnS2CPacket; //#endif +//#if MC>=11800 +//$$ import org.apache.commons.lang3.mutable.MutableBoolean; +//#endif + //#if MC>=11600 //#else //$$ import net.minecraft.network.packet.s2c.play.EntitySpawnGlobalS2CPacket; @@ -437,7 +441,9 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re ClientWorld world = mc.world; if (world != null) { //#if MC>=11800 - //$$ while (!world.hasNoChunkUpdaters()) { + //$$ MutableBoolean done = new MutableBoolean(); + //$$ world.enqueueChunkUpdate(done::setTrue); + //$$ while (!done.booleanValue()) { //$$ world.runQueuedChunkUpdates(); //$$ } //#endif @@ -842,7 +848,11 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re //#if MC>=10800 //#if MC>=11904 + //#if MC>=12102 + //$$ for (PositionFlag relative : ppl.relatives()) { + //#else //$$ for (PositionFlag relative : ppl.getFlags()) { + //#endif //$$ if (relative == PositionFlag.X || relative == PositionFlag.Y || relative == PositionFlag.Z) { //#elseif MC>=11400 for (PlayerPositionLookS2CPacket.Flag relative : ppl.getFlags()) { @@ -876,14 +886,24 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re } CameraEntity cent = replayHandler.getCameraEntity(); + //#if MC>=12102 + //$$ if (!allowMovement && !((Math.abs(cent.getX() - ppl.change().position().x) > TP_DISTANCE_LIMIT) || + //$$ (Math.abs(cent.getZ() - ppl.change().position().z) > TP_DISTANCE_LIMIT))) { + //#else if (!allowMovement && !((Math.abs(cent.getX() - ppl.getX()) > TP_DISTANCE_LIMIT) || (Math.abs(cent.getZ() - ppl.getZ()) > TP_DISTANCE_LIMIT))) { + //#endif return; } else { allowMovement = false; } + //#if MC>=12102 + //$$ cent.setCameraPosition(ppl.change().position().x, ppl.change().position().y, ppl.change().position().z); + //$$ cent.setCameraRotation(ppl.change().yaw(), ppl.change().pitch(), cent.roll); + //#else cent.setCameraPosition(ppl.getX(), ppl.getY(), ppl.getZ()); cent.setCameraRotation(ppl.getYaw(), ppl.getPitch(), cent.roll); + //#endif } }); @@ -951,6 +971,9 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re //$$ org.isFlat(), //$$ org.lastDeathLocation(), //$$ org.portalCooldown() + //#if MC>=12102 + //$$ , org.seaLevel() + //#endif //$$ ); //$$ } //#endif diff --git a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java index aa51376f..adcbbaca 100644 --- a/src/main/java/com/replaymod/replay/NoGuiScreenshot.java +++ b/src/main/java/com/replaymod/replay/NoGuiScreenshot.java @@ -68,7 +68,7 @@ public class NoGuiScreenshot { pushMatrix(); GlStateManager.clear( 16640 - //#if MC>=11400 + //#if MC>=11400 && MC<12102 , true //#endif ); diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index 47a33c52..6c5f5f8a 100644 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -45,6 +45,10 @@ import net.minecraft.network.ClientConnection; import java.io.IOException; import java.util.*; +//#if MC>=12102 +//$$ import com.mojang.blaze3d.systems.ProjectionType; +//#endif + //#if MC>=12006 //$$ import net.minecraft.network.handler.NetworkStateTransitions; //$$ import net.minecraft.network.state.LoginStates; @@ -710,7 +714,7 @@ public class ReplayHandler { // Perform the rendering using OpenGL pushMatrix(); GlStateManager.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT - //#if MC>=11400 + //#if MC>=11400 && MC<12102 , true //#endif ); @@ -720,7 +724,11 @@ public class ReplayHandler { mc.getFramebuffer().beginWrite(true); Window window = mc.getWindow(); //#if MC>=11500 + //#if MC>=12102 + //$$ RenderSystem.clear(256); + //#else RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC); + //#endif //#if MC>=11700 //$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix( //$$ 0, @@ -730,7 +738,9 @@ public class ReplayHandler { //$$ 1000, //$$ 3000 //$$ ) - //#if MC>=12000 + //#if MC>=12102 + //$$ , ProjectionType.ORTHOGRAPHIC + //#elseif MC>=12000 //$$ , VertexSorter.BY_Z //#endif //$$ ); @@ -742,7 +752,9 @@ public class ReplayHandler { //$$ matrixStack.loadIdentity(); //$$ matrixStack.translate(0, 0, -2000); //#endif + //#if MC<12102 //$$ RenderSystem.applyModelViewMatrix(); + //#endif //$$ DiffuseLighting.enableGuiDepthLighting(); //#else RenderSystem.matrixMode(GL11.GL_PROJECTION); @@ -782,7 +794,9 @@ public class ReplayHandler { mc.getFramebuffer().draw(mc.getWindow().getFramebufferWidth(), mc.getWindow().getFramebufferHeight()); popMatrix(); - //#if MC>=11500 + //#if MC>=12102 + //$$ mc.getWindow().swapBuffers(null); + //#elseif MC>=11500 mc.getWindow().swapBuffers(); //#else //#if MC>=11400 diff --git a/src/main/java/com/replaymod/replay/camera/CameraEntity.java b/src/main/java/com/replaymod/replay/camera/CameraEntity.java index f6c22940..5f62d9d3 100644 --- a/src/main/java/com/replaymod/replay/camera/CameraEntity.java +++ b/src/main/java/com/replaymod/replay/camera/CameraEntity.java @@ -454,7 +454,16 @@ public class CameraEntity //$$ } //#endif - //#if MC>=10800 + //#if MC>=12102 + //$$ @Override + //$$ public float getFovMultiplier(boolean firstPerson, float fovEffectScale) { + //$$ Entity view = this.client.getCameraEntity(); + //$$ if (view != this && view instanceof AbstractClientPlayerEntity) { + //$$ return ((AbstractClientPlayerEntity) view).getFovMultiplier(firstPerson, fovEffectScale); + //$$ } + //$$ return 1; + //$$ } + //#elseif MC>=10800 @Override public float getSpeed() { Entity view = this.client.getCameraEntity(); diff --git a/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java b/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java index 0ac43d24..5326467f 100644 --- a/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java +++ b/src/main/java/com/replaymod/replay/mixin/MixinRenderLivingBase.java @@ -28,7 +28,13 @@ public abstract class MixinRenderLivingBase { //#else //$$ @Inject(method = "canRenderName(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true) //#endif - private void replayModReplay_canRenderInvisibleName(LivingEntity entity, CallbackInfoReturnable ci) { + private void replayModReplay_canRenderInvisibleName( + LivingEntity entity, + //#if MC>=12102 + //$$ double distSquared, + //#endif + CallbackInfoReturnable ci + ) { PlayerEntity thePlayer = getMinecraft().player; if (thePlayer instanceof CameraEntity && entity.isInvisible()) { ci.setReturnValue(false); @@ -36,7 +42,9 @@ public abstract class MixinRenderLivingBase { } @Redirect( - //#if MC>=11500 + //#if MC>=12102 + //$$ method = "updateRenderState(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;F)V", + //#elseif MC>=11500 method = "render", //#else //$$ method = "render(Lnet/minecraft/entity/LivingEntity;FFFFFF)V", diff --git a/src/main/java/com/replaymod/replay/mixin/world_border/Mixin_UseReplayTime_ForTexture.java b/src/main/java/com/replaymod/replay/mixin/world_border/Mixin_UseReplayTime_ForTexture.java index 9abf28c4..8a1c0ae2 100644 --- a/src/main/java/com/replaymod/replay/mixin/world_border/Mixin_UseReplayTime_ForTexture.java +++ b/src/main/java/com/replaymod/replay/mixin/world_border/Mixin_UseReplayTime_ForTexture.java @@ -3,16 +3,25 @@ package com.replaymod.replay.mixin.world_border; import com.replaymod.core.versions.MCVer; import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayModReplay; -import net.minecraft.client.render.WorldRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +//#if MC>=12102 +//$$ import net.minecraft.client.render.WorldBorderRendering; +//#else +import net.minecraft.client.render.WorldRenderer; +//#endif + /** * Normally Minecraft's world border texture animation is based off real time; * this redirect ensures that it is synced with the time in the Replay instead. */ +//#if MC>=12102 +//$$ @Mixin(WorldBorderRendering.class) +//#else @Mixin(WorldRenderer.class) +//#endif public class Mixin_UseReplayTime_ForTexture { //#if MC>=11400 @Redirect(method = "*", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J")) diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java b/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java index efa25f1f..6ed26bfe 100644 --- a/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java +++ b/src/main/java/com/replaymod/simplepathing/gui/GuiKeyframeTimeline.java @@ -37,6 +37,10 @@ import static de.johni0702.minecraft.gui.versions.MCVer.popScissorState; import static de.johni0702.minecraft.gui.versions.MCVer.pushScissorState; import static de.johni0702.minecraft.gui.versions.MCVer.setScissorDisabled; +//#if MC>=12102 +//$$ import net.minecraft.client.gl.ShaderProgramKeys; +//#endif + //#if MC>=11700 //$$ import com.mojang.blaze3d.systems.RenderSystem; //$$ import net.minecraft.client.render.GameRenderer; @@ -175,7 +179,9 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline=11700 + //#if MC>=12102 + //$$ RenderSystem.setShader(ShaderProgramKeys.RENDERTYPE_LINES); + //#elseif MC>=11700 //$$ RenderSystem.setShader(GameRenderer::getRenderTypeLinesShader); //#else GL11.glEnable(GL11.GL_LINE_SMOOTH); diff --git a/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java b/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java index 35af5819..c1358115 100644 --- a/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java +++ b/src/main/java/com/replaymod/simplepathing/preview/PathPreviewRenderer.java @@ -30,6 +30,10 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; import org.lwjgl.opengl.GL11; +//#if MC>=12102 +//$$ import net.minecraft.client.gl.ShaderProgramKeys; +//#endif + //#if MC>=11700 //$$ import net.minecraft.client.render.GameRenderer; //#endif @@ -114,7 +118,9 @@ public class PathPreviewRenderer extends EventRegistrations { //#else //$$ RenderSystem.getModelViewStack().method_34425(matrixStack.peek().getModel()); //#endif + //#if MC<12102 //$$ RenderSystem.applyModelViewMatrix(); + //#endif //#elseif MC>=11500 RenderSystem.multMatrix(matrixStack.peek().getModel()); //#endif @@ -257,7 +263,11 @@ public class PathPreviewRenderer extends EventRegistrations { emitLine(new MatrixStack(), buffer, Vector3f.sub(pos1, view, null), Vector3f.sub(pos2, view, null), color); //#if MC>=11700 + //#if MC>=12102 + //$$ RenderSystem.setShader(ShaderProgramKeys.RENDERTYPE_LINES); + //#else //$$ RenderSystem.setShader(GameRenderer::getRenderTypeLinesShader); + //#endif //$$ RenderSystem.disableCull(); //#endif GL11.glLineWidth(3); @@ -314,7 +324,9 @@ public class PathPreviewRenderer extends EventRegistrations { GL11.glRotatef(-mc.getEntityRenderDispatcher().camera.getYaw(), 0, 1, 0); GL11.glRotatef(mc.getEntityRenderDispatcher().camera.getPitch(), 1, 0, 0); - //#if MC>=11700 + //#if MC>=12102 + //$$ RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); + //#elseif MC>=11700 //$$ RenderSystem.applyModelViewMatrix(); //$$ RenderSystem.setShader(GameRenderer::getPositionTexShader); //#endif @@ -352,7 +364,9 @@ public class PathPreviewRenderer extends EventRegistrations { emitLine(new MatrixStack(), buffer, new Vector3f(0, 0, 0), new Vector3f(0, 0, 2), 0x00ff00aa); - //#if MC>=11700 + //#if MC>=12102 + //$$ RenderSystem.setShader(ShaderProgramKeys.RENDERTYPE_LINES); + //#elseif MC>=11700 //$$ RenderSystem.applyModelViewMatrix(); //$$ RenderSystem.setShader(GameRenderer::getRenderTypeLinesShader); //#else @@ -423,7 +437,9 @@ public class PathPreviewRenderer extends EventRegistrations { buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next(); buffer.vertex(r + cubeSize, r + cubeSize, r).texture(2 * 8 / 64f, 0).color(255, 255, 255, 200).next(); - //#if MC>=11700 + //#if MC>=12102 + //$$ RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR); + //#elseif MC>=11700 //$$ RenderSystem.applyModelViewMatrix(); //$$ RenderSystem.setShader(GameRenderer::getPositionTexColorShader); //#endif diff --git a/src/main/resources/mixins.render.replaymod.json b/src/main/resources/mixins.render.replaymod.json index 28795704..f4042846 100644 --- a/src/main/resources/mixins.render.replaymod.json +++ b/src/main/resources/mixins.render.replaymod.json @@ -30,6 +30,7 @@ "Mixin_Stereoscopic_Camera", "Mixin_Stereoscopic_HandRenderPass", "Mixin_SuppressFramebufferResizeDuringRender", + "Mixin_UseGuiFramebufferDuringGuiRendering", //#if MC>=11600 "Mixin_AddIrisOdsShaderUniforms", "Mixin_LoadIrisOdsShaderPack", diff --git a/src/main/resources/mixins.replay.replaymod.json b/src/main/resources/mixins.replay.replaymod.json index a6cc78d7..83a26cf3 100644 --- a/src/main/resources/mixins.replay.replaymod.json +++ b/src/main/resources/mixins.replay.replaymod.json @@ -46,7 +46,9 @@ //#if MC<11400 //$$ "MixinRenderManager", //#endif + //#if MC<12102 "MixinViewFrustum", + //#endif //#else //$$ "MixinEntityRenderer", //$$ "MixinFMLClientHandler", diff --git a/versions/1.21.2/src/main/java/com/replaymod/replay/mixin/MixinViewFrustum.java b/versions/1.21.2/src/main/java/com/replaymod/replay/mixin/MixinViewFrustum.java new file mode 100644 index 00000000..959f7c80 --- /dev/null +++ b/versions/1.21.2/src/main/java/com/replaymod/replay/mixin/MixinViewFrustum.java @@ -0,0 +1 @@ +// Fixed in Vanilla From 14229ef1fe138c09e50c4c5bda8a2f8baf604254 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 3 Nov 2024 15:03:33 +0100 Subject: [PATCH 2/3] Fix LoginHelloS2CPacket being recorded on some servers --- .../java/com/replaymod/recording/packet/PacketListener.java | 5 +++++ src/main/java/com/replaymod/replay/FullReplaySender.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index fbf7f84d..59a0d26a 100644 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -31,6 +31,7 @@ import io.netty.channel.ChannelPromise; import io.netty.util.AttributeKey; import net.minecraft.client.MinecraftClient; import net.minecraft.network.ClientConnection; +import net.minecraft.network.packet.s2c.login.LoginHelloS2CPacket; import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; import net.minecraft.network.packet.s2c.play.DisconnectS2CPacket; import net.minecraft.entity.Entity; @@ -489,6 +490,10 @@ public class PacketListener extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + if (msg instanceof LoginHelloS2CPacket) { + super.channelRead(ctx, msg); + return; + } if (msg instanceof LoginCompressionS2CPacket) { super.channelRead(ctx, msg); return; diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java index 287e2d45..919b5b37 100644 --- a/src/main/java/com/replaymod/replay/FullReplaySender.java +++ b/src/main/java/com/replaymod/replay/FullReplaySender.java @@ -29,6 +29,7 @@ import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.Packet; +import net.minecraft.network.packet.s2c.login.LoginHelloS2CPacket; import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket; import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; import net.minecraft.network.packet.s2c.play.DisconnectS2CPacket; @@ -170,6 +171,7 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re * These packets are ignored completely during replay. */ private static final List BAD_PACKETS = Arrays.asList( + LoginHelloS2CPacket.class, // workaround for an issue where ReplayMod prior to 2.6.20 would record these //#if MC>=11404 PlayerActionResponseS2CPacket.class, //#endif From 8cf598d7813145e154c48dd4b14d534bdf4c41b6 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 3 Nov 2024 16:34:42 +0100 Subject: [PATCH 3/3] Fix transfer packet log spam --- src/main/java/com/replaymod/replay/FullReplaySender.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/replaymod/replay/FullReplaySender.java b/src/main/java/com/replaymod/replay/FullReplaySender.java index 919b5b37..6ca861e7 100644 --- a/src/main/java/com/replaymod/replay/FullReplaySender.java +++ b/src/main/java/com/replaymod/replay/FullReplaySender.java @@ -57,6 +57,10 @@ import net.minecraft.util.math.Vec3d; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +//#if MC>=12005 +//$$ import net.minecraft.network.packet.s2c.common.ServerTransferS2CPacket; +//#endif + //#if MC>=12002 //$$ import net.minecraft.network.packet.s2c.config.ReadyS2CPacket; //$$ import net.minecraft.network.packet.s2c.play.CommonPlayerSpawnInfo; @@ -172,6 +176,9 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re */ private static final List BAD_PACKETS = Arrays.asList( LoginHelloS2CPacket.class, // workaround for an issue where ReplayMod prior to 2.6.20 would record these + //#if MC>=12005 + //$$ ServerTransferS2CPacket.class, + //#endif //#if MC>=11404 PlayerActionResponseS2CPacket.class, //#endif