Program: 40115
Project: 40115
Buggy source:
/** 
 * Backups the complete server. At first messages were sent to the console and to every player, so everyone know, a Backup is running. After this it deactivates all world saves and then saves every player position. Is this done, every world getting zipped and stored.
 */
protected void backup(){
  String startBackupMessage=pSystem.getStringProperty(STRING_START_BACKUP_MESSAGE);
  System.out.println(startBackupMessage);
  server.broadcastMessage(startBackupMessage);
  ConsoleCommandSender ccs=new ConsoleCommandSender(server);
  server.dispatchCommand(ccs,"String_Node_Str");
  server.dispatchCommand(ccs,"String_Node_Str");
  server.savePlayers();
  String[] worldNames=pSystem.getStringProperty(STRING_NO_BACKUP_WORLDNAMES).split("String_Node_Str");
  if (worldNames.length > 0 && !worldNames[0].isEmpty()) {
    System.out.println("String_Node_Str");
    System.out.println(Arrays.toString(worldNames));
  }
  try {
    boolean hasToZIP=pSystem.getBooleanProperty(BOOL_ZIP);
    if (hasToZIP)     System.out.println("String_Node_Str");
    outter:     for (    World world : server.getWorlds()) {
      inner:       for (      String worldName : worldNames)       if (worldName.equalsIgnoreCase(world.getName()))       continue outter;
      String backupDir="String_Node_Str".concat(FILE_SEPARATOR).concat(world.getName());
      if (!hasToZIP)       backupDir=backupDir.concat(this.getDate());
      world.save();
      FileUtils.copyDirectory(new File(world.getName()),new File(backupDir));
      String targetName=world.getName();
      String targetDir="String_Node_Str".concat(FILE_SEPARATOR);
      if (backupName != null) {
        targetName=backupName;
        targetDir=targetDir.concat("String_Node_Str").concat(FILE_SEPARATOR);
      }
      if (hasToZIP) {
        FileUtils.zipDirectory(backupDir,targetDir.concat(targetName).concat(getDate()));
        FileUtils.deleteDirectory(new File(backupDir));
      }
    }
  }
 catch (  Exception e) {
    e.printStackTrace(System.out);
  }
  server.dispatchCommand(ccs,"String_Node_Str");
  String completedBackupMessage=pSystem.getStringProperty(STRING_FINISH_BACKUP_MESSAGE);
  server.broadcastMessage(completedBackupMessage);
  System.out.println(completedBackupMessage);
  deleteOldBackups();
  backupName=null;
  isManuelBackup=false;
}

Fixed version (ground truth):
/** 
 * Backups the complete server. At first messages were sent to the console and to every player, so everyone know, a Backup is running. After this it deactivates all world saves and then saves every player position. Is this done, every world getting zipped and stored.
 */
protected void backup(){
  String startBackupMessage=pSystem.getStringProperty(STRING_START_BACKUP_MESSAGE);
  System.out.println(startBackupMessage);
  server.broadcastMessage(startBackupMessage);
  ConsoleCommandSender ccs=new ConsoleCommandSender(server);
  server.dispatchCommand(ccs,"String_Node_Str");
  server.dispatchCommand(ccs,"String_Node_Str");
  server.savePlayers();
  String[] worldNames=pSystem.getStringProperty(STRING_NO_BACKUP_WORLDNAMES).split("String_Node_Str");
  if (worldNames.length > 0 && !worldNames[0].isEmpty()) {
    System.out.println("String_Node_Str");
    System.out.println(Arrays.toString(worldNames));
  }
  try {
    boolean hasToZIP=pSystem.getBooleanProperty(BOOL_ZIP);
    if (!hasToZIP)     System.out.println("String_Node_Str");
    outter:     for (    World world : server.getWorlds()) {
      inner:       for (      String worldName : worldNames)       if (worldName.equalsIgnoreCase(world.getName()))       continue outter;
      String backupDir="String_Node_Str".concat(FILE_SEPARATOR).concat(world.getName());
      if (!hasToZIP)       backupDir=backupDir.concat(this.getDate());
      world.save();
      FileUtils.copyDirectory(new File(world.getName()),new File(backupDir));
      String targetName=world.getName();
      String targetDir="String_Node_Str".concat(FILE_SEPARATOR);
      if (backupName != null) {
        targetName=backupName;
        targetDir=targetDir.concat("String_Node_Str").concat(FILE_SEPARATOR);
      }
      if (hasToZIP) {
        FileUtils.zipDirectory(backupDir,targetDir.concat(targetName).concat(getDate()));
        FileUtils.deleteDirectory(new File(backupDir));
      }
    }
  }
 catch (  Exception e) {
    e.printStackTrace(System.out);
  }
  server.dispatchCommand(ccs,"String_Node_Str");
  String completedBackupMessage=pSystem.getStringProperty(STRING_FINISH_BACKUP_MESSAGE);
  server.broadcastMessage(completedBackupMessage);
  System.out.println(completedBackupMessage);
  deleteOldBackups();
  backupName=null;
  isManuelBackup=false;
}