Spaces:
Build error
Build error
File size: 5,335 Bytes
d46f4a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
package net.minecraft.client.particle;
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 FallingLeavesParticle extends TextureSheetParticle {
private static final float ACCELERATION_SCALE = 0.0025F;
private static final int INITIAL_LIFETIME = 300;
private static final int CURVE_ENDPOINT_TIME = 300;
private float rotSpeed;
private final float particleRandom;
private final float spinAcceleration;
private final float windBig;
private boolean swirl;
private boolean flowAway;
private double xaFlowScale;
private double zaFlowScale;
private double swirlPeriod;
protected FallingLeavesParticle(
ClientLevel p_377646_,
double p_377442_,
double p_376050_,
double p_377918_,
SpriteSet p_376948_,
float p_378651_,
float p_376838_,
boolean p_378490_,
boolean p_376930_,
float p_376718_,
float p_378174_
) {
super(p_377646_, p_377442_, p_376050_, p_377918_);
this.setSprite(p_376948_.get(this.random.nextInt(12), 12));
this.rotSpeed = (float)Math.toRadians(this.random.nextBoolean() ? -30.0 : 30.0);
this.particleRandom = this.random.nextFloat();
this.spinAcceleration = (float)Math.toRadians(this.random.nextBoolean() ? -5.0 : 5.0);
this.windBig = p_376838_;
this.swirl = p_378490_;
this.flowAway = p_376930_;
this.lifetime = 300;
this.gravity = p_378651_ * 1.2F * 0.0025F;
float f = p_376718_ * (this.random.nextBoolean() ? 0.05F : 0.075F);
this.quadSize = f;
this.setSize(f, f);
this.friction = 1.0F;
this.yd = (double)(-p_378174_);
this.xaFlowScale = Math.cos(Math.toRadians((double)(this.particleRandom * 60.0F))) * (double)this.windBig;
this.zaFlowScale = Math.sin(Math.toRadians((double)(this.particleRandom * 60.0F))) * (double)this.windBig;
this.swirlPeriod = Math.toRadians((double)(1000.0F + this.particleRandom * 3000.0F));
}
@Override
public ParticleRenderType getRenderType() {
return ParticleRenderType.PARTICLE_SHEET_OPAQUE;
}
@Override
public void tick() {
this.xo = this.x;
this.yo = this.y;
this.zo = this.z;
if (this.lifetime-- <= 0) {
this.remove();
}
if (!this.removed) {
float f = (float)(300 - this.lifetime);
float f1 = Math.min(f / 300.0F, 1.0F);
double d0 = 0.0;
double d1 = 0.0;
if (this.flowAway) {
d0 += this.xaFlowScale * Math.pow((double)f1, 1.25);
d1 += this.zaFlowScale * Math.pow((double)f1, 1.25);
}
if (this.swirl) {
d0 += (double)f1 * Math.cos((double)f1 * this.swirlPeriod) * (double)this.windBig;
d1 += (double)f1 * Math.sin((double)f1 * this.swirlPeriod) * (double)this.windBig;
}
this.xd += d0 * 0.0025F;
this.zd += d1 * 0.0025F;
this.yd = this.yd - (double)this.gravity;
this.rotSpeed = this.rotSpeed + this.spinAcceleration / 20.0F;
this.oRoll = this.roll;
this.roll = this.roll + this.rotSpeed / 20.0F;
this.move(this.xd, this.yd, this.zd);
if (this.onGround || this.lifetime < 299 && (this.xd == 0.0 || this.zd == 0.0)) {
this.remove();
}
if (!this.removed) {
this.xd = this.xd * (double)this.friction;
this.yd = this.yd * (double)this.friction;
this.zd = this.zd * (double)this.friction;
}
}
}
@OnlyIn(Dist.CLIENT)
public static class CherryProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprites;
public CherryProvider(SpriteSet p_376778_) {
this.sprites = p_376778_;
}
public Particle createParticle(
SimpleParticleType p_377921_,
ClientLevel p_376453_,
double p_375674_,
double p_377368_,
double p_376211_,
double p_377051_,
double p_377679_,
double p_375799_
) {
return new FallingLeavesParticle(p_376453_, p_375674_, p_377368_, p_376211_, this.sprites, 0.25F, 2.0F, false, true, 1.0F, 0.0F);
}
}
@OnlyIn(Dist.CLIENT)
public static class PaleOakProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprites;
public PaleOakProvider(SpriteSet p_378488_) {
this.sprites = p_378488_;
}
public Particle createParticle(
SimpleParticleType p_376667_,
ClientLevel p_376868_,
double p_378558_,
double p_377831_,
double p_378235_,
double p_375996_,
double p_378236_,
double p_377227_
) {
return new FallingLeavesParticle(p_376868_, p_378558_, p_377831_, p_378235_, this.sprites, 0.07F, 10.0F, true, false, 2.0F, 0.021F);
}
}
} |