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> {
|
public static class Factory implements ParticleFactory<DefaultParticleType> {
|
||||||
private final SpriteProvider provider;
|
|
||||||
|
|
||||||
public Factory(SpriteProvider provider) {
|
public Factory(SpriteProvider provider) {
|
||||||
this.provider = provider;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Particle createParticle(DefaultParticleType type, World world, double x, double y, double z, double dx, double dy, double dz) {
|
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);
|
return new RaindropsParticle(world, x, y, z, dx, dy, dz);
|
||||||
particle.setSprite(provider);
|
|
||||||
return particle;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,12 +52,10 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements Attach
|
||||||
source.addParticle(new MagicParticleEffect(getTint()), pos, Vec3d.ZERO);
|
source.addParticle(new MagicParticleEffect(getTint()), pos, Vec3d.ZERO);
|
||||||
});
|
});
|
||||||
|
|
||||||
particlEffect
|
particlEffect.ifMissing(source, () -> {
|
||||||
.ifMissing(source, () -> {
|
|
||||||
source.addParticle(UParticles.SPHERE, source.getOriginVector(), Vec3d.ZERO);
|
source.addParticle(UParticles.SPHERE, source.getOriginVector(), Vec3d.ZERO);
|
||||||
return null; // XXX: Attachables
|
return null; // XXX: Attachables
|
||||||
}) // 1, getTint(), 10
|
}).ifPresent(p -> p.setAttribute(0, radius)); // 1, getTint(), 10
|
||||||
.ifPresent(p -> p.setAttribute(0, radius));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -12,9 +12,9 @@ public class ParticleConnection {
|
||||||
|
|
||||||
private Optional<AttachableParticle> particleEffect = Optional.empty();
|
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.filter(AttachableParticle::isStillAlive).orElseGet(() -> {
|
||||||
particleEffect = constructor.get();
|
particleEffect = Optional.ofNullable(constructor.get());
|
||||||
particleEffect.ifPresent(p -> p.attachTo(source));
|
particleEffect.ifPresent(p -> p.attachTo(source));
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue