Get render module mostly working
This commit is contained in:
@@ -8,6 +8,7 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.NoSuchFileException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
|
|
||||||
@@ -32,7 +33,7 @@ public class PlainFileAuthData implements AuthData {
|
|||||||
String authKey;
|
String authKey;
|
||||||
try {
|
try {
|
||||||
authKey = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
|
authKey = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
|
||||||
} catch (FileNotFoundException ignored) {
|
} catch (NoSuchFileException | FileNotFoundException ignored) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AuthConfirmation result = apiClient.checkAuthkey(authKey);
|
AuthConfirmation result = apiClient.checkAuthkey(authKey);
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
|||||||
if (fb.framebufferWidth != width || fb.framebufferHeight != height) {
|
if (fb.framebufferWidth != width || fb.framebufferHeight != height) {
|
||||||
fb.createFramebuffer(width, height);
|
fb.createFramebuffer(width, height);
|
||||||
}
|
}
|
||||||
|
mc.mainWindow.framebufferWidth = width;
|
||||||
|
mc.mainWindow.framebufferHeight = height;
|
||||||
//#else
|
//#else
|
||||||
//$$ if (width != mc.displayWidth || height != mc.displayHeight) {
|
//$$ if (width != mc.displayWidth || height != mc.displayHeight) {
|
||||||
//$$ mc.resize(width, height);
|
//$$ mc.resize(width, height);
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.NoSuchFileException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -300,7 +301,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
|||||||
String json = "{}";
|
String json = "{}";
|
||||||
try {
|
try {
|
||||||
json = new String(Files.readAllBytes(getSettingsPath()), StandardCharsets.UTF_8);
|
json = new String(Files.readAllBytes(getSettingsPath()), StandardCharsets.UTF_8);
|
||||||
} catch (FileNotFoundException ignored) {
|
} catch (NoSuchFileException | FileNotFoundException ignored) {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOGGER.error("Reading render settings:", e);
|
LOGGER.error("Reading render settings:", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,10 +273,13 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
|||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
NativeImage data = previewTexture.getTextureData();
|
NativeImage data = previewTexture.getTextureData();
|
||||||
assert data != null;
|
assert data != null;
|
||||||
for (int x = 0; x < data.getWidth(); x++) {
|
for (int y = 0; y < data.getHeight(); y++) {
|
||||||
for (int y = 0; y < data.getHeight(); y++) {
|
for (int x = 0; x < data.getWidth(); x++) {
|
||||||
int value = 0xff << 24 | (buffer.get() & 0xff) << 16 | (buffer.get() & 0xff) << 8 | (buffer.get() & 0xff);
|
int r = buffer.get() & 0xff;
|
||||||
data.setPixelRGBA(x, y, value);
|
int g = buffer.get() & 0xff;
|
||||||
|
int b = buffer.get() & 0xff;
|
||||||
|
int value = 0xff << 24 | b << 16 | g << 8 | r;
|
||||||
|
data.setPixelRGBA(x, y, value); // actually takes ABGR, not RGBA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//#else
|
//#else
|
||||||
|
|||||||
@@ -88,10 +88,6 @@ public class EntityRendererHandler implements WorldRenderer {
|
|||||||
this.omnidirectional = omnidirectional;
|
this.omnidirectional = omnidirectional;
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface GluPerspective {
|
|
||||||
void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar);
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IEntityRenderer {
|
public interface IEntityRenderer {
|
||||||
void replayModRender_setHandler(EntityRendererHandler handler);
|
void replayModRender_setHandler(EntityRendererHandler handler);
|
||||||
EntityRendererHandler replayModRender_getHandler();
|
EntityRendererHandler replayModRender_getHandler();
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
|||||||
//#else
|
//#else
|
||||||
//$$ @Mixin(value = EntityRenderer.class)
|
//$$ @Mixin(value = EntityRenderer.class)
|
||||||
//#endif
|
//#endif
|
||||||
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer, EntityRendererHandler.GluPerspective {
|
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer {
|
||||||
@Shadow
|
@Shadow
|
||||||
public Minecraft mc;
|
public Minecraft mc;
|
||||||
|
|
||||||
@@ -77,13 +77,16 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
//$$ }
|
//$$ }
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Inject(method = "setupFog", at = @At("HEAD"), cancellable = true)
|
// Moved to MixinFogRenderer in 1.13
|
||||||
private void replayModRender_onSetupFog(int fogDistanceFlag, float partialTicks, CallbackInfo ci) {
|
//#if MC<11300
|
||||||
if (replayModRender_handler == null) return;
|
//$$ @Inject(method = "setupFog", at = @At("HEAD"), cancellable = true)
|
||||||
if (replayModRender_handler.getSettings().getChromaKeyingColor() != null) {
|
//$$ private void replayModRender_onSetupFog(int fogDistanceFlag, float partialTicks, CallbackInfo ci) {
|
||||||
ci.cancel();
|
//$$ if (replayModRender_handler == null) return;
|
||||||
}
|
//$$ if (replayModRender_handler.getSettings().getChromaKeyingColor() != null) {
|
||||||
}
|
//$$ ci.cancel();
|
||||||
|
//$$ }
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
|
|
||||||
@Inject(method = "orientCamera", at = @At("HEAD"))
|
@Inject(method = "orientCamera", at = @At("HEAD"))
|
||||||
private void replayModRender_resetRotationIfNeeded(float partialTicks, CallbackInfo ci) {
|
private void replayModRender_resetRotationIfNeeded(float partialTicks, CallbackInfo ci) {
|
||||||
@@ -109,7 +112,13 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
private float orgRoll;
|
private float orgRoll;
|
||||||
|
|
||||||
@Inject(method = "setupCameraTransform", at = @At("HEAD"))
|
@Inject(method = "setupCameraTransform", at = @At("HEAD"))
|
||||||
private void replayModRender_beforeSetupCameraTransform(float partialTicks, int renderPass, CallbackInfo ci) {
|
private void replayModRender_beforeSetupCameraTransform(
|
||||||
|
float partialTicks,
|
||||||
|
//#if MC<11300
|
||||||
|
//$$ int renderPass,
|
||||||
|
//#endif
|
||||||
|
CallbackInfo ci
|
||||||
|
) {
|
||||||
if (replayModRender_handler != null) {
|
if (replayModRender_handler != null) {
|
||||||
Entity entity = getRenderViewEntity(MCVer.getMinecraft());
|
Entity entity = getRenderViewEntity(MCVer.getMinecraft());
|
||||||
orgYaw = entity.rotationYaw;
|
orgYaw = entity.rotationYaw;
|
||||||
@@ -121,7 +130,13 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "setupCameraTransform", at = @At("RETURN"))
|
@Inject(method = "setupCameraTransform", at = @At("RETURN"))
|
||||||
private void replayModRender_afterSetupCameraTransform(float partialTicks, int renderPass, CallbackInfo ci) {
|
private void replayModRender_afterSetupCameraTransform(
|
||||||
|
float partialTicks,
|
||||||
|
//#if MC<11300
|
||||||
|
//$$ int renderPass,
|
||||||
|
//#endif
|
||||||
|
CallbackInfo ci
|
||||||
|
) {
|
||||||
if (replayModRender_handler != null) {
|
if (replayModRender_handler != null) {
|
||||||
Entity entity = getRenderViewEntity(MCVer.getMinecraft());
|
Entity entity = getRenderViewEntity(MCVer.getMinecraft());
|
||||||
entity.rotationYaw = orgYaw;
|
entity.rotationYaw = orgYaw;
|
||||||
@@ -135,28 +150,41 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
|
||||||
private void replayModRender_renderSpectatorHand(float partialTicks, int renderPass, CallbackInfo ci) {
|
private void replayModRender_renderSpectatorHand(
|
||||||
|
float partialTicks,
|
||||||
|
//#if MC<11300
|
||||||
|
//$$ int renderPass,
|
||||||
|
//#endif
|
||||||
|
CallbackInfo ci
|
||||||
|
) {
|
||||||
if (replayModRender_handler != null) {
|
if (replayModRender_handler != null) {
|
||||||
if (replayModRender_handler.omnidirectional) {
|
if (replayModRender_handler.omnidirectional) {
|
||||||
|
// No spectator hands during 360° view, we wouldn't even know where to put it
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
return; // No spectator hands during 360° view, we wouldn't even know where to put it
|
//#if MC>=11300
|
||||||
}
|
|
||||||
Entity currentEntity = getRenderViewEntity(MCVer.getMinecraft());
|
|
||||||
if (currentEntity instanceof EntityPlayer && !(currentEntity instanceof CameraEntity)) {
|
|
||||||
if (renderPass == 2) { // Need to update render pass
|
|
||||||
renderPass = replayModRender_handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
|
|
||||||
renderHand(partialTicks, renderPass);
|
|
||||||
ci.cancel();
|
|
||||||
} // else, render normally
|
|
||||||
}
|
}
|
||||||
|
//#else
|
||||||
|
//$$ } else {
|
||||||
|
//$$ Entity currentEntity = getRenderViewEntity(MCVer.getMinecraft());
|
||||||
|
//$$ if (currentEntity instanceof EntityPlayer && !(currentEntity instanceof CameraEntity)) {
|
||||||
|
//$$ if (renderPass == 2) { // Need to update render pass
|
||||||
|
//$$ renderPass = replayModRender_handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
|
||||||
|
//$$ renderHand(partialTicks, renderPass);
|
||||||
|
//$$ ci.cancel();
|
||||||
|
//$$ } // else, render normally
|
||||||
|
//$$ }
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Shadow
|
//#if MC<11300
|
||||||
public abstract void renderHand(float partialTicks, int renderPass);
|
//$$ @Shadow
|
||||||
|
//$$ public abstract void renderHand(float partialTicks, int renderPass);
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
@Redirect(method = "updateCameraAndRender", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;drawSelectionBox(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/math/RayTraceResult;IF)V"))
|
@Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;drawSelectionBox(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/math/RayTraceResult;IF)V"))
|
||||||
private void replayModRender_drawSelectionBox(WorldRenderer instance, EntityPlayer player, RayTraceResult rtr, int alwaysZero, float partialTicks) {
|
private void replayModRender_drawSelectionBox(WorldRenderer instance, EntityPlayer player, RayTraceResult rtr, int alwaysZero, float partialTicks) {
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
@@ -179,7 +207,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
private int orgRenderDistanceChunks;
|
private int orgRenderDistanceChunks;
|
||||||
|
|
||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
@Inject(method = "updateCameraAndRender", at = @At(value = "JUMP", ordinal = 0))
|
@Inject(method = "updateCameraAndRender(FJ)V", at = @At(value = "JUMP", ordinal = 0))
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
//$$ @Inject(method = "renderWorldPass", at = @At(value = "JUMP", ordinal = 0))
|
//$$ @Inject(method = "renderWorldPass", at = @At(value = "JUMP", ordinal = 0))
|
||||||
@@ -197,7 +225,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
@Redirect(method = "updateCameraAndRender", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;renderSky(F)V"))
|
@Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;renderSky(F)V"))
|
||||||
private void replayModRender_renderSky(WorldRenderer instance, float partialTicks) {
|
private void replayModRender_renderSky(WorldRenderer instance, float partialTicks) {
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
@@ -235,7 +263,13 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = false))
|
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = false))
|
||||||
//#endif
|
//#endif
|
||||||
private void replayModRender_setupStereoscopicProjection(float partialTicks, int renderPass, CallbackInfo ci) {
|
private void replayModRender_setupStereoscopicProjection(
|
||||||
|
float partialTicks,
|
||||||
|
//#if MC<11300
|
||||||
|
//$$ int renderPass,
|
||||||
|
//#endif
|
||||||
|
CallbackInfo ci
|
||||||
|
) {
|
||||||
if (replayModRender_getHandler() != null) {
|
if (replayModRender_getHandler() != null) {
|
||||||
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
|
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
|
||||||
GL11.glTranslatef(0.07f, 0, 0);
|
GL11.glTranslatef(0.07f, 0, 0);
|
||||||
@@ -250,7 +284,13 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
|
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
|
||||||
//#endif
|
//#endif
|
||||||
private void replayModRender_setupStereoscopicModelView(float partialTicks, int renderPass, CallbackInfo ci) {
|
private void replayModRender_setupStereoscopicModelView(
|
||||||
|
float partialTicks,
|
||||||
|
//#if MC<11300
|
||||||
|
//$$ int renderPass,
|
||||||
|
//#endif
|
||||||
|
CallbackInfo ci
|
||||||
|
) {
|
||||||
if (replayModRender_getHandler() != null) {
|
if (replayModRender_getHandler() != null) {
|
||||||
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
|
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
|
||||||
GL11.glTranslatef(0.1f, 0, 0);
|
GL11.glTranslatef(0.1f, 0, 0);
|
||||||
@@ -265,23 +305,22 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
@Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)V"))
|
@Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
|
||||||
private void replayModRender_gluPerspective$0(double fovY, float aspect, float zNear, float zFar) {
|
private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) {
|
||||||
replayModRender_gluPerspective((float) fovY, aspect, zNear, zFar);
|
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "updateCameraAndRender", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)V"))
|
@Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
|
||||||
private void replayModRender_gluPerspective$1(double fovY, float aspect, float zNear, float zFar) {
|
private Matrix4f replayModRender_perspective$1(double fovY, float aspect, float zNear, float zFar) {
|
||||||
replayModRender_gluPerspective((float) fovY, aspect, zNear, zFar);
|
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private Matrix4f replayModRender_perspective(float fovY, float aspect, float zNear, float zFar) {
|
||||||
public void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar) {
|
|
||||||
if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
|
if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
|
||||||
fovY = 90;
|
fovY = 90;
|
||||||
aspect = 1;
|
aspect = 1;
|
||||||
}
|
}
|
||||||
Matrix4f.perspective(fovY, aspect, zNear, zFar);
|
return Matrix4f.perspective(fovY, aspect, zNear, zFar);
|
||||||
}
|
}
|
||||||
//#else
|
//#else
|
||||||
//$$ @Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
|
//$$ @Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
|
||||||
@@ -305,8 +344,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
|||||||
//$$ }
|
//$$ }
|
||||||
//#endif
|
//#endif
|
||||||
//$$
|
//$$
|
||||||
//$$ @Override
|
//$$ private void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar) {
|
||||||
//$$ public void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar) {
|
|
||||||
//$$ if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
|
//$$ if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
|
||||||
//$$ fovY = 90;
|
//$$ fovY = 90;
|
||||||
//$$ aspect = 1;
|
//$$ aspect = 1;
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
//#if MC>=11300
|
||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.renderer.FogRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(FogRenderer.class)
|
||||||
|
public abstract class MixinFogRenderer {
|
||||||
|
@Inject(method = "setupFog", at = @At("HEAD"), cancellable = true)
|
||||||
|
private void replayModRender_onSetupFog(int fogDistanceFlag, float partialTicks, CallbackInfo ci) {
|
||||||
|
EntityRendererHandler handler =
|
||||||
|
((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||||
|
if (handler == null) return;
|
||||||
|
if (handler.getSettings().getChromaKeyingColor() != null) {
|
||||||
|
ci.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
@@ -39,12 +39,31 @@ public abstract class MixinRenderGlobal {
|
|||||||
public ChunkRenderDispatcher renderDispatcher;
|
public ChunkRenderDispatcher renderDispatcher;
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
public abstract void setupTerrain(Entity viewEntity, double partialTicks, ICamera camera,
|
public abstract void setupTerrain(
|
||||||
int frameCount, boolean playerSpectator);
|
Entity viewEntity,
|
||||||
|
//#if MC>=11300
|
||||||
|
float partialTicks,
|
||||||
|
//#else
|
||||||
|
//$$ double partialTicks,
|
||||||
|
//#endif
|
||||||
|
ICamera camera,
|
||||||
|
int frameCount,
|
||||||
|
boolean playerSpectator
|
||||||
|
);
|
||||||
|
|
||||||
@Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
|
||||||
public void replayModRender_setupTerrain(Entity viewEntity, double partialTicks, ICamera camera,
|
private void replayModRender_setupTerrain(
|
||||||
int frameCount, boolean playerSpectator, CallbackInfo ci) {
|
Entity viewEntity,
|
||||||
|
//#if MC>=11300
|
||||||
|
float partialTicks,
|
||||||
|
//#else
|
||||||
|
//$$ double partialTicks,
|
||||||
|
//#endif
|
||||||
|
ICamera camera,
|
||||||
|
int frameCount,
|
||||||
|
boolean playerSpectator,
|
||||||
|
CallbackInfo ci
|
||||||
|
) {
|
||||||
if (replayModRender_hook != null && !replayModRender_passThroughSetupTerrain) {
|
if (replayModRender_hook != null && !replayModRender_passThroughSetupTerrain) {
|
||||||
replayModRender_passThroughSetupTerrain = true;
|
replayModRender_passThroughSetupTerrain = true;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,11 @@ public abstract class MixinRenderManager {
|
|||||||
@Shadow
|
@Shadow
|
||||||
private float playerViewY;
|
private float playerViewY;
|
||||||
|
|
||||||
@Inject(method = "doRenderEntity", at = @At("HEAD"))
|
//#if MC>=11300
|
||||||
|
@Inject(method = "renderEntity", at = @At("HEAD"))
|
||||||
|
//#else
|
||||||
|
//$$ @Inject(method = "doRenderEntity", at = @At("HEAD"))
|
||||||
|
//#endif
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks, boolean iDoNotCare, CallbackInfo ci) {
|
private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks, boolean iDoNotCare, CallbackInfo ci) {
|
||||||
//#else
|
//#else
|
||||||
|
|||||||
@@ -181,7 +181,10 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
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>=11300
|
//#if MC>=11300
|
||||||
// FIXME is this even necessary?
|
int displayWidthBefore = mc.mainWindow.framebufferWidth;
|
||||||
|
int displayHeightBefore = mc.mainWindow.framebufferHeight;
|
||||||
|
mc.mainWindow.framebufferWidth = displayWidth;
|
||||||
|
mc.mainWindow.framebufferHeight = displayHeight;
|
||||||
//#else
|
//#else
|
||||||
//$$ int displayWidthBefore = mc.displayWidth;
|
//$$ int displayWidthBefore = mc.displayWidth;
|
||||||
//$$ int displayHeightBefore = mc.displayHeight;
|
//$$ int displayHeightBefore = mc.displayHeight;
|
||||||
@@ -207,7 +210,8 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
|
|
||||||
// change Minecraft's display size back
|
// change Minecraft's display size back
|
||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
// FIXME
|
mc.mainWindow.framebufferWidth = displayWidthBefore;
|
||||||
|
mc.mainWindow.framebufferHeight = displayHeightBefore;
|
||||||
//#else
|
//#else
|
||||||
//$$ mc.displayWidth = displayWidthBefore;
|
//$$ mc.displayWidth = displayWidthBefore;
|
||||||
//$$ mc.displayHeight = displayHeightBefore;
|
//$$ mc.displayHeight = displayHeightBefore;
|
||||||
@@ -359,6 +363,8 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
// Finally, resize the Minecraft framebuffer to the actual width/height of the window
|
// Finally, resize the Minecraft framebuffer to the actual width/height of the window
|
||||||
//#if MC>=11300
|
//#if MC>=11300
|
||||||
mc.getFramebuffer().createFramebuffer(displayWidth, displayHeight);
|
mc.getFramebuffer().createFramebuffer(displayWidth, displayHeight);
|
||||||
|
mc.mainWindow.framebufferWidth = displayWidth;
|
||||||
|
mc.mainWindow.framebufferHeight = displayHeight;
|
||||||
//#else
|
//#else
|
||||||
//$$ mc.resize(displayWidth, displayHeight);
|
//$$ mc.resize(displayWidth, displayHeight);
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ public net.minecraft.client.Minecraft func_147121_ag()V # rightClickMouse
|
|||||||
public net.minecraft.client.Minecraft func_147112_ai()V # middleClickMouse
|
public net.minecraft.client.Minecraft func_147112_ai()V # middleClickMouse
|
||||||
public net.minecraft.client.Minecraft func_147115_a(Z)V # sendClickBlockToController
|
public net.minecraft.client.Minecraft func_147115_a(Z)V # sendClickBlockToController
|
||||||
|
|
||||||
|
##if MC>=11300
|
||||||
|
# MainWindow
|
||||||
|
public net.minecraft.client.MainWindow field_198131_r # framebufferWidth
|
||||||
|
public net.minecraft.client.MainWindow field_198132_s # framebufferHeight
|
||||||
|
##endif
|
||||||
|
|
||||||
# Packets
|
# Packets
|
||||||
##if MC>=11300
|
##if MC>=11300
|
||||||
public net.minecraft.network.play.server.SPacketJoinGame field_149200_f # maxPlayers
|
public net.minecraft.network.play.server.SPacketJoinGame field_149200_f # maxPlayers
|
||||||
|
|||||||
@@ -11,6 +11,9 @@
|
|||||||
//$$ "MixinRendererLivingEntity",
|
//$$ "MixinRendererLivingEntity",
|
||||||
//#endif
|
//#endif
|
||||||
"MixinEntityRenderer",
|
"MixinEntityRenderer",
|
||||||
|
//#if MC>=11300
|
||||||
|
"MixinFogRenderer",
|
||||||
|
//#endif
|
||||||
"MixinFrustum",
|
"MixinFrustum",
|
||||||
"MixinRender",
|
"MixinRender",
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
|
|||||||
Reference in New Issue
Block a user