Fix some crashes when triggering the shield ability

This commit is contained in:
Sollace 2020-04-24 21:25:45 +02:00
parent 5b0326c501
commit 408b6f153d
3 changed files with 7 additions and 14 deletions

View file

@ -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);
}
}
}

View file

@ -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

View file

@ -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;
});