2core
ModrinthRun two linked Fabric servers as separate JVM processes — one mod managing a primary and secondary server with real-time cross-server features.
2Core
Run a second Fabric server as a separate JVM process — one mod, two roles.
What is this?
2Core lets you run two Minecraft servers on the same machine from a single mod. The primary server launches and manages the secondary server as an external JVM process. Both servers use the same mod JAR — the role (primary or secondary) is determined automatically at startup.
No plugins, no proxies, no extra software required.
Features
- One mod, two servers — install once, the mod handles both roles automatically
- Cross-server chat sync — chat messages, join/leave notifications, and death messages are relayed between servers in real time
- Player list —
/listothershows online players on the other server (available to all players) - Full process management — start, stop, restart the secondary server with simple commands
- Console relay — optionally mirror the secondary server's console output to the primary
- Auto-start — optionally start the secondary server automatically when the primary starts
- Configurable messages — customize join/leave/chat/death message formats independently for each server with color code support (
&6,&a, etc.) - Safe IPC — servers communicate over a localhost-only TCP socket, no external exposure
Requirements
| | |
|---|---|
| Minecraft | 1.21.1 |
| Fabric Loader | ≥ 0.18.6 |
| Fabric API | any |
| Fabric Language Kotlin | ≥ 1.13.0 |
Server-side only. No client installation needed.
Setup
- Install the mod on your primary server (along with Fabric API and Fabric Language Kotlin)
- Start the primary server — the mod creates a
2core/folder and a2core/2core.propertiesconfig file - Place your secondary server files inside
2core/(or configurecopy_modeto copy them automatically) - Run
/2core startto launch the secondary server
The mod copies itself into 2core/mods/ automatically — no need to install it separately on the secondary.
Commands
Available on both servers (all players)
| Command | Description |
|---|---|
| /listother | Show online players on the other server |
Admin commands — primary server only (/2core ...)
| Command | Description |
|---|---|
| /2core start | Start the second server |
| /2core stop | Stop the second server |
| /2core restart | Restart the second server |
| /2core status | Show status, config, and IPC connection info |
| /2core chatlink on\|off | Enable or disable cross-server sync |
| /2core console on\|off | Toggle secondary console relay to primary |
| /2core cmd <command> | Send a command to the secondary server |
| /2core set <key> <value> | Change a config value without editing the file |
| /2core help | Show command list |
Configuration
Config file: 2core/2core.properties
| Key | Default | Description |
|---|---|---|
| copy_mode | none | none / launcher / full — how to copy server files to 2core/ |
| launcher_jar | fabric-server-launch.jar | Fabric launcher jar name |
| vanilla_jar | server.jar | Vanilla server jar name |
| port | 25566 | Port for the secondary server |
| max_ram_mb | 1024 | Max RAM for the secondary JVM (-Xmx) |
| auto_start | false | Start secondary automatically when primary starts |
| auto_console | false | Enable console relay automatically on startup |
| chat_link | false | Sync chat, join, leave, and death events between servers |
| ipc_port | 0 | IPC port for inter-server communication (0 = auto) |
| join_message_for_primary | &6%player% joined the second server | Shown on primary when a player joins the secondary |
| join_message_for_secondary | &6%player% joined the main server | Shown on secondary when a player joins the primary |
| leave_message_for_primary | &6%player% left the second server | Shown on primary when a player leaves the secondary |
| leave_message_for_secondary | &6%player% left the main server | Shown on secondary when a player leaves the primary |
| chat_format_for_primary | &7[&62nd&7] &f<%player%> %message% | Chat format on primary for messages from secondary |
| chat_format_for_secondary | &7[&61st&7] &f<%player%> %message% | Chat format on secondary for messages from primary |
| death_format_for_primary | &7[&62nd&7] &c%message% | Death message format on primary from secondary |
| death_format_for_secondary | &7[&61st&7] &c%message% | Death message format on secondary from primary |
Placeholders: %player%, %message%. Color codes: &0–&9, &a–&f, &l, &o, &r, etc.
How it works
When the primary server starts, it launches the secondary server as a child JVM process with -Dtwocore.role=secondary. Both JVMs run the same mod JAR — the secondary detects its role via the system property and skips all process management logic. Inter-server communication (chat sync, player list queries) happens over a localhost TCP socket managed by the mod.
Versions
No version history available. Use the Download button to get the latest from the source.

Comments 0
No comments yet. Be the first to share your thoughts.