Program: 31492
Project: 31492
Buggy source:
/** 
 * Finishes the loading of a chunk and adds stored entities and tile entities. <p>This part of the chunk loading should be <b>always</b> called on the main thread.</p>
 * @param worldIn The world to load the chunk in
 * @param chunk The chunk to add the entities to
 * @param compound The loaded data of the chunk
 */
public static void loadEntities(World worldIn,Chunk chunk,NBTTagCompound compound){
  compound=compound.getCompoundTag("String_Node_Str");
  NBTTagList nbttaglist1=compound.getTagList("String_Node_Str",10);
  for (int j1=0; j1 < nbttaglist1.tagCount(); ++j1) {
    NBTTagCompound nbttagcompound1=nbttaglist1.getCompoundTagAt(j1);
    readChunkEntity(nbttagcompound1,worldIn,chunk);
    chunk.setHasEntities(true);
  }
  NBTTagList nbttaglist2=compound.getTagList("String_Node_Str",10);
  for (int k1=0; k1 < nbttaglist2.tagCount(); ++k1) {
    NBTTagCompound nbttagcompound2=nbttaglist2.getCompoundTagAt(k1);
    TileEntity tileentity=TileEntity.create(nbttagcompound2);
    if (tileentity != null) {
      chunk.addTileEntity(tileentity);
    }
  }
  if (compound.hasKey("String_Node_Str",9)) {
    NBTTagList nbttaglist3=compound.getTagList("String_Node_Str",10);
    for (int l1=0; l1 < nbttaglist3.tagCount(); ++l1) {
      NBTTagCompound nbttagcompound3=nbttaglist3.getCompoundTagAt(l1);
      Block block;
      if (nbttagcompound3.hasKey("String_Node_Str",8)) {
        block=Block.getBlockFromName(nbttagcompound3.getString("String_Node_Str"));
      }
 else {
        block=Block.getBlockById(nbttagcompound3.getInteger("String_Node_Str"));
      }
      worldIn.scheduleBlockUpdate(new BlockPos(nbttagcompound3.getInteger("String_Node_Str"),nbttagcompound3.getInteger("String_Node_Str"),nbttagcompound3.getInteger("String_Node_Str")),block,nbttagcompound3.getInteger("String_Node_Str"),nbttagcompound3.getInteger("String_Node_Str"));
    }
  }
}

Fixed version (ground truth):
/** 
 * Finishes the loading of a chunk and adds stored entities and tile entities. <p>This part of the chunk loading should be <b>always</b> called on the main thread.</p>
 * @param worldIn The world to load the chunk in
 * @param chunk The chunk to add the entities to
 * @param compound The loaded data of the chunk
 */
public static void loadEntities(World worldIn,Chunk chunk,NBTTagCompound compound){
  compound=compound.getCompoundTag("String_Node_Str");
  NBTTagList nbttaglist1=compound.getTagList("String_Node_Str",10);
  for (int j1=0; j1 < nbttaglist1.tagCount(); ++j1) {
    NBTTagCompound nbttagcompound1=nbttaglist1.getCompoundTagAt(j1);
    readChunkEntity(nbttagcompound1,worldIn,chunk);
    chunk.setHasEntities(true);
  }
  NBTTagList nbttaglist2=compound.getTagList("String_Node_Str",10);
  for (int k1=0; k1 < nbttaglist2.tagCount(); ++k1) {
    NBTTagCompound nbttagcompound2=nbttaglist2.getCompoundTagAt(k1);
    TileEntity tileentity=TileEntity.func_190200_a(worldIn,nbttagcompound2);
    if (tileentity != null) {
      chunk.addTileEntity(tileentity);
    }
  }
  if (compound.hasKey("String_Node_Str",9)) {
    NBTTagList nbttaglist3=compound.getTagList("String_Node_Str",10);
    for (int l1=0; l1 < nbttaglist3.tagCount(); ++l1) {
      NBTTagCompound nbttagcompound3=nbttaglist3.getCompoundTagAt(l1);
      Block block;
      if (nbttagcompound3.hasKey("String_Node_Str",8)) {
        block=Block.getBlockFromName(nbttagcompound3.getString("String_Node_Str"));
      }
 else {
        block=Block.getBlockById(nbttagcompound3.getInteger("String_Node_Str"));
      }
      worldIn.scheduleBlockUpdate(new BlockPos(nbttagcompound3.getInteger("String_Node_Str"),nbttagcompound3.getInteger("String_Node_Str"),nbttagcompound3.getInteger("String_Node_Str")),block,nbttagcompound3.getInteger("String_Node_Str"),nbttagcompound3.getInteger("String_Node_Str"));
    }
  }
}