mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-03-03 16:51:28 +01:00
Exclude spellbooks from shields' effects and exclude/include classes of entities for shields based on certain traits added to the spell
This commit is contained in:
parent
d80bc3c7dd
commit
1cea2bf391
2 changed files with 21 additions and 4 deletions
|
@ -21,6 +21,9 @@ import net.minecraft.entity.LivingEntity;
|
|||
import net.minecraft.entity.TntEntity;
|
||||
import net.minecraft.entity.Entity.RemovalReason;
|
||||
import net.minecraft.entity.decoration.ArmorStandEntity;
|
||||
import net.minecraft.entity.mob.HostileEntity;
|
||||
import net.minecraft.entity.passive.PassiveEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.vehicle.AbstractMinecartEntity;
|
||||
import net.minecraft.entity.vehicle.BoatEntity;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
@ -111,14 +114,26 @@ public class ShieldSpell extends AbstractSpell {
|
|||
}
|
||||
|
||||
protected boolean isValidTarget(Caster<?> source, Entity entity) {
|
||||
return (entity instanceof LivingEntity
|
||||
boolean valid = (entity instanceof LivingEntity
|
||||
|| entity instanceof TntEntity
|
||||
|| entity instanceof FallingBlockEntity
|
||||
|| entity instanceof EyeOfEnderEntity
|
||||
|| entity instanceof BoatEntity
|
||||
|| ProjectileUtil.isFlyingProjectile(entity)
|
||||
|| entity instanceof AbstractMinecartEntity)
|
||||
&& !(entity instanceof ArmorStandEntity);
|
||||
&& !( entity instanceof ArmorStandEntity
|
||||
|| entity instanceof EyeOfEnderEntity
|
||||
|| entity instanceof BoatEntity
|
||||
);
|
||||
|
||||
if (getTraits().get(Trait.LIFE) > 0) {
|
||||
valid &= !(entity instanceof PassiveEntity);
|
||||
}
|
||||
if (getTraits().get(Trait.BLOOD) > 0) {
|
||||
valid &= entity instanceof HostileEntity;
|
||||
}
|
||||
if (getTraits().get(Trait.ICE) > 0) {
|
||||
valid &= entity instanceof PlayerEntity;
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
protected long applyEntities(Caster<?> source) {
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.minelittlepony.unicopia.ability.magic.Affine;
|
|||
import com.minelittlepony.unicopia.ability.magic.Caster;
|
||||
import com.minelittlepony.unicopia.ability.magic.SpellPredicate;
|
||||
import com.minelittlepony.unicopia.ability.magic.spell.Spell;
|
||||
import com.minelittlepony.unicopia.entity.SpellbookEntity;
|
||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||
import com.minelittlepony.unicopia.item.FriendshipBraceletItem;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
@ -33,6 +34,7 @@ public class TargetSelecter {
|
|||
|
||||
return source.findAllEntitiesInRange(radius)
|
||||
.filter(entity -> entity.isAlive() && !entity.isRemoved() && !ownerCheck.test(entity) && !SpellPredicate.IS_SHIELD_LIKE.isOn(entity))
|
||||
.filter(entity -> !(entity instanceof SpellbookEntity))
|
||||
.filter(e -> filter.test(source, e))
|
||||
.map(i -> {
|
||||
targets.computeIfAbsent(i.getUuid(), Target::new);
|
||||
|
|
Loading…
Add table
Reference in a new issue