本帖最后由 好大一坨翔哟 于 2022-5-16 15:11 编辑
rt,我想要得到EntityDamageEvent的攻击者而不是被攻击者,
然后就出现了 居然没有获取被攻击者的方式!这种事,
但是呢我发现一个类 EntityDamageByEntityEvent
他可以检测到攻击者,
但是我没办法把这两个放在一个方法里使用,
于是我就开始进行了我那非常sb的行为
一个方法监听两个事件 结果只能监听第一个传进去的事件(大佬们别笑)
复制代码
有木有大佬来解决这个问题啊
只要能同时获取 攻击者和被攻击就ok
检测到攻击者是为了加一个PAPI(小声bb)
解决方案:子类已经继承过父类。。。所以没必要监听两个事件了直接监听EntityDamageByEntityEvent 方法共享的
rt,我想要得到EntityDamageEvent的攻击者而不是被攻击者,
然后就出现了 居然没有获取被攻击者的方式!这种事,
但是呢我发现一个类 EntityDamageByEntityEvent
他可以检测到攻击者,
但是我没办法把这两个放在一个方法里使用,
于是我就开始进行了我那非常sb的行为
一个方法监听两个事件 结果只能监听第一个传进去的事件(大佬们别笑)
- @org.bukkit.event.EventHandler
- public void onEntityDamage(EntityDamageEvent e1, EntityDamageByEntityEvent e2) {
- double damage = e1.getDamage();
- date = new Date();
- Calendar rightNow = Calendar.getInstance();
- if (e2.getDamager() instanceof Player) {
- player = (Player)e2.getDamager();
- Bukkit.getLogger().info(player.getName());
- }
- }
有木有大佬来解决这个问题啊
只要能同时获取 攻击者和被攻击就ok
检测到攻击者是为了加一个PAPI(小声bb)
解决方案:子类已经继承过父类。。。所以没必要监听两个事件了直接监听EntityDamageByEntityEvent 方法共享的
一个函数只能监听一个,哪有一个EventHandler监听两个的道理
直接用EntityDamageByEntityEvent获取攻击者不行吗
直接用EntityDamageByEntityEvent获取攻击者不行吗
美味的曲奇 发表于 2022-5-14 18:04
一个函数只能监听一个,哪有一个EventHandler监听两个的道理
直接用EntityDamageByEntityEvent获取 ...
可是我没办法获得伤害了
应为我要改变伤害值
好大一坨翔哟 发表于 2022-5-14 18:07
可是我没办法获得伤害了
应为我要改变伤害值
EntityDamageByEntityEvent不行吗
它继承了EntityDamageEvent
哪有方法比父类少的道理
美味的曲奇 发表于 2022-5-14 18:16
EntityDamageByEntityEvent不行吗
它继承了EntityDamageEvent
哪有方法比父类少的道理 ...
。。。才发现继承了子类,感谢 问题解决了
你可以参考我这获取攻击玩家的代码,考虑了弓箭等弹射物的情况
复制代码
- @EventHandler(ignoreCancelled = true)
- public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
- Entity damager = event.getDamager();
- Player player = null;
- if (damager instanceof Player)
- player = (Player) damager;
- else if (damager instanceof Projectile) {
- ProjectileSource shooter = ((Projectile) damager).getShooter();
- if (shooter instanceof Player) {
- player = (Player) shooter;
- }
- }
- }