Add config option to treat passive creatures as allies

This commit is contained in:
Electroblob77
2020-05-22 17:34:07 +01:00
parent 6696be59a4
commit ddcaffc1b1
4 changed files with 27 additions and 4 deletions
@@ -158,6 +158,8 @@ public final class Settings {
public boolean teleportThroughUnbreakableBlocks = false;
/** <b>[Server-only]</b> Whether to allow players to damage their designated allies using magic. */
public FriendlyFire friendlyFire = FriendlyFire.ALL;
/** <b>[Server-only]</b> Whether passive mobs should count as allies, i.e. they should not be targeted by minions, lightning chaining, etc. */
public boolean passiveMobsAreAllies = false;
/** <b>[Server-only]</b> Whether to allow players to disarm other players using the telekinesis spell. */
public boolean telekineticDisarmament = true;
/** <b>[Server-only]</b> Whether summoned creatures can revenge attack their caster if their caster attacks them. */
@@ -578,6 +580,14 @@ public final class Settings {
friendlyFire = FriendlyFire.fromName(property.getString());
propOrder.add(property.getName());
property = config.get(DIFFICULTY_CATEGORY, "passiveMobsAreAllies", true,
"Whether passive mobs should count as allies, i.e. they should not be targeted by minions, lightning chaining, etc.");
property.setLanguageKey("config." + Wizardry.MODID + ".passive_mobs_are_allies");
Wizardry.proxy.setToNamedBooleanEntry(property);
property.setRequiresWorldRestart(false);
passiveMobsAreAllies = property.getBoolean();
propOrder.add(property.getName());
property = config.get(DIFFICULTY_CATEGORY, "minionRevengeTargeting", true,
"Whether summoned creatures can revenge attack their owner if their owner attacks them.");
property.setLanguageKey("config." + Wizardry.MODID + ".minion_revenge_targeting");
@@ -4,10 +4,7 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.data.WizardData;
import electroblob.wizardry.registry.WizardryPotions;
import electroblob.wizardry.spell.MindControl;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.IEntityOwnable;
import net.minecraft.entity.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.FakePlayer;
@@ -123,6 +120,14 @@ public final class AllyDesignationSystem {
// I really shouldn't need to do this, but fake players seem to break stuff...
if(target instanceof FakePlayer) return false;
// Use a positive check for these rather than a negative check for monsters, because we only want mobs
// that are definitely passive
if(Wizardry.settings.passiveMobsAreAllies && (target.isCreatureType(EnumCreatureType.AMBIENT, false)
|| target.isCreatureType(EnumCreatureType.CREATURE, false)
|| target.isCreatureType(EnumCreatureType.WATER_CREATURE, false))){
return false;
}
// Tests whether the target is a creature that was summoned by the attacker
// if(target instanceof ISummonedCreature && ((ISummonedCreature)target).getCaster() == attacker){
// return false;