Player Activity View (0.0.0-beta.2)
Curse Maven Snippet
What's new
v0.0.0-beta.2 - Screen mirror fixed: open GUIs render again
Bug-fix beta for Minecraft 1.21.1 / NeoForge 21.1.249. If a remote player's menu, inventory or pause screen showed nothing at all above their head after the first screen had been shared once, this is the build you want. Same feature set as beta.1 otherwise.
Fix
- Opening an inventory or the pause menu rendered nothing. Two chained causes:
- The particle-selection logic had been rewritten to the 26.1.2/26.2 approach, which deliberately suppresses the static sprite icon (
inventory_*,escape_menu_*, …) once live screen-mirror pixels exist and hands the actual drawing to a separate world-space renderer. That renderer was never brought over in the 1.21.1 backport, so there was nothing left to draw. - Worse, the suppression latched permanently. The mirrored screen texture is only ever replaced, never cleared, when its size changes — so after the very first screen had been shared, that condition stayed true for the rest of the session. Every later GUI a player opened produced no visual at all. The first open still worked (no pixels yet), which made the bug look intermittent.
- The particle-selection logic had been rewritten to the 26.1.2/26.2 approach, which deliberately suppresses the static sprite icon (
- The chat screen had the same hole: typing / idle chat sprites were suppressed as soon as chat mirror pixels arrived, with nothing replacing them.
Technical Changes
- The screen mirror is drawn again through the custom particle engine (
ParticleDynamic), the path upstream WATUT uses on 1.21.x. A separate world-space renderer was deliberately not used: on 1.21.1AbstractTexture#getId()returns the raw GL texture id, so the per-player dynamic texture cannot be fed to a standard render type. The per-playerParticleRenderTypecreated byScreenData#initClient()is reused instead — it resolves the current texture at draw time, so it survives a window resize. ParticleDynamicnow overrides its texture coordinates to the full 0..1 range. It draws from a standalone texture rather than an atlas sprite, and the inherited sprite reference was never assigned, which would have thrown while rendering.ParticleRotatinggained per-axis quad scale hooks, so the mirror panel can be non-square.- The particle is now upgraded or downgraded between icon and mirror as screen data arrives, instead of only when the GUI state changes.
- Sprite binding no longer swallows errors silently. Anything missing from the particle atlas is now reported in the log under
player_activity_view/particles— the previous failure mode was “nothing renders, with no error anywhere”. - Removed a redundant particle atlas override that was a no-op and misleading.
Notes
Beta. Building, all mixins and the custom blur shaders are verified in a clean 1.21.1 / NeoForge 21.1.249 client. In-game behaviour with a second player is still not verified — the screen capture / transfer path could not be exercised without a live session. Please report issues. Install on both client and server; every feature is toggleable client-side and via the server config. No dependency or loader version changes.
Inspired by WATUT (What Are They Up To) by Corosus. Independent codebase, no dependency on CoroUtil. Not affiliated with or endorsed by the original author.
JAR: player_activity_view-1.21.1-neoforge-21.1.249-0.0.0-beta.2.jar
This mod has no additional files

