EntityDamageByEntity help

Discussion in 'Plugin Development' started by MaroHD, Feb 9, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    MaroHD

    Hello Bukkit community
    i have one method here and i wonder why its lagging the server too much
    here's the code
    Code:
       public void onPlayerDamage(EntityDamageByEntityEvent e) {
    
            if (e.getEntity() instanceof Player)
            {
                Player victim = (Player) e.getEntity();
                Player killer = null;
    
                if (ArenaManager.getArena(victim) != null)
                {
                    DeathTypes death = DeathTypes.Melee;
    
    
                    if (e.getDamager() instanceof Player)
                        killer = (Player) e.getDamager();
    
                    else if (e.getDamager() instanceof Arrow)
                    {
                        victim = (Player) e.getEntity();
                        Arrow arrow = (Arrow) e.getDamager();
    
                        if (arrow.getShooter() == victim){
                            e.setCancelled(true);
                        }
                        else if (arrow.getShooter() instanceof Player){
                            killer = (Player) arrow.getShooter();
                        victim.setHealth(1);
                        death = DeathTypes.Arrow;
                    }
                    }
                    if (killer instanceof Player)
                    {
                        Arena arena = ArenaManager.getArena(victim);
    
                        if (arena.getGameState() != GameState.Started)
                        {
                            e.setDamage(0);
                            e.setCancelled(true);
                        }
    
                        else
                        {
                            CPlayer cv = CPlayerManager.getCrankedPlayer(victim);
    
                            // If the game type is TDM and both players are on the
                            // same team do no damage
                            if (arena.getGameType() == GameType.TDM && cv.getTeam() ==                CPlayerManager.getCrankedPlayer(killer).getTeam())
                            {
                                e.setDamage(0);
                                e.setCancelled(true);
                            } else
                            {
                                cv.setLastDamager(killer);
    
                                Damageable damag = victim;
                                if (damag.getHealth() - e.getDamage() <= 0)
                                {
    
                                    e.setDamage(0);
                                    Deaths.playerDies(killer, victim, death);
                                }
                            }
    
                        }
                    }
                }
    
            }
        }
    }
    Thank you for the help :)
    (its for OITC)
    Timing
    16.98% 521.17% 10.16 s 260.59 ms 0.0 0.0k DamageEvents::eek:nPlayerDamage(EntityDamageByEntityEvent)
    again 500+% timing
     
Thread Status:
Not open for further replies.

Share This Page