public mod_CobbleFence() {
    ModLoader.RegisterBlock(cobbleFence);
    ModLoader.AddName(cobbleFence, "Cobblestone Wall");

    ModLoader.RegisterBlock(mossyCobbleFence);
    ModLoader.AddName(mossyCobbleFence, "Mossy Cobblestone Wall");

    ModLoader.RegisterBlock(smoothStoneFence);
    ModLoader.AddName(smoothStoneFence, "Smoothstone Wall");

    ModLoader.RegisterBlock(brickFence);
    ModLoader.AddName(brickFence, "Brick Wall");

    ModLoader.RegisterBlock(stoneFence);
    ModLoader.AddName(stoneFence, "Stone Wall");

    ModLoader.RegisterBlock(sandStoneFence);
    ModLoader.AddName(sandStoneFence, "Sandstone Wall");

    // Set up custom render ID
    int temp = ModLoader.getUniqueBlockModelID(this, true);

    ((BlockCobbleFence) cobbleFence).setRenderType(temp);
    ModLoader.RenderBlockIsItemFull3D(COBBLESTONE_FENCE_ID);

    ((BlockCobbleFence) mossyCobbleFence).setRenderType(temp);
    ModLoader.RenderBlockIsItemFull3D(MOSSYCOBBLESTONE_FENCE_ID);

    ((BlockCobbleFence) smoothStoneFence).setRenderType(temp);
    ModLoader.RenderBlockIsItemFull3D(SMOOTHSTONE_FENCE_ID);

    ((BlockCobbleFence) brickFence).setRenderType(temp);
    ModLoader.RenderBlockIsItemFull3D(BRICK_FENCE_ID);

    ((BlockCobbleFence) stoneFence).setRenderType(temp);
    ModLoader.RenderBlockIsItemFull3D(STONE_FENCE_ID);

    ((BlockCobbleFence) sandStoneFence).setRenderType(temp);
    ModLoader.RenderBlockIsItemFull3D(SANDSTONE_FENCE_ID);

    // Setting up recipes
    ModLoader.AddRecipe(
        new ItemStack(cobbleFence, 6),
        new Object[] {"###", "###", Character.valueOf('#'), Block.cobblestone});

    ModLoader.AddRecipe(
        new ItemStack(mossyCobbleFence, 6),
        new Object[] {"###", "###", Character.valueOf('#'), Block.cobblestoneMossy});

    ModLoader.AddRecipe(
        new ItemStack(smoothStoneFence, 6),
        new Object[] {"###", "###", Character.valueOf('#'), Block.stone});

    ModLoader.AddRecipe(
        new ItemStack(brickFence, 6),
        new Object[] {"###", "###", Character.valueOf('#'), Block.brick});

    ModLoader.AddRecipe(
        new ItemStack(stoneFence, 6),
        new Object[] {"###", "###", Character.valueOf('#'), Block.stoneBrick});

    ModLoader.AddRecipe(
        new ItemStack(sandStoneFence, 6),
        new Object[] {"###", "###", Character.valueOf('#'), Block.sandStone});
  }
  // Renders the look of the wall in the world
  public boolean RenderWorldBlock(
      RenderBlocks renderblocks,
      IBlockAccess iblockaccess,
      int i,
      int j,
      int k,
      Block block,
      int l) {
    BlockCobbleFence blockCobbleFence = (BlockCobbleFence) block;
    boolean flag = false;

    // Wall Constants
    float wallOffset = 0.3F;
    float wallWidth = 0.7F;
    float wallBottom = 0.0F;
    float wallHeight = 0.8F;

    float postOffset = 0.2F; // 0.375F;
    float postWidth = 0.8F; // 0.625F;
    float postHeight = 1.0F;

    // NSWE Flags for rendering additional fence pieces
    boolean west = blockCobbleFence.isWallOrGateAt(iblockaccess, i - 1, j, k);
    boolean east = blockCobbleFence.isWallOrGateAt(iblockaccess, i + 1, j, k);
    boolean south = blockCobbleFence.isWallOrGateAt(iblockaccess, i, j, k - 1);
    boolean north = blockCobbleFence.isWallOrGateAt(iblockaccess, i, j, k + 1);

    /* Couldn't make this look pretty :(
    //Render Interaction with wooden objects
    boolean otherWest = blockCobbleFence.isWoodenFenceAt(iblockaccess, i - 1, j, k);
    boolean otherEast = blockCobbleFence.isWoodenFenceAt(iblockaccess, i + 1, j, k);
    boolean otherSouth = blockCobbleFence.isWoodenFenceAt(iblockaccess, i, j, k - 1);
    boolean otherNorth = blockCobbleFence.isWoodenFenceAt(iblockaccess, i, j, k + 1);

    */

    if (north && south && !(east || west)) {
      // Render full length wall North/South
      blockCobbleFence.setBlockBounds(wallOffset, wallBottom, 0.0F, wallWidth, wallHeight, 1.0F);
      renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);
    } else if (east && west && !(north || south)) {
      // Render Full length wall East/west
      blockCobbleFence.setBlockBounds(0.0F, wallBottom, wallOffset, 1.0F, wallHeight, wallWidth);
      renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);
    } else {
      // Render Center Post
      blockCobbleFence.setBlockBounds(
          postOffset, 0.0F, postOffset, postWidth, postHeight, postWidth);
      renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);

      // render West
      if (west) {
        blockCobbleFence.setBlockBounds(
            0.0F, wallBottom, wallOffset, wallWidth, wallHeight, wallWidth);
        renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);
      }
      // Render East
      if (east) {
        blockCobbleFence.setBlockBounds(
            wallOffset, wallBottom, wallOffset, 1.0F, wallHeight, wallWidth);
        renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);
      }
      // Render North
      if (north) {
        blockCobbleFence.setBlockBounds(
            wallOffset, wallBottom, wallOffset, wallWidth, wallHeight, 1.0F);
        renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);
      }
      // Render South
      if (south) {
        blockCobbleFence.setBlockBounds(
            wallOffset, wallBottom, 0.0F, wallWidth, wallHeight, wallWidth);
        renderblocks.renderStandardBlock(blockCobbleFence, i, j, k);
      }
    }

    blockCobbleFence.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
    return true;
  }