I'm guessing that my first step would be to divide the demo into seperate classes, for example: Items, Player, etc...
Yes, that's a good idea. The fps example doesn't do this to stay as simple as possible, but for a "real" application, it's definitely needed. The car example does something like this by introducing an Entity interface, letting an AbstractEntity implements that interface as well as extending Object3D and the actual objects in the "game" are extending the AbstractEntity.
That's not entirely great because even if there is an interface like Entity, you have to code against AbstractEntity sometimes (or wrap the required methods from Object3D into the interface) because there is no interface for Object3D in jPCT due to historical reasons. However, depending on your needs, you may come up with something completely different (more MVC-like for example).