question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Mystery rendering issue - missing block faces

See original GitHub issue

What you were trying to do

Test assorted things. This issue has been seen somewhat rarely but in a wide variety of cases. I’m skeptical that it relates to modules active although it may relate to the number of blocks enabled or something? Probably still unlikely.

I flew around the world some until I saw what appeared to be a tree top without a crown at all, no leaves. Flew up toward the spot where the tree trunk appeared to end, wondering if it was a chunk border issue meaning nothing had generated in the next chunk up.

What actually happened

My player got hopelessly stuck when I entered the space that was seemingly not rendering stuff. Felt like when a chunk is broken / stuck unloaded in multiplayer, not just waiting to be made visible (but still having a mesh). Could look around but not move, even with ghost on. Noticed missing block faces on just some nearby trees, but not at all neatly following chunk borders.

I enabled one of the rendering debug modes for a second screenie and while at first it looked like it might have been showing leaf blocks in a mesh above my head after relogging it seemed more clearly to just be distant chunks. It looked like the chunk edge was near where the tree trunk ended, but possibly not right at the same level.

On exiting to the main menu the missing block faces persisted on the saved game preview screenie.

On re-entering the same world the mystery was gone and all blocks were visible normally again

How to reproduce

  • Unknown 😦

This time it happened in single player, but we’ve seen it in multiplayer as well. Making this issue to better track symptoms, as I think we’ve observed things like one player seeing it, yet another player seeing everything perfectly fine in the same spot. Relogging may fix? But with it happening in single player it isn’t like a server is just failing to send some stuff. It seems to be a rendering quirk, yet at times by getting stuck also seems to be a fundamental chunk problem.

Logging

Only clue in the log was an instance of #4135 but that sounded more likely to be about a deer, maybe randomly taking fall damage, either naturally or via server prediction oddly? Strange thing to see for a deer in single player …:

21:57:50.190 [main] INFO  o.t.p.i.ReadWriteStorageManager - Auto Saving - Snapshot created: Writing phase starts
21:58:50.225 [main] INFO  o.t.p.i.ReadWriteStorageManager - Auto Saving - Creating game snapshot
21:58:50.227 [main] INFO  o.t.p.i.ReadWriteStorageManager - Auto Saving - Snapshot created: Writing phase starts
21:59:30.110 [main] ERROR o.t.e.event.internal.EventSystemImpl - Failed to invoke event
java.lang.RuntimeException: Cannot set a changed component with a null component variable
	at org.terasology.persistence.internal.EntityDelta.setChangedComponent(EntityDelta.java:34)
	at org.terasology.persistence.internal.EntitySetDeltaRecorder.onEntityComponentChange(EntitySetDeltaRecorder.java:70)
	at org.terasology.persistence.internal.EntitySetDeltaRecorder.onEntityComponentAdded(EntitySetDeltaRecorder.java:61)
	at org.terasology.persistence.internal.ReadWriteStorageManager.onEntityComponentAdded(ReadWriteStorageManager.java:514)
	at org.terasology.entitySystem.entity.internal.PojoEntityManager.notifyComponentAdded(PojoEntityManager.java:723)
	at org.terasology.entitySystem.entity.internal.PojoEntityManager.addComponent(PojoEntityManager.java:566)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.addComponent(BaseEntityRef.java:168)
	at org.terasology.logic.health.RegenAuthoritySystem.onRegenAddedWithoutComponent(RegenAuthoritySystem.java:177)
	at org.terasology.logic.health.RegenAuthoritySystemMethodAccess.invoke(Unknown Source)
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:532)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendStandardEvent(EventSystemImpl.java:292)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:283)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:205)
	at org.terasology.logic.health.DamageAuthoritySystem.doDamage(DamageAuthoritySystem.java:106)
	at org.terasology.logic.health.DamageAuthoritySystem.checkDamage(DamageAuthoritySystem.java:135)
	at org.terasology.logic.health.DamageAuthoritySystem.highSpeedDamage(DamageAuthoritySystem.java:208)
	at org.terasology.logic.health.DamageAuthoritySystem.onLand(DamageAuthoritySystem.java:186)
	at org.terasology.logic.health.DamageAuthoritySystemMethodAccess.invoke(Unknown Source)
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:532)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendStandardEvent(EventSystemImpl.java:292)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:283)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:205)
	at org.terasology.logic.characters.KinematicCharacterMover.walk(KinematicCharacterMover.java:663)
	at org.terasology.logic.characters.KinematicCharacterMover.updatePosition(KinematicCharacterMover.java:570)
	at org.terasology.logic.characters.KinematicCharacterMover.step(KinematicCharacterMover.java:104)
	at org.terasology.logic.characters.ServerCharacterPredictionSystem.stepState(ServerCharacterPredictionSystem.java:191)
	at org.terasology.logic.characters.ServerCharacterPredictionSystem.onPlayerInput(ServerCharacterPredictionSystem.java:143)
	at org.terasology.logic.characters.ServerCharacterPredictionSystemMethodAccess.invoke(Unknown Source)
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:532)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendStandardEvent(EventSystemImpl.java:292)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:283)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:205)
	at org.terasology.minion.move.MoveToAction.processDirect(MoveToAction.java:81)
	at org.terasology.minion.move.MoveToAction.modify(MoveToAction.java:43)
	at org.terasology.logic.behavior.core.ActionNode.execute(ActionNode.java:81)
	at org.terasology.logic.behavior.core.SequenceNode.execute(SequenceNode.java:56)
	at org.terasology.logic.behavior.actions.LookupAction.modify(LookupAction.java:53)
	at org.terasology.logic.behavior.core.ActionNode.execute(ActionNode.java:81)
	at org.terasology.logic.behavior.core.SequenceNode.execute(SequenceNode.java:56)
	at org.terasology.logic.behavior.actions.LookupAction.modify(LookupAction.java:53)
	at org.terasology.logic.behavior.core.ActionNode.execute(ActionNode.java:81)
	at org.terasology.logic.behavior.core.DynamicSelectorNode.execute(DynamicSelectorNode.java:54)
	at org.terasology.logic.behavior.actions.LookupAction.modify(LookupAction.java:53)
	at org.terasology.logic.behavior.core.ActionNode.execute(ActionNode.java:81)
	at org.terasology.logic.behavior.core.DelegateNode.execute(DelegateNode.java:91)
	at org.terasology.logic.behavior.DefaultBehaviorTreeRunner$1.execute(DefaultBehaviorTreeRunner.java:64)
	at org.terasology.logic.behavior.core.DynamicSelectorNode.execute(DynamicSelectorNode.java:54)
	at org.terasology.logic.behavior.core.DelegateNode.execute(DelegateNode.java:91)
	at org.terasology.logic.behavior.DefaultBehaviorTreeRunner$1.execute(DefaultBehaviorTreeRunner.java:64)
	at org.terasology.logic.behavior.DefaultBehaviorTreeRunner.step(DefaultBehaviorTreeRunner.java:84)
	at org.terasology.logic.behavior.Interpreter.tick(Interpreter.java:73)
	at org.terasology.logic.behavior.BehaviorSystem.update(BehaviorSystem.java:105)
	at org.terasology.engine.modes.StateIngame.update(StateIngame.java:171)
	at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:472)
	at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:435)
	at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:411)
	at org.terasology.engine.Terasology.main(Terasology.java:182)

Screenie

image

With one of the debug rendering modes active:

image

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
4Denthusiastcommented, Dec 29, 2020

I think #4353 fixes this.

0reactions
Cervatorcommented, Sep 7, 2020

Fair enough 😃 I wasn’t able to get close to it this time, although at other times I’ve been able to move around similar mystery spots. Will keep an eye out for better screenies - unless it turns out merging #4140 ends up making this disappear as well (or I could have just been seeing things)

Read more comments on GitHub >

github_iconTop Results From Across the Web

Certain Block Faces Disappear in Structure Block (Bedrock)
As I'm trying to export it as a 3D structure, it means that the final structure is missing those faces. How can I...
Read more >
Rendering of a block - something is missing? - Modder Support
Any function(s) is/are missing. Problem 2: In some angles, some layers don't render properly (see 2nd screenshot the ore on the left).
Read more >
Fixing Invisible objects in-game / missing face meshes
The first issue we'll be going over is fixing invisible, missing, or flipped parts of ... Secret Message: This is my first Unity...
Read more >
How to stop rendering invisible faces - java - Stack Overflow
A good idea is to NOT use immediate mode to render your blocks, I use display lists because they are the easiest to...
Read more >
Ethernet Status on the Mac App Store
Ethernet Status adds the missing icon in status bar to indicate the connection status of wired ethernet similar to WIFI icon.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found