tcr/java/src/game/renderer/particle/EntityEnchantmentTableParticleFX.java
2025-03-12 18:13:11 +01:00

94 lines
3.1 KiB
Java
Executable file

package game.renderer.particle;
import game.world.World;
public class EntityEnchantmentTableParticleFX extends EntityFX
{
private float field_70565_a;
private double coordX;
private double coordY;
private double coordZ;
protected EntityEnchantmentTableParticleFX(World worldIn, double xCoordIn, double yCoordIn, double zCoordIn, double xSpeedIn, double ySpeedIn, double zSpeedIn)
{
super(worldIn, xCoordIn, yCoordIn, zCoordIn, xSpeedIn, ySpeedIn, zSpeedIn);
this.motionX = xSpeedIn;
this.motionY = ySpeedIn;
this.motionZ = zSpeedIn;
this.coordX = xCoordIn;
this.coordY = yCoordIn;
this.coordZ = zCoordIn;
this.posX = this.prevX = xCoordIn + xSpeedIn;
this.posY = this.prevY = yCoordIn + ySpeedIn;
this.posZ = this.prevZ = zCoordIn + zSpeedIn;
float f = this.rand.floatv() * 0.6F + 0.4F;
this.field_70565_a = this.particleScale = this.rand.floatv() * 0.5F + 0.2F;
this.particleRed = this.particleGreen = this.particleBlue = 1.0F * f;
this.particleGreen *= 0.9F;
this.particleRed *= 0.9F;
this.particleMaxAge = (int)(Math.random() * 10.0D) + 30;
this.noClip = true;
this.setParticleTextureIndex((int)(Math.random() * 26.0D + 1.0D + 224.0D));
}
public int getBrightnessForRender(float partialTicks)
{
int i = super.getBrightnessForRender(partialTicks);
float f = (float)this.particleAge / (float)this.particleMaxAge;
f = f * f;
f = f * f;
int j = i & 255;
int k = i >> 16 & 255;
k = k + (int)(f * 15.0F * 16.0F);
if (k > 240)
{
k = 240;
}
return j | k << 16;
}
/**
* Gets how bright this entity is.
*/
public float getBrightness(float partialTicks)
{
float f = super.getBrightness(partialTicks);
float f1 = (float)this.particleAge / (float)this.particleMaxAge;
f1 = f1 * f1;
f1 = f1 * f1;
return f * (1.0F - f1) + f1;
}
/**
* Called to update the entity's position/logic.
*/
public void onUpdate()
{
this.prevX = this.posX;
this.prevY = this.posY;
this.prevZ = this.posZ;
float f = (float)this.particleAge / (float)this.particleMaxAge;
f = 1.0F - f;
float f1 = 1.0F - f;
f1 = f1 * f1;
f1 = f1 * f1;
this.posX = this.coordX + this.motionX * (double)f;
this.posY = this.coordY + this.motionY * (double)f - (double)(f1 * 1.2F);
this.posZ = this.coordZ + this.motionZ * (double)f;
if (this.particleAge++ >= this.particleMaxAge)
{
this.setDead();
}
}
public static class EnchantmentTable implements IParticleFactory
{
public EntityFX getEntityFX(int particleID, World worldIn, double xCoordIn, double yCoordIn, double zCoordIn, double xSpeedIn, double ySpeedIn, double zSpeedIn, int... p_178902_15_)
{
return new EntityEnchantmentTableParticleFX(worldIn, xCoordIn, yCoordIn, zCoordIn, xSpeedIn, ySpeedIn, zSpeedIn);
}
}
}