How to see if player shot animal?

Discussion in 'Plugin Development' started by Lolmewn, Sep 8, 2011.

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

    Lolmewn

    Got this code:
    Code:
    if(c.equals(DamageCause.PROJECTILE)){
                        if(m.equals(Material.BOW)){
                            CPU.addXP(p, "Archery");
                            return;
                        }
                    }
    c is the damagecause, and m is the material the player is holding.
    It simply doesn't work. Is there something I did wrong?
     
  2. Offline

    nisovin

    It would be helpful to see more of your code.
     
  3. Offline

    Lolmewn

    Here ya go:
    Code:
    public void onEntityDamage(EntityDamageEvent event){
            DamageCause c = event.getCause();
            Entity e = event.getEntity();
            if(e instanceof Player){
                switch(c){
                case FALL:
                    int damage = event.getDamage();
                    if(event.isCancelled()){
                        return;
                    }
                    CPU.addXP((Player)e, "Acrobatics", damage);
                    return;
                case DROWNING:
                    CPU.addXP((Player)e, "swimming");
                    return;
                }
            }
            if(event instanceof EntityDamageByEntityEvent){
                Entity att = ((EntityDamageByEntityEvent)event).getDamager();
                if(att instanceof Player){
                    Player p = (Player)att;
                    Material m = p.getItemInHand().getType();
                    if(m.equals(Material.WOOD_SWORD) || m.equals(Material.IRON_SWORD) || m.equals(Material.STONE_SWORD) || m.equals(Material.DIAMOND_SWORD)){
                        CPU.addXP(p, "Swords");
                        return;
                    }
                    if(m.equals(Material.WOOD_AXE) || m.equals(Material.IRON_AXE) || m.equals(Material.STONE_AXE) || m.equals(Material.DIAMOND_AXE)){
                        CPU.addXP(p, "Axes");
                        return;
                    }
                    if(c.equals(DamageCause.PROJECTILE)){
                        if(m.equals(Material.BOW)){
                            CPU.addXP(p, "Archery");
                            return;
                        }
                    }
                    if(p.getItemInHand().getType() == Material.AIR){
                        CPU.addXP(p, "unarmed");
                        return;
                    }
                }
            }
        }/code]
    
    The rest of the skills do work.
     
  4. Offline

    Slash1987

    use the entityListener,
    Code:
    public void onEntityDamage(EntityDamageEvent e){
        if(e instanceof EntityDamageByEntityEvent){
            EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) e;
            if(event.getDamager() instanceof Arrow){
                //check if event.getEntity() is an animal
                //check if ((Arrow)event.getDamager()).getShooter() is a Player
                // do what you need
     
  5. Offline

    Lolmewn

    thnx a lot!
     
  6. Offline

    Slash1987

    you're welcome.
    I've got stuck with arrow event for my plugin and now i'm a bit experienced with this kind of stuff
     
Thread Status:
Not open for further replies.

Share This Page