MovingBlocks / Terasology

Terasology - open source voxel world
http://terasology.org
Apache License 2.0
3.69k stars 1.34k forks source link

Game crashes after removing the button that's binded to "Tabbing Modifier" #5201

Open SomethingSomethingV2 opened 11 months ago

SomethingSomethingV2 commented 11 months ago

Here's a link to a video that shows how the crash happens just in case my wording wasn't clear: https://drive.google.com/file/d/1ap5nYbMuf7ehEqr_nRKmfU-uITtknaEV/view?usp=sharing

This is the version I was playing on: image

11:35:08.262 [main] WARN  o.t.e.rendering.nui.asset.UIFormat - Field 'columnRatios' not recognized for interface org.terasology.nui.UIWidget in {"type":"RowLayout","columnRatios":0.4,"horizontalSpacing":12,"contents":[{"type":"UILabel","text":"NEO"},{"type":"UIButton","text":"${engine:menu#input-settings-apply}","id":"neo"}]}
11:35:35.348 [main] ERROR o.t.engine.core.TerasologyEngine - Uncaught exception, attempting clean game shutdown
java.lang.NullPointerException: null
        at java.base/java.util.Objects.requireNonNull(Objects.java:233)
        at java.base/java.util.Optional.of(Optional.java:113)
        at java.base/java.util.stream.FindOps$FindSink$OfRef.get(FindOps.java:194)
        at java.base/java.util.stream.FindOps$FindSink$OfRef.get(FindOps.java:191)
        at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
        at org.terasology.engine.rendering.nui.layers.mainMenu.inputSettings.InputSettingsScreen.onClosed(InputSettingsScreen.java:306)
        at org.terasology.engine.rendering.nui.internal.NUIManagerInternal.onCloseScreen(NUIManagerInternal.java:283)
        at org.terasology.engine.rendering.nui.internal.NUIManagerInternal.closeScreen(NUIManagerInternal.java:278)
        at org.terasology.engine.rendering.nui.internal.NUIManagerInternal.popScreen(NUIManagerInternal.java:449)
        at org.terasology.engine.rendering.nui.animation.MenuAnimationSystemStub.triggerToPrev(MenuAnimationSystemStub.java:22)
        at org.terasology.engine.rendering.nui.animation.DeferredMenuAnimationSystem.triggerToPrev(DeferredMenuAnimationSystem.java:28)
        at org.terasology.engine.rendering.nui.CoreScreenLayer.triggerBackAnimation(CoreScreenLayer.java:365)
        at org.terasology.engine.rendering.nui.layers.mainMenu.inputSettings.InputSettingsScreen.lambda$initialise$4(InputSettingsScreen.java:174)
        at org.terasology.nui.ActivatableWidget.activateWidget(ActivatableWidget.java:46)
        at org.terasology.nui.widgets.UIButton.activateWidget(UIButton.java:203)
        at org.terasology.nui.widgets.UIButton$1.onMouseRelease(UIButton.java:94)
        at org.terasology.nui.canvas.CanvasImpl.processMouseRelease(CanvasImpl.java:266)
        at org.terasology.engine.rendering.nui.internal.NUIManagerInternal.mouseButtonEvent(NUIManagerInternal.java:678)
        at org.terasology.engine.rendering.nui.internal.NUIManagerInternalMethodAccess.invoke(Unknown Source)
        at org.terasology.engine.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:399)
        at org.terasology.engine.entitySystem.event.internal.EventSystemImpl.sendConsumableEvent(EventSystemImpl.java:274)
        at org.terasology.engine.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:253)
        at org.terasology.engine.core.bootstrap.eventSystem.AbstractEventSystemDecorator.send(AbstractEventSystemDecorator.java:67)
        at org.terasology.engine.network.NetworkEventSystemDecorator.send(NetworkEventSystemDecorator.java:54)
        at org.terasology.engine.core.bootstrap.eventSystem.AbstractEventSystemDecorator.send(AbstractEventSystemDecorator.java:67)
        at org.terasology.engine.recording.RecordingEventSystemDecorator.send(RecordingEventSystemDecorator.java:32)
        at org.terasology.engine.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:188)
        at org.terasology.engine.input.InputSystem.send(InputSystem.java:525)
        at org.terasology.engine.input.InputSystem.sendMouseEvent(InputSystem.java:497)
        at org.terasology.engine.input.InputSystem.processMouseButtonInput(InputSystem.java:217)
        at org.terasology.engine.input.InputSystem.processMouseInput(InputSystem.java:196)
        at org.terasology.engine.input.InputSystem.update(InputSystem.java:131)
        at org.terasology.engine.core.modes.StateMainMenu.handleInput(StateMainMenu.java:114)
        at org.terasology.engine.core.subsystem.lwjgl.LwjglInput.postUpdate(LwjglInput.java:39)
        at org.terasology.engine.core.TerasologyEngine.tick(TerasologyEngine.java:521)
        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)
11:35:35.349 [main] INFO  o.t.engine.core.TerasologyEngine - Shutting down Terasology...
soloturn commented 11 months ago

added the exception.

BenjaminAmos commented 10 months ago

https://github.com/MovingBlocks/Terasology/blob/14937d24b851b300b3b8f569cfb86205a29626f2/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/InputSettingsScreen.java#L306-L308

I'm going to take a guess and say that bindsConf.getBinds(new SimpleUri("engine:tabbingModifier")) returns null?

NUI has some special behaviour for the tab key which allows for tabbing through UIs. Some things may have been slightly broken when we moved the NUI code into https://github.com/MovingBlocks/TeraNUI.