I want to suggest adding a velocity event. The event should function like other events, such as LivingJumpEvent for example. Whenever an entity gets added velocity such as knockback, fishingrod, explosions etc the event will be called. Then you can get the entity from the event, get the velocity, set the velocity and cancel the event to cancel the velocity.