Archived null particleEntity location in BlockParticleEmitterSystem.java:239 render()

Mike Kienenberger

Active Member
Contributor
Architecture
GUI
Code:
21:11:41.259 [Timer-2] ERROR o.t.r.logic.NearestSortingList - Uncaught exception in sorting thread: java.lang.ArrayIndexOutOfBoundsException: 127
21:11:43.528 [main] ERROR o.terasology.engine.TerasologyEngine - Uncaught exception
java.lang.NullPointerException: null
    at org.terasology.logic.particles.BlockParticleEmitterSystem.render(BlockParticleEmitterSystem.java:239) ~[bin/:na]
    at org.terasology.logic.particles.BlockParticleEmitterSystem.renderAlphaBlend(BlockParticleEmitterSystem.java:225) ~[bin/:na]
    at org.terasology.rendering.world.WorldRenderer.renderWorld(WorldRenderer.java:739) ~[bin/:na]
    at org.terasology.rendering.world.WorldRenderer.render(WorldRenderer.java:564) ~[bin/:na]
    at org.terasology.engine.modes.StateIngame.render(StateIngame.java:206) ~[bin/:na]
    at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:687) ~[bin/:na]
    at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:275) ~[bin/:na]
    at org.terasology.engine.Terasology.main(Terasology.java:55) [bin/:na]
#
This was using my mkienenb/Terasology fork, but nothing I've changed should have caused it.
I was just wandering around in the dark digging blocks by holding down the left mouse button when it occurred.

Maybe the patch would be to skip the rest of the render loop for this particle entity if the location is found to be null:

Code:
diff --git a/engine/src/main/java/org/terasology/logic/particles/BlockParticleEmitterSystem.java b/engine/src/main/java/org/terasology/logic/particles/BlockParticleEmitterSystem.java
index fe82321..344c541 100644
--- a/engine/src/main/java/org/terasology/logic/particles/BlockParticleEmitterSystem.java
+++ b/engine/src/main/java/org/terasology/logic/particles/BlockParticleEmitterSystem.java
@@ -236,6 +236,11 @@
 
         for (EntityRef entity : particleEntities) {
             LocationComponent location = entity.getComponent(LocationComponent.class);
+
+            if (null == location) {
+                continue;
+            }
+
             Vector3f worldPos = location.getWorldPosition();
 
             if (!worldProvider.isBlockRelevant(worldPos)) {
Also, is the github tracker still the place to report issues? I didn't see any open issues in there newer than 6 months.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Top