diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHeiseiDream.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHeiseiDream.java index 8311383e56..f1d677438e 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHeiseiDream.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHeiseiDream.java @@ -12,12 +12,10 @@ import com.google.common.base.Predicates; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.ai.EntityAIAttackMelee; -import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAINearestAttackableTarget; import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry; import net.minecraft.entity.monster.IMob; import net.minecraft.util.math.AxisAlignedBB; @@ -25,10 +23,10 @@ import vazkii.botania.api.lexicon.LexiconEntry; import vazkii.botania.api.subtile.RadiusDescriptor; import vazkii.botania.api.subtile.SubTileFunctional; +import vazkii.botania.common.core.handler.ConfigHandler; import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibObfuscation; -import java.util.ArrayList; import java.util.List; public class SubTileHeiseiDream extends SubTileFunctional { @@ -61,6 +59,10 @@ public void onUpdate() { } public static boolean brainwashEntity(EntityLiving entity, List mobs) { + if(isImmune(entity)) { + return false; + } + EntityLivingBase target = entity.getAttackTarget(); boolean did = false; @@ -91,6 +93,10 @@ public static boolean brainwashEntity(EntityLiving entity, List mobs) { return did; } + private static boolean isImmune(EntityLiving entity) { + return ConfigHandler.heiseiDreamImmuneEntitiesSet.contains(EntityList.getKey(entity)); + } + @Override public RadiusDescriptor getRadius() { return new RadiusDescriptor.Square(toBlockPos(), RANGE); diff --git a/src/main/java/vazkii/botania/common/core/handler/ConfigHandler.java b/src/main/java/vazkii/botania/common/core/handler/ConfigHandler.java index b254fd36f8..295246e0be 100644 --- a/src/main/java/vazkii/botania/common/core/handler/ConfigHandler.java +++ b/src/main/java/vazkii/botania/common/core/handler/ConfigHandler.java @@ -15,6 +15,7 @@ import java.util.Set; import java.util.stream.IntStream; +import net.minecraft.util.ResourceLocation; import net.minecraft.item.ItemStack; import net.minecraftforge.common.config.Config; import net.minecraftforge.common.config.ConfigManager; @@ -379,6 +380,11 @@ public final class ConfigHandler { @Config.Comment("Should Mana Enchanter be able to add enchantments to items that are already enchanted?") public static boolean opManaEnchanter = false; + @Config.Name("ceu.heiseiDream.immuneEntities") + @Config.LangKey("botania.config.heiseiDreamImmuneEntities") + @Config.Comment("Entities immune to Heisei Dream. Syntax is modid:entity_name.") + public static String[] heiseiDreamImmuneEntities = {}; + @Config.Ignore public static Set runicAltarCatalystsSet = new HashSet<>(); @@ -388,6 +394,9 @@ public final class ConfigHandler { @Config.Ignore public static Set petalApothecaryCatalystsSet = new HashSet<>(); + @Config.Ignore + public static Set heiseiDreamImmuneEntitiesSet = new HashSet<>(); + @Config.Ignore private static File configFolder; @@ -401,6 +410,16 @@ public final class ConfigHandler { @Config.Ignore public static boolean useVanillaParticleLimiter = true; + public static void loadHeiseiDreamImmuneEntities() { + heiseiDreamImmuneEntitiesSet.clear(); + for(String entry : heiseiDreamImmuneEntities) { + String entityId = entry.trim(); + if(!entityId.isEmpty()) { + heiseiDreamImmuneEntitiesSet.add(new ResourceLocation(entityId)); + } + } + } + @Config.LangKey("botania.config.generatingFlowers") @Config.Comment("Configure generation values for all the flowers. Note! You should not edit this unless you are very experienced with Botania, since it can change the brittle balance of the mod.") public static GeneratingFlowers genFlowers = new GeneratingFlowers(); @@ -592,6 +611,7 @@ private static void loadItemSets() { runicAltarRetainedItemsSet.addAll(InventoryHelper.expandMetaInStringifiedStacks(runicAltarRetainedItems)); petalApothecaryCatalystsSet.clear(); petalApothecaryCatalystsSet.addAll(InventoryHelper.expandMetaInStringifiedStacks(petalApothecaryCatalysts)); + loadHeiseiDreamImmuneEntities(); SheddingHandler.loadFromConfig(new Configuration(new File(configFolder, "botaniashedding.cfg"))); } diff --git a/src/main/resources/assets/botania/lang/en_us.lang b/src/main/resources/assets/botania/lang/en_us.lang index b524491678..709089597c 100644 --- a/src/main/resources/assets/botania/lang/en_us.lang +++ b/src/main/resources/assets/botania/lang/en_us.lang @@ -401,6 +401,8 @@ botania.config.harvestLevelBore.tooltip=The harvest level of the Mana Lens: Bore botania.config.harvestLevelBore=Bore Lens Harvest Level botania.config.harvestLevelWeight.tooltip=The harvest level of the Mana Lens: Weight. 3 is diamond level. Defaults to 2 (iron level) botania.config.harvestLevelWeight=Weight Lens Harvest Level +botania.config.heiseiDreamImmuneEntities.tooltip=Entities immune to Heisei Dream. Syntax is modid:entity_name. +botania.config.heiseiDreamImmuneEntities=Heisei Dream Immune Entities botania.config.invertMagnetRing.tooltip=Set this to true to invert the Ring of Magnetization's controls (from shift to stop to shift to work) botania.config.invertMagnetRing=Inverted Magnet Ring Controls botania.config.lexicaOfflineMode.tooltip=Set this to true to disable the wiki lookup feature of the lexica, for offline usage.