# mchost mods (Fabric) Two small Fabric mods that turn the mchost tunnel into an in-game experience: | Mod | Side | What it does | |-----|------|--------------| | [`client/`](client) | players | A **Tunnel...** button in the Multiplayer screen: paste an `mchost://` invite and join with a completely vanilla client. Remembers the last invite. | | [`server/`](server) | host | Shows the tunnel invite **in chat, click-to-copy**: when mchost publishes it, when an operator joins, and on `/mchost`. | The Rust `mchost` binary stays in charge of the server process, the Cloudflare tunnel and the WebSocket bridge. The mods are a thin veneer: the server mod reads the invite from `mchost-address.txt` (written by mchost in the server directory), and the client mod dials the same `wss:///mc` endpoint the `mchost connect` CLI helper uses — so mods and CLI are interchangeable. ## Building Requires JDK 25+ and network access (Loom downloads Minecraft on first build). Gradle wrappers are included: ```sh cd mod/client && ./gradlew build # -> build/libs/mchost-client-0.1.0.jar cd mod/server && ./gradlew build # -> build/libs/mchost-server-0.1.0.jar ``` If `./gradlew` is missing, run `gradle wrapper --gradle-version 9.8.1` once with any recent Gradle. Target: Minecraft 26.3, Fabric Loader 0.19.5, Fabric API 0.162.0+26.3 (see each project's `gradle.properties`). ## Installing - **Players**: drop `mchost-client-*.jar` + Fabric API into `mods/` of a Fabric client. Then Multiplayer → **Tunnel...** → paste the invite → Join. - **Host**: drop `mchost-server-*.jar` + Fabric API into the Fabric server's `mods/`. Run your server under `mchost` as usual; operators get the invite in chat automatically. ## Playing together The host runs: ```sh mchost server.jar --bridge-secret hunter2 # ...and shares the printed invite: # mchost://noble-royal-ronald.trycloudflare.com/mc?s=hunter2 ``` A player pastes that invite into the mod's Tunnel screen (or into `mchost connect ` on the CLI) and joins `127.0.0.1` in their vanilla client. Operators see the same invite in-game via the server mod — click it, paste it to your friends, done. ## Notes - Both mods target the exact Minecraft version in `gradle.properties`; bump it (and Fabric API) to port them. - The client mod does one WebSocket session per game connection; several players behind one installation each join through their own session. - The server mod only *announces* the invite; it never touches networking.