When hit add an effect

Discussion in 'Plugin Development' started by lionbryce, Jun 4, 2013.

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

    lionbryce

    I'm programming a magic plugin, and i need to make a command that fires an arrow, and what ever that arrow hits (player, or mob) it adds a potion effect here's what i got

    Code:
        List<Integer> arrows = new ArrayList<Integer>();
       
        @EventHandler
        public void Shot(PlayerEvent event){
            Player player = event.getPlayer();
            if (((player.hasLineOfSight(player)))) {
                if (player.getItemInHand().getType().getId() == 261)
                {
                    arrows.add(player.launchProjectile(Arrow.class).getEntityId());
                }
            }
        }
     
        public void onArrowdamage(EntityDamageByEntityEvent eve)
        {
            Entity damager = eve.getDamager();
            Entity entity = eve.getEntity();
           
            if(!(damager instanceof Arrow))
            {
                return;
            }
           
            if(!arrows.contains(damager.getEntityId()))
            {
                return;
            }
           
            if (entity instanceof Entity)
            {
                //(this is where i think the potion effecting would happen)
            }
           
        }
        @EventHandler
        public void onProjectileHit(ProjectileHitEvent e)
        {
            arrows.remove(e.getEntity().getEntityId());
        }
    }
    
     
  2. Offline

    Ultimate_n00b

    Code:java
    1. List<String> players = new ArrayList<String>();
    2.  
    3. @EventHandler
    4. public void onShot(EntityShootBowEvent event){
    5. if(event.getShooter() instanceof Player){
    6. Player player = event.getPlayer();
    7. if (player.getItemInHand().getType().equals(Material.BOW))
    8. {
    9. players.add(player.getName());
    10. }
    11. }
    12. }
    13. }
    14.  
    15. public void onArrowdamage(EntityDamageByEntityEvent eve)
    16. {
    17. if(event.getDamager() instanceof Arrow && (Arrow) event.getDamager().getShooter() instanceof Player){
    18. Player p = (Player) ((Arrow)event.getDamager().getShooter());
    19. if(players.contains(p))
    20. event.getEntity().addPotionEffect(new PotionEffect(PotionEffectType.POISON 10, 10));
    21. }
    22. @EventHandler
    23. public void onProjectileHit(ProjectileHitEvent e)
    24. {
    25. if(event.getShooter() instanceof Player && (Player) players.contains(event.getShooter().getName))
    26. players.remove((Player)event.getShooter().getName));
    27. }
    28. }


    I believe that should work.. untested.
     
  3. Offline

    lionbryce

    umm that had like 30 errors
     
Thread Status:
Not open for further replies.

Share This Page