From a1a5af034da59efe0c0f4c998b56ff9cd81ce64f Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Mon, 6 Jul 2020 23:02:03 +0100 Subject: [PATCH] Make owned entities inherit their owner's allies (as well as their own - if, for example, you summon a mob that then summons its own mob, that mob will no longer attack you) --- .../electroblob/wizardry/util/AllyDesignationSystem.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/electroblob/wizardry/util/AllyDesignationSystem.java b/src/main/java/electroblob/wizardry/util/AllyDesignationSystem.java index 1fb082b9..9ee1ad7d 100644 --- a/src/main/java/electroblob/wizardry/util/AllyDesignationSystem.java +++ b/src/main/java/electroblob/wizardry/util/AllyDesignationSystem.java @@ -108,6 +108,9 @@ public final class AllyDesignationSystem { */ public static boolean isValidTarget(Entity attacker, Entity target){ + // Owned entities inherit their owner's allies + if(attacker instanceof IEntityOwnable && !isValidTarget(((IEntityOwnable)attacker).getOwner(), target)) return false; + // Always return false if the target is null if(target == null) return false; @@ -195,6 +198,12 @@ public final class AllyDesignationSystem { * generally used to determine targets for healing or other group buffs. */ public static boolean isAllied(EntityLivingBase allyOf, EntityLivingBase possibleAlly){ + // Owned entities inherit their owner's allies + if(allyOf instanceof IEntityOwnable){ + Entity owner = ((IEntityOwnable)allyOf).getOwner(); + if(owner instanceof EntityLivingBase && isAllied((EntityLivingBase)owner, possibleAlly)) return true; + } + if(allyOf instanceof EntityPlayer && possibleAlly instanceof EntityPlayer && isPlayerAlly((EntityPlayer)allyOf, (EntityPlayer)possibleAlly)){ return true;