mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-03-04 01:01:29 +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.TntEntity;
|
||||||
import net.minecraft.entity.Entity.RemovalReason;
|
import net.minecraft.entity.Entity.RemovalReason;
|
||||||
import net.minecraft.entity.decoration.ArmorStandEntity;
|
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.AbstractMinecartEntity;
|
||||||
import net.minecraft.entity.vehicle.BoatEntity;
|
import net.minecraft.entity.vehicle.BoatEntity;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
@ -111,14 +114,26 @@ public class ShieldSpell extends AbstractSpell {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isValidTarget(Caster<?> source, Entity entity) {
|
protected boolean isValidTarget(Caster<?> source, Entity entity) {
|
||||||
return (entity instanceof LivingEntity
|
boolean valid = (entity instanceof LivingEntity
|
||||||
|| entity instanceof TntEntity
|
|| entity instanceof TntEntity
|
||||||
|| entity instanceof FallingBlockEntity
|
|| entity instanceof FallingBlockEntity
|
||||||
|| entity instanceof EyeOfEnderEntity
|
|
||||||
|| entity instanceof BoatEntity
|
|
||||||
|| ProjectileUtil.isFlyingProjectile(entity)
|
|| ProjectileUtil.isFlyingProjectile(entity)
|
||||||
|| entity instanceof AbstractMinecartEntity)
|
|| 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) {
|
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.Caster;
|
||||||
import com.minelittlepony.unicopia.ability.magic.SpellPredicate;
|
import com.minelittlepony.unicopia.ability.magic.SpellPredicate;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.Spell;
|
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.entity.player.Pony;
|
||||||
import com.minelittlepony.unicopia.item.FriendshipBraceletItem;
|
import com.minelittlepony.unicopia.item.FriendshipBraceletItem;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
@ -33,6 +34,7 @@ public class TargetSelecter {
|
||||||
|
|
||||||
return source.findAllEntitiesInRange(radius)
|
return source.findAllEntitiesInRange(radius)
|
||||||
.filter(entity -> entity.isAlive() && !entity.isRemoved() && !ownerCheck.test(entity) && !SpellPredicate.IS_SHIELD_LIKE.isOn(entity))
|
.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))
|
.filter(e -> filter.test(source, e))
|
||||||
.map(i -> {
|
.map(i -> {
|
||||||
targets.computeIfAbsent(i.getUuid(), Target::new);
|
targets.computeIfAbsent(i.getUuid(), Target::new);
|
||||||
|
|
Loading…
Add table
Reference in a new issue