/** Set the metadata of a block in the chunk */
  public boolean setBlockMetadata(int par1, int par2, int par3, int par4) {
    ExtendedBlockStorage var5 = this.storageArrays[par2 >> 4];

    if (var5 == null) {
      return false;
    } else {
      int var6 = var5.getExtBlockMetadata(par1, par2 & 15, par3);

      if (var6 == par4) {
        return false;
      } else {
        this.isModified = true;
        var5.setExtBlockMetadata(par1, par2 & 15, par3, par4);
        int var7 = var5.getExtBlockID(par1, par2 & 15, par3);

        if (var7 > 0 && Block.blocksList[var7] instanceof ITileEntityProvider) {
          TileEntity var8 = this.getChunkBlockTileEntity(par1, par2, par3);

          if (var8 != null) {
            var8.updateContainingBlockInfo();
            var8.blockMetadata = par4;
          }
        }

        return true;
      }
    }
  }
 /** Return the metadata corresponding to the given coordinates inside a chunk. */
 public int getBlockMetadata(int par1, int par2, int par3) {
   if (par2 >> 4 >= this.storageArrays.length) {
     return 0;
   } else {
     ExtendedBlockStorage var4 = this.storageArrays[par2 >> 4];
     return var4 != null ? var4.getExtBlockMetadata(par1, par2 & 15, par3) : 0;
   }
 }