Cross-game bridge between Genshin Impact (via a Grasscutter private server) and Minecraft (via Paper 1.20.4).
Longer-term goals: mirror player position/state across games, cross-game chat, battle interaction (Minecraft attacks hitting Genshin monsters), and mapped item drops.
| Module | Role |
|---|---|
protocol |
Shared wire contract: message envelope + typed payloads, pure Java with Jackson. Used by both plugins. |
grasscutter-plugin |
Genshin side. A Grasscutter plugin (plugin.json) that publishes bridge events. |
paper-plugin |
Minecraft side. A Paper plugin (plugin.yml) exposing a /bridge command for smoke-testing the protocol. |
Requires JDK 17 bytecode target (--release 17) and Gradle 8.x (wrapper included).
./gradlew build # compile + tests + jarsArtifacts:
protocol/build/libs/protocol-0.1.0-SNAPSHOT.jargrasscutter-plugin/build/libs/grasscutter-plugin-0.1.0-SNAPSHOT-all.jarpaper-plugin/build/libs/paper-plugin-0.1.0-SNAPSHOT-all.jar
The -all.jar files are Shadow fat jars with Jackson relocated to net.serenitea.bridge.shadow.jackson, so the plugin does not clash with the server's own copy.
Both plugins are verified to load on real servers:
- Paper 1.20.4 boots and enables the paper-plugin (
SereniteaBridge paper-plugin enabled); the/bridgecommand is registered. - Grasscutter boots through its full startup and enables the grasscutter-plugin. To run it needs version-matched game data (
BinOutput,ExcelBinOutput,TextMap, ...) which is not redistributed here.
For a full installation and run guide, see SETUP.md.
| Item | Value |
|---|---|
| Java | 17 |
| Gradle | 8.14 (wrapper) |
| Grasscutter | stable (1.3.1-dev) built from source |
| Paper | 1.20.4-R0.1-SNAPSHOT API, build 499 |
| Jackson | 2.17 |
SETUP.md— installation and run guide for the Grasscutter and Paper sides.