Skip to content

Error when opening most UIs in spectator mode #349

@Da-Technomancer

Description

@Da-Technomancer

Describe the bug
Opening most Crossroads UIs in spectator mode causes a networking error on the client-side rather than opening the UI.

To Reproduce [Optional]
Right-click a steam boiler while in spectator mode. Occurs in both singleplayer and multiplayer.

Additional context [Optional]
MC 1.21.1.
Seems to be caused by Spectator mode having an alternative method of opening UIs that doesn't give the server-side a chance to encode additional data (mainly BlockPos) that we depend on on client.
See: ServerPlayerGameMode::useItemOn, ServerPlayer::openMenu

Sample error:
[17:09:59] [Render thread/ERROR] [minecraft/ClientCommonPacketListenerImpl]: Failed to handle packet net.minecraft.network.protocol.game.ClientboundOpenScreenPacket@50715a8d java.lang.NullPointerException: Cannot invoke "net.minecraft.network.FriendlyByteBuf.readBlockPos()" because "data" is null at TRANSFORMER/essentials@2.17.4/com.Da_Technomancer.essentials.api.BlockMenuContainer.<init>(BlockMenuContainer.java:33) ~[essentials-293752-7774198.jar%23194!/:?] {re:classloading} at TRANSFORMER/crossroads@1.21.1-2.11.5/com.Da_Technomancer.crossroads.api.templates.MachineContainer.<init>(MachineContainer.java:22) ~[%23191!/:?] {re:classloading} at TRANSFORMER/crossroads@1.21.1-2.11.5/com.Da_Technomancer.crossroads.gui.container.SteamBoilerContainer.<init>(SteamBoilerContainer.java:16) ~[%23191!/:?] {re:classloading} at TRANSFORMER/neoforge@21.1.216/net.neoforged.neoforge.network.IContainerFactory.create(IContainerFactory.java:36) ~[neoforge-minecraft-joined-local-merged.jar%23190!/:?] {re:classloading} at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.inventory.MenuType.create(MenuType.java:54) ~[neoforge-minecraft-joined-local-merged.jar%23189!/:?] {re:classloading,pl:accesstransformer:B} at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.gui.screens.MenuScreens$ScreenConstructor.fromPacket(MenuScreens.java:127) ~[neoforge-minecraft-joined-local-merged.jar%23189!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.gui.screens.MenuScreens.lambda$create$0(MenuScreens.java:44) ~[neoforge-minecraft-joined-local-merged.jar%23189!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions