[Bug] StylishEffects 4.3.0 (1.19.2) and 4.2.0 (1.19.1) cause mouselook capture issues on Quilt/Fabric when combined with DeathFinder 4.1.1 (1.19.2) and 4.0.0 (1.19.1).
akemin-dayo opened this issue · 6 comments
Testing environment
- Minecraft version: Minecraft 1.19.2 and 1.19.1
- Mod loader:
quilt-loader
0.17.4 - Minimal mods list (1.19.2 Quilt/Fabric):
- StylishEffects 4.3.0
- DeathFinder 4.1.1
- PuzzlesLib 4.3.4
- ForgeConfigAPIPort 4.2.6
- qfapi-4.0.0-beta.13_qsl-3.0.0-beta.16_fapi-0.62.0_mc-1.19.2 or Fabric API 0.62.0
- Minimal mods list (1.19.1 Quilt/Fabric):
- StylishEffects 4.2.0
- DeathFinder 4.0.0
- PuzzlesLib 4.1.8
- ForgeConfigAPIPort 4.2.6
- qfapi-4.0.0-beta.6_qsl-3.0.0-beta.10_fapi-0.58.5_mc-1.19.1 or Fabric API 0.58.5
Description
StylishEffects 4.3.0 (1.19.2) and 4.2.0 (1.19.1) cause mouselook capture issues on Quilt/Fabric when combined with DeathFinder 4.1.1 (1.19.2) and 4.0.0 (1.19.1).
This is a bit of a difficult issue to explain (and it was a massive pain trying to narrow down what was even causing this issue…), so I will instead provide you with an example of correct behaviour, and incorrect behaviour.
Correct behaviour
- Client finishes loading into a world: Mouselook is automatically captured with no user intervention.
- Some kind of UI (inventory, chat, pause screen, etc.) is opened and then closed: Mouselook gets released when the UI is open, and then automatically gets re-captured after it is closed.
Incorrect behaviour
- Client finishes loading into a world: Mouselook is left uncaptured, and the user must click into the window in order to capture the mouse.
- Some kind of UI (inventory, chat, pause screen, etc.) is opened and then closed: Mouselook gets released when the UI is open, and stays released even after it is closed. The user must click into the window in order to capture the mouse again.
I have confirmed the reproducability of this issue with just a bare minimum set of mods, listed above.
This issue does not reproduce on 1.18.2 (StylishEffects 3.1.0 + DeathFinder 3.2.0).
(This issue also does not reproduce on 1.19, though that is also because DeathFinder was never ported to that version to begin with.)
※ Disclaimer: I don't really use your DeathFinder mod for its intended use case — I actually use it in combination with DeathLog, just for DeathFinder's client-side functionality of "injecting your death coordinates into the death screen" when playing on some VIAaaS/ViaVersion/ViaProxy'd legacy servers that cause DeathLog to fail to capture the death event at all as a result of their death detection mechanism.
… Actually, speaking of that disclaimer — this is super off-topic and you don't have to answer this, but is there a particular reason why having DeathFinder on a server requires it on all connected clients too? I don't really see why it would be necessary.
Thanks a lot for the detailed report! Do you really need to have both Stylish Effects and Death Finder installed, or does the issue pop up with just on of them?
I have confirmed that this issue only reproduces if both mods are enabled. Having just one of them (regardless of which one) does not cause the issue to occur.
Ok, ok, thank you.
And for the client-sideness of Death Finder: Yeah the coordinates on death screen feature is only client-side. But the rest of the mod needs the server, especially the clickable death messages feature as it needs to store data and sends out network messages. I'm not sure if it's possible to just use the mod client-side on Fabric, it might be though, since Fabric isn't really good at enforcing an equal mod set on client+server. Forge is very strict about that though, so that's definitely not gonna work when the mod is absent on either side.
So this seems to come from my adaptation of Forge's ScreenEvent.Open
for Fabric. It works fine on it's own, the thing is just I copied the implementation into both mods, so they're unaware of each other and what changes are made to the current screen. I really need to setup a shared library at some point for all the Forge events I've ported in all of my mods, but that's not happening before the 1.20 ports.
I'll probably just revert Death Finder to a basic one line mixin as it was before I started using that callback.