예제 #1
0
  @EventHandler(priority = EventPriority.HIGHEST)
  private void onDeath(PlayerDeathEvent evt) {
    evt.getDrops().clear();

    final Player player = evt.getEntity().getPlayer();
    final PlayerDataClass playerData =
        plugin.getPlayerHandler().findPlayer(player.getDisplayName());

    if (playerData != null) {

      setUnscoped(player, playerData);

      plugin.getPlayerLocationListener().removePlayerFromPoint(playerData);

      if (evt.getEntity().getKiller() != null) {
        Player killer = evt.getEntity().getKiller();
        PlayerDataClass killerData = plugin.getPlayerHandler().findPlayer(killer.getDisplayName());

        playerData.setDeaths(playerData.getDeaths() + 1);
        if (killer != null) {
          killerData.setKills(killerData.getKills() + 1);
        }
      }
      if (playerData.getType().equals("spy") && playerData.getDisguised() != null) {
        playerData.setDisguised(null);
      }

      if (player.isDead()) {
        player.setHealth(20);
      }

      plugin
          .getServer()
          .getScheduler()
          .scheduleSyncDelayedTask(
              plugin,
              new Runnable() {
                public void run() {
                  if (plugin.getPlayerHandler().findPlayer(player.getDisplayName()) != null) {
                    plugin.getLogger().info("Respawning: " + player.getName());
                    plugin.getPlayerHandler().spawnPlayer(playerData);
                    TagAPI.refreshPlayer(player);
                  }
                }
              },
              5L);
    } else {
      plugin.getGameManager().teleportToSpawn(player);
    }
  }