minecraft-src/net/minecraft/client/particle/BaseAshSmokeParticle.java
2025-07-04 01:41:11 +03:00

67 lines
1.7 KiB
Java

package net.minecraft.client.particle;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.util.Mth;
@Environment(EnvType.CLIENT)
public class BaseAshSmokeParticle extends TextureSheetParticle {
private final SpriteSet sprites;
protected BaseAshSmokeParticle(
ClientLevel level,
double x,
double y,
double z,
float xSeedMultiplier,
float ySpeedMultiplier,
float zSpeedMultiplier,
double xSpeed,
double ySpeed,
double zSpeed,
float quadSizeMultiplier,
SpriteSet sprites,
float rColMultiplier,
int lifetime,
float gravity,
boolean hasPhysics
) {
super(level, x, y, z, 0.0, 0.0, 0.0);
this.friction = 0.96F;
this.gravity = gravity;
this.speedUpWhenYMotionIsBlocked = true;
this.sprites = sprites;
this.xd *= xSeedMultiplier;
this.yd *= ySpeedMultiplier;
this.zd *= zSpeedMultiplier;
this.xd += xSpeed;
this.yd += ySpeed;
this.zd += zSpeed;
float f = level.random.nextFloat() * rColMultiplier;
this.rCol = f;
this.gCol = f;
this.bCol = f;
this.quadSize *= 0.75F * quadSizeMultiplier;
this.lifetime = (int)(lifetime / (level.random.nextFloat() * 0.8 + 0.2) * quadSizeMultiplier);
this.lifetime = Math.max(this.lifetime, 1);
this.setSpriteFromAge(sprites);
this.hasPhysics = hasPhysics;
}
@Override
public ParticleRenderType getRenderType() {
return ParticleRenderType.PARTICLE_SHEET_OPAQUE;
}
@Override
public float getQuadSize(float scaleFactor) {
return this.quadSize * Mth.clamp((this.age + scaleFactor) / this.lifetime * 32.0F, 0.0F, 1.0F);
}
@Override
public void tick() {
super.tick();
this.setSpriteFromAge(this.sprites);
}
}