Link a Bedrock and a Java account into one character: shared inventory, ender chest, XP, pets and skin — even with both
Link a Bedrock and a Java account into one character — shared inventory, ender chest, XP, pets and skin — with both accounts online at the same time.
⬇️ Download 1.1.0-beta, not 1.0.0
1.1.0-beta is the version you want. Despite the beta label, it is strictly better than 1.0.0:
| 1.0.0 | 1.1.0-beta | |
|---|---|---|
| Minecraft | 26.2 only | 1.18 → 26.2 |
| Platform | Paper | Paper, Spigot, Folia |
| Java skin after relogging | lost | kept |
| Pets recognising the account in use | broken | works |
| SkinsRestorer | fights over the skin | steps aside |
| Sweep cost per linked player | 68 item copies/second | no copying |
It is marked beta only because the supported range is far wider than what has been played on: loading was verified on Paper 1.18.2, Paper 26.2 and Folia 26.2, but the full feature set has only been exercised in real play on Paper 26.2.
1.0.0 is kept for history. There is no reason to install it.
Do you actually need this?
Floodgate already has native account linking, and it is the better option if you don't need both accounts online at once: the Bedrock account becomes the Java one, same UUID, everything shared with no plugin at all. If that fits you, use Floodgate and ignore this project.
The catch is that same UUID — one UUID is one session, so logging in with the second account kicks the first with "You logged in from another location".
CrossLink keeps the UUIDs separate and mirrors state between them. That's what lets you leave your character farming on the phone while playing the same character on PC.
How players link
Self-service, no admin needed. A native Bedrock form pops up on first join, once per account.
On account A: /link <name of account B> → 6-digit code
On account B: /link <code> → linked
The two steps are what prove the same person controls both accounts. Without that cross-confirmation, anyone could link themselves to someone else's inventory just by typing the victim's name.
No Microsoft OAuth, no Azure app registration — that would force everyone hosting the plugin to register their own application.
What is shared
Every line is independent, so you can share the backpack while keeping armour per account:
sync:
inventory: true # the 36 backpack slots
armor: true # the 4 armour slots
offhand: true # the off-hand slot
ender-chest: true
xp: true # level, progress and total
pets: true # wolf, cat, horse, parrot
health: false # see below
food: false
Health and food sharing exist but are off by default — with them on, damage on one account shows on the other instantly, and death kills both.
Not shared: position, dimension, advancements, potion effects, gamemode. Each account remains its own entity in the world.
Safety
This plugin rewrites player inventories, so it ships with guardrails:
- A primary account per group (the Java one) owns the real playerdata; the others mirror it. A freshly linked account always adopts and can never overwrite.
- The secondary account leaves with empty playerdata, so removing the plugin later leaves exactly one owner instead of duplicating every item.
- Automatic backups before every destructive write, restorable with
/crosslink restore <player>.
Performance
The event path costs nothing when nobody is doing anything. The periodic sweep is the only recurring cost: once per second it hashes each online linked player's state, directly over the live inventory with no copying.
Players who are not in a linked group cost nothing at all — the sweep only walks groups. On a 100-player server with three linked pairs, the cost is six players, not a hundred.
Raise sweep-interval-ticks to trim it further; the event path is what catches changes in practice.
Compatibility
| Minecraft | 1.18 → 26.2 |
| Platform | Paper, Spigot, Folia |
| Java | 17+ (whatever your server version needs) |
| Floodgate | optional, needed for the native Bedrock form |
| SkinsRestorer | detected; CrossLink steps aside so the skins don't fight |
Skin copying requires Paper — the player profile API does not exist on Spigot, and the plugin says so instead of failing silently. Linking, inventory, XP and pets work everywhere.
Not a proxy plugin. It runs on backend servers. Behind Velocity or Waterfall, state lives per server: a link made on one backend does not exist on another.
Known limits
If both accounts touch the inventory within the same sweep interval, one change wins and the other is lost. Alternating between accounts never hits this; both sorting chests simultaneously does. It is inherent to a shared inventory.
⚠️ Not actively maintained. Written for one specific server and published in case it's useful. No guarantee of updates, fixes or support; issues and pull requests may go unanswered. MIT licensed — fork it freely, and if you keep an active fork, open an issue and I'll point people to it.
📖 Full documentation, source and issues: github.com/GodOrigem/CrossLink
Pinned Versions
- R1.18–26.2
Pages
Members
1Owner