What is a correct way to pass my own damagesource into entitydamageevent.
public interface ISkillDamageSource extends DamageSource {
ISkill getSkill();
IActiveCharacter getCaster();
}
-
- calling method Entity.damage(double,Cause)
ISkillDamageSource source = ....;
Cause cause = Cause.of(source);
Entity e = ...;
e.damage(damage,cause);
-
Using sponge event factory to create a new event with my damagesource as a cause
Cause cause = Cause.of(source);
SourcePlayer event = SpongeEventFactory.createDamageEntityEventSourcePlayer(damage,cause,);
game.getEventManager().post(event);
if (!event.isCancelled())
event.getTargetEntity().damage(event.getFinalDamage(),cause) -
Something else
Also how can i override(disable) vanilla damagemodifiers such as enchantments (eg sharpness/protections) and stuff like vanilla critical hits or armor damage reduction? I would like to replace some of vanilla calculations with my owns.