99 lines
3.1 KiB
Java
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
|
|
}
|
|
}
|