mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-20 03:44:23 +01:00
Set spells to be no gravity by default (so it's easier to aim)
This commit is contained in:
parent
7578b02867
commit
4b820478f5
2 changed files with 14 additions and 3 deletions
|
@ -66,6 +66,7 @@ public final class ThrowableSpell extends AbstractDelegatingSpell {
|
||||||
projectile.getSpellSlot().put(this);
|
projectile.getSpellSlot().put(this);
|
||||||
projectile.setVelocity(entity, entity.getPitch(), entity.getYaw(), 0, 1.5F, divergance);
|
projectile.setVelocity(entity, entity.getPitch(), entity.getYaw(), 0, 1.5F, divergance);
|
||||||
projectile.setHydrophobic();
|
projectile.setHydrophobic();
|
||||||
|
projectile.setNoGravity(true);
|
||||||
configureProjectile(projectile, caster);
|
configureProjectile(projectile, caster);
|
||||||
world.spawnEntity(projectile);
|
world.spawnEntity(projectile);
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import com.minelittlepony.unicopia.ability.magic.Affine;
|
||||||
import com.minelittlepony.unicopia.ability.magic.Caster;
|
import com.minelittlepony.unicopia.ability.magic.Caster;
|
||||||
import com.minelittlepony.unicopia.ability.magic.Levelled;
|
import com.minelittlepony.unicopia.ability.magic.Levelled;
|
||||||
import com.minelittlepony.unicopia.ability.magic.SpellContainer;
|
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.SpellPredicate;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.Situation;
|
import com.minelittlepony.unicopia.ability.magic.spell.Situation;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.Spell;
|
import com.minelittlepony.unicopia.ability.magic.spell.Spell;
|
||||||
|
@ -56,6 +57,8 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Li
|
||||||
private static final TrackedData<NbtCompound> EFFECT = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND);
|
private static final TrackedData<NbtCompound> EFFECT = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND);
|
||||||
private static final LevelStore LEVELS = Levelled.fixed(1);
|
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 EffectSync effectDelegate = new EffectSync(this, EFFECT);
|
||||||
|
|
||||||
private final EntityPhysics<MagicProjectileEntity> physics = new EntityPhysics<>(this, GRAVITY, false);
|
private final EntityPhysics<MagicProjectileEntity> physics = new EntityPhysics<>(this, GRAVITY, false);
|
||||||
|
@ -208,12 +211,14 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Li
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleStatus(byte id) {
|
public void handleStatus(byte id) {
|
||||||
if (id == 3) {
|
if (id == PROJECTILE_COLLISSION) {
|
||||||
ParticleEffect effect = getParticleParameters();
|
ParticleEffect effect = getParticleParameters();
|
||||||
|
|
||||||
for(int i = 0; i < 8; i++) {
|
for(int i = 0; i < 8; i++) {
|
||||||
world.addParticle(effect, getX(), getY(), getZ(), 0, 0, 0);
|
world.addParticle(effect, getX(), getY(), getZ(), 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
super.handleStatus(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,7 +249,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Li
|
||||||
super.onCollision(result);
|
super.onCollision(result);
|
||||||
|
|
||||||
if (!world.isClient()) {
|
if (!world.isClient()) {
|
||||||
world.sendEntityStatus(this, (byte)3);
|
world.sendEntityStatus(this, PROJECTILE_COLLISSION);
|
||||||
discard();
|
discard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -277,7 +282,12 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Caster<Li
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void forEachDelegates(Consumer<ProjectileDelegate> consumer) {
|
protected void forEachDelegates(Consumer<ProjectileDelegate> 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) {
|
if (getItem().getItem() instanceof ProjectileDelegate) {
|
||||||
consumer.accept(((ProjectileDelegate)getItem().getItem()));
|
consumer.accept(((ProjectileDelegate)getItem().getItem()));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue