Returning Geoms instead of geomIds would, i think, be the best quick fix, which would probably require a hashmap. I’ve implemented contacts in my project but have not really needed them yet (just testing other joints and bodies for the moment). When I start fully using contacts I’ll send some suggestions if there is room for improvement in the API (such as creating a JointContact class etc)
Note: I’m using odejava for research, not a gaming. Some solutions or suggestions that I give may not scale well if you need real-time, as opposed to simulation where it is sufficient for say 10 minutes of simulation time to be computed over a couple of hours. However, I will try to keep in mind the gaming application of odejava.