75 lines
3.3 KiB
Java
75 lines
3.3 KiB
Java
package com.replaymod.render.mixin;
|
|
|
|
import com.replaymod.core.versions.MCVer;
|
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
|
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
|
import net.minecraft.entity.Entity;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Shadow;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
import org.spongepowered.asm.mixin.injection.Inject;
|
|
|
|
//#if MC>=11500
|
|
//$$ import net.minecraft.client.render.VertexConsumerProvider;
|
|
//$$ import net.minecraft.client.util.math.MatrixStack;
|
|
//$$ import net.minecraft.client.util.math.Vector3f;
|
|
//$$ import net.minecraft.util.math.Quaternion;
|
|
//#endif
|
|
|
|
//#if MC>=10904
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
//#else
|
|
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
//#endif
|
|
|
|
@Mixin(EntityRenderDispatcher.class)
|
|
public abstract class MixinRenderManager {
|
|
//#if MC>=11500
|
|
//$$ @Shadow private Quaternion rotation;
|
|
//#else
|
|
@Shadow private float cameraPitch;
|
|
@Shadow private float cameraYaw;
|
|
//#endif
|
|
|
|
//#if MC>=11400
|
|
//$$ @Inject(method = "render", at = @At("HEAD"))
|
|
//#else
|
|
//#if MC>=11400
|
|
@Inject(method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At("HEAD"))
|
|
//#else
|
|
//#if MC>=11300
|
|
//$$ @Inject(method = "renderEntity", at = @At("HEAD"))
|
|
//#else
|
|
//$$ @Inject(method = "doRenderEntity", at = @At("HEAD"))
|
|
//#endif
|
|
//#endif
|
|
//#endif
|
|
//#if MC>=10904
|
|
private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks,
|
|
//#if MC>=11500
|
|
//$$ MatrixStack matrixStack,
|
|
//$$ VertexConsumerProvider vertexConsumerProvider,
|
|
//$$ int int_1,
|
|
//#else
|
|
boolean iDoNotCare,
|
|
//#endif
|
|
CallbackInfo ci) {
|
|
//#else
|
|
//$$ private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks, boolean iDoNotCare, CallbackInfoReturnable<Boolean> ci) {
|
|
//#endif
|
|
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
|
|
if (handler != null && handler.omnidirectional) {
|
|
double pitch = -Math.atan2(dy, Math.sqrt(dx * dx + dz * dz));
|
|
double yaw = -Math.atan2(dx, dz);
|
|
//#if MC>=11500
|
|
//$$ this.rotation = new Quaternion(0.0F, 0.0F, 0.0F, 1.0F);
|
|
//$$ this.rotation.hamiltonProduct(Vector3f.POSITIVE_Y.getDegreesQuaternion((float) -yaw));
|
|
//$$ this.rotation.hamiltonProduct(Vector3f.POSITIVE_X.getDegreesQuaternion((float) pitch));
|
|
//#else
|
|
this.cameraPitch = (float) Math.toDegrees(pitch);
|
|
this.cameraYaw = (float) Math.toDegrees(yaw);
|
|
//#endif
|
|
}
|
|
}
|
|
}
|