This could lead to some odd things like someone being killed by a feather because the killer swapped away from their bow before the arrow landed.  I think the weapon will need special-casing based on the type of projectile.  It's also the kind of thing that's going to change soon, both in the minecraft codebase and in logblock...