Controlify

Controlify

609k Downloads

[Bug] Crash: YACL OptionListWidget cannot be cast to Minecraft EntryListWidget.Entry

JetbladeDevsStuff opened this issue ยท 1 comments

commented

Current Behaviour

NOT reproducible on Minecraft 1.20.6, Controlify 2.0.0-beta.12+1.20.6-fabric, YACL 3.5.0+1.20.6-fabric. IS reproducibile on Minecraft 1.21, Controlify 2.0.0-beta.12+1.21-fabric, YACL 3.5.0+1.21-fabric.

Environment (shouldn't matter): macOS aarch64, OpenJDK 21.0.3, Prism Launcher 8.3, DualSense Controller.

Expected Behaviour

The game correctly selects the next tab. Note that the game works as expected if clicking on the tab. This crash also occurs with any YACL EntryListWidgetExt(?), such as the Controlify Global Settings, even though it does not have any tabs. The crash does NOT occur with Vanilla EntryListWidgets, such as the world generation menu.

Screenshots

No response

Reproduction Steps

Steps to reproduce from fresh install (Prism Launcher instance):

  1. Download libSDL
  2. Complete calibration
  3. Done
  4. Continue at Narrator prompt
  5. With mouse or controller: Options > Controls... > Controller Settings... > (any controller) Settings
  6. With controller: press either bumper to select next / prev tab
  7. Crash

Logs

---- Minecraft Crash Report ----
// I let you down. Sorry :(

Time: 2024-06-14 17:56:35
Description: Ticking current controller

java.lang.ClassCastException: class dev.isxander.yacl3.gui.OptionListWidget cannot be cast to class net.minecraft.client.gui.widget.EntryListWidget$Entry (dev.isxander.yacl3.gui.OptionListWidget and net.minecraft.client.gui.widget.EntryListWidget$Entry are in unnamed module of loader net.fabricmc.loader.impl.launch.knot.KnotClassLoader @2096442d)
	at MC//net.minecraft.client.gui.widget.EntryListWidget.getFocused(EntryListWidget.java:86)
	at MC//net.minecraft.client.gui.widget.ElementListWidget.setFocused(ElementListWidget.java:78)
	at dev.isxander.controlify.compatibility.yacl.screenop.YACLScreenProcessor.onTabChanged(YACLScreenProcessor.java:44)
	at dev.isxander.controlify.screenop.ScreenProcessor.lambda$handleTabNavigation$3(ScreenProcessor.java:229)
	at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
	at dev.isxander.controlify.screenop.ScreenProcessor.handleTabNavigation(ScreenProcessor.java:219)
	at dev.isxander.controlify.screenop.ScreenProcessor.onControllerUpdate(ScreenProcessor.java:57)
	at dev.isxander.controlify.Controlify.tickController(Controlify.java:564)
	at dev.isxander.controlify.Controlify.lambda$tick$41(Controlify.java:513)
	at dev.isxander.controlify.utils.ControllerUtils.wrapControllerError(ControllerUtils.java:28)
	at dev.isxander.controlify.Controlify.lambda$tick$42(Controlify.java:512)
	at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
	at dev.isxander.controlify.Controlify.tick(Controlify.java:511)
	at net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$0(ClientTickEvents.java:34)
	at MC//net.minecraft.client.MinecraftClient.handler$zik000$fabric-lifecycle-events-v1$onStartTick(MinecraftClient.java:7178)
	at MC//net.minecraft.client.MinecraftClient.tick(MinecraftClient.java)
	at MC//net.minecraft.client.MinecraftClient.render(MinecraftClient.java:1246)
	at MC//net.minecraft.client.MinecraftClient.run(MinecraftClient.java:882)
	at net.minecraft.client.main.Main.main(Main.java:256)
	at app//net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at app//net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at app//net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at app//org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
	at app//org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
	at app//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 MC//net.minecraft.client.gui.widget.EntryListWidget.getFocused(EntryListWidget.java:86)
	at MC//net.minecraft.client.gui.widget.ElementListWidget.setFocused(ElementListWidget.java:78)
	at dev.isxander.controlify.compatibility.yacl.screenop.YACLScreenProcessor.onTabChanged(YACLScreenProcessor.java:44)
	at dev.isxander.controlify.screenop.ScreenProcessor.lambda$handleTabNavigation$3(ScreenProcessor.java:229)
	at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
	at dev.isxander.controlify.screenop.ScreenProcessor.handleTabNavigation(ScreenProcessor.java:219)
	at dev.isxander.controlify.screenop.ScreenProcessor.onControllerUpdate(ScreenProcessor.java:57)
	at dev.isxander.controlify.Controlify.tickController(Controlify.java:564)
	at dev.isxander.controlify.Controlify.lambda$tick$41(Controlify.java:513)
	at dev.isxander.controlify.utils.ControllerUtils.wrapControllerError(ControllerUtils.java:28)
	at dev.isxander.controlify.Controlify.lambda$tick$42(Controlify.java:512)
	at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
	at dev.isxander.controlify.Controlify.tick(Controlify.java:511)
	at net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$0(ClientTickEvents.java:34)
	at MC//net.minecraft.client.MinecraftClient.handler$zik000$fabric-lifecycle-events-v1$onStartTick(MinecraftClient.java:7178)

-- Affected controller --
Details:
	Controller name: DualSense Controller
	Controller identification: DualSense Controller
	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$42(Controlify.java:512)
	at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
	at dev.isxander.controlify.Controlify.tick(Controlify.java:511)
	at net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents.lambda$static$0(ClientTickEvents.java:34)
	at MC//net.minecraft.client.MinecraftClient.handler$zik000$fabric-lifecycle-events-v1$onStartTick(MinecraftClient.java:7178)
	at MC//net.minecraft.client.MinecraftClient.tick(MinecraftClient.java)
	at MC//net.minecraft.client.MinecraftClient.render(MinecraftClient.java:1246)
	at MC//net.minecraft.client.MinecraftClient.run(MinecraftClient.java:882)
	at net.minecraft.client.main.Main.main(Main.java:256)
	at app//net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at app//net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at app//net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at app//org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
	at app//org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
	at app//org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

-- Uptime --
Details:
	JVM uptime: 44.172s
	Wall uptime: 38.204s
	High-res time: 37.581s
	Client ticks: 720 ticks / 36.000s
Stacktrace:
	at MC//net.minecraft.client.MinecraftClient.addDetailsToCrashReport(MinecraftClient.java:2501)
	at MC//net.minecraft.client.MinecraftClient.printCrashReport(MinecraftClient.java:949)
	at MC//net.minecraft.client.MinecraftClient.run(MinecraftClient.java:902)
	at net.minecraft.client.main.Main.main(Main.java:256)
	at app//net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at app//net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at app//net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at app//org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
	at app//org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
	at app//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-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, fabricloader, stackdeobfuscator, yet_another_config_lib_v3

-- System Details --
Details:
	Minecraft Version: 1.21
	Minecraft Version ID: 1.21
	Operating System: Mac OS X (aarch64) version 14.0
	Java Version: 21.0.3, Homebrew
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Homebrew
	Memory: 277590576 bytes (264 MiB) / 922746880 bytes (880 MiB) up to 4294967296 bytes (4096 MiB)
	CPUs: 8
	Processor Vendor: Apple Inc.
	Processor Name: Apple M2
	Identifier: Apple Inc. Family 0xda33d83d Model 0 Stepping 0
	Microarchitecture: ARM64 SoC: Avalanche + Blizzard
	Frequency (GHz): 3.50
	Number of physical packages: 1
	Number of physical CPUs: 8
	Number of logical CPUs: 8
	Graphics card #0 name: Apple M2
	Graphics card #0 vendor: Apple (0x106b)
	Graphics card #0 VRAM (MiB): 0.00
	Graphics card #0 deviceId: unknown
	Graphics card #0 versionInfo: unknown
	Memory slot #0 capacity (MiB): 0.00
	Memory slot #0 clockSpeed (GHz): 0.00
	Memory slot #0 type: unknown
	Virtual memory max (MiB): 20480.00
	Virtual memory used (MiB): 16267.47
	Swap memory total (MiB): 4096.00
	Swap memory used (MiB): 3601.13
	Space in storage for jna.tmpdir (MiB): <path not set>
	Space in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): <path not set>
	Space in storage for io.netty.native.workdir (MiB): <path not set>
	Space in storage for java.io.tmpdir (MiB): available: 19539.98, total: 471482.09
	Space in storage for workdir (MiB): available: 19539.98, total: 471482.09
	JVM Flags: 2 total; -Xms512m -Xmx4096m
	Fabric Mods: 
		controlify: Controlify 2.0.0-beta.12+1.21-fabric
			dev_isxander_libsdl4j: libsdl4j 3.6896c4c-37
			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.100.1+1.21
			fabric-api-base: Fabric API Base 0.4.42+6573ed8c90
			fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.65+b559734490
			fabric-biome-api-v1: Fabric Biome API (v1) 13.0.28+6fc22b9990
			fabric-block-api-v1: Fabric Block API (v1) 1.0.22+0af3f5a790
			fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.10+6573ed8c90
			fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.52+0af3f5a790
			fabric-client-tags-api-v1: Fabric Client Tags 1.1.15+6573ed8c90
			fabric-command-api-v1: Fabric Command API (v1) 1.2.48+f71b366f90
			fabric-command-api-v2: Fabric Command API (v2) 2.2.27+6a6dfa1990
			fabric-commands-v0: Fabric Commands (v0) 0.2.65+df3654b390
			fabric-content-registries-v0: Fabric Content Registries (v0) 8.0.11+b559734490
			fabric-convention-tags-v1: Fabric Convention Tags 2.0.12+7f945d5b90
			fabric-convention-tags-v2: Fabric Convention Tags (v2) 2.2.1+d153f34490
			fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.29+0af3f5a790
			fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.1.22+6a6dfa1990
			fabric-data-generation-api-v1: Fabric Data Generation API (v1) 20.2.6+16c4ae2590
			fabric-dimensions-v1: Fabric Dimensions API (v1) 4.0.0+6fc22b9990
			fabric-entity-events-v1: Fabric Entity Events (v1) 1.6.12+6fc22b9990
			fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.7.10+e633f88390
			fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.52+6573ed8c90
			fabric-item-api-v1: Fabric Item API (v1) 11.0.0+afdfc92190
			fabric-item-group-api-v1: Fabric Item Group API (v1) 4.1.0+00ab0a6390
			fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.47+0af3f5a790
			fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.45+df3654b390
			fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.3.9+98a7dbbb90
			fabric-loot-api-v2: Fabric Loot API (v2) 3.0.9+6573ed8c90
			fabric-message-api-v1: Fabric Message API (v1) 6.0.13+6573ed8c90
			fabric-model-loading-api-v1: Fabric Model Loading API (v1) 2.0.0+fe474d6b90
			fabric-networking-api-v1: Fabric Networking API (v1) 4.1.0+686dcdce90
			fabric-object-builder-api-v1: Fabric Object Builder API (v1) 15.1.10+d132107690
			fabric-particles-v1: Fabric Particles (v1) 4.0.2+6573ed8c90
			fabric-recipe-api-v1: Fabric Recipe API (v1) 5.0.8+6573ed8c90
			fabric-registry-sync-v0: Fabric Registry Sync (v0) 5.0.21+b9828ba390
			fabric-renderer-api-v1: Fabric Renderer API (v1) 3.2.16+fe474d6b90
			fabric-renderer-indigo: Fabric Renderer - Indigo 1.6.3+cc9f121a90
			fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.66+df3654b390
			fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.48+73761d2e90
			fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.1.6+b559734490
			fabric-rendering-v0: Fabric Rendering (v0) 1.1.69+df3654b390
			fabric-rendering-v1: Fabric Rendering (v1) 5.0.3+d132107690
			fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 4.2.1+d153f34490
			fabric-resource-loader-v0: Fabric Resource Loader (v0) 1.1.3+b559734490
			fabric-screen-api-v1: Fabric Screen API (v1) 2.0.24+b559734490
			fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.78+b559734490
			fabric-sound-api-v1: Fabric Sound API (v1) 1.0.23+6573ed8c90
			fabric-transfer-api-v1: Fabric Transfer API (v1) 5.1.12+b559734490
			fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 6.0.12+6573ed8c90
		fabricloader: Fabric Loader 0.15.11
			mixinextras: MixinExtras 0.3.5
		java: OpenJDK 64-Bit Server VM 21
		minecraft: Minecraft 1.21
		stackdeobfuscator: StackDeobfuscator 1.4.2+bf1fc22
			dev_booky_common_: common 1.4.2+bf1fc22
			net_fabricmc_mapping-io: mapping-io 0.3.0
		yet_another_config_lib_v3: YetAnotherConfigLib 3.5.0+1.21-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.21
	Launcher name: PrismLauncher
	Backend library: LWJGL version 3.3.3-snapshot
	Backend API: Apple M2 GL version 4.1 Metal - 86, Apple
	Window size: 1708x960
	GFLW Platform: cocoa
	GL Caps: Using framebuffer using OpenGL 3.2
	GL debug messages: <disabled>
	Is Modded: Definitely; Client brand changed to 'fabric'
	Universe: 400921fb54442d18
	Type: Client (map_client.txt)
	GPU Warnings: version: Metal
	Graphics mode: fancy
	Render Distance: 12/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-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, fabricloader, stackdeobfuscator, yet_another_config_lib_v3 (incompatible)
	Current Language: en_us
	Locale: en_US
	System encoding: UTF-8
	File encoding: UTF-8
	CPU: 8x Apple M2

Mod Version

2.0.0-beta.12+1.21-fabric

Controller

DualSense Wireless Controller

Bluetooth

  • Yes

Operating System

macOS

ARM

  • Yes

Additional Information

I will attempt to reproduce later on Linux later. While the crash occurs due to a YACL class, I suspect the crash is ultimately the result of how Controlify changes tabs here.

Just to make sure...

  • I have made sure I am using the latest version of Controlify for the latest version of Minecraft.
  • I have made sure there are no other issues describing the same problem on the issue tracker.
commented

I will attempt to reproduce later on Linux later. While the crash occurs due to a YACL class, I suspect the crash is ultimately the result of how Controlify changes tabs here.

I've faced the same issue as well on Linux and Windows, it seems that this issue has been reproduced a number of times in the issue tracker but you've likely found the exact culprit. This would explain why the issue extends to other modded menus and not just the controlify one in my experience