Java Bukkit-如何检查球员是否在进攻

Java Bukkit-如何检查球员是否在进攻,java,bukkit,Java,Bukkit,如何在if()语句中检查玩家是否挥剑?您可以收听PlayerInteractEvent并检查所述玩家是否持有剑 此示例可用于1.9: if (p.getInventory().getItemInMainHand().getType() == Material.DIAMOND_SWORD) 对于1.8及以下版本,您只需使用:player.getItemInHand().getType() 确保检查操作是LeftClickBlock还是LeftClickAir(攻击): if(e.getActio

如何在if()语句中检查玩家是否挥剑?

您可以收听PlayerInteractEvent并检查所述玩家是否持有剑

此示例可用于1.9:

if (p.getInventory().getItemInMainHand().getType() == Material.DIAMOND_SWORD)
对于1.8及以下版本,您只需使用:
player.getItemInHand().getType()

确保检查操作是LeftClickBlock还是LeftClickAir(攻击):
if(e.getAction()==Action.LEFT\u CLICK\u AIR&e.getAction()==Action.LEFT\u CLICK\u BLOCK)

如果您特别需要知道玩家何时攻击某个东西,您也可以使用
EntityDamageByEntityEvent

@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent event)
{
    if (event.getDamager() instanceof Player){
       //player is attacking someone
       .......
    }
}

要特别检查玩家是否被使用钻石剑的人损坏,您可以使用

       @EventHandler
       public void onEntityDamage(EntityDamageByEntityEvent event) {

        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player) {

         Player attacker = (Player) event.getDamager();

         if (attacker.getInventory().getItemInMainHand().getType() == Material.DIAMOND_SWORD) {

          Player victim = (Player) event.getEntity();
          //Do something
          Bukkit.broadcastMessage(attacker.getName() + " hit " + victim.getName() + " with a diamond sword!");

         }

        }

       }
这将检查玩家是否被其他人使用钻石剑攻击。如果您只想检测是否有人用钻石剑击中某个实体,请留下“受害者”部分/检查