Program: 86035
Project: 86035
Buggy source:
public void startRaw(final Arena a){
  currentarena.getArena().setArenaState(ArenaState.INGAME);
  startedIngameCountdown=false;
  Util.updateSign(plugin,a);
  Bukkit.getServer().getPluginManager().callEvent(new ArenaStartEvent(plugin,this));
  boolean send_game_started_msg=plugin.getConfig().getBoolean("String_Node_Str");
  for (  String p_ : a.getAllPlayers()) {
    try {
      if (!pli.global_lost.containsKey(p_)) {
        Player p=Bukkit.getPlayer(p_);
        if (plugin.getConfig().getBoolean("String_Node_Str")) {
          if (!pli.getClassesHandler().hasClass(p_)) {
            pli.getClassesHandler().setClass("String_Node_Str",p_,false);
          }
          pli.getClassesHandler().getClass(p_);
        }
 else {
          Util.clearInv(Bukkit.getPlayer(p_));
          pli.getClassesHandler().getClass(p_);
        }
        if (plugin.getConfig().getBoolean("String_Node_Str")) {
          pli.getShopHandler().giveShopItems(p);
        }
        p.setFlying(false);
        p.setAllowFlight(false);
      }
    }
 catch (    Exception e) {
      if (MinigamesAPI.debug) {
        e.printStackTrace();
      }
      System.out.println("String_Node_Str" + e.getMessage() + "String_Node_Str"+ e.getStackTrace()[1].getLineNumber()+ "String_Node_Str"+ e.getStackTrace()[0].getLineNumber());
    }
    Player p=Bukkit.getPlayer(p_);
    p.setWalkSpeed(0.2F);
    p.setFoodLevel(20);
    p.removePotionEffect(PotionEffectType.JUMP);
    if (send_game_started_msg) {
      p.sendMessage(pli.getMessagesConfig().game_started);
    }
  }
  if (plugin.getConfig().getBoolean("String_Node_Str")) {
    Bukkit.setWhitelist(true);
  }
  spectator_task=Bukkit.getScheduler().runTaskTimer(plugin,new Runnable(){
    public void run(){
      try {
        for (        String p_ : a.getAllPlayers()) {
          if (!pli.global_lost.containsKey(p_)) {
            continue;
          }
          Player p=Bukkit.getPlayer(p_);
          if (p != null) {
            for (            String p__ : a.getAllPlayers()) {
              if (p_ != p__) {
                Player p2=Bukkit.getPlayer(p__);
                if ((Math.abs(p.getLocation().getBlockX() - p2.getLocation().getBlockX()) < 4) && (Math.abs(p.getLocation().getBlockZ() - p2.getLocation().getBlockZ()) < 4) && (Math.abs(p.getLocation().getBlockY() - p2.getLocation().getBlockY()) < 4)) {
                  Vector direction=p2.getLocation().add(0D,-0.5D,0D).toVector().subtract(p.getLocation().toVector()).normalize().multiply(-1.15D);
                  p.setVelocity(direction);
                  if (p.isInsideVehicle()) {
                    p.getVehicle().setVelocity(direction.multiply(2D));
                  }
                  break;
                }
              }
            }
          }
        }
      }
 catch (      Exception e) {
        if (spectator_task != null) {
          spectator_task.cancel();
        }
      }
    }
  }
,10L,10L);
  started=true;
  Bukkit.getServer().getPluginManager().callEvent(new ArenaStartedEvent(plugin,this));
  started();
  try {
    Bukkit.getScheduler().cancelTask(currenttaskid);
  }
 catch (  Exception e) {
  }
  maximum_game_time=Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
    public void run(){
      for (      String p_ : a.getAllPlayers()) {
        if (Validator.isPlayerValid(plugin,p_,a)) {
          Bukkit.getPlayer(p_).sendMessage(pli.getMessagesConfig().stop_cause_maximum_game_time);
        }
      }
      Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
        public void run(){
          a.stop();
        }
      }
,5 * 20L);
    }
  }
,20L * 60L * (long)plugin.getConfig().getDouble("String_Node_Str") - 5 * 20L);
}

Fixed version (ground truth):
public void startRaw(final Arena a){
  currentarena.getArena().setArenaState(ArenaState.INGAME);
  startedIngameCountdown=false;
  Util.updateSign(plugin,a);
  Bukkit.getServer().getPluginManager().callEvent(new ArenaStartEvent(plugin,this));
  boolean send_game_started_msg=plugin.getConfig().getBoolean("String_Node_Str");
  for (  String p_ : a.getAllPlayers()) {
    try {
      if (!pli.global_lost.containsKey(p_)) {
        Player p=Bukkit.getPlayer(p_);
        if (plugin.getConfig().getBoolean("String_Node_Str")) {
          if (!pli.getClassesHandler().hasClass(p_)) {
            pli.getClassesHandler().setClass("String_Node_Str",p_,false);
          }
          pli.getClassesHandler().getClass(p_);
        }
 else {
          Util.clearInv(Bukkit.getPlayer(p_));
          pli.getClassesHandler().getClass(p_);
        }
        if (plugin.getConfig().getBoolean("String_Node_Str")) {
          pli.getShopHandler().giveShopItems(p);
        }
        p.setFlying(false);
        p.setAllowFlight(false);
      }
    }
 catch (    Exception e) {
      if (MinigamesAPI.debug) {
        e.printStackTrace();
      }
      System.out.println("String_Node_Str" + e.getMessage() + "String_Node_Str"+ e.getStackTrace()[1].getLineNumber()+ "String_Node_Str"+ e.getStackTrace()[0].getLineNumber());
    }
    Player p=Bukkit.getPlayer(p_);
    p.setWalkSpeed(0.2F);
    p.setFoodLevel(20);
    p.removePotionEffect(PotionEffectType.JUMP);
    if (send_game_started_msg) {
      p.sendMessage(pli.getMessagesConfig().game_started);
    }
  }
  if (plugin.getConfig().getBoolean("String_Node_Str")) {
    Bukkit.setWhitelist(true);
  }
  spectator_task=Bukkit.getScheduler().runTaskTimer(plugin,new Runnable(){
    public void run(){
      if (pli.spectator_mode_1_8) {
        return;
      }
      try {
        for (        String p_ : a.getAllPlayers()) {
          if (!pli.global_lost.containsKey(p_)) {
            continue;
          }
          Player p=Bukkit.getPlayer(p_);
          if (p != null) {
            for (            String p__ : a.getAllPlayers()) {
              if (p_ != p__) {
                Player p2=Bukkit.getPlayer(p__);
                if ((Math.abs(p.getLocation().getBlockX() - p2.getLocation().getBlockX()) < 4) && (Math.abs(p.getLocation().getBlockZ() - p2.getLocation().getBlockZ()) < 4) && (Math.abs(p.getLocation().getBlockY() - p2.getLocation().getBlockY()) < 4)) {
                  Vector direction=p2.getLocation().add(0D,-0.5D,0D).toVector().subtract(p.getLocation().toVector()).normalize().multiply(-1.15D);
                  p.setVelocity(direction);
                  if (p.isInsideVehicle()) {
                    p.getVehicle().setVelocity(direction.multiply(2D));
                  }
                  break;
                }
              }
            }
          }
        }
      }
 catch (      Exception e) {
        if (spectator_task != null) {
          spectator_task.cancel();
        }
      }
    }
  }
,10L,10L);
  started=true;
  Bukkit.getServer().getPluginManager().callEvent(new ArenaStartedEvent(plugin,this));
  started();
  try {
    Bukkit.getScheduler().cancelTask(currenttaskid);
  }
 catch (  Exception e) {
  }
  maximum_game_time=Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
    public void run(){
      for (      String p_ : a.getAllPlayers()) {
        if (Validator.isPlayerValid(plugin,p_,a)) {
          Bukkit.getPlayer(p_).sendMessage(pli.getMessagesConfig().stop_cause_maximum_game_time);
        }
      }
      Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
        public void run(){
          a.stop();
        }
      }
,5 * 20L);
    }
  }
,20L * 60L * (long)plugin.getConfig().getDouble("String_Node_Str") - 5 * 20L);
}