Skip to content

Limited Spectator v2.0.1 - 🔧 Compatibility & Cleanup Hotfix

Latest

Choose a tag to compare

@kalashnikxvxiii kalashnikxvxiii released this 05 Jun 12:32

🔧 Compatibility & Cleanup Hotfix

Drop-in update on top of v2.0.0. Lets vanilla clients connect to servers running the NeoForge build, aligns Minecraft version ranges across all manifests, fixes the dev environment for contributors on Linux, and corrects long-standing version metadata drift inside the published JARs.

✨ Highlights

  • 🌐 Vanilla clients can now join NeoForge servers running the mod. The HUD-sync network channel is now optional — vanilla clients get all the gameplay restrictions, just without the HUD-hide UX. (Closes #2)
  • 📚 README adds a clear "Environment Requirements" section with per-loader breakdown of where to install the mod for best UX.
  • MC version range consistency: modrinth.mod.json and neoforge.mods.toml were declaring incorrect ranges (one too narrow at exactly 1.21.1, the other open-ended). Both now correctly declare the actual supported 1.21.11.21.11 range, matching the rest of the manifests and docs.
  • 🛠️ Internal version metadata fix: published JARs since v1.2.1 had been declaring the wrong version inside META-INF/neoforge.mods.toml and modrinth.mod.json due to hardcoded values that were never updated for the v2.0.0 release. From now on gradle.properties is the single source of truth.

🔄 Compatibility

  • Drop-in replacement for v2.0.0 — no config or save migration needed.
  • Same Minecraft + loader version support: MC 1.21.1 → 1.21.11, NeoForge 21.1.217+, Fabric Loader 0.16.5+, Quilt Loader 0.26.4+.
  • Java 21 required.

📦 Downloads

Choose the JAR matching your loader:

Loader File
NeoForge LimitedSpectator-neoforge-2.0.1.jar
Fabric LimitedSpectator-fabric-2.0.1.jar
Quilt LimitedSpectator-quilt-2.0.1.jar

🐛 Bug fixes

  • Fixed: NeoForge servers running the mod rejected vanilla client connections during handshake (channel not registered). The HUD-sync channel is now optional() and sendHudState() checks hasChannel() before dispatching.
  • Fixed: neoforge.mods.toml was declaring version="1.21.x-1.2.1" inside the JAR despite v2.0.0 being the actual release (the file was never updated when bumping). Now uses ${mod_version} placeholder so it follows gradle.properties automatically.
  • Fixed: modrinth.mod.json was declaring "version": "1.1.1" since the v1.1.1 era — corrected.
  • Fixed: modrinth.mod.json declared exactly "minecraft": "1.21.1", causing Modrinth to advertise compatibility only with 1.21.1 even though the mod supports the full 1.21.x family. Now ">=1.21.1 <1.22".
  • Fixed: neoforge.mods.toml minecraft versionRange was [1.21.1,) (no upper bound). Would have attempted to load on future MC 1.22 / 26.x and crashed on the first renamed Minecraft API call. Now [1.21.1,1.22).

🧰 Internal / contributor-facing

  • .gitattributes now enforces LF on all source/config/script files, CRLF on *.bat/*.cmd, with binary markers. Fixes ./gradlew on Linux (CRLF shebang was breaking /bin/sh).
  • NeoForge dev runs (:neoforge:runClient / :neoforge:runServer) no longer crash with NoClassDefFoundError: SpectatorConfig at boot. The :common source set is now correctly grouped with :neoforge's under the same limitedspectator mod identifier via NeoGradle's modSources API.
  • All build.gradle files (root + common + 3 loaders) now read version = mod_version from gradle.properties instead of hardcoding it in five places.
  • build.gradle runs DSL: switched to the canonical NeoGradle 7 shorthand arguments 'arg1', 'arg2'.

🙏 Credits