Use MainWindowAccessor across all versions

This commit is contained in:
Jonas Herzig
2021-02-23 13:37:06 +01:00
parent e4da7f331b
commit 4eeaca5af1
5 changed files with 32 additions and 21 deletions

View File

@@ -2,9 +2,11 @@ package com.replaymod.core.versions;
import com.replaymod.core.mixin.GuiScreenAccessor; import com.replaymod.core.mixin.GuiScreenAccessor;
import com.replaymod.core.mixin.MinecraftAccessor; import com.replaymod.core.mixin.MinecraftAccessor;
import com.replaymod.render.mixin.MainWindowAccessor;
import com.replaymod.replaystudio.protocol.PacketTypeRegistry; import com.replaymod.replaystudio.protocol.PacketTypeRegistry;
import com.replaymod.replaystudio.us.myles.ViaVersion.api.protocol.ProtocolVersion; import com.replaymod.replaystudio.us.myles.ViaVersion.api.protocol.ProtocolVersion;
import com.replaymod.replaystudio.us.myles.ViaVersion.packets.State; 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 de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
@@ -38,7 +40,6 @@ import java.util.ArrayList;
//#if MC>=11400 //#if MC>=11400
import com.replaymod.core.mixin.AbstractButtonWidgetAccessor; import com.replaymod.core.mixin.AbstractButtonWidgetAccessor;
import com.replaymod.render.mixin.MainWindowAccessor;
import net.minecraft.SharedConstants; import net.minecraft.SharedConstants;
import net.minecraft.client.gl.Framebuffer; import net.minecraft.client.gl.Framebuffer;
import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ButtonWidget;
@@ -464,13 +465,17 @@ public class MCVer {
} }
//#if MC>=11400 //#if MC>=11400
public static Window getWindow(MinecraftClient mc) { public static @NonNull Window getWindow(MinecraftClient mc) {
//#if MC>=11500 //#if MC>=11500
return mc.getWindow(); return mc.getWindow();
//#else //#else
//$$ return mc.window; //$$ return mc.window;
//#endif //#endif
} }
//#else
//$$ public static @NonNull MainWindowAccessor getWindow(Minecraft mc) {
//$$ return (MainWindowAccessor) mc;
//$$ }
//#endif //#endif
//#if MC>=11400 //#if MC>=11400

View File

@@ -1,4 +1,3 @@
//#if MC>=11400
package com.replaymod.render.mixin; package com.replaymod.render.mixin;
import net.minecraft.client.util.Window; import net.minecraft.client.util.Window;
@@ -7,9 +6,12 @@ import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(Window.class) @Mixin(Window.class)
public interface MainWindowAccessor { public interface MainWindowAccessor {
@Accessor
int getFramebufferWidth();
@Accessor @Accessor
void setFramebufferWidth(int value); void setFramebufferWidth(int value);
@Accessor @Accessor
int getFramebufferHeight();
@Accessor
void setFramebufferHeight(int value); void setFramebufferHeight(int value);
} }
//#endif

View File

@@ -19,6 +19,7 @@ import com.replaymod.render.gui.GuiRenderingDone;
import com.replaymod.render.gui.GuiVideoRenderer; import com.replaymod.render.gui.GuiVideoRenderer;
import com.replaymod.render.hooks.ForceChunkLoadingHook; import com.replaymod.render.hooks.ForceChunkLoadingHook;
import com.replaymod.render.metadata.MetadataInjector; import com.replaymod.render.metadata.MetadataInjector;
import com.replaymod.render.mixin.MainWindowAccessor;
import com.replaymod.render.mixin.WorldRendererAccessor; import com.replaymod.render.mixin.WorldRendererAccessor;
import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayHandler;
import com.replaymod.replaystudio.pathing.path.Keyframe; import com.replaymod.replaystudio.pathing.path.Keyframe;
@@ -46,7 +47,6 @@ import org.lwjgl.opengl.GL11;
//#if MC>=11400 //#if MC>=11400
import com.replaymod.render.EXRWriter; import com.replaymod.render.EXRWriter;
import com.replaymod.render.mixin.MainWindowAccessor;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@@ -232,19 +232,11 @@ public class VideoRenderer implements RenderInfo {
@Override @Override
public float updateForNextFrame() { public float updateForNextFrame() {
// because the jGui lib uses Minecraft's displayWidth and displayHeight values, update these temporarily // 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); MainWindowAccessor acc = (MainWindowAccessor) (Object) getWindow(mc);
int displayWidthBefore = acc.getFramebufferWidth();
int displayHeightBefore = acc.getFramebufferHeight();
acc.setFramebufferWidth(displayWidth); acc.setFramebufferWidth(displayWidth);
acc.setFramebufferHeight(displayHeight); 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) { if (!settings.isHighPerformance() || framesDone % fps == 0) {
while (drawGui() && paused) { while (drawGui() && paused) {
@@ -285,13 +277,8 @@ public class VideoRenderer implements RenderInfo {
} }
// change Minecraft's display size back // change Minecraft's display size back
//#if MC>=11400
acc.setFramebufferWidth(displayWidthBefore); acc.setFramebufferWidth(displayWidthBefore);
acc.setFramebufferHeight(displayHeightBefore); acc.setFramebufferHeight(displayHeightBefore);
//#else
//$$ mc.displayWidth = displayWidthBefore;
//$$ mc.displayHeight = displayHeightBefore;
//#endif
if (cameraPathExporter != null) { if (cameraPathExporter != null) {
cameraPathExporter.recordFrame(timer.tickDelta); cameraPathExporter.recordFrame(timer.tickDelta);

View File

@@ -20,8 +20,8 @@
//#if MC>=11400 //#if MC>=11400
"Mixin_PreserveDepthDuringHandRendering", "Mixin_PreserveDepthDuringHandRendering",
"Mixin_WindowsWorkaroundForTinyEXRNatives", "Mixin_WindowsWorkaroundForTinyEXRNatives",
"MainWindowAccessor",
//#endif //#endif
"MainWindowAccessor",
"WorldRendererAccessor", "WorldRendererAccessor",
//#if MC>=10904 //#if MC>=10904
"MixinParticleManager", "MixinParticleManager",

View File

@@ -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);
}