Terasology / JoshariasSurvival

Survival a la Josharias
1 stars 10 forks source link

Facet provider for class org.terasology.caves.CaveFacet is missing, sometimes #76

Open soloturn opened 10 months ago

soloturn commented 10 months ago

startup fails from time to time with the following. caves is there.

11:25:15.189 [main] ERROR o.t.e.world.generation.WorldBuilder - Facet provider for class org.terasology.caves.CaveFacet is missing. It is required by class org.terasology.caves.CaveLocationProvider
11:25:15.189 [main] ERROR o.t.engine.core.modes.StateLoading - Error while loading org.terasology.engine.core.modes.loadProcesses.InitialiseWorldGenerator@1a212395
java.lang.IllegalStateException: Missing facet provider
        at org.terasology.engine.world.generation.WorldBuilder.determineProviderChains(WorldBuilder.java:188)
        at org.terasology.engine.world.generation.WorldBuilder.build(WorldBuilder.java:95)
        at org.terasology.engine.world.generation.BaseFacetedWorldGenerator.getWorld(BaseFacetedWorldGenerator.java:83)
        at org.terasology.engine.world.generation.BaseFacetedWorldGenerator.initialize(BaseFacetedWorldGenerator.java:58)
        at org.terasology.engine.core.modes.loadProcesses.InitialiseWorldGenerator.step(InitialiseWorldGenerator.java:34)
        at org.terasology.engine.core.modes.StateLoading.update(StateLoading.java:259)
        at org.terasology.engine.core.TerasologyEngine.tick(TerasologyEngine.java:512)
        at org.terasology.engine.core.TerasologyEngine.mainLoop(TerasologyEngine.java:472)
        at org.terasology.engine.core.TerasologyEngine.runMain(TerasologyEngine.java:448)
        at org.terasology.engine.core.TerasologyEngine.run(TerasologyEngine.java:414)
        at org.terasology.engine.Terasology.call(Terasology.java:189)
        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)
jdrueckert commented 10 months ago

Good catch, I think I might've seen that before. Might be a facet ordering issue if it's sporadic :thinking:

jdrueckert commented 8 months ago

Observation: The facet issue does not crash Terasology, so it's possible to close the warning and try creating a world again. However, when attempting to do so, Terasology crashes due to a NullPointer when fetching a component from a prefab. In particular, the NameGenerator component is null although it's definitely included in the prefab, so any access attempts on it result in an NPE.

This issue was not yet observed without the preceding facet issue.

At this point in time it is unclear, what about the facet issue causes this behavior - likely something is not properly cleaned up if world generation fails at the stage that it does.