From 6b3863bea4544c3b4338c99bcdce94c3b2abbd28 Mon Sep 17 00:00:00 2001 From: TehNut Date: Fri, 20 Feb 2015 13:37:48 -0800 Subject: [PATCH] Add teleposer blacklist --- .../BloodMagicConfiguration.java | 7 ++++- .../client/gui/ConfigGui.java | 2 ++ .../common/AlchemicalWizardryEventHooks.java | 28 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java index f25c6892..0a340cc6 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java +++ b/src/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java @@ -34,6 +34,9 @@ public class BloodMagicConfiguration public static final String CATEGORY_GAMEPLAY = "gameplay"; + public static String[] teleposerBlacklist; + public static String[] blacklist = {}; + public static void init(File configFile) { for (String s : DEFAULT_COLOR_LIST.split(";")) @@ -136,7 +139,9 @@ public class BloodMagicConfiguration AlchemicalWizardry.ritualDisabledSpawnWard = config.get("Ritual Blacklist", "Ward of Sacrosanctity", false).getBoolean(false); AlchemicalWizardry.ritualDisabledVeilOfEvil = config.get("Ritual Blacklist", "Veil of Evil", false).getBoolean(false); AlchemicalWizardry.ritualDisabledFullStomach = config.get("Ritual Blacklist", "Requiem of the Satiated Stomach", false).getBoolean(false); - + + teleposerBlacklist = config.get("Teleposer Blacklist", "Blacklist", blacklist, "Stops specified blocks from being teleposed. Put entries on new lines. Valid syntax is: \nmodid:blockname:meta").getStringList(); + String tempDemonConfigs = "Demon Configs"; TEDemonPortal.buildingGridDelay = config.get(tempDemonConfigs, "Building Grid Delay", 25).getInt(); TEDemonPortal.roadGridDelay = config.get(tempDemonConfigs, "Road Grid Delay", 10).getInt(); diff --git a/src/main/java/WayofTime/alchemicalWizardry/client/gui/ConfigGui.java b/src/main/java/WayofTime/alchemicalWizardry/client/gui/ConfigGui.java index ace56f5f..f9299dec 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/client/gui/ConfigGui.java +++ b/src/main/java/WayofTime/alchemicalWizardry/client/gui/ConfigGui.java @@ -30,6 +30,8 @@ public class ConfigGui extends GuiConfig { list.add(new ConfigElement(config.getCategory("wellofsufferingblacklist".toLowerCase()))); list.add(new ConfigElement(config.getCategory("wimpysettings".toLowerCase()))); list.add(new ConfigElement(config.getCategory("ritual blacklist".toLowerCase()))); + list.add(new ConfigElement(config.getCategory("teleposer blacklist".toLowerCase()))); + list.add(new ConfigElement(config.getCategory("demon configs".toLowerCase()))); return list; } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java b/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java index 9304910b..4fba312a 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java @@ -6,6 +6,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import WayofTime.alchemicalWizardry.api.event.TeleposeEvent; +import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; @@ -31,6 +33,7 @@ import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; +import net.minecraftforge.oredict.OreDictionary; import vazkii.botania.api.internal.IManaBurst; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.BloodMagicConfiguration; @@ -676,6 +679,31 @@ public class AlchemicalWizardryEventHooks } } + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onTelepose(TeleposeEvent event) { + for (int i = 0; i < BloodMagicConfiguration.teleposerBlacklist.length; i++) { + String[] blockData = BloodMagicConfiguration.teleposerBlacklist[i].split(":"); + + if (blockData.length == 3) { + + Block block = GameRegistry.findBlock(blockData[0], blockData[1]); + int meta; + + // Check if it's an int, if so, parse it. If not, set to 0 to avoid crashing. + if (blockData[2].matches("-?\\d+")) + meta = Integer.parseInt(blockData[2]); + else if (blockData[2].equals("*")) + meta = OreDictionary.WILDCARD_VALUE; + else + meta = 0; + + if (block != null) + if (( block == event.initialBlock || block == event.finalBlock) && ( meta == event.initialMetadata || meta == event.finalMetadata || meta == OreDictionary.WILDCARD_VALUE)) + event.setCanceled(true); + } + } + } + @SubscribeEvent public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) { if (event.modID.equals("AWWayofTime")) {