Added central particles

This commit is contained in:
Frank 2023-06-21 02:13:40 +02:00
parent 2c684b8d5f
commit c9f47c4fbe

View file

@ -174,29 +174,54 @@ public class EternalPedestal extends PedestalBlock implements BehaviourStone {
&& ritual.getCenter() != null && ritual.getCenter() != null
&& (ritual.isActive() || ritual.willActivate()) && (ritual.isActive() || ritual.willActivate())
) { ) {
final boolean powerUp = ritual.willActivate();
final boolean inX = ritual.getAxis() == Direction.Axis.X;
final var start = Float3.of(blockPos); final var start = Float3.of(blockPos);
final var dir = Float3 final var center = Float3.of(ritual.getCenter());
.of(ritual.getCenter()) final var dir = center
.sub(start) .sub(start)
.normalized() .normalized()
.mul(ritual.willActivate() ? 0.2 : 0.05); .mul(powerUp ? 0.2 : 0.05);
float[] color = EternalCrystalRenderer.colors(PedestalItemRenderer.getGemAge()); float[] color = EternalCrystalRenderer.colors(PedestalItemRenderer.getGemAge());
if (powerUp) {
for (int i = 0; i < 30; i++) {
Float3 rnd = Float3.of(
random.nextFloat() * 0.3 - 0.15,
random.nextFloat() * -0.1,
random.nextFloat() * 0.3 - 0.15
).sub(dir);
SimpleParticleType particleOptions = ParticleTypes.GLOW;
final Particle particle = clientLevel.bcl_addParticle(
particleOptions,
center.x + (inX ? 0 : random.nextFloat() * 3 - 1.5),
center.y + 1 + random.nextFloat() * 3,
center.z + (inX ? random.nextFloat() * 3 - 1.5 : 0),
0,
0,
0
);
if (particle == null) continue;
particle.setColor(color[0], color[1], color[2]);
particle.setParticleSpeed(rnd.x, rnd.y, rnd.z);
}
}
for (int i = 0; i < random.nextInt( for (int i = 0; i < random.nextInt(
ritual.willActivate() ? 30 : 2, powerUp ? 20 : 2,
ritual.willActivate() ? 60 : 10 powerUp ? 40 : 10
); i++) { ); i++) {
Float3 rnd = Float3.of( Float3 rnd = Float3.of(
random.nextFloat() * 0.3 - 0.15, random.nextFloat() * 0.3 - 0.15,
random.nextFloat() * -0.1, random.nextFloat() * -0.1,
random.nextFloat() * 0.3 - 0.15 random.nextFloat() * 0.3 - 0.15
).add(dir); ).add(dir.mul(powerUp ? random.nextFloat() * 4 : 1));
SimpleParticleType particleOptions = ParticleTypes.EFFECT; SimpleParticleType particleOptions = ParticleTypes.EFFECT;
final Particle particle = clientLevel.bcl_addParticle( final Particle particle = clientLevel.bcl_addParticle(
particleOptions, particleOptions,
blockPos.getX() + 0.2 + random.nextFloat() * 0.6, start.x + 0.3 + random.nextFloat() * 0.4,
blockPos.getY() + 1 + random.nextFloat() * 0.7, start.y + 1 + random.nextFloat() * 0.7,
blockPos.getZ() + 0.2 + random.nextFloat() * 0.6, start.z + 0.3 + random.nextFloat() * 0.4,
0, 0,
0, 0,
0 0
@ -204,6 +229,9 @@ public class EternalPedestal extends PedestalBlock implements BehaviourStone {
if (particle == null) continue; if (particle == null) continue;
particle.setColor(color[0], color[1], color[2]); particle.setColor(color[0], color[1], color[2]);
particle.setParticleSpeed(rnd.x, rnd.y, rnd.z); particle.setParticleSpeed(rnd.x, rnd.y, rnd.z);
if (powerUp) {
particle.setLifetime(6 + random.nextInt(4));
}
} }
} }
} }