diff --git a/src/services/objects/ObjectAwareness.java b/src/services/objects/ObjectAwareness.java index e0739e5d7..73889f9d1 100644 --- a/src/services/objects/ObjectAwareness.java +++ b/src/services/objects/ObjectAwareness.java @@ -306,15 +306,17 @@ public class ObjectAwareness extends Service implements TerrainMapCallback { private void moveObjectWithTransform(SWGObject obj, SWGObject parent, Location requestedLocation, double speed, int update) { if (obj instanceof CreatureObject && ((CreatureObject) obj).isStatesBitmask(CreatureState.RIDING_MOUNT)) { - parent = obj.getParent(); - moveObject(parent, null, requestedLocation); - dataTransformHandler.handleMove(parent, speed, update); + SWGObject vehicle = obj.getParent(); + moveObject(vehicle, null, requestedLocation); + dataTransformHandler.handleMove(vehicle, speed, update); + moveObject(obj, null, requestedLocation); + } else { + moveObject(obj, parent, requestedLocation); + if (parent == null) + dataTransformHandler.handleMove(obj, speed, update); + else + dataTransformHandler.handleMove(obj, parent, speed, update); } - moveObject(obj, parent, requestedLocation); - if (parent == null) - dataTransformHandler.handleMove(obj, speed, update); - else - dataTransformHandler.handleMove(obj, parent, speed, update); if (obj instanceof CreatureObject && ((CreatureObject) obj).isLoggedInPlayer()) new PlayerTransformedIntent((CreatureObject) obj, obj.getParent(), parent, obj.getLocation(), requestedLocation).broadcast(); } diff --git a/test/resources/objects/awareness/TestObjectAwareness.java b/test/resources/objects/awareness/TestObjectAwareness.java index aa86350c8..2a6c0369b 100644 --- a/test/resources/objects/awareness/TestObjectAwareness.java +++ b/test/resources/objects/awareness/TestObjectAwareness.java @@ -176,10 +176,10 @@ public class TestObjectAwareness { Assert.assertNull("Player1 is in a parent!", player1.getParent()); // Mount + Assert.assertTrue(fireAndWait(100, new ContainerTransferIntent(player1, vehicle))); player1.setStatesBitmask(CreatureState.RIDING_MOUNT); vehicle.setStatesBitmask(CreatureState.MOUNTED_CREATURE); vehicle.setPosture(Posture.DRIVING_VEHICLE); - Assert.assertTrue(fireAndWait(100, new ContainerTransferIntent(player1, vehicle))); Assert.assertTrue("Player1 is not inside Player2's observer set!", player2.getObservers().contains(player1.getOwner())); Assert.assertTrue("Player2 is not inside Player1's observer set!", player1.getObservers().contains(player2.getOwner())); @@ -216,10 +216,10 @@ public class TestObjectAwareness { Assert.assertTrue(fireAndWait(100, new ObjectCreatedIntent(player2))); Assert.assertTrue(fireAndWait(100, new ObjectCreatedIntent(npc))); Assert.assertTrue(fireAndWait(100, new ObjectCreatedIntent(vehicle))); + Assert.assertTrue(fireAndWait(100, new ContainerTransferIntent(player1, vehicle))); player1.setStatesBitmask(CreatureState.RIDING_MOUNT); vehicle.setStatesBitmask(CreatureState.MOUNTED_CREATURE); vehicle.setPosture(Posture.DRIVING_VEHICLE); - Assert.assertTrue(fireAndWait(100, new ContainerTransferIntent(player1, vehicle))); Assert.assertTrue("Player1 is not inside Player2's observer set!", player2.getObservers().contains(player1.getOwner())); Assert.assertTrue("Player2 is not inside Player1's observer set!", player1.getObservers().contains(player2.getOwner()));