The old Plugin API had 3 classes to create custom elements in the world: The World3DModel class (to spawn a custom 3d model), the World3DText class (to spawn a 3d text) and the WorldArea class (to visualize an Area). They had a few limitations, e.g. no child-parent handling (i.e. you couldn't attach a world element as child to another element), models only consisted of a single mesh + texture etc.
We have now reworked this part for the new API: There is a base class GameObject, which represents an empty (invisible) element in the world. You can add a collider to it, or also attach other game objects as child (similar to how the child-parent handling works for UI elements).
There is a derived Model class, which accepts a mesh and a material asset - this is useful if you want to spawn basic elements (e.g. primitive elements like a cube), or procedurally generated meshes. There is also a derived Prefab class: It represents a more complex 3d model. You can create a prefab in Unity, then load it in the API. The good thing is, that a prefab may contain an arbitrary number of meshes / submeshes, custom material and shaders and also custom Unity components. This way you could even create particle effects, animations, physical objects etc. directly in Unity, export them to an AssetBundle and load them through the Plugin API.
If you have a model consisting of several textures and submeshes, you can now easily import it into Unity, export it to an AssetBundle and load it as Prefab through the API - so you no longer have to deal with the "only 1 mesh and 1 texture" limitation of the old Java API.
The Prefab class also enables you to access any sub element and component, so you could always change a material or animator parameter or modify a visual effect.
Of course there is a Text3D class too, which is also derived from GameObject and simply represents a 3D text (similar to how it worked in the Java version).