Releases: Campione01/MineClient-Bridge
Release list
MineClient Bridge 1.1.5
Synthetic mouse input reached InputEvent.MouseButton.Pre all along. What was missing was any way to tell that a gameplay mod had deliberately taken a button from input that never arrived, and named KeyMapping taps published no input event at all.
Input event reporting
Every key, raw-key and world-mouse response now carries mod_input_event, listing each event the dispatch published and whether a mod cancelled it. /control/status gains mouse (grab and button state) and mod_input_events: running counts plus the last observed InputEvent.MouseButton.Pre, InputEvent.Key, InputEvent.MouseScrollingEvent and InputEvent.InteractionKeyMappingTriggered.
event_fired: false is not by itself proof that input was lost. Minecraft returns before publishing a key event when a screen consumes the key, exactly as it does for a physical keyboard.
Named mappings produce real input events
POST /control/key borrowed the mapping onto a spare keyboard key and called KeyMapping.click(). That updates isDown() and consumeClick(), so a mod that polls its mapping each tick responded, but it publishes no InputEvent.Key or InputEvent.MouseButton at all, so a mod that reads its controls from those events never saw the input. A mapping is now driven through the handler its bound key would use: MouseHandler.onPress for a mouse-bound mapping and KeyboardHandler.keyPress for a keyboard-bound one.
Passing "exact": true keeps the previous targeting, where the mapping is borrowed onto an unused keyboard key so only that mapping reacts; it now fires a real key event while doing so, and an unbound mapping always takes this route. A borrowed key cannot be held, and a mouse-bound mapping is refused while a screen is open, because the screen route would click whatever the pointer sits on instead of activating the mapping.
exact defaults to false, so a named tap behaves like the device the player would actually use, including for other mappings that share the same key.
Mouse grab in an isolated session
MouseHandler.grabMouse() is gated on Minecraft.isWindowActive(), and an isolated client never takes operating system focus. In practice the flag stays at its startup value of true, so the grab has been working, but it would be lost for good if that window ever gained and then lost focus, and Minecraft refuses to continue an attack or to turn the player while the mouse is ungrabbed. grabMouse now ignores the focus gate in an isolated session. The redirect is scoped to that one method, and the native cursor is still never captured.
MCP adapter
minecraft_client_input accepts an optional boolean exact for kind: "key".
Verification
Verified on a live isolated NeoForge 1.21.1 client running this exact JAR, against Ripples of the Past: a held synthetic left click broke oak planks in survival in 3.23 s; with a Stand summoned the same press was published and cancelled by the mod, and the Stand's punch played. The released 1.1.4 JAR breaks the same block in 3.22 s, which is the baseline showing the mouse path already reached gameplay. Details in docs/evidence/1.1.5-melee-input.json.
mineclient-bridge-neoforge-1.21.1-1.1.5.jar SHA-256: DC1C420A0C1CCE18026984AB49C58F4E7034409F5430FA2ED623AC16B48CFACE
MineClient Bridge 1.1.4
1.1.4
- Use newline-delimited JSON on the MCP stdio transport, as MCP stdio clients
expect. The 1.1.3 adapter framed each message with a Content-Length header. - Declare plain object input schemas for
minecraft_client_queryand
minecraft_client_input, so MCP clients that validate the tool list strictly
load all seven tools. The server still rejects fields that do not belong to
the chosen kind. - The NeoForge mod is unchanged apart from its version. No server installation
is needed.
MineClient Bridge 1.1.3
1.1.3
- Use process-local virtual mouse capture, keyboard polling and clipboard state
for isolated background clients, without grabbing the shared OS pointer. - Reject physical input callbacks in isolated sessions while retaining the
normal Minecraft event path for authenticated synthetic input. - Preserve Shift/Ctrl/Alt/Super state in synthetic keyboard and mouse events.
- Report isolation mode and counters in client status. The MCP launcher verifies
isolation support before starting a background client and before sending input. - Keep ordinary foreground clients unchanged. No server installation is needed.
MineClient Bridge 1.1.1
MineClient Bridge 1.1.1
- Added normal in-world mouse button and scroll input through Minecraft and NeoForge's internal event paths.
- Named
KeyMappingtaps now activate only the requested mapping, even when it is unbound or shares a physical key with another mapping. - Fixed MCP mouse
press/releasetranslation and allowed coordinate-free world scroll and button actions. - Retained loopback bearer authentication, exact session identity, bounded payloads, Minecraft-thread dispatch, and release-all cleanup.
MineClient Bridge 1.1.0
MineClient Bridge 1.1.0
- Added authenticated Minecraft command submission through HTTP and MCP, with or without a leading slash and without requiring an open chat screen.
- Added internal raw-key input for keyboard controls such as Enter, Escape, and F1 that may not have a named
KeyMapping. - Raw-key state is tracked on the Minecraft thread, with idempotent press/release behavior and explicit release events during release-all, close, and bridge shutdown.
- Slash-prefixed text submitted through an active chat screen now follows Minecraft's normal chat behavior instead of being blocked by the bridge.
- Kept loopback, bearer-token, exact-session identity, request-size, and input-validation boundaries; raw keys stay inside Minecraft and never use operating-system input injection.
MineClient Bridge 1.0.0
MineClient Bridge 1.0.0
- Initial NeoForge 1.21.1 client release.
- Added authenticated loopback status, capability, framebuffer, keymap, state, screen, key, view, GUI mouse, text, release-all, and close endpoints.
- Added bounded request/response limits, constant-time token comparison, separate owner-restricted token storage, and shutdown input cleanup.
- Added the optional seven-tool MCP server with exact run/PID/desktop/root identity checks.
- Added a reusable Codex client-acceptance skill for isolated and parallel test sessions.