示例#1
0
  // Récupération de l'évènement lorsqu'une entité meurt
  public void handle(DestructEntityEvent.Death event) throws Exception {
    String cause = event.getCause().toString();

    // Si la mort a été causée par un joueur grâce à une arme
    if (cause.contains("Name=player, Type=attack")) {
      // On récupère l'id de l'entité morte
      String mobId = event.getTargetEntity().getType().getId();

      // Achievement KillMob
      Iterator iterator = this.core.getMobs().iterator();
      // On parcoure la liste des achievements de type KillMob et on vérifie si l'id de l'entité
      // tuée
      // correspond à l'id enregistrée dans l'achievement
      // Ensuite on vérifie que le bon nombre d'entité de ce type ont été tuées
      // Si oui, on valide l'achievement
      while (iterator.hasNext()) {
        AchievementKillMob achiev = (AchievementKillMob) iterator.next();
        if (mobId.equals(achiev.getMobId())) {

          String causePlayer = getPlayerFromCause(event.getCause().toString());
          String userUUID =
              core.getGame().getServer().getPlayer(causePlayer).get().getUniqueId().toString();
          if (!playerHasAchievment(userUUID, achiev.getName())) {
            // Récupérer le nombre de mobs tués par le joueur
            int mobToKill = getMobToKill(achiev, causePlayer);
            addKilledMob(userUUID, achiev.getBadgeID(), mobToKill - 1);
            if (mobToKill == 0) {
              validAchievement(achiev, cause);
              break;
            }
          }
        }
      }
    }
  }