Search in sources :

Example 1 with ProjectileHitEntityEvent

use of me.deecaad.weaponmechanics.weapon.weaponevents.ProjectileHitEntityEvent in project MechanicsMain by WeaponMechanics.

the class RayTraceResult method handleEntityHit.

private boolean handleEntityHit(WeaponProjectile projectile) {
    // Handle worldguard flags
    WorldGuardCompatibility worldGuard = CompatibilityAPI.getWorldGuardCompatibility();
    Location loc = hitLocation.clone().toLocation(projectile.getWorld());
    LivingEntity shooter = projectile.getShooter();
    if (!worldGuard.testFlag(loc, shooter instanceof Player ? (Player) shooter : null, "weapon-damage")) {
        // is cancelled check
        Object obj = worldGuard.getValue(loc, "weapon-damage-message");
        if (obj != null && !obj.toString().isEmpty() && shooter != null) {
            shooter.sendMessage(StringUtil.color(obj.toString()));
        }
        return true;
    }
    boolean backstab = livingEntity.getLocation().getDirection().dot(projectile.getMotion()) > 0.0;
    ProjectileHitEntityEvent hitEntityEvent = new ProjectileHitEntityEvent(projectile, livingEntity, hitLocation.clone(), hitPoint, backstab);
    Bukkit.getPluginManager().callEvent(hitEntityEvent);
    if (hitEntityEvent.isCancelled())
        return true;
    hitPoint = hitEntityEvent.getPoint();
    backstab = hitEntityEvent.isBackStab();
    if (!damageHandler.tryUse(livingEntity, projectile, getConfigurations().getDouble(projectile.getWeaponTitle() + ".Damage.Base_Damage"), hitPoint, backstab)) {
        // Damage was cancelled
        return true;
    }
    Explosion explosion = getConfigurations().getObject(projectile.getWeaponTitle() + ".Explosion", Explosion.class);
    if (explosion != null)
        explosion.handleExplosion(projectile.getShooter(), hitLocation.clone().toLocation(projectile.getWorld()), projectile, ExplosionTrigger.ENTITY);
    return false;
}
Also used : LivingEntity(org.bukkit.entity.LivingEntity) Player(org.bukkit.entity.Player) Explosion(me.deecaad.weaponmechanics.weapon.explode.Explosion) WorldGuardCompatibility(me.deecaad.core.compatibility.worldguard.WorldGuardCompatibility) ProjectileHitEntityEvent(me.deecaad.weaponmechanics.weapon.weaponevents.ProjectileHitEntityEvent) Location(org.bukkit.Location)

Aggregations

WorldGuardCompatibility (me.deecaad.core.compatibility.worldguard.WorldGuardCompatibility)1 Explosion (me.deecaad.weaponmechanics.weapon.explode.Explosion)1 ProjectileHitEntityEvent (me.deecaad.weaponmechanics.weapon.weaponevents.ProjectileHitEntityEvent)1 Location (org.bukkit.Location)1 LivingEntity (org.bukkit.entity.LivingEntity)1 Player (org.bukkit.entity.Player)1