Program: 156718
Project: 156718
Buggy source:
public void write(NBTTagCompound nbt){
  NBTTagList blocksMapping=new NBTTagList();
  for (  Block b : idToBlock) {
    NBTTagCompound sub=new NBTTagCompound();
    if (b != null) {
      String name=Block.blockRegistry.getNameForObject(b);
      if (name == null || name.length() == 0) {
        BCLog.logger.error("String_Node_Str" + b.getUnlocalizedName() + "String_Node_Str"+ b.getClass().getName()+ "String_Node_Str");
      }
 else {
        sub.setString("String_Node_Str",name);
      }
    }
    blocksMapping.appendTag(sub);
  }
  nbt.setTag("String_Node_Str",blocksMapping);
  NBTTagList itemsMapping=new NBTTagList();
  for (  Item i : idToItem) {
    NBTTagCompound sub=new NBTTagCompound();
    if (i != null) {
      String name=Item.itemRegistry.getNameForObject(i);
      if (name == null || name.length() == 0) {
        BCLog.logger.error("String_Node_Str" + i.getUnlocalizedName() + "String_Node_Str"+ i.getClass().getName()+ "String_Node_Str");
      }
 else {
        sub.setString("String_Node_Str",name);
      }
    }
    itemsMapping.appendTag(sub);
  }
  nbt.setTag("String_Node_Str",itemsMapping);
  NBTTagList entitiesMapping=new NBTTagList();
  for (  Class<? extends Entity> e : idToEntity) {
    NBTTagCompound sub=new NBTTagCompound();
    sub.setString("String_Node_Str",e.getCanonicalName());
    entitiesMapping.appendTag(sub);
  }
  nbt.setTag("String_Node_Str",entitiesMapping);
}

Fixed version (ground truth):
public void write(NBTTagCompound nbt){
  NBTTagList blocksMapping=new NBTTagList();
  for (  Block b : idToBlock) {
    NBTTagCompound sub=new NBTTagCompound();
    if (b != null) {
      Object obj=Block.blockRegistry.getNameForObject(b);
      if (obj == null) {
        BCLog.logger.error("String_Node_Str" + b.getUnlocalizedName() + "String_Node_Str"+ b.getClass().getName()+ "String_Node_Str");
      }
 else {
        String name=obj.toString();
        if (name == null || name.length() == 0) {
          BCLog.logger.error("String_Node_Str" + b.getUnlocalizedName() + "String_Node_Str"+ b.getClass().getName()+ "String_Node_Str");
        }
 else {
          sub.setString("String_Node_Str",name);
        }
      }
    }
    blocksMapping.appendTag(sub);
  }
  nbt.setTag("String_Node_Str",blocksMapping);
  NBTTagList itemsMapping=new NBTTagList();
  for (  Item i : idToItem) {
    NBTTagCompound sub=new NBTTagCompound();
    if (i != null) {
      Object obj=Item.itemRegistry.getNameForObject(i);
      if (obj == null) {
        BCLog.logger.error("String_Node_Str" + i.getUnlocalizedName() + "String_Node_Str"+ i.getClass().getName()+ "String_Node_Str");
      }
 else {
        String name=obj.toString();
        if (name == null || name.length() == 0) {
          BCLog.logger.error("String_Node_Str" + i.getUnlocalizedName() + "String_Node_Str"+ i.getClass().getName()+ "String_Node_Str");
        }
 else {
          sub.setString("String_Node_Str",name);
        }
      }
    }
    itemsMapping.appendTag(sub);
  }
  nbt.setTag("String_Node_Str",itemsMapping);
  NBTTagList entitiesMapping=new NBTTagList();
  for (  Class<? extends Entity> e : idToEntity) {
    NBTTagCompound sub=new NBTTagCompound();
    sub.setString("String_Node_Str",e.getCanonicalName());
    entitiesMapping.appendTag(sub);
  }
  nbt.setTag("String_Node_Str",entitiesMapping);
}