content: package net.minecraft.client.particle;
  
  import net.minecraft.world.World;
  
  public class EntityExplodeFX extends EntityFX {
      protected EntityExplodeFX(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 + (Math.random() * 2.0D - 1.0D) * 0.05000000074505806D;
          this.motionY = ySpeedIn + (Math.random() * 2.0D - 1.0D) * 0.05000000074505806D;
          this.motionZ = zSpeedIn + (Math.random() * 2.0D - 1.0D) * 0.05000000074505806D;
          this.particleRed = this.particleGreen = this.particleBlue = this.rand.nextFloat() * 0.3F + 0.7F;
          this.particleScale = this.rand.nextFloat() * this.rand.nextFloat() * 6.0F + 1.0F;
          this.particleMaxAge = (int) (16.0D / ((double) this.rand.nextFloat() * 0.8D + 0.2D)) + 2;
      }
  
      public void onUpdate() {
          this.prevPosX = this.posX;
          this.prevPosY = this.posY;
          this.prevPosZ = this.posZ;
  
          if (this.particleAge++ >= this.particleMaxAge) {
              this.setDead();
          }
  
          this.setParticleTextureIndex(7 - this.particleAge * 8 / this.particleMaxAge);
          this.motionY += 0.004D;
          this.moveEntity(this.motionX, this.motionY, this.motionZ);
          this.motionX *= 0.8999999761581421D;
          this.motionY *= 0.8999999761581421D;
          this.motionZ *= 0.8999999761581421D;
  
          if (this.onGround) {
              this.motionX *= 0.699999988079071D;
              this.motionZ *= 0.699999988079071D;
          }
      }
  
      public static class Factory 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 EntityExplodeFX(worldIn, xCoordIn, yCoordIn, zCoordIn, xSpeedIn, ySpeedIn, zSpeedIn);
          }
      }
  }
  