gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:35:41 25 4
gpt4 key购买 nike

所以我试图弄清楚当玩家到达《我的世界》中的虚空时如何获得最后的伤害。但是,我找不到获得伤害者的方法。

这是我的事件处理程序

@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!!!!");
}
}
}
}

不知何故,当我(玩家)受损时,它会给出这两条消息。谁能帮我?谢谢!

最佳答案

您会收到两条消息,因为当时玩家和伤害者是同一个人。

您可以从getLastDamageCause().getEntity()获取实体,并将其存储到损坏者对象中。然后检查damager是否等于getLastDamageCause().getEntity(),它总是返回true。

解决你的问题,按照这个topic “getEntity() 返回 DamageEvent 的主体,而不是损坏者。要获取损坏者,您需要检查:”

if(player.getLastDamageCause() instanceof EntityDamageByEntityEvent)
Player damager = ((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager();

该代码返回对我不知道的实体造成伤害的玩家。但看来你只需要检查它是否是一个玩家。

顺便说一句,不需要将 event.getPlayer() 转换为播放器,因为它已经是播放器了。

关于Java Bukkit API - 获取 PlayerMoveMent 事件中的 LastDamageCause 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com