2016-04-08 2 views

ответ

1

Вы можете прослушивать PlayerInteractEvent и проверять, держит ли этот игрок меч.

Этот пример может быть использован для 1.9:

if (p.getInventory().getItemInMainHand().getType() == Material.DIAMOND_SWORD) 

Для 1.8 и ниже вы можете просто использовать: player.getItemInHand().getType()

Убедитесь, чтобы проверить, если действие LeftClickBlock или LeftClickAir (Атакующий): if (e.getAction() == Action.LEFT_CLICK_AIR && e.getAction() == Action.LEFT_CLICK_BLOCK)

1

Вы также можете использовать EntityDamageByEntityEvent, если вам нужно знать, когда игрок атакует что-то.

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

Чтобы специально проверить, если игрок был поврежден кем-то, используя алмазный меч, вы можете использовать

 @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!"); 

     } 

     } 

     } 

Это будет проверять, если игрок был атакован кем-либо бриллиантовую шпагу. Если вы хотите обнаружить, что кто-то наносит удар какой-либо сущностью с бриллиантовым мечом, оставьте часть жертвы/проверили.

Смежные вопросы