From 4eeaca5af16f5bdfb4a16b90fe7ffd0ab35124c1 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Tue, 23 Feb 2021 13:37:06 +0100 Subject: [PATCH] Use MainWindowAccessor across all versions --- .../com/replaymod/core/versions/MCVer.java | 9 +++++++-- .../render/mixin/MainWindowAccessor.java | 6 ++++-- .../render/rendering/VideoRenderer.java | 19 +++---------------- .../resources/mixins.render.replaymod.json | 2 +- .../render/mixin/MainWindowAccessor.java | 17 +++++++++++++++++ 5 files changed, 32 insertions(+), 21 deletions(-) create mode 100644 versions/1.12.2/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java diff --git a/src/main/java/com/replaymod/core/versions/MCVer.java b/src/main/java/com/replaymod/core/versions/MCVer.java index 333ef194..854c4a8f 100644 --- a/src/main/java/com/replaymod/core/versions/MCVer.java +++ b/src/main/java/com/replaymod/core/versions/MCVer.java @@ -2,9 +2,11 @@ package com.replaymod.core.versions; import com.replaymod.core.mixin.GuiScreenAccessor; import com.replaymod.core.mixin.MinecraftAccessor; +import com.replaymod.render.mixin.MainWindowAccessor; import com.replaymod.replaystudio.protocol.PacketTypeRegistry; import com.replaymod.replaystudio.us.myles.ViaVersion.api.protocol.ProtocolVersion; import com.replaymod.replaystudio.us.myles.ViaVersion.packets.State; +import de.johni0702.minecraft.gui.utils.NonNull; import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; @@ -38,7 +40,6 @@ import java.util.ArrayList; //#if MC>=11400 import com.replaymod.core.mixin.AbstractButtonWidgetAccessor; -import com.replaymod.render.mixin.MainWindowAccessor; import net.minecraft.SharedConstants; import net.minecraft.client.gl.Framebuffer; import net.minecraft.client.gui.widget.ButtonWidget; @@ -464,13 +465,17 @@ public class MCVer { } //#if MC>=11400 - public static Window getWindow(MinecraftClient mc) { + public static @NonNull Window getWindow(MinecraftClient mc) { //#if MC>=11500 return mc.getWindow(); //#else //$$ return mc.window; //#endif } + //#else + //$$ public static @NonNull MainWindowAccessor getWindow(Minecraft mc) { + //$$ return (MainWindowAccessor) mc; + //$$ } //#endif //#if MC>=11400 diff --git a/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java b/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java index bb276fa2..335c9908 100644 --- a/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java +++ b/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java @@ -1,4 +1,3 @@ -//#if MC>=11400 package com.replaymod.render.mixin; import net.minecraft.client.util.Window; @@ -7,9 +6,12 @@ import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(Window.class) public interface MainWindowAccessor { + @Accessor + int getFramebufferWidth(); @Accessor void setFramebufferWidth(int value); @Accessor + int getFramebufferHeight(); + @Accessor void setFramebufferHeight(int value); } -//#endif diff --git a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java index 32f8accc..a265e245 100644 --- a/src/main/java/com/replaymod/render/rendering/VideoRenderer.java +++ b/src/main/java/com/replaymod/render/rendering/VideoRenderer.java @@ -19,6 +19,7 @@ import com.replaymod.render.gui.GuiRenderingDone; import com.replaymod.render.gui.GuiVideoRenderer; import com.replaymod.render.hooks.ForceChunkLoadingHook; import com.replaymod.render.metadata.MetadataInjector; +import com.replaymod.render.mixin.MainWindowAccessor; import com.replaymod.render.mixin.WorldRendererAccessor; import com.replaymod.replay.ReplayHandler; import com.replaymod.replaystudio.pathing.path.Keyframe; @@ -46,7 +47,6 @@ import org.lwjgl.opengl.GL11; //#if MC>=11400 import com.replaymod.render.EXRWriter; -import com.replaymod.render.mixin.MainWindowAccessor; import net.minecraft.client.gui.screen.Screen; import org.lwjgl.glfw.GLFW; import java.util.concurrent.CompletableFuture; @@ -232,19 +232,11 @@ public class VideoRenderer implements RenderInfo { @Override public float updateForNextFrame() { // because the jGui lib uses Minecraft's displayWidth and displayHeight values, update these temporarily - //#if MC>=11400 - int displayWidthBefore = getWindow(mc).getFramebufferWidth(); - int displayHeightBefore = getWindow(mc).getFramebufferHeight(); - //noinspection ConstantConditions MainWindowAccessor acc = (MainWindowAccessor) (Object) getWindow(mc); + int displayWidthBefore = acc.getFramebufferWidth(); + int displayHeightBefore = acc.getFramebufferHeight(); acc.setFramebufferWidth(displayWidth); acc.setFramebufferHeight(displayHeight); - //#else - //$$ int displayWidthBefore = mc.displayWidth; - //$$ int displayHeightBefore = mc.displayHeight; - //$$ mc.displayWidth = displayWidth; - //$$ mc.displayHeight = displayHeight; - //#endif if (!settings.isHighPerformance() || framesDone % fps == 0) { while (drawGui() && paused) { @@ -285,13 +277,8 @@ public class VideoRenderer implements RenderInfo { } // change Minecraft's display size back - //#if MC>=11400 acc.setFramebufferWidth(displayWidthBefore); acc.setFramebufferHeight(displayHeightBefore); - //#else - //$$ mc.displayWidth = displayWidthBefore; - //$$ mc.displayHeight = displayHeightBefore; - //#endif if (cameraPathExporter != null) { cameraPathExporter.recordFrame(timer.tickDelta); diff --git a/src/main/resources/mixins.render.replaymod.json b/src/main/resources/mixins.render.replaymod.json index 976fbf9b..3e47b65d 100644 --- a/src/main/resources/mixins.render.replaymod.json +++ b/src/main/resources/mixins.render.replaymod.json @@ -20,8 +20,8 @@ //#if MC>=11400 "Mixin_PreserveDepthDuringHandRendering", "Mixin_WindowsWorkaroundForTinyEXRNatives", - "MainWindowAccessor", //#endif + "MainWindowAccessor", "WorldRendererAccessor", //#if MC>=10904 "MixinParticleManager", diff --git a/versions/1.12.2/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java b/versions/1.12.2/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java new file mode 100644 index 00000000..2d91cb58 --- /dev/null +++ b/versions/1.12.2/src/main/java/com/replaymod/render/mixin/MainWindowAccessor.java @@ -0,0 +1,17 @@ +package com.replaymod.render.mixin; + +import net.minecraft.client.Minecraft; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Minecraft.class) +public interface MainWindowAccessor { + @Accessor("displayWidth") + int getFramebufferWidth(); + @Accessor("displayWidth") + void setFramebufferWidth(int value); + @Accessor("displayHeight") + int getFramebufferHeight(); + @Accessor("displayHeight") + void setFramebufferHeight(int value); +}