promotional bannermobile promotional banner

Not Enough Spectators Memory Leak fix

A Minecraft mod that allows you to invite anybody spectate to your gameplay on Public Servers tooo!!! In an immersive way like watching in spectator mode

File Details

not-enough-spectators-1.1 26.2.jar

  • A
  • Jun 23, 2026
  • 58.24 KB
  • 3
  • 26.2
  • Fabric

File Name

not-enough-spectators-1.0 26.2.jar

Supported Versions

  • 26.2

Curse Maven Snippet

Fabric

modImplementation "curse.maven:not-enough-spectators-memory-leak-fix-1580449:8309367"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Migrated to Official Mojang Mappings (Yarn 1.21.8 → Mojang 26.2)

This release replaces Yarn mappings with official Mojang mappings across the entire codebase. Every rename below was verified against the actual deobfuscated 26.2 jars using javap/CFR — nothing here is guessed or carried over from changelogs/diffs, so symbol names should be accurate to the real classes.

This is primarily an internal/API change. No gameplay behavior should be different, but if you depend on this mod's classes, mixins, or access widener, read the breaking changes below.

Type & Member Renames

~45 net.minecraft.* types renamed mod-wide, plus the method/field renames the compiler surfaced once Mojang names resolved. Highlights:

Yarn Mojang
MinecraftClient Minecraft
ClientPlayerEntity LocalPlayer
ClientPlayNetworkHandler ClientPacketListener
Text Component
Vec3d Vec3
MathHelper Mth
World Level
GameMode GameType
PlayerPosition PositionMoveRotation

Plus ~45 packet class renames, e.g.:

  • GameJoinS2CPacketClientboundLoginPacket
  • EntityS2CPacket.RotateAndMoveRelativeClientboundMoveEntityPacket.PosRot
  • Status ping packets moved into the ping package

Method-level renames caught by the compiler:

  • player.sendMessage(text, false)sendSystemMessage(text)
  • getStatus()getEventId()
  • getReason()getEvent()
  • ChunkPos.toLong()ChunkPos.pack()
  • PlayerAbilities.unpack()Abilities.apply()

Access Widener

Retargeted to the Mojang-mapped members:

  • Connection.channel
  • PacketDecoder / PacketEncoder.protocolInfo (formerly DecoderHandler.state)
  • ClientboundLoginPacket.commonPlayerSpawnInfo
  • CommonPlayerSpawnInfo.gameType

Breaking: Network Pipeline Mixin Rework

ClientConnectionMixin is now @Mixin(Connection.class). This needed real rework, not just a rename — 26.2's Connection no longer has addHandlers.

  • Static pipeline injector retargeted to configureSerialization, matching its actual (ChannelPipeline, PacketFlow, boolean, BandwidthDebugMonitor) signature.
  • @Shadow target switched from side to receiving.
  • accepts(...)shouldHandleMessage(...).
  • Fixed the send(...) method descriptor to match the new signature.

Breaking: Spectator Server Network Handler Rebuilt

SpectatorServerNetworkHandler's manual protocol state machine has been rebuilt on top of Mojang's ProtocolInfo / UnconfiguredPipelineHandler system:

  • NetworkStateTransitionssetupInboundProtocol / setupOutboundProtocol, now returning configuration tasks instead of mutating state directly.
  • PacketBundler / PacketUnbundlerPacketBundlePacker / PacketBundleUnpacker.
  • Yarn's state factories replaced with Mojang's HandshakeProtocols, StatusProtocols, ConfigurationProtocols, LoginProtocols, and GameProtocols.
  • Protocol templates are now bound via RegistryFriendlyByteBuf.decorator, including the creative-mode GameProtocols.Context.

Fixes (surfaced by the migration, not mapping-related)

  • Cloth Config: getConfigScreen moved from AutoConfig to AutoConfigClient in the pinned 26.2-compatible version — updated call sites accordingly.
  • Client command tree: the deeply nested command tree was failing generic inference through Brigadier's raw static helpers once names resolved. Added local FabricClientCommandSource-typed literal/argument factories (filling the role ClientCommandManager would play, which isn't present in this Fabric build) so S infers correctly.

Notes for Downstream Mods / Contributors

If you reference this mod's mixins, access-widened members, or any of the renamed classes directly, those references need updating to the Mojang-mapped names above — particularly anything touching Connection, the pipeline configuration mixin, or SpectatorServerNetworkHandler's protocol setup, since those changed shape rather than just name.