--- ../src_base/common/net/minecraft/src/BlockTrapDoor.java +++ ../src_work/common/net/minecraft/src/BlockTrapDoor.java @@ -1,10 +1,14 @@ package net.minecraft.src; +import net.minecraftforge.common.ForgeDirection; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; public class BlockTrapDoor extends Block { + /** Set this to allow trapdoors to remain free-floating */ + public static boolean disableValidation = false; + protected BlockTrapDoor(int par1, Material par2Material) { super(par1, par2Material); @@ -188,7 +192,7 @@ --var7; } - if (!isValidSupportBlock(par1World.getBlockId(var7, par3, var8))) + if (!(isValidSupportBlock(par1World.getBlockId(var7, par3, var8)) || par1World.isBlockSolidOnSide(var7, par3, var8, ForgeDirection.getOrientation((var6 & 3) + 2)))) { par1World.setBlockWithNotify(par2, par3, par4, 0); this.dropBlockAsItem(par1World, par2, par3, par4, var6, 0); @@ -248,6 +252,10 @@ */ public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int par5) { + if (disableValidation) + { + return true; + } if (par5 == 0) { return false; @@ -278,7 +286,7 @@ --par2; } - return isValidSupportBlock(par1World.getBlockId(par2, par3, par4)); + return isValidSupportBlock(par1World.getBlockId(par2, par3, par4)) || par1World.isBlockSolidOnSide(par2, par3, par4, ForgeDirection.UP); } } @@ -293,6 +301,10 @@ */ private static boolean isValidSupportBlock(int par0) { + if (disableValidation) + { + return true; + } if (par0 <= 0) { return false;