public static S21PacketChunkData.Extracted func_149269_a(
      Chunk p_149269_0_, boolean p_149269_1_, int p_149269_2_) {
    int j = 0;
    ExtendedBlockStorage[] aextendedblockstorage = p_149269_0_.getBlockStorageArray();
    int k = 0;
    S21PacketChunkData.Extracted extracted = new S21PacketChunkData.Extracted();
    byte[] abyte = field_149286_i;

    if (p_149269_1_) {
      p_149269_0_.sendUpdates = true;
    }

    int l;

    for (l = 0; l < aextendedblockstorage.length; ++l) {
      if (aextendedblockstorage[l] != null
          && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty())
          && (p_149269_2_ & 1 << l) != 0) {
        extracted.field_150280_b |= 1 << l;

        if (aextendedblockstorage[l].getBlockMSBArray() != null) {
          extracted.field_150281_c |= 1 << l;
          ++k;
        }
      }
    }

    for (l = 0; l < aextendedblockstorage.length; ++l) {
      if (aextendedblockstorage[l] != null
          && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty())
          && (p_149269_2_ & 1 << l) != 0) {
        byte[] abyte1 = aextendedblockstorage[l].getBlockLSBArray();
        System.arraycopy(abyte1, 0, abyte, j, abyte1.length);
        j += abyte1.length;
      }
    }

    NibbleArray nibblearray;

    for (l = 0; l < aextendedblockstorage.length; ++l) {
      if (aextendedblockstorage[l] != null
          && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty())
          && (p_149269_2_ & 1 << l) != 0) {
        nibblearray = aextendedblockstorage[l].getMetadataArray();
        System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
        j += nibblearray.data.length;
      }
    }

    for (l = 0; l < aextendedblockstorage.length; ++l) {
      if (aextendedblockstorage[l] != null
          && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty())
          && (p_149269_2_ & 1 << l) != 0) {
        nibblearray = aextendedblockstorage[l].getBlocklightArray();
        System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
        j += nibblearray.data.length;
      }
    }

    if (!p_149269_0_.worldObj.provider.hasNoSky) {
      for (l = 0; l < aextendedblockstorage.length; ++l) {
        if (aextendedblockstorage[l] != null
            && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty())
            && (p_149269_2_ & 1 << l) != 0) {
          nibblearray = aextendedblockstorage[l].getSkylightArray();
          System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
          j += nibblearray.data.length;
        }
      }
    }

    if (k > 0) {
      for (l = 0; l < aextendedblockstorage.length; ++l) {
        if (aextendedblockstorage[l] != null
            && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty())
            && aextendedblockstorage[l].getBlockMSBArray() != null
            && (p_149269_2_ & 1 << l) != 0) {
          nibblearray = aextendedblockstorage[l].getBlockMSBArray();
          System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
          j += nibblearray.data.length;
        }
      }
    }

    if (p_149269_1_) {
      byte[] abyte2 = p_149269_0_.getBiomeArray();
      System.arraycopy(abyte2, 0, abyte, j, abyte2.length);
      j += abyte2.length;
    }

    extracted.field_150282_a = new byte[j];
    System.arraycopy(abyte, 0, extracted.field_150282_a, 0, j);
    return extracted;
  }