Reach is determined on the client while the player is clicking the mouse, and then appropriate packets are sent based on whatever collisions were detected. Some relevant classes are Minecraft (specifically runTick, which is where everything starts), EntityRenderer (getMouseOver), and PlayerControllerMP, among many others. Looking through those should give you a pretty good idea of what you need to do.
Also, if anyone knows how I would also love help on making something like thaumcraft's crucible
Thanks for your time,
Kaos74