Bir oyuncunun bir if() ifadesinde kılıç mı saldığını kontrol edebilir miyim?10 Bukkit - Bir oyuncunun saldırıya geçip geçmediğini nasıl kontrol edilir
cevap
PlayerInteractEvent öğelerini dinleyebilir ve söz konusu oyuncunun bir kılıç tutup tutmadığını kontrol edebilirsiniz.
Bu örnek 1.9 için kullanılabilir:
if (p.getInventory().getItemInMainHand().getType() == Material.DIAMOND_SWORD)
1.8 için aşağıdaki basitçe kullanabilirsiniz: if (e.getAction() == Action.LEFT_CLICK_AIR && e.getAction() == Action.LEFT_CLICK_BLOCK)
: player.getItemInHand().getType()
Eylem (saldırmak) LeftClickBlock veya LeftClickAir olup olmadığını kontrol etmek emin olun
Oyuncunun bir şeye ne zaman saldırdığını bilmeniz gerekiyorsa, EntityDamageByEntityEvent
'u da kullanabilirsiniz. Bir oyuncu bir elmas kılıç kullanan bir kişi tarafından hasar gördü takdirde
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent event)
{
if (event.getDamager() instanceof Player){
//player is attacking someone
.......
}
}
belirtmek gerekirse
@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!");
}
}
}
oyuncu başka bir elmas kılıç kullanan bir kişi tarafından saldırıya uğradı, bu kontrol ediyorum kullanabilirsiniz kontrol etmek. Eğer birisinin elmas kılıcı olan bir varlığa çarpıp vurmadığını tespit ederseniz, “kurban” kısmını terk edin/kontrol edin.