debugbridge-1.20.1-forge-2.0.0.jar
Curse Maven Snippet
What's new
# Changelog
## v2.0.0 (2026-06-14)
### Breaking Changes
- **Groovy replaces Lua**: Script runtime migrated from LuaJ to Apache Groovy 5.0.6. Removed all `core/lua/*`, added `core/script/*` (including `ScriptRuntime`, `GroovyBridge`, `GroovyJavaClass`, `GroovyJavaObject`, `ScriptBinding`, `JavaHelpers`, etc.).
- **JPMS/Classpath conflict fix**: Removed `org.luaj` dependency; Shadow relocation changed to directly bundle Groovy dependencies. See `ARCHITECTURE.md` for detailed strategy.
- **Dual-version architecture**: Unified `forge/1.20.1` and `neoforge/1.21.1` branches into a single repository, sharing the `core` module. `settings.gradle.kts` conditionally includes modules based on Gradle version.
### New Features
- **Embedded Web UI**: Vue 3 frontend build output is packaged into the JAR, serving HTTP service on `bridge port + 100`. Automatically detects if assets exist and degrades gracefully when missing.
- **Session control**: Added `disconnect`, `joinServer`, `quit` endpoints (`SessionControlProvider`).
- **Message link rendering**: URLs in chat messages are automatically rendered as clickable links (`TextLinks`).
- **Client ready gate**: `ClientSettleGate` – waits for the client to stabilize after joining a server before executing subsequent operations.
- **Item list endpoint**: `ItemRegistryProvider` interface, supports querying the registry for item lists.
- **Recording feature**: `RecordingProvider` + `FrameCapturer`, supports `record_video` endpoint.
- **Forge 1.20.1 lifecycle**: Mixin injection into `Minecraft.tick()` / `runTick()` / `close()` ensures `handleTick` / `handleRenderFrame` / `handleClose` are triggered correctly.
### Technical Improvements
- **Build system**:
- NeoForge 1.21.1: Gradle 9.5.1 + NeoForge moddev 2.0.72 + Shadow 9.0.0-beta4
- Forge 1.20.1: Gradle 8.10.2 + ForgeGradle 6.x + Shadow 8.1.1
- Shadow plugin: embeds `websocket` and `groovy` dependencies, excludes game runtime classes.
- Forge dev environment: `extractBridgeLibs` task extracts `websocket`/`groovy` to `classes` directory.
- Module path: Because NeoForge moddev is incompatible with JPMS named modules, no `module-info.java` is added.
- Mapping resolution: Compatible with Fabric and Forge namespaces, supports ProGuard mapping cache and download.
- Unit tests: 166 tests covering Groovy bridging, script execution, security policies, session control, Web UI, and other services.
- Spotless: Palantir Java Format for unified code style.
### Fixes
- Forge 1.20.1 missing `MinecraftClientMixin` causing lifecycle hooks not to fire → added.
- `BridgeServer.start()` / `stop()` API changes causing test compilation failures → fixed.
- Windows platform CRLF/LF line ending differences causing `GroovyBridgeTest.testPrintCapture` to fail → fixed.
- NeoForge dev environment WebSocket/Groovy classes not found → Shadow fat JAR deployed to `run/mods/`.
- `ClickEvent.OpenUrl` compatibility: NeoForge 1.21.1 uses `new ClickEvent(ClickEvent.Action.OPEN_URL, text)`.
- Missing `createItemRegistryProvider()` in `AbstractDebugBridgeMod` after merge conflict → added default implementation returning `null`.
- Description in `mods.toml` / `neoforge.mods.toml` updated from "Lua-Java bridge" to "Groovy-Java bridge".
### Known Issues
- Fabric modules (1.19, 1.21.11, 26.2-dev) are not included in this branch.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

