From e3b44eb194277bbf7342cda145de89a2460b5bbd Mon Sep 17 00:00:00 2001 From: Electroblob <35599699+Electroblob77@users.noreply.github.com> Date: Sat, 14 Apr 2018 14:09:16 +0100 Subject: [PATCH] Make entities attacked by summoned creatures revenge-target the summoned creature rather than its summoner --- .../wizardry/entity/living/ISummonedCreature.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java b/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java index e441ae67..792d6382 100644 --- a/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java +++ b/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java @@ -362,11 +362,18 @@ public interface ISummonedCreature extends IEntityAdditionalSpawnData { if(event.getSource().isFireDamage()) newSource.setFireDamage(); if(event.getSource().isProjectile()) newSource.setProjectile(); - // For some reason Minecraft calculates knockback relative to DamageSource#getEntity. In vanilla this + // For some reason Minecraft calculates knockback relative to DamageSource#getTrueSource. In vanilla this // is unnoticeable, but it looks a bit weird with summoned creatures involved - so this fixes that. if(WizardryUtilities.attackEntityWithoutKnockback(event.getEntity(), newSource, event.getAmount())){ + // Using event.getSource().getTrueSource() as this means the target is knocked back from the minion WizardryUtilities.applyStandardKnockback(event.getSource().getTrueSource(), event.getEntityLiving()); ((ISummonedCreature)event.getSource().getTrueSource()).onSuccessfulAttack(event.getEntityLiving()); + // If the target revenge-targeted the summoner, make it revenge-target the minion instead + // (if it didn't revenge-target, do nothing) + if(event.getEntityLiving().getRevengeTarget() == summoner + && event.getSource().getTrueSource() instanceof EntityLivingBase){ + event.getEntityLiving().setRevengeTarget((EntityLivingBase)event.getSource().getTrueSource()); + } } }