Update to MC 1.14 / Fabric

This commit is contained in:
Jonas Herzig
2019-05-04 14:37:00 +02:00
parent 17fe5b345f
commit 3d009e45c7
151 changed files with 3963 additions and 1455 deletions

View File

@@ -8,22 +8,28 @@ import com.replaymod.render.blend.mixin.ParticleAccessor;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.particle.Particle;
import net.minecraft.client.particle.ParticleManager;
import net.minecraft.entity.Entity;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.util.math.Vec3d;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
//#if MC>=11200
import net.minecraft.client.renderer.BufferBuilder;
//#if MC>=11400
//$$ import net.minecraft.client.render.Camera;
//#else
//$$ import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.entity.Entity;
//#endif
@Mixin(ParticleManager.class)
public abstract class MixinParticleManager {
//#if MC>=11200
//#if MC>=11400
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/BufferBuilder;Lnet/minecraft/client/render/Camera;FFFFFF)V"))
//$$ private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Camera view, float partialTicks,
//#else
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
//#endif
//#else
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/VertexBuffer;Lnet/minecraft/entity/Entity;FFFFFF)V"))
//$$ private void renderNormalParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
@@ -32,6 +38,8 @@ public abstract class MixinParticleManager {
renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
}
// Seems to be gone by 1.14
//#if MC<11400
//#if MC>=11200
@Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
private void renderLitParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
@@ -42,22 +50,28 @@ public abstract class MixinParticleManager {
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
}
//#if MC>=11200
private void renderParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
//#else
//$$ private void renderParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
//#endif
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
private void renderParticle(Particle particle,
BufferBuilder vertexBuffer,
//#if MC>=11400
//$$ Camera view,
//#else
Entity view,
//#endif
float partialTicks,
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
if (handler != null && handler.omnidirectional) {
// Align all particles towards the camera
ParticleAccessor acc = (ParticleAccessor) particle;
double dx = acc.getPrevPosX() + (acc.getPosX() - acc.getPrevPosX()) * partialTicks - view.posX;
double dy = acc.getPrevPosY() + (acc.getPosY() - acc.getPrevPosY()) * partialTicks - view.posY;
double dz = acc.getPrevPosZ() + (acc.getPosZ() - acc.getPrevPosZ()) * partialTicks - view.posZ;
double pitch = -Math.atan2(dy, Math.sqrt(dx * dx + dz * dz));
double yaw = -Math.atan2(dx, dz);
//#if MC>=11400
//$$ Vec3d pos = view.getPos();
//#else
Vec3d pos = new Vec3d(view.posX, view.posY, view.posZ);
//#endif
Vec3d d = MCVer.getPosition(particle, partialTicks).subtract(pos);
double pitch = -Math.atan2(d.y, Math.sqrt(d.x * d.x + d.z * d.z));
double yaw = -Math.atan2(d.x, d.z);
rotX = (float) Math.cos(yaw);
rotZ = (float) Math.sin(yaw);