Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Got NPE when tried to "Configure" world with Island World generator #3402

Closed
ar0ne opened this issue Jun 18, 2018 · 3 comments
Closed

Got NPE when tried to "Configure" world with Island World generator #3402

ar0ne opened this issue Jun 18, 2018 · 3 comments
Assignees

Comments

@ar0ne
Copy link
Contributor

ar0ne commented Jun 18, 2018

What you were trying to do

Tried to "Configure" new world with "Island World" generator. This generator is from PolyWorld module.

What actually happened

Got NPE.

How to reproduce

Single Player -> Create -> Advanced -> Activate PolyWorld module -> Continue -> Choose IslandWorld generator -> Add -> Configure

To be honest, I tried it few times and looks like sometimes, not sure why. I can't find Island World generator in the list of generators 0_o.

Log details and game version

Last develop version.

18:54:02.903 [main] WARN o.t.engine.internal.TimeBase - Delta too great (4177), capping to 1000 18:54:17.968 [main] ERROR o.t.e.event.internal.EventSystemImpl - Failed to invoke event java.lang.NullPointerException: null at org.terasology.world.generation.WorldBuilder.addPlugins(WorldBuilder.java:77) at org.terasology.polyworld.IslandWorldGenerator.createWorld(IslandWorldGenerator.java:87) at org.terasology.world.generation.BaseFacetedWorldGenerator.getWorldBuilder(BaseFacetedWorldGenerator.java:101) at org.terasology.world.generation.BaseFacetedWorldGenerator.getConfigurator(BaseFacetedWorldGenerator.java:81) at org.terasology.rendering.nui.layers.mainMenu.WorldSetupScreen.configureProperties(WorldSetupScreen.java:119) at org.terasology.rendering.nui.layers.mainMenu.WorldSetupScreen.setWorld(WorldSetupScreen.java:103) at org.terasology.rendering.nui.layers.mainMenu.UniverseSetupScreen.lambda$initialise$1(UniverseSetupScreen.java:186) at org.terasology.rendering.nui.widgets.UIButton.activate(UIButton.java:203) at org.terasology.rendering.nui.widgets.UIButton.access$100(UIButton.java:41) at org.terasology.rendering.nui.widgets.UIButton$1.onMouseRelease(UIButton.java:99) at org.terasology.rendering.nui.internal.CanvasImpl.processMouseRelease(CanvasImpl.java:247) at org.terasology.rendering.nui.internal.NUIManagerInternal.mouseButtonEvent(NUIManagerInternal.java:576) at org.terasology.rendering.nui.internal.NUIManagerInternalMethodAccess.invoke(Unknown Source) at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:516) at org.terasology.entitySystem.event.internal.EventSystemImpl.sendConsumableEvent(EventSystemImpl.java:289) at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:268) at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:204) at org.terasology.input.InputSystem.send(InputSystem.java:367) at org.terasology.input.InputSystem.sendMouseEvent(InputSystem.java:354) at org.terasology.input.InputSystem.processMouseButtonInput(InputSystem.java:184) at org.terasology.input.InputSystem.processMouseInput(InputSystem.java:169) at org.terasology.input.InputSystem.update(InputSystem.java:129) at org.terasology.engine.modes.StateMainMenu.handleInput(StateMainMenu.java:193) at org.terasology.engine.subsystem.lwjgl.LwjglInput.postUpdate(LwjglInput.java:55) at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:455) at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:409) at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:385) at org.terasology.engine.Terasology.main(Terasology.java:154)

@Cervator
Copy link
Member

Can confirm. Both the config issue and the world generator being a bit hard to get to show up. Usually it is because the module holding the generator isn't fully built but this persisted even after I rebuilt PolyWorld. However after I also made sure its dependency CommonWorld was built then it showed up normally.

I suspect the issue has something to do with world plugins and configurable properties affecting the plugin-based world content. Another example is the "Caves" module which adds configurable caves. I just tried adding that to a plain Perlin world then configuring it and while I didn't get a crash I'm pretty sure I'm missing the cave-related configurators.

Poking @TheFlash98 to check this out sometime :-)

@Cervator
Copy link
Member

Retested and still valid (even after forcibly compoling CommonWorld + PolyWorld first):

00:39:51.570 [main] ERROR o.t.e.event.internal.EventSystemImpl - Failed to invoke event
java.lang.NullPointerException: null
	at org.terasology.world.generation.WorldBuilder.addPlugins(WorldBuilder.java:77)
	at org.terasology.polyworld.IslandWorldGenerator.createWorld(IslandWorldGenerator.java:87)
	at org.terasology.world.generation.BaseFacetedWorldGenerator.getWorldBuilder(BaseFacetedWorldGenerator.java:101)
	at org.terasology.world.generation.BaseFacetedWorldGenerator.getConfigurator(BaseFacetedWorldGenerator.java:81)
	at org.terasology.rendering.nui.layers.mainMenu.WorldSetupScreen.configureProperties(WorldSetupScreen.java:119)
	at org.terasology.rendering.nui.layers.mainMenu.WorldSetupScreen.setWorld(WorldSetupScreen.java:103)
	at org.terasology.rendering.nui.layers.mainMenu.UniverseSetupScreen.lambda$initialise$1(UniverseSetupScreen.java:186)
	at org.terasology.rendering.nui.ActivatableWidget.activateWidget(ActivatableWidget.java:46)
	at org.terasology.rendering.nui.widgets.UIButton.access$100(UIButton.java:41)
	at org.terasology.rendering.nui.widgets.UIButton$1.onMouseRelease(UIButton.java:94)
	at org.terasology.rendering.nui.internal.CanvasImpl.processMouseRelease(CanvasImpl.java:266)
	at org.terasology.rendering.nui.internal.NUIManagerInternal.mouseButtonEvent(NUIManagerInternal.java:610)
	at org.terasology.rendering.nui.internal.NUIManagerInternalMethodAccess.invoke(Unknown Source)
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:531)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendConsumableEvent(EventSystemImpl.java:301)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:280)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:204)
	at org.terasology.input.InputSystem.send(InputSystem.java:496)
	at org.terasology.input.InputSystem.sendMouseEvent(InputSystem.java:469)
	at org.terasology.input.InputSystem.processMouseButtonInput(InputSystem.java:212)
	at org.terasology.input.InputSystem.processMouseInput(InputSystem.java:191)
	at org.terasology.input.InputSystem.update(InputSystem.java:134)
	at org.terasology.engine.modes.StateMainMenu.handleInput(StateMainMenu.java:196)
	at org.terasology.engine.subsystem.lwjgl.LwjglInput.postUpdate(LwjglInput.java:55)
	at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:467)
	at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:421)
	at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:397)
	at org.terasology.engine.Terasology.main(Terasology.java:156)

@jdrueckert
Copy link
Member

Just tested this and it does work. If I have the PolyWorld module present, I can successfully select the island world generator, configure it, and start a game with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants