Ich werkel gerade an einem "Vieh-Züchter"-Plugin. Auf einfache und interaktive Weise soll man in der Lage sein, Kühe, Schweine etc. zu "domestizieren",
zu füttern und zur Vermehrung anzuregen.
Und dabei bin ich auf einige Probleme mit der API gestoßen:
1. Unter anderem sollen Tiere einem folgen können, dazu verwende ich setPosition().
Mir ist aufgefallen, dass der Npc zwar brav zu der gewünschten Position hingeht, aber sobald die Position erreicht ist,
scheint in der Engine - vllt. aufgrund eines "KI-Bewegungsmusters" - diese wieder rückgängig gemacht zu werden.
Der Npc scheint wieder zum Ursprungsort zurückzukehren. Dabei kommt es oft vor, dass das 3D-Modell aber an Ort und Stelle verharrt.
(dies kann man wunderbar sehen, wenn man per Timer sich jede Sekunde die Position mit getPosition() plus Distanz ausgeben lässt)
Die "logische" Position weicht zunehmens von der "visuellen" ab.
Unter anderem hat dies auch Auswirkungen auf ein Player.raycast() mit CollisionType.NPCS:
es wird keine Kollision festgestellt, das anvisierte 3D-Modell ist schlichtweg unsichtbar.
Um das wieder auf Spur zu bringen, muss gegebenenfalls der Chunk komplett verlassen oder die Welt neu geladen werden.
Es wäre super, wenn setPosition() praktisch ein Reset auslösen würde beim Path-Finding oder welche Macht da sonst am Werk ist!
2. Dies ist eher ein Wunsch: Ein RayCastResult stellt nur Vektoren und so bereit.
Ich wünsche mir noch eine Referenz auf das getroffene Objekt, also z.B. RayCastResult.getHitNpc() (natürlich nur bei CollisionType.NPCS).
3. Verwendung von Definitions.ObjectDefiniton erfordert die commons.jar
Eine Quelle mit Aufruf von Definitions.getObjectDefinition() kann nur erfolgreich kompiliert werden,
wenn die "commons.jar" bekannt gemacht wurde.
Das war's erstmal, in diesem Sinne:
"Eine Kuh macht muh, viele Kühe machen ....!"