@Override
  public List<String> getHelpMessages(TeamInfo team) {
    LinkedList<String> messages = new LinkedList<String>();

    String numText;
    switch (numTeams.getValue()) {
      case 2:
        numText = "two ";
        break;
      case 3:
        numText = "three ";
        break;
      case 4:
        numText = "four ";
        break;
      default:
        numText = Integer.toString(numTeams.getValue());
        break;
    }
    messages.add(
        "Players have been split into "
            + numText
            + "teams. Get farming!\nThe scoreboard shows what team each player is on.");
    messages.add(
        "The teams complete to deliver the most farm produce (plants, meat, eggs, wool and leather - no seeds) to a central depot.");
    messages.add(
        "At the end of " + dayLimit + " days, the team that has the highest score wins the game.");
    messages.add("You will respawn at your base when you die.");

    if (announceScores.isEnabled())
      messages.add("The current scores will be announced at the start of each day.");

    return messages;
  }
  @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
  public void entityDamaged(EntityDamageEvent event) {
    if (friendlyFire.isEnabled()) return;

    Player victim = (Player) event.getEntity();
    if (victim == null) return;

    Player attacker = Helper.getAttacker(event);
    if (attacker == null) return;

    if (getTeam(victim) == getTeam(attacker)) event.setCancelled(true);
  }
  private long getScoreForItem(Material type, int team) {
    if (!diminishingReturns.isEnabled()) return startingScoreForType;

    if (scoresForTypes.containsKey(type)) {
      long retVal = scoresForTypes.get(type);
      scoresForTypes.put(type, retVal - 1);
      return retVal;
    } else {
      scoresForTypes.put(type, startingScoreForType - 1);
      return startingScoreForType;
    }
  }