isXander / Controlify

Another controller mod - for fabric!
https://www.isxander.dev/mods/controlify
GNU Lesser General Public License v3.0
142 stars 31 forks source link

[Bug] UI misbehaves with Controlify 2.0.0-beta.6 for MC 1.20.5 #299

Closed tchatain closed 5 months ago

tchatain commented 5 months ago

Current Behaviour

Since updating to this new version, the UI buttons no longer behave as before. I have experienced this both on a Steam Deck and on a PC using an Xbox controller.

Expected Behaviour

Being able to navigate the menus using the same shortcuts as before.

Screenshots

No response

Reproduction Steps

All three scenarios are outlined in the Current Behaviour section.

Logs

---- Minecraft Crash Report ----
// I blame Dinnerbone.

Time: 2024-04-26 11:26:53
Description: Ticking current controller

java.util.NoSuchElementException: No value present
    at java.base/java.util.Optional.orElseThrow(Optional.java:377)
    at dev.isxander.controlify.screenop.compat.vanilla.TitleScreenProcessor.handleButtons(TitleScreenProcessor.java:19)
    at dev.isxander.controlify.screenop.ScreenProcessor.onControllerUpdate(ScreenProcessor.java:50)
    at dev.isxander.controlify.Controlify.tickController(Controlify.java:548)
    at dev.isxander.controlify.Controlify.lambda$tick$35(Controlify.java:497)
    at dev.isxander.controlify.utils.ControllerUtils.wrapControllerError(ControllerUtils.java:28)
    at dev.isxander.controlify.Controlify.lambda$tick$36(Controlify.java:496)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at dev.isxander.controlify.Controlify.tick(Controlify.java:495)
    at net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$0(ClientTickEvents.java:34)
    at net.minecraft.class_310.handler$zzm000$fabric-lifecycle-events-v1$onStartTick(class_310.java:3242)
    at net.minecraft.class_310.method_1574(class_310.java)
    at net.minecraft.class_310.method_1523(class_310.java:1281)
    at net.minecraft.class_310.method_1514(class_310.java:888)
    at net.minecraft.client.main.Main.main(Main.java:265)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:551)
    at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:84)
    at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:28)
    at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
    at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
    at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
    at java.base/java.util.Optional.orElseThrow(Optional.java:377)
    at dev.isxander.controlify.screenop.compat.vanilla.TitleScreenProcessor.handleButtons(TitleScreenProcessor.java:19)
    at dev.isxander.controlify.screenop.ScreenProcessor.onControllerUpdate(ScreenProcessor.java:50)
    at dev.isxander.controlify.Controlify.tickController(Controlify.java:548)
    at dev.isxander.controlify.Controlify.lambda$tick$35(Controlify.java:497)
    at dev.isxander.controlify.utils.ControllerUtils.wrapControllerError(ControllerUtils.java:28)
    at dev.isxander.controlify.Controlify.lambda$tick$36(Controlify.java:496)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at dev.isxander.controlify.Controlify.tick(Controlify.java:495)
    at net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$0(ClientTickEvents.java:34)
    at net.minecraft.class_310.handler$zzm000$fabric-lifecycle-events-v1$onStartTick(class_310.java:3242)

-- Affected controller --
Details:
    Controller name: Steam Deck
    Controller identification: Steam Deck
    Controller type: dev.isxander.controlify.controller.ControllerEntity
Stacktrace:
    at dev.isxander.controlify.utils.ControllerUtils.wrapControllerError(ControllerUtils.java:28)
    at dev.isxander.controlify.Controlify.lambda$tick$36(Controlify.java:496)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at dev.isxander.controlify.Controlify.tick(Controlify.java:495)
    at net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$0(ClientTickEvents.java:34)
    at net.minecraft.class_310.handler$zzm000$fabric-lifecycle-events-v1$onStartTick(class_310.java:3242)
    at net.minecraft.class_310.method_1574(class_310.java)
    at net.minecraft.class_310.method_1523(class_310.java:1281)
    at net.minecraft.class_310.method_1514(class_310.java:888)
    at net.minecraft.client.main.Main.main(Main.java:265)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:551)
    at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:84)
    at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:28)
    at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
    at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
    at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

-- Uptime --
Details:
    JVM uptime: 91.872s
    Wall uptime: 81.664s
    High-res time: 80.629s
    Client ticks: 1567 ticks / 78.350s
Stacktrace:
    at net.minecraft.class_310.method_1587(class_310.java:2548)
    at net.minecraft.class_310.method_54580(class_310.java:983)
    at net.minecraft.class_310.method_1514(class_310.java:908)
    at net.minecraft.client.main.Main.main(Main.java:265)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:551)
    at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:84)
    at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:28)
    at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
    at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
    at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

-- Last reload --
Details:
    Reload number: 1
    Reload reason: initial
    Finished: Yes
    Packs: vanilla, fabric, controlify, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-models-v0, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, quilt_loader, yet_another_config_lib_v3

-- System Details --
Details:
    Minecraft Version: 1.20.5
    Minecraft Version ID: 1.20.5
    Operating System: Linux (amd64) version 6.1.52-valve16-1-neptune-61
    Java Version: 21.0.2, Flathub
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Flathub
    Memory: 514497528 bytes (490 MiB) / 1082130432 bytes (1032 MiB) up to 4294967296 bytes (4096 MiB)
    CPUs: 8
    Processor Vendor: AuthenticAMD
    Processor Name: AMD Custom APU 0405
    Identifier: AuthenticAMD Family 23 Model 144 Stepping 2
    Microarchitecture: unknown
    Frequency (GHz): -0.00
    Number of physical packages: 1
    Number of physical CPUs: 4
    Number of logical CPUs: 8
    Graphics card #0 name: VanGogh [AMD Custom GPU 0405]
    Graphics card #0 vendor: Advanced Micro Devices, Inc. [AMD/ATI] (0x1002)
    Graphics card #0 VRAM (MB): 258.00
    Graphics card #0 deviceId: 0x163f
    Graphics card #0 versionInfo: unknown
    Virtual memory max (MB): 8431.21
    Virtual memory used (MB): 4316.05
    Swap memory total (MB): 1024.00
    Swap memory used (MB): 0.00
    JVM Flags: 2 total; -Xms512m -Xmx4096m
    Fabric Mods: 
        controlify: Controlify 2.0.0-beta.6+1.20.5
            dev_isxander_libsdl4j: libsdl4j 3.693c75e-36
            org_hid4java_hid4java: hid4java 0.7.0
            org_quiltmc_parsers_gson: gson 0.3.0
            org_quiltmc_parsers_json: json 0.3.0
        fabric-api: Fabric API 0.97.6+1.20.5
            fabric-api-base: Fabric API Base 0.4.40+80f8cf510d
            fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.59+e9d2a72b0d
            fabric-biome-api-v1: Fabric Biome API (v1) 13.0.24+76551cf60d
            fabric-block-api-v1: Fabric Block API (v1) 1.0.20+6dfe4c9b0d
            fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.8+80f8cf510d
            fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.50+80f8cf510d
            fabric-client-tags-api-v1: Fabric Client Tags 1.1.12+7f945d5b0d
            fabric-command-api-v1: Fabric Command API (v1) 1.2.45+f71b366f0d
            fabric-command-api-v2: Fabric Command API (v2) 2.2.24+80f8cf510d
            fabric-commands-v0: Fabric Commands (v0) 0.2.62+df3654b30d
            fabric-content-registries-v0: Fabric Content Registries (v0) 8.0.4+b82b23920d
            fabric-convention-tags-v1: Fabric Convention Tags 2.0.3+7f945d5b0d
            fabric-convention-tags-v2: Fabric Convention Tags (v2) 2.0.0+2b43c5c80d
            fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.27+80f8cf510d
            fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.1.15+2a2c66b60d
            fabric-data-generation-api-v1: Fabric Data Generation API (v1) 19.0.5+7f945d5b0d
            fabric-dimensions-v1: Fabric Dimensions API (v1) 2.1.68+947939130d
            fabric-entity-events-v1: Fabric Entity Events (v1) 1.6.8+e9d2a72b0d
            fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.7.6+c5fc38b30d
            fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.50+80f8cf510d
            fabric-item-api-v1: Fabric Item API (v1) 8.1.1+17e985d60d
            fabric-item-group-api-v1: Fabric Item Group API (v1) 4.0.38+aae0949a0d
            fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.45+80f8cf510d
            fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.43+df3654b30d
            fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.3.4+c5fc38b30d
            fabric-loot-api-v2: Fabric Loot API (v2) 3.0.4+97f703da0d
            fabric-message-api-v1: Fabric Message API (v1) 6.0.10+109a837c0d
            fabric-model-loading-api-v1: Fabric Model Loading API (v1) 1.0.12+80f8cf510d
            fabric-models-v0: Fabric Models (v0) 0.4.11+9386d8a70d
            fabric-networking-api-v1: Fabric Networking API (v1) 4.0.7+9342ba640d
            fabric-object-builder-api-v1: Fabric Object Builder API (v1) 15.1.3+c5fc38b30d
            fabric-particles-v1: Fabric Particles (v1) 4.0.0+c5fc38b30d
            fabric-recipe-api-v1: Fabric Recipe API (v1) 5.0.2+c5fc38b30d
            fabric-registry-sync-v0: Fabric Registry Sync (v0) 5.0.14+f1240ba70d
            fabric-renderer-api-v1: Fabric Renderer API (v1) 3.2.12+97f703da0d
            fabric-renderer-indigo: Fabric Renderer - Indigo 1.5.12+80f8cf510d
            fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.61+df3654b30d
            fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.46+73761d2e0d
            fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.1.3+2c869ded0d
            fabric-rendering-v0: Fabric Rendering (v0) 1.1.64+df3654b30d
            fabric-rendering-v1: Fabric Rendering (v1) 4.2.4+b21c00cb0d
            fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 4.0.1+74e2f5600d
            fabric-resource-loader-v0: Fabric Resource Loader (v0) 1.0.5+c5f2432c0d
            fabric-screen-api-v1: Fabric Screen API (v1) 2.0.21+7b70ea8a0d
            fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.71+b21c00cb0d
            fabric-sound-api-v1: Fabric Sound API (v1) 1.0.21+c5fc38b30d
            fabric-transfer-api-v1: Fabric Transfer API (v1) 5.1.6+c5fc38b30d
            fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 6.0.10+74e2f5600d
        java: OpenJDK 64-Bit Server VM 21
        minecraft: Minecraft 1.20.5
        quilt_loader: Quilt Loader 0.25.0
            mixinextras: MixinExtras 0.3.5
        yet_another_config_lib_v3: YetAnotherConfigLib 3.4.1+1.20.5-fabric
            com_twelvemonkeys_common_common-image: common-image 3.10.0
            com_twelvemonkeys_common_common-io: common-io 3.10.0
            com_twelvemonkeys_common_common-lang: common-lang 3.10.0
            com_twelvemonkeys_imageio_imageio-core: imageio-core 3.10.0
            com_twelvemonkeys_imageio_imageio-metadata: imageio-metadata 3.10.0
            com_twelvemonkeys_imageio_imageio-webp: imageio-webp 3.10.0
    Launched Version: 1.20.5
    Launcher name: PrismLauncher
    Backend library: LWJGL version 3.3.3+5
    Backend API: AMD Custom GPU 0405 (radeonsi, vangogh, LLVM 17.0.6, DRM 3.54, 6.1.52-valve16-1-neptune-61) GL version 4.6 (Core Profile) Mesa 24.0.5 (git-7737614720), AMD
    Window size: 1280x800
    GL Caps: Using framebuffer using OpenGL 3.2
    GL debug messages: 
    Using VBOs: Yes
    Is Modded: Definitely; Client brand changed to 'quilt'
    Universe: 400921fb54442d18
    Type: Client (map_client.txt)
    Graphics mode: fancy
    Render Distance: 10/12 chunks
    Resource Packs: vanilla, fabric, controlify, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-models-v0, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, quilt_loader, yet_another_config_lib_v3 (incompatible)
    Current Language: en_us
    Locale: en_US
    CPU: 8x AMD Custom APU 0405

Mod Version

2.0.0-beta.6 for MC 1.20.5

Controller

Steam Deck and Xbox Series X|S Wireless Controller

Bluetooth

Operating System

Linux/SteamOS

ARM

Additional Information

No response

Just to make sure...

isXander commented 5 months ago

Fixed in 96ae801

tchatain commented 5 months ago

That was quick! Thanks for all your work!