/** @param event */
  @EventHandler(priority = EventPriority.NORMAL)
  public void OnEntityDamanged(EntityDamageByEntityEvent event) {

    final Entity entity = event.getEntity();
    final Entity damager = event.getDamager();
    FundamentalPlayer player = null;

    if (entity instanceof Player) {
      // Defence
      player = SurvivalPlus.Players.getPlayer((Player) entity);
    } else if (damager instanceof Player) {
      // Attack
      player = SurvivalPlus.Players.getPlayer((Player) damager);
    } else if (damager instanceof Projectile) {
      // Archery
      final ProjectileSource source = ((Projectile) damager).getShooter();
      if (source instanceof Player) {
        player = SurvivalPlus.Players.getPlayer((Player) source);
      }
    }

    if (player == null) {
      return;
    }

    PlayerSkillData data = (PlayerSkillData) player.getPlayerData(this.getPlayerDataClass());
    if (data == null) {
      return;
    }

    final int oldlevel = data.getLevel();
    data.addXP(1L);
    final int level = data.getLevel();

    // Have we leveld up? give more health
    if (level != oldlevel) {
      setPlayerHitpoints(player.getPlayer(), level);
    }
  }
  /** @param event */
  @EventHandler(priority = EventPriority.MONITOR)
  public void OnPlayerLogin(PlayerLoginEvent event) {
    final Player player = event.getPlayer();
    final FundamentalPlayer funplayer = SurvivalPlus.Players.getPlayer(player);
    if (funplayer == null) {
      return;
    }

    PlayerSkillData data = (PlayerSkillData) funplayer.getPlayerData(this.getPlayerDataClass());
    if (data == null) {
      return;
    }

    final int level = data.getLevel();
    setPlayerHitpoints(player, level);
  }
  /** Called after the module is loaded. */
  @Override
  public void onPostEnable() {
    for (Player player : Bukkit.getOnlinePlayers()) {
      final FundamentalPlayer funplayer = SurvivalPlus.Players.getPlayer(player);
      if (funplayer == null) {
        return;
      }

      PlayerSkillData data = (PlayerSkillData) funplayer.getPlayerData(this.getPlayerDataClass());
      if (data == null) {
        return;
      }

      final int level = data.getLevel();
      setPlayerHitpoints(player, level);
    }
  }