我知道您可以通过
获得损害原因event.getCause() == DamageCause.ENTITY_ATTACK
在实体损坏事件中,但我还没有找到一种方法来返回造成损害的实体。我需要找到这个,以便我可以检查玩家是否在他们的库存中有某个项目。
答案 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
并将伤害者投射到玩家