Program: 10473
Project: 10473
Buggy source:
@EventHandler public void playerTags(ReplaceableTagEvent event){
  if (!event.matches("String_Node_Str") || event.getPlayer() == null)   return;
  Player p=event.getPlayer();
  String type=event.getType() != null ? event.getType().toUpperCase() : "String_Node_Str";
  String subType=event.getSubType() != null ? event.getSubType().toUpperCase() : "String_Node_Str";
  String specifier=event.getSpecifier() != null ? event.getSpecifier().toUpperCase() : "String_Node_Str";
  if (type.equals("String_Node_Str")) {
    if (event.hasTypeContext()) {
      if (aH.matchesInteger(event.getTypeContext())) {
        if (playerChatHistory.containsKey(event.getPlayer().getName())) {
          List<String> history=playerChatHistory.get(event.getPlayer().getName());
          if (history.size() < aH.getIntegerFrom(event.getTypeContext()))           event.setReplaced(history.get(history.size() - 1));
 else           event.setReplaced(history.get(aH.getIntegerFrom(event.getTypeContext()) - 1));
        }
      }
    }
 else {
      if (playerChatHistory.containsKey(event.getPlayer().getName())) {
        event.setReplaced(playerChatHistory.get(event.getPlayer().getName()).get(0));
      }
    }
  }
 else   if (type.equals("String_Node_Str")) {
    if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getAmount()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getTypeId()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getDurability()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getData()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getMaxStackSize()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getEnchantments(p.getItemInHand()).asDScriptList());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getEnchantments(p.getItemInHand()).asDScriptListWithLevels());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getEnchantments(p.getItemInHand()).asDScriptListLevelsOnly());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getLore(p.getItemInHand()).asDScriptList());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getItemInHand().getItemMeta().getDisplayName());
 else     if (subType.equals("String_Node_Str"))     if (specifier.equals("String_Node_Str")) {
      String itemName=p.getItemInHand().getType().name().toLowerCase().replace('_',' ');
      int itemQty=p.getItemInHand().getAmount();
      if (itemName == "String_Node_Str" || itemName == "String_Node_Str" || itemName == "String_Node_Str")       event.setReplaced(itemName);
 else       if (itemQty > 1) {
        if (itemName == "String_Node_Str")         event.setReplaced("String_Node_Str");
 else         if (itemName.endsWith("String_Node_Str"))         event.setReplaced(itemName.substring(0,itemName.length() - 1) + "String_Node_Str");
 else         if (itemName.endsWith("String_Node_Str"))         event.setReplaced(itemName);
 else         event.setReplaced(itemName + "String_Node_Str");
      }
 else {
        if (itemName == "String_Node_Str")         event.setReplaced("String_Node_Str");
 else         if (itemName.endsWith("String_Node_Str"))         event.setReplaced(itemName);
 else         if (itemName.startsWith("String_Node_Str") || itemName.startsWith("String_Node_Str") || itemName.startsWith("String_Node_Str")|| itemName.startsWith("String_Node_Str")|| itemName.startsWith("String_Node_Str"))         event.setReplaced("String_Node_Str" + itemName);
 else         event.setReplaced("String_Node_Str" + itemName);
      }
    }
 else     event.setReplaced(p.getItemInHand().getType().name());
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(p.getName());
    if (subType.equals("String_Node_Str"))     event.setReplaced(p.getDisplayName());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getPlayerListName());
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(p.getLocation().getBlockX() + "String_Node_Str" + p.getLocation().getBlockY()+ "String_Node_Str"+ p.getLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName());
    if (subType.equals("String_Node_Str"))     event.setReplaced("String_Node_Str" + p.getLocation().getBlockX() + "String_Node_Str"+ p.getLocation().getBlockY()+ "String_Node_Str"+ p.getLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName()+ "String_Node_Str");
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLocation().getBlockX()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLocation().getBlockY()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLocation().getBlockZ()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getWorld().getName());
 else     if (subType.equals("String_Node_Str"))     if (specifier.equals("String_Node_Str"))     event.setReplaced(p.getLocation().add(0,-1,0).getBlock().getType().name().toLowerCase().replace('_',' '));
 else     event.setReplaced(p.getLocation().add(0,-1,0).getBlock().getType().name());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getWorld().getSpawnLocation().getBlockX() + "String_Node_Str" + p.getWorld().getSpawnLocation().getBlockY()+ "String_Node_Str"+ p.getWorld().getSpawnLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getBedSpawnLocation().getBlockX() + "String_Node_Str" + p.getBedSpawnLocation().getBlockY()+ "String_Node_Str"+ p.getBedSpawnLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName());
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.getHealth()));
    if (subType.equals("String_Node_Str")) {
      int maxHealth=p.getMaxHealth();
      if (event.getType().split("String_Node_Str").length > 2)       maxHealth=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      if ((float)p.getHealth() / maxHealth < .10)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getHealth() / maxHealth < .40)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getHealth() / maxHealth < .75)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getHealth() / maxHealth < 1)       event.setReplaced("String_Node_Str");
 else       event.setReplaced("String_Node_Str");
    }
 else     if (subType.equals("String_Node_Str")) {
      int maxHealth=p.getMaxHealth();
      if (event.getType().split("String_Node_Str").length > 2)       maxHealth=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      event.setReplaced(String.valueOf(((float)p.getHealth() / maxHealth) * 100));
    }
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.getFoodLevel()));
    if (subType.equals("String_Node_Str")) {
      int maxFood=20;
      if (event.getType().split("String_Node_Str").length > 2)       maxFood=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      if ((float)p.getHealth() / maxFood < .10)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getFoodLevel() / maxFood < .40)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getFoodLevel() / maxFood < .75)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getFoodLevel() / maxFood < 1)       event.setReplaced("String_Node_Str");
 else       event.setReplaced("String_Node_Str");
    }
 else     if (subType.equals("String_Node_Str")) {
      int maxFood=20;
      if (event.getType().split("String_Node_Str").length > 2)       maxFood=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      event.setReplaced(String.valueOf(((float)p.getFoodLevel() / maxFood) * 100));
    }
  }
 else   if (type.equals("String_Node_Str")) {
    if (Depends.economy != null) {
      event.setReplaced(String.valueOf(Depends.economy.getBalance(p.getName())));
      if (subType.equals("String_Node_Str"))       event.setReplaced(String.valueOf((int)Depends.economy.getBalance(p.getName())));
 else       if (subType.equals("String_Node_Str"))       if (specifier.equals("String_Node_Str"))       event.setReplaced(Depends.economy.currencyNameSingular());
 else       if (specifier.equals("String_Node_Str"))       event.setReplaced(Depends.economy.currencyNamePlural());
    }
 else {
      dB.echoError("String_Node_Str");
    }
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.isOp()));
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.isBanned()));
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.isOnline()));
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.getPlayerTime()));
    if (subType.equals("String_Node_Str"))     if (p.getPlayerTime() < 13500 || p.getPlayerTime() > 23000)     event.setReplaced("String_Node_Str");
 else     if (p.getPlayerTime() > 13500)     event.setReplaced("String_Node_Str");
  }
 else   if (type.equals("String_Node_Str")) {
    if (p.getWorld().hasStorm())     event.setReplaced("String_Node_Str");
 else     if (p.getPlayerTime() > 13500)     event.setReplaced("String_Node_Str");
 else     event.setReplaced("String_Node_Str");
  }
 else   if (event.getType().startsWith("String_Node_Str")) {
    event.setReplaced(String.valueOf(event.getNPC().getEntity().getHealth()));
  }
 else   if (event.getType().startsWith("String_Node_Str")) {
    event.setReplaced(String.valueOf(event.getNPC().getEntity().getHealth()));
  }
 else   if (event.getType().startsWith("String_Node_Str")) {
    event.setReplaced(String.valueOf(event.getPlayer().getExp() * 100));
    if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getExpToLevel()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getTotalExperience()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLevel()));
  }
}

Fixed version (ground truth):
@EventHandler public void playerTags(ReplaceableTagEvent event){
  if (!event.matches("String_Node_Str") || event.getPlayer() == null)   return;
  Player p=event.getPlayer();
  String type=event.getType() != null ? event.getType().toUpperCase() : "String_Node_Str";
  String subType=event.getSubType() != null ? event.getSubType().toUpperCase() : "String_Node_Str";
  String specifier=event.getSpecifier() != null ? event.getSpecifier().toUpperCase() : "String_Node_Str";
  if (type.equals("String_Node_Str")) {
    if (event.hasTypeContext()) {
      if (aH.matchesInteger(event.getTypeContext())) {
        if (playerChatHistory.containsKey(event.getPlayer().getName())) {
          List<String> history=playerChatHistory.get(event.getPlayer().getName());
          if (history.size() < aH.getIntegerFrom(event.getTypeContext()))           event.setReplaced(history.get(history.size() - 1));
 else           event.setReplaced(history.get(aH.getIntegerFrom(event.getTypeContext()) - 1));
        }
      }
    }
 else {
      if (playerChatHistory.containsKey(event.getPlayer().getName())) {
        event.setReplaced(playerChatHistory.get(event.getPlayer().getName()).get(0));
      }
    }
  }
 else   if (type.equals("String_Node_Str")) {
    if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getAmount()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getTypeId()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getDurability()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getData()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getItemInHand().getMaxStackSize()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getEnchantments(p.getItemInHand()).asDScriptList());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getEnchantments(p.getItemInHand()).asDScriptListWithLevels());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getEnchantments(p.getItemInHand()).asDScriptListLevelsOnly());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(NBTItem.getLore(p.getItemInHand()).asDScriptList());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getItemInHand().getItemMeta().getDisplayName());
 else     if (subType.equals("String_Node_Str"))     if (specifier.equals("String_Node_Str")) {
      String itemName=p.getItemInHand().getType().name().toLowerCase().replace('_',' ');
      int itemQty=p.getItemInHand().getAmount();
      if (itemName == "String_Node_Str")       event.setReplaced("String_Node_Str");
 else       if (itemName == "String_Node_Str" || itemName == "String_Node_Str")       event.setReplaced(itemName);
 else       if (itemQty > 1) {
        if (itemName == "String_Node_Str")         event.setReplaced("String_Node_Str");
 else         if (itemName.endsWith("String_Node_Str"))         event.setReplaced(itemName.substring(0,itemName.length() - 1) + "String_Node_Str");
 else         if (itemName.endsWith("String_Node_Str"))         event.setReplaced(itemName);
 else         event.setReplaced(itemName + "String_Node_Str");
      }
 else {
        if (itemName == "String_Node_Str")         event.setReplaced("String_Node_Str");
 else         if (itemName.endsWith("String_Node_Str"))         event.setReplaced(itemName);
 else         if (itemName.startsWith("String_Node_Str") || itemName.startsWith("String_Node_Str") || itemName.startsWith("String_Node_Str")|| itemName.startsWith("String_Node_Str")|| itemName.startsWith("String_Node_Str"))         event.setReplaced("String_Node_Str" + itemName);
 else         event.setReplaced("String_Node_Str" + itemName);
      }
    }
 else     event.setReplaced(p.getItemInHand().getType().name());
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(p.getName());
    if (subType.equals("String_Node_Str"))     event.setReplaced(p.getDisplayName());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getPlayerListName());
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(p.getLocation().getBlockX() + "String_Node_Str" + p.getLocation().getBlockY()+ "String_Node_Str"+ p.getLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName());
    if (subType.equals("String_Node_Str"))     event.setReplaced("String_Node_Str" + p.getLocation().getBlockX() + "String_Node_Str"+ p.getLocation().getBlockY()+ "String_Node_Str"+ p.getLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName()+ "String_Node_Str");
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLocation().getBlockX()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLocation().getBlockY()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLocation().getBlockZ()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getWorld().getName());
 else     if (subType.equals("String_Node_Str"))     if (specifier.equals("String_Node_Str"))     event.setReplaced(p.getLocation().add(0,-1,0).getBlock().getType().name().toLowerCase().replace('_',' '));
 else     event.setReplaced(p.getLocation().add(0,-1,0).getBlock().getType().name());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getWorld().getSpawnLocation().getBlockX() + "String_Node_Str" + p.getWorld().getSpawnLocation().getBlockY()+ "String_Node_Str"+ p.getWorld().getSpawnLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName());
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(p.getBedSpawnLocation().getBlockX() + "String_Node_Str" + p.getBedSpawnLocation().getBlockY()+ "String_Node_Str"+ p.getBedSpawnLocation().getBlockZ()+ "String_Node_Str"+ p.getWorld().getName());
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.getHealth()));
    if (subType.equals("String_Node_Str")) {
      int maxHealth=p.getMaxHealth();
      if (event.getType().split("String_Node_Str").length > 2)       maxHealth=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      if ((float)p.getHealth() / maxHealth < .10)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getHealth() / maxHealth < .40)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getHealth() / maxHealth < .75)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getHealth() / maxHealth < 1)       event.setReplaced("String_Node_Str");
 else       event.setReplaced("String_Node_Str");
    }
 else     if (subType.equals("String_Node_Str")) {
      int maxHealth=p.getMaxHealth();
      if (event.getType().split("String_Node_Str").length > 2)       maxHealth=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      event.setReplaced(String.valueOf(((float)p.getHealth() / maxHealth) * 100));
    }
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.getFoodLevel()));
    if (subType.equals("String_Node_Str")) {
      int maxFood=20;
      if (event.getType().split("String_Node_Str").length > 2)       maxFood=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      if ((float)p.getHealth() / maxFood < .10)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getFoodLevel() / maxFood < .40)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getFoodLevel() / maxFood < .75)       event.setReplaced("String_Node_Str");
 else       if ((float)p.getFoodLevel() / maxFood < 1)       event.setReplaced("String_Node_Str");
 else       event.setReplaced("String_Node_Str");
    }
 else     if (subType.equals("String_Node_Str")) {
      int maxFood=20;
      if (event.getType().split("String_Node_Str").length > 2)       maxFood=Integer.valueOf(event.getType().split("String_Node_Str")[2]);
      event.setReplaced(String.valueOf(((float)p.getFoodLevel() / maxFood) * 100));
    }
  }
 else   if (type.equals("String_Node_Str")) {
    if (Depends.economy != null) {
      event.setReplaced(String.valueOf(Depends.economy.getBalance(p.getName())));
      if (subType.equals("String_Node_Str"))       event.setReplaced(String.valueOf((int)Depends.economy.getBalance(p.getName())));
 else       if (subType.equals("String_Node_Str"))       if (specifier.equals("String_Node_Str"))       event.setReplaced(Depends.economy.currencyNameSingular());
 else       if (specifier.equals("String_Node_Str"))       event.setReplaced(Depends.economy.currencyNamePlural());
    }
 else {
      dB.echoError("String_Node_Str");
    }
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.isOp()));
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.isBanned()));
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.isOnline()));
  }
 else   if (type.equals("String_Node_Str")) {
    event.setReplaced(String.valueOf(p.getPlayerTime()));
    if (subType.equals("String_Node_Str"))     if (p.getPlayerTime() < 13500 || p.getPlayerTime() > 23000)     event.setReplaced("String_Node_Str");
 else     if (p.getPlayerTime() > 13500)     event.setReplaced("String_Node_Str");
  }
 else   if (type.equals("String_Node_Str")) {
    if (p.getWorld().hasStorm())     event.setReplaced("String_Node_Str");
 else     if (p.getPlayerTime() > 13500)     event.setReplaced("String_Node_Str");
 else     event.setReplaced("String_Node_Str");
  }
 else   if (event.getType().startsWith("String_Node_Str")) {
    event.setReplaced(String.valueOf(event.getNPC().getEntity().getHealth()));
  }
 else   if (event.getType().startsWith("String_Node_Str")) {
    event.setReplaced(String.valueOf(event.getNPC().getEntity().getHealth()));
  }
 else   if (event.getType().startsWith("String_Node_Str")) {
    event.setReplaced(String.valueOf(event.getPlayer().getExp() * 100));
    if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getExpToLevel()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getTotalExperience()));
 else     if (subType.equals("String_Node_Str"))     event.setReplaced(String.valueOf(p.getLevel()));
  }
}