Java Bukkit API-在PlayerMoveMent事件中获取LastDamageCause实体

Java Bukkit API-在PlayerMoveMent事件中获取LastDamageCause实体,java,bukkit,Java,Bukkit,所以我想弄清楚当一名玩家到达雷霆战舰的空隙时,如何得到最后的伤害原因。但是,我找不到一种方法来获得损坏器 这是我的事件处理程序 @EventHandler public void on(PlayerMoveEvent event) { Player player = (Player)event.getPlayer(); if (event.getTo().getY() <= 20.0) { Entity damager = (Player) eve

所以我想弄清楚当一名玩家到达雷霆战舰的空隙时,如何得到最后的伤害原因。但是,我找不到一种方法来获得损坏器

这是我的事件处理程序

@EventHandler
public void on(PlayerMoveEvent event)
{
    Player player = (Player)event.getPlayer();

    if (event.getTo().getY() <= 20.0)
    {
        Entity damager = (Player) event.getPlayer().getLastDamageCause().getEntity();

        if(damager instanceof Player)
        {
            if(player.getLastDamageCause().getEntity().equals(damager))
            {
                damager.sendMessage("KILLER WORKING");
                player.sendMessage("WOKRING!!!!");  
            }
        }
    }
}
@EventHandler
(PlayerMoveEvent事件)上的公共无效
{
Player=(Player)event.getPlayer();

如果(event.getTo().getY()您同时收到这两条消息,因为此时播放机和damager都是相同的

getLastDamageCause().getEntity()
获取实体,将其存储到damager对象中。然后检查damager是否等于
getLastDamageCause().getEntity()
,后者将始终返回true

为了解决您的问题,根据下面的说明,“getEntity()返回DamageEvent的主题,而不是damager。要获取damager,您需要检查:

这段代码返回了伤害某个玩家的玩家,我不知道该玩家是谁。但似乎你只需要检查它是否是玩家


顺便说一句,没有必要将
event.getPlayer()
投射到一个播放器中,因为它已经是一个播放器了。

非常感谢,它现在起作用了!!你保护了我的生命:D
if(player.getLastDamageCause() instanceof EntityDamageByEntityEvent)
    Player damager = ((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager();