General Info
Terasology Version: https://jenkins.terasology.io/teraorg/job/Terasology/job/Omega/job/develop/409/
Multiplayer Setup with headless (official) Playtest Server
What you were trying to do
Kill a sheep in MetalRenegades
What actually happened
Server crashed (ran into NPE).
How to reproduce
- Join MetalRenegades world hosted on headless server
- Continuously hit a sheep to kill it
- See server crash
Log details
java.lang.NullPointerException: null
at org.terasology.engine.logic.characters.CharacterMovementSystemUtility.extrapolateCharacterMovementComponent(CharacterMovementSystemUtility.java:120)
at org.terasology.engine.logic.characters.CharacterMovementSystemUtility.setToExtrapolateState(CharacterMovementSystemUtility.java:106)
at org.terasology.engine.logic.characters.ServerCharacterPredictionSystem.setToTime(ServerCharacterPredictionSystem.java:243)
at org.terasology.engine.logic.characters.ServerCharacterPredictionSystem.restoreToPresent(ServerCharacterPredictionSystem.java:263)
at org.terasology.engine.network.internal.NetClient.processEvents(NetClient.java:540)
at org.terasology.engine.network.internal.NetClient.processReceivedMessages(NetClient.java:421)
at org.terasology.engine.network.internal.NetClient.update(NetClient.java:219)
at org.terasology.engine.network.internal.NetworkSystemImpl.update(NetworkSystemImpl.java:323)
at org.terasology.engine.core.subsystem.common.NetworkSubsystem.preUpdate(NetworkSubsystem.java:37)
at org.terasology.engine.core.TerasologyEngine.tick(TerasologyEngine.java:492)
at org.terasology.engine.core.TerasologyEngine.mainLoop(TerasologyEngine.java:459)
at org.terasology.engine.core.TerasologyEngine.runMain(TerasologyEngine.java:435)
at org.terasology.engine.core.TerasologyEngine.run(TerasologyEngine.java:401)
at org.terasology.engine.Terasology.call(Terasology.java:180)
at org.terasology.engine.Terasology.call(Terasology.java:69)
at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
at picocli.CommandLine.access$1200(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
at picocli.CommandLine.execute(CommandLine.java:2058)
at org.terasology.engine.Terasology.main(Terasology.java:138)
Additional Infos / Context
Current assumption: The sheep is theoretically already dead when the ServerCharacterPredictionSystem tries to update entities and triggers setToExtrapolateState. However, because we're waiting for the dying animation to finish, the entity is still present in the characterStates map and is included in the update. When attempting to access CharacterMovementComponent for the extrapolation, the server runs into an NPE because the component has already been removed.
General Info
Terasology Version: https://jenkins.terasology.io/teraorg/job/Terasology/job/Omega/job/develop/409/
Multiplayer Setup with headless (official) Playtest Server
What you were trying to do
Kill a sheep in MetalRenegades
What actually happened
Server crashed (ran into NPE).
How to reproduce
Log details
Additional Infos / Context
Current assumption: The sheep is theoretically already dead when the
ServerCharacterPredictionSystemtries to update entities and triggerssetToExtrapolateState. However, because we're waiting for the dying animation to finish, the entity is still present in thecharacterStatesmap and is included in the update. When attempting to accessCharacterMovementComponentfor the extrapolation, the server runs into an NPE because the component has already been removed.