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<ConfigCategory>(config.getCategory("wellofsufferingblacklist".toLowerCase())));
 		list.add(new ConfigElement<ConfigCategory>(config.getCategory("wimpysettings".toLowerCase())));
 		list.add(new ConfigElement<ConfigCategory>(config.getCategory("ritual blacklist".toLowerCase())));
+		list.add(new ConfigElement<ConfigCategory>(config.getCategory("teleposer blacklist".toLowerCase())));
+		list.add(new ConfigElement<ConfigCategory>(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")) {