LanAnY
本帖最后由 GhostSkyV9 于 2020-10-20 13:51 编辑

我想要获取以玩家自身为圆心,半径为X(X为自定义数值)的圆,这一范围内的所有玩家?
可以给个思路

天辉胡萝卜
World#getNearbyEntities​(Location location, double x, double y, double z)

先取方盒内实体,然后依次遍历实体判断

LanAnY
本帖最后由 GhostSkyV9 于 2020-10-19 11:07 编辑
疾风暗影 发表于 2020-10-19 10:41
World#getNearbyEntities​(Location location, double x, double y, double z)

先取方盒内实体,然后依次 ...

自定义半径的话,这个double x这参数就是自己定一个是吧还是说我直接double x=player.getLocation().getX();这样就行了?

天辉胡萝卜
GhostSkyV9 发表于 2020-10-19 11:05
自定义半径的话,这个double x这参数就是自己定一个是吧还是说我直接double x=player.getLocation().getX( ...

看文档

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/World.html

LanAnY
疾风暗影 发表于 2020-10-19 11:27
看文档

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/World.html

还有个问题,就是EntityDamageByEntityEvent这个事件中获取自己对当前这个实体造成伤害后,也要获取到其他玩家对当前这个实体造成的伤害,该如何获取?

天辉胡萝卜
GhostSkyV9 发表于 2020-10-19 11:52
还有个问题,就是EntityDamageByEntityEvent这个事件中获取自己对当前这个实体造成伤害后,也要获取到其 ...

同tick下所有EntityDamageByEntityEvent的伤害存表,然后下一tick判断

LanAnY
疾风暗影 发表于 2020-10-19 12:58
同tick下所有EntityDamageByEntityEvent的伤害存表,然后下一tick判断

能具体一点么?

William_Shi
      就是EntityDamageByEntityEvent这个事件中获取自己对当前这个实体造成伤害后,也要获取到其他玩家对当前这个实体造成的伤害,该如何获取?

考虑了一下,你的意思是这个实体的过往伤害记录?可以考虑每次这个实体受到伤害后就直接把这个EntityDamageEvent对象本身进行存储,需要读取的时候就可以直接读取到事件对象了,但是此时对于这个事件对象的修改是不会被应用到服务器的,同时也必须注意,其他插件可以通过LastDamageCause得到这个事件对象,所以如果存储后瞎改很可能导致其他插件的紊乱,因此稳妥做法是每次这个实体受到伤害就记录这次伤害的伤害值到某个集合里面,由于你的问题很抽象我也只能给出抽象的解答。

LanAnY
William_Shi 发表于 2020-10-19 18:57
考虑了一下,你的意思是这个实体的过往伤害记录?可以考虑每次这个实体受到伤害后就直接把这个EntityDam ...

我是想实现一个伤害统计的功能

🍓🔥灵域
GhostSkyV9 发表于 2020-10-19 23:08
我是想实现一个伤害统计的功能

Map<UUID, Double>或者Map<UUID, List<Double>>

LanAnY
子然君 发表于 2020-10-20 07:47
Map或者Map

这有个问题,其中一个玩家每次造成伤害的时候,导致会与其他玩家的伤害显示成一样的

🍓🔥灵域
GhostSkyV9 发表于 2020-10-20 09:08
这有个问题,其中一个玩家每次造成伤害的时候,导致会与其他玩家的伤害显示成一样的 ...

那肯定是你操作Map有问题

LanAnY
子然君 发表于 2020-10-21 06:52
那肯定是你操作Map有问题

我想这个跟map应该没有关系吧?这个事件只能获取到我自己造成的伤害,获取不到别的玩家造成的伤害