@Override
  /** Cycle forwards through types. */
  protected boolean onHammerLeftClick(TEBase TE, EntityPlayer entityPlayer) {
    int temp = data.getType(TE);

    if (++temp > type.length - 1) {
      temp = 0;
    }

    data.setType(TE, temp);
    return true;
  }
  @Override
  /** Cycle backwards through types. */
  protected boolean onHammerRightClick(TEBase TE, EntityPlayer entityPlayer) {
    int temp = data.getType(TE);

    if (--temp < 0) {
      temp = type.length - 1;
    }

    data.setType(TE, temp);
    return true;
  }
  @Override
  /** Called when the block is placed in the world. */
  public void onBlockPlacedBy(
      World world, int x, int y, int z, EntityLivingBase entityLiving, ItemStack itemStack) {
    super.onBlockPlacedBy(world, x, y, z, entityLiving, itemStack);

    if (!entityLiving.isSneaking()) {
      // Copy type and direction of adjacent ladder type
      for (int side = 0; side < 2; ++side) {
        TEBase TE = getTileEntity(world, x, y, z);
        ForgeDirection dir = ForgeDirection.getOrientation(side);
        if (world.getBlock(x, y - dir.offsetY, z).equals(this)) {
          TEBase TE_adj = (TEBase) world.getTileEntity(x, y - dir.offsetY, z);
          data.setType(TE, data.getType(TE_adj));
          data.setDirection(TE, data.getDirection(TE_adj));
        }
      }
    }
  }