Fix curseforge issue #30, where the game would crash when casting mind control on a mob that already had the mind trick status effect
This commit is contained in:
@@ -187,6 +187,8 @@ public class MindControl extends Spell {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onLivingSetAttackTargetEvent(LivingSetAttackTargetEvent event){
|
public static void onLivingSetAttackTargetEvent(LivingSetAttackTargetEvent event){
|
||||||
|
|
||||||
|
if(event.getTarget() == null) return; // Prevents infinite loops with mind trick
|
||||||
|
|
||||||
if(event.getEntityLiving().isPotionActive(WizardryPotions.mind_control) && MindControl.canControl(event.getEntityLiving())){
|
if(event.getEntityLiving().isPotionActive(WizardryPotions.mind_control) && MindControl.canControl(event.getEntityLiving())){
|
||||||
|
|
||||||
@@ -197,7 +199,7 @@ public class MindControl extends Spell {
|
|||||||
Entity caster = WizardryUtilities.getEntityByUUID(event.getEntity().worldObj, entityNBT.getUniqueId(MindControl.NBT_KEY));
|
Entity caster = WizardryUtilities.getEntityByUUID(event.getEntity().worldObj, entityNBT.getUniqueId(MindControl.NBT_KEY));
|
||||||
|
|
||||||
// If the target that the event tried to set is already a valid mind control target, nothing happens.
|
// If the target that the event tried to set is already a valid mind control target, nothing happens.
|
||||||
if(event.getTarget() != null && WizardryUtilities.isValidTarget(caster, event.getTarget())) return;
|
if(WizardryUtilities.isValidTarget(caster, event.getTarget())) return;
|
||||||
|
|
||||||
if(caster instanceof EntityLivingBase){
|
if(caster instanceof EntityLivingBase){
|
||||||
|
|
||||||
@@ -208,8 +210,7 @@ public class MindControl extends Spell {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If the caster couldn't be found or no valid target was found, this just acts like mind trick.
|
// If the caster couldn't be found or no valid target was found, this just acts like mind trick.
|
||||||
// If the target is null already, no need to set it to null, or infinite loops will occur.
|
((EntityLiving)event.getEntityLiving()).setAttackTarget(null);
|
||||||
if(event.getTarget() != null) ((EntityLiving)event.getEntityLiving()).setAttackTarget(null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user