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();