想给一个怪物抗击退除了给附魔还有什么方法?我本来想给怪物被攻击方向一个相反的向量。
但是攻击者的装备有击退效果,所以击退反向的向量不好计算。
那位大佬有更好的办法?
但是攻击者的装备有击退效果,所以击退反向的向量不好计算。
那位大佬有更好的办法?
https://hub.spigotmc.org/javadoc ... ttribute.Attribute-
复制代码
- val entity: LivingEntity
- val attr = entity.getAttribute(Attribute.GENERIC_KNOCKBACK_RESISTANCE)
- val modifier = AttributeModifier(UUID.randomUUID(), "击退抗性", 0.5, AttributeModifier.Operation.ADD_NUMBER)
- attr.addModifier(modifier)
666666666666
Bryan33 发表于 2019-11-12 12:28
https://hub.spigotmc.org/javadoc ... ttribute.Attribute-
大哥。。这个1.8 LivingEntity中没有getAttribute 咋办。。
鸣琴而治86 发表于 2019-11-13 15:23
大哥。。这个1.8 LivingEntity中没有getAttribute 咋办。。
- EntityLiving el = ((CraftLivingEntity)livingEntity).getHandle();
- el.getAttributeInstance(GenericAttributes.c).setValue(0.5);
1.8可以用NMS来实现
大佬们给力
求解!!!!!
KnockbackResistance设成1
本帖最后由 oldkingOK 于 2020-3-12 17:33 编辑
真巧,我刚刚实现了这个功能就找到了这篇问答帖
众所周知,如果一个实体被另一个实体伤害,一定有:
1.伤害 2.击退
如果不需要击退,步骤如下:
1.监听EntityDamageByEntityEvent事件
2.用getEntity()获取受伤害的实体,并判断是不是你指定的实体
3.如果是,取消该事件,并使用LivingEntity.damage(float)伤害这只实体
这样,就把实体伤害---转化成--->插件伤害,插件伤害是没有击退的
看不懂?直接上代码
假如我要给铁傀儡抗击退,代码如下(如有错误,欢迎指正)
复制代码本代码块仅提供逻辑关系,请尽量不要复制粘贴
真巧,我刚刚实现了这个功能就找到了这篇问答帖
众所周知,如果一个实体被另一个实体伤害,一定有:
1.伤害 2.击退
如果不需要击退,步骤如下:
1.监听EntityDamageByEntityEvent事件
2.用getEntity()获取受伤害的实体,并判断是不是你指定的实体
3.如果是,取消该事件,并使用LivingEntity.damage(float)伤害这只实体
这样,就把实体伤害---转化成--->插件伤害,插件伤害是没有击退的
看不懂?直接上代码
假如我要给铁傀儡抗击退,代码如下(如有错误,欢迎指正)
- public class KnockBackEventListener<damageValue> implements Listener {
- @EventHandler
- public void onPlayerDamage(EntityDamageByEntityEvent event){
- //获取受伤的实体
- Entity entity = event.getEntity();
- //判断实体是不是LivingEntity
- if(!(entity instanceof LivingEntity)) {
- Minel4d.INSTANCE.getLogger().info("No LivingEntity?");
- return;
- }
- //强制转换成LivingEntity
- LivingEntity livingEntity = (LivingEntity)entity;
- //获取伤害值
- double damageValue = event.getDamage();
- //判断实体是不是铁傀儡
- if(livingEntity instanceof IronGolem){
- event.setCancelled(true);
- livingEntity.damage(damageValue);
- }
- }
- }