@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
  public void onItemDrop(PlayerDropItemEvent event) {
    if (!isInDropOffArea(event.getPlayer().getLocation())) return;

    ItemStack stack = event.getItemDrop().getItemStack();
    if (!isAllowedToDrop(stack.getType())) {
      event.setCancelled(true);
      return;
    }
    if (!isScoringItemType(stack.getType())) return;

    FarmTeamInfo team = (FarmTeamInfo) getTeam(event.getPlayer());
    int teamNum = indexOfTeam(team);
    long dropScore = 0;

    for (int i = 0; i < stack.getAmount(); i++)
      dropScore += getScoreForItem(stack.getType(), teamNum);

    event.getPlayer().sendMessage(stack.getType().name() + ": score +" + dropScore);
    team.addScore(dropScore);

    event
        .getItemDrop()
        .remove(); // don't actually DROP the item ... should we schedule a brief delay here?
  }
  private String writeCurrentScores() {
    StringBuilder message = new StringBuilder();
    long winningScore = 0;
    ArrayList<FarmTeamInfo> winningTeams = new ArrayList<FarmTeamInfo>();
    for (int i = 0; i < teams.length; i++) {
      FarmTeamInfo team = teams[i];
      message.append(
          "\n"
              + team.getChatColor()
              + team.getName()
              + ": "
              + ChatColor.RESET
              + team.getScore()
              + " points");

      // also count the scores to decide the winning teams
      if (team.getScore() > winningScore) {
        winningScore = team.getScore();
        winningTeams.clear();
        winningTeams.add(team);
      } else if (team.getScore() == winningScore) winningTeams.add(team);
    }

    if (winningTeams.size() == teams.length)
      message.append("\n\nThe game was drawn, the scores are equal");
    else {
      message.append("\n\nThe ");
      for (int i = 0; i < winningTeams.size(); i++) {
        if (i == winningTeams.size() - 1) message.append(" and ");
        else if (i > 0) message.append(", ");

        FarmTeamInfo team = teams[i];
        message.append(team.getChatColor() + team.getName() + ChatColor.RESET);
      }

      message.append(winningTeams.size() == 0 ? " wins!" : " win!");
    }
    return message.toString();
  }