EntityLivingBase#attackEntityFrom()
или EntityLivingBase#knockBack()
, если это ванильный моб. Если катстомный - просто оверрайдить эти методы. Имхо, хотелось бы способ лучше.Есть пример как подобные атрибуты устанавливать?Поставить атрибут защиты от откидывания на 1.
Да, так.
А если ваще хош убрать, то в ивенте JoinWorld установи)
А как устанавливать смотри в мобах.
//private static final UUID KNOCKBACK_RESISTANCE_ATTRIBUTE_MODIFIER_UUID = UUID.randomUUID();
private static final AttributeModifier KNOCKBACK_RESISTANCE_ATTRIBUTE_MODIFIER = (new AttributeModifier(UUID.randomUUID(), "Knockback Resistance", -0.5D, 2)).setSaved(false);
public void method(DamageSource damageSource, Entity entity) {
final EntityLivingBase livingBase = (EntityLivingBase) entity;
livingBase.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).applyModifier(KNOCKBACK_RESISTANCE_ATTRIBUTE_MODIFIER);
entity.attackEntityFrom(damageSource, this.damage);
livingBase.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).removeModifier(KNOCKBACK_RESISTANCE_ATTRIBUTE_MODIFIER);
}
final IAttributeInstance entityAttribute = livingBase.getEntityAttribute(SharedMonsterAttributes.knockbackResistance);
final double baseValue = entityAttribute.getBaseValue();
entityAttribute.setBaseValue(1.0F);
entity.attackEntityFrom(damageSource, this.damage);
entityAttribute.setBaseValue(baseValue);
Спасибо, всё работает идеально!