假的混.乱
本帖最后由 假的混.乱 于 2020-2-1 22:18 编辑

如题,一直没找到监听的接口

轻光233
ProjectileLaunchEvent
箭矢的接口是Arrow,在org.bukkit.entity包内
它是Projectile的子接口,Projectile是Entity的子接口
所以可以通过getLocation()获取这个箭矢的当前位置

假的混.乱
轻光233 发表于 2020-1-24 09:21
ProjectileLaunchEvent
箭矢的接口是Arrow,在org.bukkit.entity包内
它是Projectile的子接口,Projectile ...

    public void onBlockBreak(ProjectileLaunchEvent event) {
        //Block block = event.getBlock();
        System.out.println(event.getEntity().getLocation());
我写成这样子,貌似只能获取到玩家的位置

轻光233
假的混.乱 发表于 2020-1-24 15:39
public void onBlockBreak(ProjectileLaunchEvent event) {
        //Block block = event.getBlock ...

看你方法的名字貌似和这个事件没有关系
ProjectileLaunchEvent是抛射物射出的事件,你再好好检查一下

生日12578
本帖最后由 生日12578 于 2020-1-26 15:54 编辑
假的混.乱 发表于 2020-1-24 15:39
public void onBlockBreak(ProjectileLaunchEvent event) {
        //Block block = event.getBlock ...

获取到的的确是箭的位置,只是发射的时候就是近乎在玩家的位置可以通过getEntity()获得到Projectile 对象。之后再判断位置


如果只是想要判断箭射中的位置或者说获得射中的方块或者玩家
请使用ProjectileHitEvent事件
https://bukkit.windit.net/javadoc/org/bukkit/event/entity/ProjectileHitEvent.html