Releases: jasonpsimon/mcgavin-minecraft-spectacam-mod
Release list
v1.16.0 — Gradle 9 + MC 26.1.2 support
SpectaCam v1.16.0
The "Gradle 9 and Minecraft 26" release.
This one's a structural milestone more than a feature release. v1.15.1 was on the old stack and had 26.1.2 shipping as a mojmap fallback build. v1.16.0 drags the entire build pipeline forward one generation — new Gradle, new Loom, new Stonecutter, new JDK toolchain machinery — and uses that to bring 26.1.2 in as a first-class unobfuscated build alongside the 9 yarn-mapped versions.
What's in the box
10 client-side jars, one per supported Minecraft version:
- 1.18.2 —
spectacam-mc1.18.2-1.16.0+mc1.18.2.jar - 1.19.2 —
spectacam-mc1.19.2-1.16.0+mc1.19.2.jar - 1.19.4 —
spectacam-mc1.19.4-1.16.0+mc1.19.4.jar - 1.20.1 —
spectacam-mc1.20.1-1.16.0+mc1.20.1.jar - 1.20.4 —
spectacam-mc1.20.4-1.16.0+mc1.20.4.jar - 1.20.6 —
spectacam-mc1.20.6-1.16.0+mc1.20.6.jar - 1.21.1 —
spectacam-mc1.21.1-1.16.0+mc1.21.1.jar - 1.21.4 —
spectacam-mc1.21.4-1.16.0+mc1.21.4.jar - 1.21.11 —
spectacam-mc1.21.11-1.16.0+mc1.21.11.jar - 26.1.2 —
spectacam-mc26.1.2-1.16.0+mc26.1.2.jar— new first-class build
Gameplay behavior is unchanged from v1.15.1. Key bindings, the /spectacam command tree, camera modes, orbit/idle cameras, the v1.14.2 jitter fix, and the v1.14.1 third-person visibility fix are all intact across every version.
Why this release matters
MC 26.x without mappings
Minecraft 26.1.2 ships unobfuscated client and server jars. Names are final; there's no yarn layer to resolve against. Getting Loom to skip mapping resolution entirely required three coordinated changes:
- Loom ≥1.15.5 — introduces
MinecraftJarProcessor.isUnobfuscated()detection fabric.loom.disableObfuscation=true— set per-version inversions/26.1.2/gradle.properties- Plain
implementationin place ofmodImplementation— whendisableObfuscation=true,RemapConfigurations.setupForSourceSetreturns early and never creates themod*configurations, so you use the standard ones instead
Gradle 9 ripple effects
Upgrading Gradle forced a lockstep update on every plugin that looks at its API:
- Gradle wrapper
8.14 → 9.4.1 - Fabric Loom
1.13.6 → 1.15.5(needs Gradle plugin API 9.2+) - Stonecutter
0.5.2 → 0.7.11—chiseledBuildis auto-registered now; the oldstonecutter.registerChiseled { ... }call is gone. Kotlin DSL is preferred upstream but Groovy still works with one cosmetic warning. - Foojay resolver
0.10.0 → 1.0.0— compatibility release that removes the legacyIBM_SEMERUreferences
Per-version JDK toolchains
A toolchain { languageVersion = JavaLanguageVersion.of(javaMajor) } block in build.gradle, driven by a deps.java property in each per-version gradle.properties, lets Foojay auto-provision the right JDK per build target. MC ≤1.21.x gets JDK 21; MC 26.x gets JDK 25. This sidesteps the fact that Stonecutter's //? if >=26 preprocessor directives don't apply per-version inside a shared centralScript build.gradle.
MC 26.x source port
About 90 compile errors across 5 files, all stonecutter-gated so the yarn builds keep working untouched:
- KeyBindings.java —
KeyBinding→KeyMapping,InputUtil→InputConstants,KeyBindingHelper→KeyMappingHelper,.wasPressed()→.consumeClick(), overlay message API change - SpectaCamCommand.java — Fabric API renamed
ClientCommandManagertoClientCommands; kept the command tree readable via locallit()/arg()wrappers rather than gating all 20 call sites. AlsoMinecraftClient→Minecraft,PlayerListEntry→PlayerInfo,CommandSource.suggestMatching→SharedSuggestionProvider.suggest - CameraMixin.java — biggest single break:
Camera.update(BlockGetter, Entity, boolean, boolean, float)collapsed intoCamera.update(DeltaTracker)in 26.x. Inject signature rewritten; partial tick now pulled offDeltaTracker.getGameTimeDeltaPartialTick(true). PlussetPos→setPosition, and thethirdPersonshadow field is nowdetached - IdleCameraController.java —
Vec3d→Vec3 - SpectatorCameraController.java — the full tour:
MinecraftClient→Minecraft,ClientPlayNetworkHandler→ClientPacketListener,PlayerEntity→Player,Vec3d→Vec3,GameMode→GameType,client.world→client.level,world.getPlayers()→level.players(),getCameraPosVec→getEyePosition,getPitch/getYaw→getXRot/getYRot,client.interactionManager→client.gameMode,sendChatCommand→sendCommand,sendMessage(text, true)→sendOverlayMessage(Component)
What hasn't changed
- No new features
- No behavior changes on any existing version
- No config file migration required
- Same key bindings (F7 cycle mode,
=/-zoom, F8 clear target) - Same
/spectacamcommand tree
If you're on 1.21.4 or any other yarn version that worked in v1.15.1, drop in the matching v1.16.0 jar and you're done.
Install
- Install Fabric Loader 0.16.9+
- Install Fabric API 0.110.0+
- Drop the matching jar into your
mods/folder - Launch with the correct MC version
Client-side only. No server install needed.
Requirements by version
| MC | Java |
|---|---|
| 1.18.2 – 1.20.4 | Java 17 |
| 1.20.5 – 1.21.x | Java 21 |
| 26.1.2 | Java 25 |
Only required for running the mod; the build system now auto-provisions the right JDK via Foojay toolchains so contributors don't have to manage multiple JDKs manually.
Known cosmetic warnings (all benign)
- Stonecutter 0.7+ prefers Kotlin DSL — one Groovy DSL warning on build
- Gradle 9.4.1 flags some deprecations that will be removed in Gradle 10 — none are in this project's code
SpectaCam v1.15.1
SpectaCam v1.15.1
Adds support for three additional Minecraft versions: 1.18.2, 1.19.2, and 1.21.11.
Supported Minecraft versions
| MC version | Fabric API | Jar |
|---|---|---|
| 1.18.2 | 0.77.0+1.18.2 | spectacam-mc1.18.2-1.15.1+mc1.18.2.jar |
| 1.19.2 | 0.77.0+1.19.2 | spectacam-mc1.19.2-1.15.1+mc1.19.2.jar |
| 1.19.4 | 0.87.2+1.19.4 | spectacam-mc1.19.4-1.15.1+mc1.19.4.jar |
| 1.20.1 | 0.92.8+1.20.1 | spectacam-mc1.20.1-1.15.1+mc1.20.1.jar |
| 1.20.4 | 0.97.3+1.20.4 | spectacam-mc1.20.4-1.15.1+mc1.20.4.jar |
| 1.20.6 | 0.100.8+1.20.6 | spectacam-mc1.20.6-1.15.1+mc1.20.6.jar |
| 1.21.1 | 0.116.11+1.21.1 | spectacam-mc1.21.1-1.15.1+mc1.21.1.jar |
| 1.21.4 | 0.119.4+1.21.4 | spectacam-mc1.21.4-1.15.1+mc1.21.4.jar |
| 1.21.11 | 0.141.3+1.21.11 | spectacam-mc1.21.11-1.15.1+mc1.21.11.jar |
All versions require Fabric Loader 0.19.2+ and the matching Fabric API release.
Install
Download the jar matching your Minecraft version and drop it in .minecraft/mods/. Requires Fabric Loader and Fabric API.
Usage
/spectacam target <player>
Keybinds (rebindable in-game): F7 cycle mode, =/- zoom, F8 stop.
Modes: First Person, Third Person, Orbit, and a creative fly-around when the target is offline.
v1.15.0 — Multi-version support (6 Minecraft versions)
SpectaCam v1.15.0 — Multi-version support
First multi-version release. Previously 1.21.4-only; now ships jars for 6 Minecraft versions, built in a single pass via Stonecutter + Fabric Loom.
Supported Minecraft versions
| MC version | Java | Download |
|---|---|---|
| 1.19.4 | 17 | spectacam-mc1.19.4-1.15.0+mc1.19.4.jar |
| 1.20.1 | 17 | spectacam-mc1.20.1-1.15.0+mc1.20.1.jar |
| 1.20.4 | 17 | spectacam-mc1.20.4-1.15.0+mc1.20.4.jar |
| 1.20.6 | 21 | spectacam-mc1.20.6-1.15.0+mc1.20.6.jar |
| 1.21.1 | 21 | spectacam-mc1.21.1-1.15.0+mc1.21.1.jar |
| 1.21.4 | 21 | spectacam-mc1.21.4-1.15.0+mc1.21.4.jar |
Pick the jar matching your Minecraft version and drop it in your .minecraft/mods/ folder. Requires Fabric Loader ≥ 0.15.0 and Fabric API.
What's in it
All the v1.14.3 features — camera-lock spectator mod with first-person / third-person / orbit / creative-idle modes, /spectacam command, keybinds — now portable across the six supported MC versions.
No gameplay changes from v1.14.3. This release is purely about expanded version coverage.
Known gaps
Deferred to v1.15.1:
- MC 1.18.2 — v1 ClientCommandManager API differences
- MC 1.19.2 — yarn method name differences
- MC 1.21.11 — requires newer Loom (unpick v3)
- MC 26.1.2 (2026 snapshot) — requires mojmaps port
Build
./gradlew chiseledBuildProduces all 6 jars under versions/<mc>/build/libs/.