Java 类org.bukkit.entity.Arrow 实例源码

项目:SuperiorCraft    文件:LongRangeWeapon.java   
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent e) {
    if ((e.getDamager() instanceof Arrow) && (((Arrow) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) {
        e.setDamage(e.getDamage() + damage);
        if (effect != null) {

            ((LivingEntity) e.getEntity()).addPotionEffect(effect);
        }
    }
    if ((e.getDamager() instanceof Fireball) && (((Fireball) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) {
        e.setDamage(e.getDamage() + damage);
    }
    if ((e.getDamager() instanceof Snowball) && (((Snowball) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) {
        e.setDamage(e.getDamage() + damage);
    }

}
项目:ProjectAres    文件:ProjectileModule.java   
@Override
public @Nullable ProjectileModule parse(MapModuleContext context, Logger logger, Document doc) throws InvalidXMLException {
    final ItemParser itemParser = context.needModule(ItemParser.class);
    FilterParser filterParser = context.needModule(FilterParser.class);

    for(Element projectileElement : XMLUtils.flattenElements(doc.getRootElement(), "projectiles", "projectile")) {
        String name = projectileElement.getAttributeValue("name");
        Double damage = XMLUtils.parseNumber(projectileElement.getAttribute("damage"), Double.class, (Double) null);
        double velocity = XMLUtils.parseNumber(Node.fromChildOrAttr(projectileElement, "velocity"), Double.class, 1.0);
        ClickAction clickAction = XMLUtils.parseEnum(Node.fromAttr(projectileElement, "click"), ClickAction.class, "click action", ClickAction.BOTH);
        Class<? extends Entity> entity = XMLUtils.parseEntityTypeAttribute(projectileElement, "projectile", Arrow.class);
        List<PotionEffect> potionKit = itemParser.parsePotionEffects(projectileElement);
        Filter destroyFilter = filterParser.parseOptionalProperty(projectileElement, "destroy-filter").orElse(null);
        Duration coolDown = XMLUtils.parseDuration(projectileElement.getAttribute("cooldown"));
        boolean throwable = XMLUtils.parseBoolean(projectileElement.getAttribute("throwable"), true);

        context.features().define(projectileElement, new ProjectileDefinitionImpl(name, damage, velocity, clickAction, entity, potionKit, destroyFilter, coolDown, throwable));
    }

    return null;
}
项目:libtrails    文件:BasicExample.java   
@EventHandler
public void onBowShot(EntityShootBowEvent e) {
    if (e.getEntity() instanceof Player &&
            e.getProjectile() instanceof Arrow) {
        Bukkit.getScheduler().runTaskLater(this, () -> {
            if (!e.getProjectile().isDead()) {
                EntityTrail t = new EntityTrail(this, e.getProjectile(),
                        new ScatteringSupplier(particles,
                                new Vector3(2.0f, 1.0f, 2.0f),
                                Vector3.ORIGIN, 5, 20, 1)
                        , 1);

                trails.put(e.getProjectile(), t);
                t.begin();
            }
        }, 5L);
    }
}
项目:libtrails    文件:ColorfulExample.java   
@EventHandler
public void onBowShot(EntityShootBowEvent e) {
    if (e.getEntity() instanceof Player &&
            e.getProjectile() instanceof Arrow) {
        Bukkit.getScheduler().runTaskLater(this, () -> {
            if (!e.getProjectile().isDead()) {
                EntityTrail t = new EntityTrail(this, e.getProjectile(),
                        new CircumferenceSupplier(particle, 1.2f, 0.9f, 0.0f, 1)
                        .rotateY(tick -> tick * (2.0f * (float) Math.PI / 20))
                        , 1);
                trails.put(e.getProjectile(), t);
                t.begin();
            }
        }, 5L);
    }
}
项目:SurvivalAPI    文件:SwitcherooModule.java   
/**
 * Switch players on arrow hit
 *
 * @param event Event instance
 */
@EventHandler(priority = EventPriority.LOWEST)
public void onDamage(EntityDamageByEntityEvent event)
{
    if (!event.isCancelled() && event.getDamager() instanceof Arrow && event.getEntity() instanceof Player)
    {
        ProjectileSource source = ((Arrow)event.getDamager()).getShooter();

        if (source == null || !(source instanceof Player))
            return;

        Player player = (Player)source;
        Location tmp = player.getLocation();

        player.teleport(event.getEntity());
        event.getEntity().teleport(tmp);
    }
}
项目:StaffPlus    文件:EntityDamageByEntity.java   
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onDamage(EntityDamageByEntityEvent event)
{
    Player player = null;

    if(!(event.getDamager() instanceof Player))
    {
        if(event.getDamager() instanceof Arrow)
        {
            Arrow arrow = (Arrow) event.getDamager();

            if(arrow.getShooter() instanceof Player)
            {
                player = (Player) arrow.getShooter();
            }
        }else return;
    }else player = (Player) event.getDamager();

    if(player != null && (userManager.get(player.getUniqueId()).isFrozen() || (!options.modeDamage && modeCoordinator.isInMode(player.getUniqueId()))))
    {
        event.setCancelled(true);
    }
}
项目:CommandRank    文件:PlayerListener.java   
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
    if ((event.getEntity() instanceof Player)) {
        if ((event.getDamager() instanceof Player)) {
            playerAttacksPlayer((Player) event.getEntity(),
                    (Player) event.getDamager());
            return;
        }
        if ((event.getDamager() instanceof Arrow)) {
            Arrow a = (Arrow) event.getDamager();
            if ((a.getShooter() instanceof Player)) {
                playerAttacksPlayer((Player) event.getEntity(),
                        (Player) a.getShooter());
                return;
            }
        }
        this.n = null;
    }
}
项目:BukkitOldCombatMechanics    文件:ModuleDisableBowBoost.java   
@EventHandler(priority = EventPriority.HIGHEST)
public void onProjectileHit(EntityDamageByEntityEvent e){
    Entity entity = e.getEntity();
    Entity damager = e.getDamager();
    if(entity != null && entity instanceof Player && damager.getType().equals(EntityType.ARROW)){
        Player player = (Player) entity;
        if(isEnabled(player.getWorld())){
            ProjectileSource shooter = ((Arrow) damager).getShooter();
            if(shooter instanceof Player){
                Player shootingPlayer = (Player) shooter;
                if(player.getUniqueId().equals(shootingPlayer.getUniqueId())){
                    e.setCancelled(true);
                    debug("We cancelled your bow boost", player);
                }
            }
        }
    }
}
项目:BiteSkywars    文件:PlayerListener.java   
@EventHandler
public void onShotArrow(EntityShootBowEvent event)
{

 if(event.getEntity() instanceof Player){
     Player p = (Player)event.getEntity();
     if(event.getProjectile() instanceof Arrow){
         Arena a = am.getArena(p);
         if(a!=null){
             if(a.isGame()){
                 SPlayer player = SPlayer.getDPlayer(p);
                 player.addShots(1);
             }
         }
     }
 }

}
项目:SuperiorCraft    文件:LongRangeWeapon.java   
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent e) {
    if ((e.getDamager() instanceof Arrow) && (((Arrow) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) {
        e.setDamage(e.getDamage() + damage);
        if (effect != null) {

            ((LivingEntity) e.getEntity()).addPotionEffect(effect);
        }
    }
    if ((e.getDamager() instanceof Fireball) && (((Fireball) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) {
        e.setDamage(e.getDamage() + damage);
    }
    if ((e.getDamager() instanceof Snowball) && (((Snowball) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) {
        e.setDamage(e.getDamage() + damage);
    }

}
项目:world-of-icerealm    文件:FindWeaknessPerk.java   
@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerShoot(EntityDamageByEntityEvent evt) {

    Player damager = null;

    if (evt.getDamager() instanceof Arrow) {
        Arrow arrow = (Arrow)evt.getDamager();

        if (arrow.getShooter() instanceof Player) {
            damager = (Player)arrow.getShooter();
        }
    } else if (evt.getDamager() instanceof Player) {
        damager = (Player)evt.getDamager();
    }

    if (damager != null && perkService.playerHasPerk(damager, ArcherTree.FindWeaknessId)) {
        if (evt.getEntity() instanceof LivingEntity) {
            LivingEntity le = (LivingEntity)evt.getEntity();                    
            le.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 5*20, 1));
        }
    }
}
项目:EasySetSpawn    文件:BlockCombat.java   
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent e) {
    if(!((e.getEntity() instanceof Player) && Main.getConfiguration().getBoolean("disable-spawn-command-in-pvp.enabled")))
        return;

    final Player p = (Player) e.getEntity();

    if(e.getDamager() instanceof Player) {
        pvp(p);
        pvp((Player) e.getDamager());
    }
    else if((e.getDamager() instanceof Arrow) && (((Arrow) e.getDamager()).getShooter() instanceof Player)) {
        pvp(p);
        pvp((Player) ((Arrow) e.getDamager()).getShooter());
    }
}
项目:Breakpoint    文件:PVPListener.java   
private void hitByArrow(EntityDamageByEntityEvent event, BPPlayer bpDamager, Player damager, BPPlayer bpVictim, Player victim)
{
    Arrow arrow = (Arrow) event.getDamager();
    GameProperties damagerProps = bpDamager.getGameProperties();
    CharacterType ct = damagerProps.getCharacterType();
    if(ct == CharacterType.ARCHER)
    {
        Location damagerLocation = damager.getLocation();
        Location victimLocation = victim.getLocation();
        if(AbilityManager.isHeadshot(damagerLocation, victimLocation, arrow))
        {
            String displayName = bpVictim.getPVPName();
            event.setDamage(event.getDamage() * 2);
            AbilityManager.playHeadshotEffect(victim);
            damager.sendMessage(MessageType.PVP_HEADSHOT.getTranslation().getValue(displayName));
        }
    }
}
项目:Janitor    文件:FastBow.java   
@EventHandler(ignoreCancelled=1, priority=EventPriority.MONITOR)
public void onShoot(ProjectileLaunchEvent e) {
    Player player;
    Arrow arrow;
    if (e.getEntity() instanceof Arrow && (arrow = (Arrow)e.getEntity()).getShooter() != null && arrow.getShooter() instanceof Player && this.bowPull.containsKey((player = (Player)arrow.getShooter()).getUniqueId())) {
        Long time = System.currentTimeMillis() - this.bowPull.get(player.getUniqueId());
        double power = arrow.getVelocity().length();
        Long timeLimit = 300;
        int ping = this.getJanitor().lag.getPing(player);
        if (ping > 400) {
            timeLimit = 150;
        }
        if (power > 2.5 && time < timeLimit) {
            this.getJanitor().logCheat(this, player, null, new String[0]);
        }
    }
}
项目:CraftPlugins    文件:Blockode.java   
@EventHandler(priority = EventPriority.NORMAL,ignoreCancelled = true)//确认不会把自己射中
public void OnEntityDamageByEntity(EntityDamageByEntityEvent e){
    //System.out.print("监听到了被射中事件:\ndamager:"+e.getDamager().getType().toString()+
        //          "\n entityType:"+e.getEntityType().toString()+
            //      "\n entity:"+e.getEntity());
    if (e.getDamager() != null//找得到伤害者
            && e.getDamager().getType() == EntityType.ARROW//是箭
            && ((Arrow) e.getDamager()).getShooter() instanceof Player//射击者是玩家
            && e.getEntityType() == EntityType.PLAYER //被击中者是玩家
            && isInList((Player)((Arrow) e.getDamager()).getShooter())//发出者在列表中
            && isInList((Player)e.getEntity())//被击中者在列表中
            && ((Arrow) e.getDamager()).getShooter() == e.getEntity()//是自己发出的
            ) {
        //e.getEntity().setVelocity(e.getDamager().getVelocity());
        //System.out.print("监听到了被射中事件2");
        ((Player)e.getEntity()).sendMessage(ChatColor.RED+"你已达到最大射程,为了免得你摔死,你正在降落");
        e.setCancelled(true);
    }
}
项目:CraftPlugins    文件:Blockode.java   
@EventHandler(priority = EventPriority.NORMAL,ignoreCancelled = true)//确认不会把自己射中
public void OnEntityDamageByEntity(EntityDamageByEntityEvent e){
    //System.out.print("监听到了被射中事件:\ndamager:"+e.getDamager().getType().toString()+
        //          "\n entityType:"+e.getEntityType().toString()+
            //      "\n entity:"+e.getEntity());
    if (e.getDamager() != null//找得到伤害者
            && e.getDamager().getType() == EntityType.ARROW//是箭
            && ((Arrow) e.getDamager()).getShooter() instanceof Player//射击者是玩家
            && e.getEntityType() == EntityType.PLAYER //被击中者是玩家
            && isInList((Player)((Arrow) e.getDamager()).getShooter())//发出者在列表中
            && isInList((Player)e.getEntity())//被击中者在列表中
            && ((Arrow) e.getDamager()).getShooter() == e.getEntity()//是自己发出的
            ) {
        //e.getEntity().setVelocity(e.getDamager().getVelocity());
        //System.out.print("监听到了被射中事件2");
        ((Player)e.getEntity()).sendMessage(ChatColor.RED+"你已达到最大射程,为了免得你摔死,你正在降落");
        e.setCancelled(true);
    }
}
项目:ExilePearl    文件:CoreDamageLoggerTest.java   
@SuppressWarnings("deprecation")
@Test
public void testArrowDamage() {
    dut.start();

    List<Player> damagers = dut.getSortedDamagers(player);
    assertEquals(0, damagers.size());

    Arrow arrow = mock(Arrow.class);

    EntityDamageByEntityEvent damageEvent = new EntityDamageByEntityEvent(arrow, player, null, 5);
    dut.onEntityDamageByEntity(damageEvent);
    damagers = dut.getSortedDamagers(player);
    assertEquals(0, damagers.size());

    when(arrow.getShooter()).thenReturn(d1);
    dut.onEntityDamageByEntity(damageEvent);
    damagers = dut.getSortedDamagers(player);
    assertEquals(1, damagers.size());
    assertEquals(d1, damagers.get(0));
}
项目:BiteSkywars    文件:PlayerListener.java   
@EventHandler
public void onShotArrow(EntityShootBowEvent event)
{

 if(event.getEntity() instanceof Player){
     Player p = (Player)event.getEntity();
     if(event.getProjectile() instanceof Arrow){
         Arena a = am.getArena(p);
         if(a!=null){
             if(a.isGame()){
                 SPlayer player = SPlayer.getDPlayer(p);
                 player.addShots(1);
             }
         }
     }
 }

}
项目:Breakpoint    文件:PVPListener.java   
private void hitByArrow(EntityDamageByEntityEvent event, BPPlayer bpDamager, Player damager, BPPlayer bpVictim, Player victim)
{
    Arrow arrow = (Arrow) event.getDamager();
    GameProperties damagerProps = bpDamager.getGameProperties();
    CharacterType ct = damagerProps.getCharacterType();
    if(ct == CharacterType.ARCHER)
    {
        Location damagerLocation = damager.getLocation();
        Location victimLocation = victim.getLocation();
        if(AbilityManager.isHeadshot(damagerLocation, victimLocation, arrow))
        {
            String displayName = bpVictim.getPVPName();
            event.setDamage(event.getDamage() * 2);
            AbilityManager.playHeadshotEffect(victim);
            damager.sendMessage(MessageType.PVP_HEADSHOT.getTranslation().getValue(displayName));
        }
    }
}
项目:defend-the-village    文件:Main.java   
@EventHandler(priority = EventPriority.HIGHEST)
public void onDamage(EntityDamageByEntityEvent ev) {
    if ((ev.getDamager() instanceof Player)) {
        Player pl = (Player)ev.getDamager();

        // Is in game?
        if (this.am.isInGame(pl)) {
            if (((ev.getEntity() instanceof Villager)) || ((ev.getEntity() instanceof Player))) {
                // Cancel damage
                ev.setCancelled(true);
            }

            for (Arena a : this.am.arenas) {
                if (a.deadPlayers.contains(pl.getName())) {
                    // Avoid damage by dead players
                    ev.setCancelled(true);
                }
            }
        }
    }
    else if (ev.getDamager() instanceof Arrow){ // To avoid damage by arrow
        if (((ev.getEntity() instanceof Villager)) || ((ev.getEntity() instanceof Player))) {
            ev.setCancelled(true);
        }
       }
}
项目:civcraft    文件:MobComponentDefense.java   
@Override
public void onDefense(EntityDamageByEntityEvent event) {
    double damage = event.getDamage();

    damage -= this.defense;
    if (damage < 0.5) {
        damage = 0.0;

        Player player = null;
        if (event.getDamager() instanceof Arrow) {
            Arrow arrow = (Arrow)event.getDamager();
            if (arrow.getShooter() instanceof Player) {
                player = (Player)arrow.getShooter();
            }
        } else if (event.getDamager() instanceof Player){
            player = (Player)event.getDamager();
        }

        if (player != null) {
            CivMessage.send(player, CivColor.LightGray+"Our attack was ineffective");
        }
    }
    event.setDamage(damage);
}
项目:civcraft    文件:ProjectileArrowComponent.java   
@Override
public void fire(Location turretLoc, Entity targetEntity) {
    if (!buildable.isValid()) {
        return;
    }

    Location playerLoc = targetEntity.getLocation();
    playerLoc.setY(playerLoc.getY()+1); //Target the head instead of feet.

    turretLoc = adjustTurretLocation(turretLoc, playerLoc);
    Vector dir = getVectorBetween(playerLoc, turretLoc).normalize();
    Arrow arrow = buildable.getCorner().getLocation().getWorld().spawnArrow(turretLoc, dir, (float)power, 0.0f);
    arrow.setVelocity(dir.multiply(power));

    if (buildable.getTown().getBuffManager().hasBuff(Buff.FIRE_BOMB)) {
        arrow.setFireTicks(1000);
    }

    CivCache.arrowsFired.put(arrow.getUniqueId(), new ArrowFiredCache(this, targetEntity, arrow));
}
项目:Zephyrus-II    文件:ArrowStormSpell.java   
@Override
public CastResult onCast(User user, int power, String[] args) {
    final Player player = user.getPlayer();
    final int amount = this.amount * power;
    Bukkit.getScheduler().runTaskTimer(Zephyrus.getPlugin(), new Runnable() {
        int shots = amount;

        @Override
        public void run() {
            if (shots > 0 && player.isOnline()) {
                player.launchProjectile(Arrow.class)
                        .setMetadata("ignore_pickup", new FixedMetadataValue(Zephyrus.getPlugin(), true));
                shots--;
            }
        }
    }, 1, 1);
    return CastResult.SUCCESS;
}
项目:UltimateSurvivalGames    文件:Reset.java   
public void resetEntities(final String chunk) {
    Bukkit.getScheduler().callSyncMethod(SurvivalGames.instance, new Callable<Void>() {
        @Override
        public Void call() {
            String[] split = chunk.split(",");
            Chunk c = world.getChunkAt(Integer.parseInt(split[0]), Integer.parseInt(split[1]));
            boolean l = c.isLoaded();
            if(!l)
                c.load();

            for(Entity e : c.getEntities()) {
                if(e instanceof Item || e instanceof LivingEntity || e instanceof Arrow) {
                    e.remove();
                }
            }

            if(!l)
                c.unload();

            return null;
        }
    });
}
项目:StarQuestCode    文件:SQSpace.java   
@EventHandler
public void arrowDamager(EntityDamageByEntityEvent e) {

    // Making sure the entity that did the damage was an arrow
    if ((e.getDamager() instanceof Arrow) && (e.getEntity() instanceof Player)) {
        final Entity arrow = e.getDamager();
        final Player p = (Player) e.getEntity();
        // Sneaking changes height of the player's head
        final double headHeight = (p.isSneaking()) ? 1.46 : 1.62;

        if (arrow.getLocation().getY() > (p.getLocation().getY() + headHeight)) {
            // Replacing their pumpkin with air
            if (p.getInventory().getHelmet().getType() == Material.PUMPKIN) {
                p.getInventory().setHelmet(new ItemStack(Material.AIR));
                // Refunding them the jack o lantern
                if (p.getInventory().firstEmpty() > -1) {
                    p.getInventory().addItem(new ItemStack(Material.JACK_O_LANTERN, 1));
                } else {
                    p.getWorld().dropItem(p.getLocation(), new ItemStack(Material.JACK_O_LANTERN, 1));
                }
                ((Player) ((Arrow) arrow).getShooter()).sendMessage(ChatColor.RED + "Headshot!");
            }
        }
    }
}
项目:PopulationDensity    文件:EntityEventHandler.java   
@EventHandler(ignoreCancelled = true)
public void onEntityDamage(EntityDamageEvent event) {
    if (!(event instanceof EntityDamageByEntityEvent))
        return;

    EntityDamageByEntityEvent subEvent = (EntityDamageByEntityEvent) event;

    Player attacker = null;
    Entity damageSource = subEvent.getDamager();
    if (damageSource instanceof Player) {
        attacker = (Player) damageSource;
    } else if (damageSource instanceof Arrow || damageSource instanceof ThrownPotion) {
        Projectile proj = (Projectile) damageSource;
        if (proj.getShooter() instanceof Player)
            attacker = (Player) proj.getShooter();
    }

    if (attacker != null)
        PlayerHelper.resetIdleTimer(attacker);
}
项目:McMMOPlus    文件:EntityListener.java   
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityShootBow(EntityShootBowEvent event) {
    Entity projectile = event.getProjectile();

    if (!(projectile instanceof Arrow)) {
        return;
    }

    ItemStack bow = event.getBow();

    if (bow != null && bow.containsEnchantment(Enchantment.ARROW_INFINITE)) {
        projectile.setMetadata(mcMMO.infiniteArrowKey, mcMMO.metadataValue);
    }

    projectile.setMetadata(mcMMO.bowForceKey, new FixedMetadataValue(plugin, Math.min(event.getForce() * AdvancedConfig.getInstance().getForceMultiplier(), 1.0)));
    projectile.setMetadata(mcMMO.arrowDistanceKey, new FixedMetadataValue(plugin, projectile.getLocation()));
}
项目:ce    文件:Lifesteal.java   
@Override
public void effect(Event e, ItemStack item, int level) {
    EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) e;
    Player damager = null;

    if(event.getDamager() instanceof Player)
        damager = (Player) event.getDamager();
    else
        damager = (Player) ((Arrow) event.getDamager()).getShooter();

    if(damager.getGameMode().equals(GameMode.CREATIVE))
        return;

    double newHeal = ((Damageable) damager).getHealth() + heal + level;

    if(newHeal < ((Damageable) damager).getMaxHealth())
        damager.setHealth(newHeal);
    else
        damager.setHealth(((Damageable) damager).getMaxHealth());

    EffectManager.playSound(damager.getLocation(), "ENTITY_EXPERIENCE_ORB_PICKUP", 0.3f, 1f);


}
项目:ce    文件:CEListener.java   
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void EntityDamageByEntityEvent(EntityDamageByEntityEvent e) {

    Entity damager = e.getDamager();
    Entity damaged = e.getEntity();


    // Block self damaging (Enderpearls cause weird behavior)
    if (damager.getUniqueId().equals(damaged.getUniqueId()))
        return;

    if (damaged instanceof Player)
        CEventHandler.handleEvent((Player) damaged, e, damageTaken);

    if (damager instanceof Player)
        CEventHandler.handleEvent((Player) damager, e, damageGiven);
    else if (damager instanceof Arrow)
        if (damager.hasMetadata("ce.bow.item") || damager.hasMetadata("ce.bow.enchantment"))
            CEventHandler.handleBows((Player) ((Projectile) damager).getShooter(), e);

}
项目:Wayward    文件:PoisonArrowSkill.java   
@Override
public boolean use(Player player) {
    boolean containsBow = false;
    for (ItemStack item : player.getInventory().getContents()) {
        if (item != null) {
            if (item.getType() == Material.BOW) {
                containsBow = true;
                break;
            }
        }
    }
    if (containsBow) {
        if (player.getInventory().containsAtLeast(new ItemStack(Material.ARROW), 1) && player.getInventory().containsAtLeast(new ItemStack(Material.FERMENTED_SPIDER_EYE), 1)) {
            Plugin plugin = Bukkit.getServer().getServicesManager().getRegistration(SkillsPlugin.class).getProvider();
            final Arrow arrow = player.launchProjectile(Arrow.class);
            arrow.setMetadata("isPoisonArrow", new FixedMetadataValue(plugin, true));
            player.getInventory().removeItem(new ItemStack(Material.ARROW), new ItemStack(Material.FERMENTED_SPIDER_EYE));
            return true;
        } else {
            player.sendMessage(ChatColor.RED + "You require a fermented spider eye and an arrow to create a poisoned arrow.");
        }
    } else {
        player.sendMessage(ChatColor.RED + "You require a bow to launch a poisoned arrow.");
    }
    return false;
}
项目:Wayward    文件:PowerShotSkill.java   
@Override
public boolean use(Player player) {
    boolean containsBow = false;
    for (ItemStack item : player.getInventory().getContents()) {
        if (item != null) {
            if (item.getType() == Material.BOW) {
                containsBow = true;
                break;
            }
        }
    }
    if (containsBow) {
        if (player.getInventory().containsAtLeast(new ItemStack(Material.ARROW), 1)) {
            Arrow arrow = player.launchProjectile(Arrow.class);
            arrow.setMetadata("isPowerShot", new FixedMetadataValue(plugin, true));
            player.getInventory().removeItem(new ItemStack(Material.ARROW));
            return true;
        } else {
            player.sendMessage(ChatColor.RED + "You require an arrow.");
        }
    } else {
        player.sendMessage(ChatColor.RED + "You require a bow.");
    }
    return false;
}
项目:Wayward    文件:RazorShotSkill.java   
@Override
public boolean use(Player player) {
    boolean containsBow = false;
    for (ItemStack item : player.getInventory().getContents()) {
        if (item != null) {
            if (item.getType() == Material.BOW) {
                containsBow = true;
                break;
            }
        }
    }
    if (containsBow) {
        if (player.getInventory().containsAtLeast(new ItemStack(Material.ARROW), 1)) {
            Arrow arrow = player.launchProjectile(Arrow.class);
            arrow.setMetadata("isRazorShot", new FixedMetadataValue(plugin, true));
            player.getInventory().removeItem(new ItemStack(Material.ARROW));
            return true;
        } else {
            player.sendMessage(ChatColor.RED + "You require an arrow.");
        }
    } else {
        player.sendMessage(ChatColor.RED + "You require a bow.");
    }
    return false;
}
项目:Wayward    文件:ArrowSkill.java   
@Override
public boolean use(Player player) {
    boolean containsBow = false;
    for (ItemStack item : player.getInventory().getContents()) {
        if (item != null) {
            if (item.getType() == Material.BOW) {
                containsBow = true;
                break;
            }
        }
    }
    if (containsBow) {
        if (player.getInventory().containsAtLeast(new ItemStack(Material.ARROW), 1)) {
            player.launchProjectile(Arrow.class);
            player.getInventory().removeItem(new ItemStack(Material.ARROW));
            return true;
        } else {
            player.sendMessage(ChatColor.RED + "You require an arrow.");
        }
    } else {
        player.sendMessage(ChatColor.RED + "You require a bow.");
    }
    return false;
}
项目:Wayward    文件:SnareShotSkill.java   
@Override
public boolean use(Player player) {
    boolean containsBow = false;
    for (ItemStack item : player.getInventory().getContents()) {
        if (item != null) {
            if (item.getType() == Material.BOW) {
                containsBow = true;
                break;
            }
        }
    }
    if (containsBow) {
        if (player.getInventory().containsAtLeast(new ItemStack(Material.ARROW), 1) && player.getInventory().containsAtLeast(new ItemStack(Material.STRING), 1)) {
            Plugin plugin = Bukkit.getServer().getServicesManager().getRegistration(SkillsPlugin.class).getProvider();
            final Arrow arrow = player.launchProjectile(Arrow.class);
            arrow.setMetadata("isSnareShot", new FixedMetadataValue(plugin, true));
            player.getInventory().removeItem(new ItemStack(Material.ARROW), new ItemStack(Material.STRING));
            return true;
        } else {
            player.sendMessage(ChatColor.RED + "You require some string and an arrow to create a snare shot.");
        }
    } else {
        player.sendMessage(ChatColor.RED + "You require a bow to launch a snare shot.");
    }
    return false;
}
项目:tregmine    文件:GrinchListener.java   
@EventHandler
public void onGrinchArrowHitPlayer(EntityDamageByEntityEvent e){
    Entity e1 = e.getEntity();
    Entity d1 = e.getDamager();

    if(e.getEntity().getWorld().getName() != "Christmas"){
        return;
    }

    if(e1 instanceof Player && d1 instanceof Arrow){
        if(((Arrow)d1).getShooter() instanceof Giant){
            Player hurt = (Player) e1;
            hurt.setFireTicks(hurt.getFireTicks() + 20);
        }
    }
}
项目:Headshot    文件:EntityListener.java   
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityShootBow (EntityShootBowEvent event)
  {
    if ( ! (event.getEntity() instanceof Player))
      return;
    if (plugin.getConfig().getBoolean("general.particle-trail")
        && event.getProjectile() instanceof Arrow)
      {
        plugin.addArrow((Arrow) event.getProjectile());
        plugin.updateEffectMaker();
      }
    Player player = (Player) event.getEntity();
    if ( !player.hasPermission("headshot.bypass.reload-time"))
      {
        long cooldown =
            plugin.getConfig().getLong("general.reload-time", 0) * 50;
        if (cooldown == 0)
          return;
        plugin.setCooldown(player, System.currentTimeMillis() + cooldown);
      }
  }
项目:Headshot    文件:ProjectileListener.java   
@EventHandler(priority = EventPriority.MONITOR)
public void onProjectileLaunch (ProjectileLaunchEvent event)
  {
    if ( ! (event.getEntity() instanceof Arrow)
        || ! (event.getEntity().getShooter() instanceof Player))
      return;
    if ( ((Player) event.getEntity().getShooter())
        .hasPermission("headshot"))
      {
        event.getEntity()
            .setMetadata(
                "spawn-location",
                new FixedMetadataValue(plugin, event.getEntity()
                    .getLocation()));
      }
  }
项目:Headshot    文件:Headshot.java   
@Override
public void run ()
  {
    Iterator<Arrow> iter = arrows.iterator();
    while (iter.hasNext())
      {
        Arrow arrow = iter.next();
        if (arrow.isOnGround() || arrow.isDead())
          {
            iter.remove();
            continue;
          }
        arrow.getWorld().playEffect(arrow.getLocation(),
            Effect.MOBSPAWNER_FLAMES, 0, 256);
      }
    updateEffectMaker();
  }
项目:RPG-Items    文件:PowerArrow.java   
@Override
public void rightClick(Player player) {
    long cooldown;
    RPGValue value = RPGValue.get(player, item, "arrow.cooldown");
    if (value == null) {
        cooldown = System.currentTimeMillis() / 50;
        value = new RPGValue(player, item, "arrow.cooldown", cooldown);
    } else {
        cooldown = value.asLong();
    }
    if (cooldown <= System.currentTimeMillis() / 50) {
        value.set(System.currentTimeMillis() / 50 + cooldownTime);
        player.playSound(player.getLocation(), Sound.SHOOT_ARROW, 1.0f, 1.0f);
        Arrow arrow = player.launchProjectile(Arrow.class);
        Events.removeArrows.put(arrow.getEntityId(), (byte) 1);
    } else {
        player.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.cooldown", Locale.getPlayerLocale(player)), ((double) (cooldown - System.currentTimeMillis() / 50)) / 20d));
    }
}
项目:Demigods3    文件:BowOfTria.java   
@EventHandler(priority = EventPriority.HIGH)
private void onEntityShootBow(EntityShootBowEvent event) {
    // Return for disabled world
    if (Zones.inNoDemigodsZone(event.getEntity().getLocation())) return;

    // If they right clicked a block with the ITEM in hand, do stuff
    if (Items.areEqual(event.getBow(), ITEM)) {
        PlayerInventory inventory = null;
        Arrow startArrow = (Arrow) event.getProjectile();
        startArrow.setVelocity(startArrow.getVelocity().multiply(.8));

        if (event.getEntity() instanceof Player) inventory = ((Player) event.getEntity()).getInventory();

        for (int i = 1; i < 3; i++) {
            if (inventory != null) {
                if (!inventory.contains(Material.ARROW, 1)) break;
                inventory.remove(new ItemStack(Material.ARROW, 1));
            }

            Arrow spawnedArrow = (Arrow) event.getEntity().getWorld().spawnEntity(startArrow.getLocation(), EntityType.ARROW);
            spawnedArrow.setShooter(event.getEntity());
            spawnedArrow.setVelocity(startArrow.getVelocity().multiply(.9 / i));
        }
    }
}