spigot的玩家左键使用事件有这个嘛?或者是其他的
本帖最后由 MC_CXX 于 2022-9-25 00:05 编辑
复制代码判断动作类型是否为 Action.LEFT_CLICK_BLOCK 或者 Action.LEFT_CLICK_AIR
- org.bukkit.event.player.PlayerInteractEvent
PlayerInteractEvent这个事件类中的getAction()方法 左键点击空气的值是LEFT_CLICK_AIR
PlayerInteractEvent这个事件可以判断
1792179305 发表于 2022-9-25 00:41
PlayerInteractEvent这个事件类中的getAction()方法 左键点击空气的值是LEFT_CLICK_AIR ...
左键点击怪物呢??
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.");
}
}
希望对您有所帮助 :)