要求:找到flans mod的伤害事件(EntityDamageByEntityEvent实测无效,EntityDamageEvent无法获取发射者)
要能获取发射者,并且能取消伤害的
不是插件是代码!
要能获取发射者,并且能取消伤害的
不是插件是代码!
- @EventHandler
 
- public void onDamage(EntityDamageByEntityEvent e){
 
-     if(e.getDamager().getType().toString().equalsIgnoreCase("flansmod_bullet")){
 
-         Entity ammo = ((CraftEntity) e.getDamager()).getHandle();
 
-         Player shooter = (Player) ((Entity) ammo.getClass().getDeclaredField("owner").get(ammo)).getBukkitEntity();
 
-     }
 
- }
楼上给的是mod的方法,
然后我的服务器插件是可以通过getdamager拿到发射者的,
建议你换成flanplus。
既然是flan,应该也装有npc吧,npc脚本也是可以获取伤害来源的,演示代码
复制代码
然后我的服务器插件是可以通过getdamager拿到发射者的,
建议你换成flanplus。
既然是flan,应该也装有npc吧,npc脚本也是可以获取伤害来源的,演示代码
- var b = "flansmod";
 
- var b1 = "mcheli";
 
- var ae=event.getSource().getHeldItem().getName();
 
- var c = ae.contains(b);
 
- var c1 = ae.contains(b1);
 
- if((c+"")==("true")){
 
- event.setDamage(0);
 
- }else if((c1+"")==("true")){
 
- event.setDamage(0);
 
- npc.say("我是不会受伤的!");
 
- }