Check if player was hit with rod cast?

Discussion in 'Plugin Development' started by kameronn, Oct 9, 2016.

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

    kameronn

    I've tried using projectileevent, entitydamageevent, entitydamagebyentity event but none of them seem to work ):

    Code:
        @EventHandler(priority = EventPriority.NORMAL)
        public void onProjectileHit(ProjectileHitEvent e, EntityDamageByEntityEvent ev) {
    
            if (e.getEntity().getShooter() instanceof Player) {
                Player damager = (Player) e.getEntity().getShooter();
                Projectile fishingrod = e.getEntity();
                if (ev.getEntity() instanceof Player) {
                    if (ev.getDamager() == fishingrod) {
                        if (damager.getItemInHand().getType().equals(Material.FISHING_ROD)) {
                            Player damaged = (Player) ev.getEntity();
    
                            damaged.setVelocity(new Vector());
    
                            double horMultiplier = 0.60D;
                            double verMultiplier = 10.60D;
                            double sprintMultiplier = damager.isSprinting() ? 0.8D : 0.5D;
                            double kbMultiplier = damager.getItemInHand() == null ? 0.0D
                                    : damager.getItemInHand().getEnchantmentLevel(Enchantment.KNOCKBACK) * 0.2D;
    
                            double airMultiplier = damaged.isOnGround() ? 1.0D : 0.5D;
    
                            Vector knockback = damaged.getLocation().toVector().subtract(damager.getLocation().toVector())
                                    .normalize();
                            knockback.setX((knockback.getX() * sprintMultiplier + kbMultiplier) * horMultiplier);
                            knockback.setY(0.35D * airMultiplier * verMultiplier);
                            knockback.setZ((knockback.getZ() * sprintMultiplier + kbMultiplier) * horMultiplier);
    
                            damaged.setVelocity(knockback);
                       
    
                        }
                    }
                }
            }
        }
     
  2. Offline

    Whoneedspacee

    Projectilehitevent should be all you need.
     
  3. @kameronn You are comparing the memory for a Player and Projectile and then checking if an enum and an enum have the correct object. This will not work, Player != Projectile and compare enums using ==
     
Thread Status:
Not open for further replies.

Share This Page