当前位置: 首页 > 知识库问答 >
问题:

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

郜杰
2023-03-14

我知道你可以得到损坏的原因

event.getCause() == DamageCause.ENTITY_ATTACK

在实体损坏事件中,但是我还没有找到返回造成损坏的实体的方法。我需要找出这一点,这样我就可以检查玩家的库存中是否有某个物品。

共有2个答案

沈成天
2023-03-14

使用EntityDamageByEntityEvent并将损坏者强制为玩家

柳正志
2023-03-14

要完成您想要的任务,您应该使用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;
    }
}
 类似资料:
  • 我正在制作一个本地比赛的MMORPG游戏,我已经开始在服务器上工作,我遇到的问题是,我想要一种方法来检测每个玩家看到的其他玩家,这样我就可以将他们周围玩家的信息发送给特定的玩家。 首先,我想到了将一个2d圆形对象附加到玩家对象上,并对数据结构中的每个玩家进行碰撞检查,但这将非常耗费性能,有合适的算法吗?请帮帮我!

  • 问题是: 所以我在制作这个2D平台游戏时遇到了一个问题。当玩家跳到一个平台上并离开它时,重力不会影响它,它不会掉下来,直到你再次按下跳跃键,就好像它认为它仍然在地面上,直到你更新他。我已经把问题缩小到重力或碰撞,但找不到问题。有人能帮忙吗?我在下面附上代码。 代码:

  • 我正在尝试查看玩家的库存中是否有以下物品,如果有,我想移除这些物品并向他们发送消息,说该物品已被移除,但我不知道如何做到这一点,这就是我目前拥有的: 我在.contains(bannedItems,1))行上收到一个错误。 谢谢你的帮助!

  • 我正在为我正在构建的游戏建立一个高分体系。我认为,或者说希望这是一个容易回答的问题。我需要得到球员对其他球员的“排名”。假设有3名球员,你的分数是最低的。所以你的排名是#3。我如何在SQL中获得它?我想我使用了COUNT,但我不确定如何遍历每一行来找到我的球员的分数。我知道我将按订购。 这是我的基本表: 我需要按Board_Name、难度进行筛选,因为每个棋盘有3个难度,玩家可以在每个棋盘上按3种

  • 我让敌人随机移动并看着玩家,现在我想让敌人射击玩家,我不知道为什么,但射击完全随机,正如你在下面的gif中看到的(你按左ctrl射击)。 无论如何,这是玩家类: 这是我的敌人类: 这是我的子弹课: 如果你想测试代码,我已经删除了不必要的东西:< br > https://pastebin.com/HT93hUzt 您可以在此处下载替换图像来测试代码(记得更改图像加载字符串!): https://w

  • 本篇教程,我们将介绍 Cocos Creator 的全局系统事件。 全局系统事件是指与节点树不相关的各种全局事件,由 cc.systemEvent 来统一派发,目前支持了以下几种事件: 键盘事件 设备重力传感事件 除此之外,鼠标事件与触摸事件请参考 节点系统事件 注意:目前已经不建议直接使用 cc.eventManager 来注册任何事件,cc.eventManager 的用法也不保证持续性,有可