Those are abstractions of creating sprites, defining a location, and so forth yes?
If so, you can create those yourself.
Here's an example of how that looks in 3D:
void stuff2(Uint8 entity_number, Sint16 loc[XYZ]){
slPushMatrix();
jo_3d_translate_matrix(loc[X], loc[Y], loc[Z]);
display_ztp(&entities[entityNumber], false);
slPopMatrix();
}
To remove that, you set up a condition wherein it is included or not included in the runtime.
Of course you want things structured a little differently, but know this:
Much of your object data is the textures and model data itself, which is already contained and can be referenced and edited.
There are also jo_sprite and jo_vector data handlers that you can integrate into your ideal concept of "jo_object".
What I read below like "jo_create_object" and "jo_delete_object" are structured as if console commands to be used in runtime and run only once.
The "run only once part" complicates the structure of your code as what you are presently working with in jo engine is a giant loop.
You might also be confused by how to organize your matrix, but I'm sure you can figure that one out with trial and error.