eagler-1-12-4 / src /game /java /net /minecraft /client /particle /FlyTowardsPositionParticle.java
soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.client.particle;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Camera;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class FlyTowardsPositionParticle extends TextureSheetParticle {
private final double xStart;
private final double yStart;
private final double zStart;
private final boolean isGlowing;
private final Particle.LifetimeAlpha lifetimeAlpha;
FlyTowardsPositionParticle(
ClientLevel p_333327_, double p_328158_, double p_336092_, double p_331009_, double p_335556_, double p_328514_, double p_331083_
) {
this(p_333327_, p_328158_, p_336092_, p_331009_, p_335556_, p_328514_, p_331083_, false, Particle.LifetimeAlpha.ALWAYS_OPAQUE);
}
FlyTowardsPositionParticle(
ClientLevel p_335275_,
double p_329537_,
double p_335588_,
double p_335971_,
double p_331161_,
double p_331135_,
double p_331015_,
boolean p_334585_,
Particle.LifetimeAlpha p_330679_
) {
super(p_335275_, p_329537_, p_335588_, p_335971_);
this.isGlowing = p_334585_;
this.lifetimeAlpha = p_330679_;
this.setAlpha(p_330679_.startAlpha());
this.xd = p_331161_;
this.yd = p_331135_;
this.zd = p_331015_;
this.xStart = p_329537_;
this.yStart = p_335588_;
this.zStart = p_335971_;
this.xo = p_329537_ + p_331161_;
this.yo = p_335588_ + p_331135_;
this.zo = p_335971_ + p_331015_;
this.x = this.xo;
this.y = this.yo;
this.z = this.zo;
this.quadSize = 0.1F * (this.random.nextFloat() * 0.5F + 0.2F);
float f = this.random.nextFloat() * 0.6F + 0.4F;
this.rCol = 0.9F * f;
this.gCol = 0.9F * f;
this.bCol = f;
this.hasPhysics = false;
this.lifetime = (int)(Math.random() * 10.0) + 30;
}
@Override
public ParticleRenderType getRenderType() {
return this.lifetimeAlpha.isOpaque() ? ParticleRenderType.PARTICLE_SHEET_OPAQUE : ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
}
@Override
public void move(double p_335599_, double p_330355_, double p_329221_) {
this.setBoundingBox(this.getBoundingBox().move(p_335599_, p_330355_, p_329221_));
this.setLocationFromBoundingbox();
}
@Override
public int getLightColor(float p_334485_) {
if (this.isGlowing) {
return 240;
} else {
int i = super.getLightColor(p_334485_);
float f = (float)this.age / (float)this.lifetime;
f *= f;
f *= f;
int j = i & 0xFF;
int k = i >> 16 & 0xFF;
k += (int)(f * 15.0F * 16.0F);
if (k > 240) {
k = 240;
}
return j | k << 16;
}
}
@Override
public void tick() {
this.xo = this.x;
this.yo = this.y;
this.zo = this.z;
if (this.age++ >= this.lifetime) {
this.remove();
} else {
float f = (float)this.age / (float)this.lifetime;
f = 1.0F - f;
float f1 = 1.0F - f;
f1 *= f1;
f1 *= f1;
this.x = this.xStart + this.xd * (double)f;
this.y = this.yStart + this.yd * (double)f - (double)(f1 * 1.2F);
this.z = this.zStart + this.zd * (double)f;
}
}
@Override
public void render(VertexConsumer p_329880_, Camera p_328408_, float p_328709_) {
this.setAlpha(this.lifetimeAlpha.currentAlphaForAge(this.age, this.lifetime, p_328709_));
super.render(p_329880_, p_328408_, p_328709_);
}
@OnlyIn(Dist.CLIENT)
public static class EnchantProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprite;
public EnchantProvider(SpriteSet p_333845_) {
this.sprite = p_333845_;
}
public Particle createParticle(
SimpleParticleType p_330246_,
ClientLevel p_334642_,
double p_331946_,
double p_331936_,
double p_330331_,
double p_330075_,
double p_332423_,
double p_336053_
) {
FlyTowardsPositionParticle flytowardspositionparticle = new FlyTowardsPositionParticle(
p_334642_, p_331946_, p_331936_, p_330331_, p_330075_, p_332423_, p_336053_
);
flytowardspositionparticle.pickSprite(this.sprite);
return flytowardspositionparticle;
}
}
@OnlyIn(Dist.CLIENT)
public static class NautilusProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprite;
public NautilusProvider(SpriteSet p_331980_) {
this.sprite = p_331980_;
}
public Particle createParticle(
SimpleParticleType p_327773_,
ClientLevel p_332234_,
double p_328567_,
double p_328371_,
double p_328714_,
double p_333049_,
double p_332373_,
double p_331353_
) {
FlyTowardsPositionParticle flytowardspositionparticle = new FlyTowardsPositionParticle(
p_332234_, p_328567_, p_328371_, p_328714_, p_333049_, p_332373_, p_331353_
);
flytowardspositionparticle.pickSprite(this.sprite);
return flytowardspositionparticle;
}
}
@OnlyIn(Dist.CLIENT)
public static class VaultConnectionProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprite;
public VaultConnectionProvider(SpriteSet p_329375_) {
this.sprite = p_329375_;
}
public Particle createParticle(
SimpleParticleType p_328352_,
ClientLevel p_333387_,
double p_328138_,
double p_329009_,
double p_334265_,
double p_336214_,
double p_330704_,
double p_328353_
) {
FlyTowardsPositionParticle flytowardspositionparticle = new FlyTowardsPositionParticle(
p_333387_, p_328138_, p_329009_, p_334265_, p_336214_, p_330704_, p_328353_, true, new Particle.LifetimeAlpha(0.0F, 0.6F, 0.25F, 1.0F)
);
flytowardspositionparticle.scale(1.5F);
flytowardspositionparticle.pickSprite(this.sprite);
return flytowardspositionparticle;
}
}
}