Maybe, I miss something, but it seems to me that the World3DModel methods setRotation(), setPosition() and moveto() have an issue quite similar to the one described here and already solved (thanks again, @red51!).
Simply put, if those methods are called after the model has been added to a player's world (player.addWorldElement(model);), they have no visible effects. But if, contextually or afterwards, the model is removed and re-added, the changes show up. Note that any of these code snippets work correctly and they all seem equivalent:
where first model properties are changed and then the model is removed and added back. OR:
where model properties are changed while the model is removed. And even:
where the model is removed and added back before changing its properties (which greatly surprises me , but probably the various operations are queued, rather than blocking).
I have tried moving the model changes to a separate thread (one never knows...) but it seems to make no difference.
Exemplifying moveto() is less easy, as the remove, change and add back need to be at different moments (to give moveto() time to go on), but it follows the same pattern.
Note: I have only tried the Vector3f and Quaternion overloads of those methods, so I do not know if the overloads with separate values work differently, but I do not expect they do.
Am I overlooking something or there is actually an issue?