2271925039
spigot的玩家左键使用事件有这个嘛?或者是其他的

while1cry
本帖最后由 MC_CXX 于 2022-9-25 00:05 编辑
  1. org.bukkit.event.player.PlayerInteractEvent
复制代码
判断动作类型是否为 Action.LEFT_CLICK_BLOCK 或者 Action.LEFT_CLICK_AIR

1792179305
PlayerInteractEvent这个事件类中的getAction()方法   左键点击空气的值是LEFT_CLICK_AIR

比巴卜c
PlayerInteractEvent这个事件可以判断

2271925039
1792179305 发表于 2022-9-25 00:41
PlayerInteractEvent这个事件类中的getAction()方法   左键点击空气的值是LEFT_CLICK_AIR ...

左键点击怪物呢??

1792179305
2271925039 发表于 2022-9-25 02:11
左键点击怪物呢??

可以尝试一下EntityDamageByEntityEvent或PlayerInteractEntityEvent

2000000
2271925039 发表于 2022-9-25 02:11
左键点击怪物呢??

你好,我大概看了一下您的需求,接下来我将以我所理解的进行回答

我们可以使用 EntityDamageByEntityEvent 来达到你所想要的效果

思路如下: 首先我们需要知道你所需要监听的左键点击的怪物类型,我将暂时理解为 Zombie (僵尸)
接下来我们需要通过此事件获取 damager 以及 受到攻击的Entity:

        Entity victim = event.getEntity();
        Player damager = (Player) event.getDamager();


当然,在此之前我们首先需要判断 damager 是否为玩家:

        if (!(event.getDamager() instanceof Player)) return;

接下来,我们需要对 victim 进行一个类型判断,以确保它是僵尸,若为真的话,则给 damager 发送一条提示信息:

        if (victim instanceof Zombie) {
            damager.sendMessage("u attacked zombie.");
        }


完成。全部代码如下:

    public void onPlayerAttackZombie(EntityDamageByEntityEvent event) {
        if (!(event.getDamager() instanceof Player)) return;

        Entity victim = event.getEntity();
        Player damager = (Player) event.getDamager();

        if (victim instanceof Zombie) {
            damager.sendMessage("u attacked zombie.");
        }
    }


希望对您有所帮助 :)

第一页 上一页 下一页 最后一页