Use MainWindowAccessor across all versions
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user