Bukkit 1.11.2获得对其他玩家造成伤害的玩家

时间:2017-01-05 22:47:00

标签: java minecraft bukkit

我知道您可以通过

获得损害原因
event.getCause() == DamageCause.ENTITY_ATTACK

在实体损坏事件中,但我还没有找到一种方法来返回造成损害的实体。我需要找到这个,以便我可以检查玩家是否在他们的库存中有某个项目。

2 个答案:

答案 0 :(得分:2)

要完成您想要的任务,您应该使用 EntityDamageByEntityEvent

基本上,每当某个实体被另一个实体损坏,并且玩家就是实体时,它就会触发事件。

现在,事件处理可以这样做:

@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent e) {
Entity damager = e.getDamager();
Entity damageTaker = e.getEntity();

if (damageTaker instanceof Player) {
    //DamageTaker is a Player
    Player taker = (Player) damageTaker;
    if (damager instanceof Player) {
        //Damage Causer is also a player
        Player damagerPlayer = (Player) damager;
    }
}

答案 1 :(得分:0)

使用EntityDamageByEntityEvent并将伤害者投射到玩家