mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-01 19:46:42 +01:00
Fix some crashes when triggering the shield ability
This commit is contained in:
parent
5b0326c501
commit
408b6f153d
3 changed files with 7 additions and 14 deletions
|
@ -121,17 +121,12 @@ public class SphereParticle extends Particle implements AttachableParticle {
|
|||
}
|
||||
|
||||
public static class Factory implements ParticleFactory<DefaultParticleType> {
|
||||
private final SpriteProvider provider;
|
||||
|
||||
public Factory(SpriteProvider provider) {
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Particle createParticle(DefaultParticleType type, World world, double x, double y, double z, double dx, double dy, double dz) {
|
||||
RaindropsParticle particle = new RaindropsParticle(world, x, y, z, dx, dy, dz);
|
||||
particle.setSprite(provider);
|
||||
return particle;
|
||||
return new RaindropsParticle(world, x, y, z, dx, dy, dz);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,12 +52,10 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements Attach
|
|||
source.addParticle(new MagicParticleEffect(getTint()), pos, Vec3d.ZERO);
|
||||
});
|
||||
|
||||
particlEffect
|
||||
.ifMissing(source, () -> {
|
||||
source.addParticle(UParticles.SPHERE, source.getOriginVector(), Vec3d.ZERO);
|
||||
return null; // XXX: Attachables
|
||||
}) // 1, getTint(), 10
|
||||
.ifPresent(p -> p.setAttribute(0, radius));
|
||||
particlEffect.ifMissing(source, () -> {
|
||||
source.addParticle(UParticles.SPHERE, source.getOriginVector(), Vec3d.ZERO);
|
||||
return null; // XXX: Attachables
|
||||
}).ifPresent(p -> p.setAttribute(0, radius)); // 1, getTint(), 10
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,9 +12,9 @@ public class ParticleConnection {
|
|||
|
||||
private Optional<AttachableParticle> particleEffect = Optional.empty();
|
||||
|
||||
public Optional<AttachableParticle> ifMissing(Caster<?> source, Supplier<Optional<AttachableParticle>> constructor) {
|
||||
public Optional<AttachableParticle> ifMissing(Caster<?> source, Supplier<AttachableParticle> constructor) {
|
||||
particleEffect.filter(AttachableParticle::isStillAlive).orElseGet(() -> {
|
||||
particleEffect = constructor.get();
|
||||
particleEffect = Optional.ofNullable(constructor.get());
|
||||
particleEffect.ifPresent(p -> p.attachTo(source));
|
||||
return null;
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue