Files
ReplayModCinematic/src/main/java/com/replaymod/render/mixin/Mixin_CubicRotation.java
Jonas Herzig b119d2d127 ./gradlew :1.15.2:setCoreVersion
Also `./gradlew :jGui:1.15.2:setCoreVersion`.
2020-04-06 13:18:37 +02:00

99 lines
3.1 KiB
Java

package com.replaymod.render.mixin;
import com.replaymod.render.capturer.CubicOpenGlFrameCapturer;
import com.replaymod.render.hooks.EntityRendererHandler;
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;
//#if MC>=11500
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
//#else
//$$ import org.lwjgl.opengl.GL11;
//#endif
import static com.replaymod.core.versions.MCVer.getMinecraft;
//#if MC>=11500
@Mixin(value = net.minecraft.client.render.GameRenderer.class)
//#else
//#if MC>=11400
//$$ @Mixin(value = net.minecraft.client.render.Camera.class)
//#else
//$$ @Mixin(value = net.minecraft.client.renderer.EntityRenderer.class)
//#endif
//#endif
public abstract class Mixin_CubicRotation {
private EntityRendererHandler getHandler() {
return ((EntityRendererHandler.IEntityRenderer) getMinecraft().gameRenderer).replayModRender_getHandler();
}
//#if MC>=11500
@Inject(method = "renderWorld", at = @At("HEAD"))
//#else
//#if MC>=11400
//$$ @Inject(method = "update", at = @At("HEAD"))
//#else
//$$ @Inject(method = "orientCamera", at = @At("HEAD"))
//#endif
//#endif
private void replayModRender_setupCubicFrameRotation(
//#if MC>=11500
float partialTicks,
long frameStartNano,
MatrixStack matrixStack,
//#endif
CallbackInfo ci
) {
if (getHandler() != null && getHandler().data instanceof CubicOpenGlFrameCapturer.Data) {
CubicOpenGlFrameCapturer.Data data = (CubicOpenGlFrameCapturer.Data) getHandler().data;
float angle = 0;
float x = 0;
float y = 0;
switch (data) {
case FRONT:
angle = 0;
y = 1;
break;
case RIGHT:
angle = 90;
y = 1;
break;
case BACK:
angle = 180;
y = 1;
break;
case LEFT:
angle = -90;
y = 1;
break;
case TOP:
angle = -90;
x = 1;
break;
case BOTTOM:
angle = 90;
x = 1;
break;
}
//#if MC>=11500
matrixStack.multiply(new Vector3f(x, y, 0).getDegreesQuaternion(angle));
//#else
//$$ GL11.glRotatef(angle, x, y, 0);
//#endif
}
//#if MC<11500
//$$ if (getHandler() != null && getHandler().omnidirectional) {
//$$ // Minecraft goes back a little so we have to revert that
//#if MC>=11400
//$$ GL11.glTranslatef(0.0F, 0.0F, -0.05F);
//#else
//$$ GL11.glTranslatef(0.0F, 0.0F, 0.1F);
//#endif
//$$ }
//#endif
}
}