From 7afcdce21e70f2baffefb5cc076d4e3d55f455ea Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Thu, 18 Jun 2020 17:42:16 +0100 Subject: [PATCH] Fix some particle weirdness (somehow the interp pos is wrong by the time it gets to fx layer 3) --- .../electroblob/wizardry/client/particle/ParticleBuff.java | 6 ++++++ .../wizardry/client/particle/ParticleSphere.java | 6 ++++++ .../wizardry/client/particle/ParticleSummon.java | 6 ++++++ .../wizardry/client/particle/ParticleTargeted.java | 6 ++++++ 4 files changed, 24 insertions(+) diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleBuff.java b/src/main/java/electroblob/wizardry/client/particle/ParticleBuff.java index a7a8a752..db14cd28 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleBuff.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleBuff.java @@ -60,6 +60,12 @@ public class ParticleBuff extends ParticleWizardry { // Copied from ParticleWizardry, needs to be here since we're not calling super updateEntityLinking(partialTicks); + + // I don't know why, but despite not being in any superclass renderParticle these also need to be here if we're + // not calling super + interpPosX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * (double)partialTicks; + interpPosY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * (double)partialTicks; + interpPosZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * (double)partialTicks; GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleSphere.java b/src/main/java/electroblob/wizardry/client/particle/ParticleSphere.java index 89eaf5a7..9a1d8204 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleSphere.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleSphere.java @@ -43,6 +43,12 @@ public class ParticleSphere extends ParticleWizardry { // Copied from ParticleWizardry, needs to be here since we're not calling super updateEntityLinking(partialTicks); + // I don't know why, but despite not being in any superclass renderParticle these also need to be here if we're + // not calling super + interpPosX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * (double)partialTicks; + interpPosY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * (double)partialTicks; + interpPosZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * (double)partialTicks; + float x = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)partialTicks); float y = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)partialTicks); float z = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)partialTicks); diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleSummon.java b/src/main/java/electroblob/wizardry/client/particle/ParticleSummon.java index 55daba3e..e8af86b6 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleSummon.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleSummon.java @@ -53,6 +53,12 @@ public class ParticleSummon extends ParticleWizardry { // Copied from ParticleWizardry, needs to be here since we're not calling super updateEntityLinking(partialTicks); + + // I don't know why, but despite not being in any superclass renderParticle these also need to be here if we're + // not calling super + interpPosX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * (double)partialTicks; + interpPosY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * (double)partialTicks; + interpPosZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * (double)partialTicks; GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleTargeted.java b/src/main/java/electroblob/wizardry/client/particle/ParticleTargeted.java index 2218509c..9b512ffd 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleTargeted.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleTargeted.java @@ -78,6 +78,12 @@ public abstract class ParticleTargeted extends ParticleWizardry { // Copied from ParticleWizardry, needs to be here since we're not calling super updateEntityLinking(partialTicks); + // I don't know why, but despite not being in any superclass renderParticle these also need to be here if we're + // not calling super + interpPosX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * (double)partialTicks; + interpPosY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * (double)partialTicks; + interpPosZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * (double)partialTicks; + float x = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)partialTicks); float y = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)partialTicks); float z = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)partialTicks);