you don't HAVE to extend BlockLeaves. You can also get the boolean value like I described before. I had similar problems with texture not updating properly. Just use this method, too:
@Override
@SideOnly(Side.CLIENT)
public int getBlockTexture(IBlockAccess par1iBlockAccess, int par2, int par3, int par4, int par5) {
int meta = par1iBlockAccess.getBlockMetadata(par2, par3, par4);
return this.getBlockTextureFromSideAndMetadata(par5, meta);
}