@Override
 public void onDeath(DamageSource par1DamageSource) {
   super.onDeath(par1DamageSource);
   if (par1DamageSource.getEntity() instanceof EntityPlayerMP)
     ((EntityPlayerMP) par1DamageSource.getEntity())
         .triggerAchievement(TragicAchievements.overlord2);
   List<EntityPlayerMP> list =
       this.worldObj.getEntitiesWithinAABB(
           EntityPlayerMP.class, this.getEntityBoundingBox().expand(24.0, 24.0, 24.0));
   if (!list.isEmpty()) {
     for (EntityPlayerMP mp : list) {
       mp.triggerAchievement(TragicAchievements.overlord2);
     }
   }
 }
  /**
   * Called when a player disconnects from the game. Writes player data to disk and removes them
   * from the world.
   */
  public void playerLoggedOut(EntityPlayerMP playerIn) {
    playerIn.triggerAchievement(StatList.leaveGameStat);
    this.writePlayerData(playerIn);
    WorldServer var2 = playerIn.getServerForPlayer();

    if (playerIn.ridingEntity != null) {
      var2.removePlayerEntityDangerously(playerIn.ridingEntity);
      logger.debug("removing player mount");
    }

    var2.removeEntity(playerIn);
    var2.getPlayerManager().removePlayer(playerIn);
    this.playerEntityList.remove(playerIn);
    this.field_177454_f.remove(playerIn.getUniqueID());
    this.playerStatFiles.remove(playerIn.getUniqueID());
    this.sendPacketToAllPlayers(
        new S38PacketPlayerListItem(
            S38PacketPlayerListItem.Action.REMOVE_PLAYER, new EntityPlayerMP[] {playerIn}));
  }