From 4b820478f5ca3bc3e7ce39fa9451aba74c1cfd42 Mon Sep 17 00:00:00 2001 From: Sollace Date: Thu, 6 Jan 2022 15:31:33 +0200 Subject: [PATCH] Set spells to be no gravity by default (so it's easier to aim) --- .../ability/magic/spell/ThrowableSpell.java | 1 + .../projectile/MagicProjectileEntity.java | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java index d9ffb274..9221c471 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java @@ -66,6 +66,7 @@ public final class ThrowableSpell extends AbstractDelegatingSpell { projectile.getSpellSlot().put(this); projectile.setVelocity(entity, entity.getPitch(), entity.getYaw(), 0, 1.5F, divergance); projectile.setHydrophobic(); + projectile.setNoGravity(true); configureProjectile(projectile, caster); world.spawnEntity(projectile); diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java index a0792595..708b2db4 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java @@ -9,6 +9,7 @@ import com.minelittlepony.unicopia.ability.magic.Affine; import com.minelittlepony.unicopia.ability.magic.Caster; import com.minelittlepony.unicopia.ability.magic.Levelled; import com.minelittlepony.unicopia.ability.magic.SpellContainer; +import com.minelittlepony.unicopia.ability.magic.SpellContainer.Operation; import com.minelittlepony.unicopia.ability.magic.SpellPredicate; import com.minelittlepony.unicopia.ability.magic.spell.Situation; import com.minelittlepony.unicopia.ability.magic.spell.Spell; @@ -56,6 +57,8 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster
  • EFFECT = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); private static final LevelStore LEVELS = Levelled.fixed(1); + public static final byte PROJECTILE_COLLISSION = 3; + private final EffectSync effectDelegate = new EffectSync(this, EFFECT); private final EntityPhysics physics = new EntityPhysics<>(this, GRAVITY, false); @@ -208,12 +211,14 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster
  • consumer) { - getSpellSlot().get(SpellPredicate.HAS_PROJECTILE_EVENTS, true).ifPresent(consumer); + getSpellSlot().forEach(spell -> { + if (SpellPredicate.HAS_PROJECTILE_EVENTS.test(spell)) { + consumer.accept((ProjectileDelegate)spell); + } + return Operation.SKIP; + }, true); if (getItem().getItem() instanceof ProjectileDelegate) { consumer.accept(((ProjectileDelegate)getItem().getItem())); }