Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
Jade works well in singleplayer. On a multiplayer server, though, most of its useful information disappears: the client can't see inside a chest or read a furnace's burn timer, because that data lives on the server and a vanilla server never sends it.
JadeBridge fills that gap. It speaks Jade's protocol, answers the client's requests, and supplies the data the client can't get on its own. Players install Jade as usual, you install this, and the overlay matches what they'd see in singleplayer.
- Plain Paper plugin. No Fabric server, hybrid setup, or proxy.
- Safe for vanilla players. Anyone without Jade is ignored: nothing is sent to them and nothing changes for them.
- No dependencies. No ProtocolLib and no packet interception. Jade's channels arrive as ordinary plugin messages.
- Tested. 41 unit tests cover the protocol, handshake, registry, and rate limiter, and the plugin has been smoke-tested on a live Paper 26.3 server.
Requirements
| Minecraft | 26.3 |
| Server | Paper 26.3 (built against development bundle build 142) |
| Jade (client) | 26.3.x, protocol version 9 |
| Java | 25 |
Purpur 26.3 is intended to be compatible, since nothing fork-specific is used, but it hasn't been tested separately. Older Minecraft versions aren't supported.
If a player's Jade uses a different protocol version, the handshake simply won't match and nothing happens: no errors and no half-working overlay.
What it shows
Blocks and containers
- Chests, barrels, shulker boxes, hoppers, dispensers, and droppers, with double chests shown as one combined view
- Custom names on renamed containers (double chests show the pair's name)
- Furnaces, smokers, and blast furnaces: burn progress, total cook time, and all three slots
- Brewing stands: fuel and time left on the current brew
- Beehives and bee nests: number of bees inside
- Lecterns and jukeboxes: the book or disc they hold
- Chiseled bookshelves and shelves: the item in the slot you're pointing at
- Trial spawners: cooldown, shown only while the spawner is actually cooling down
- Comparators and calibrated sculk sensors: exact signal strength
- Hopper lock state, so you can tell when redstone has switched one off
- Command blocks (gamemaster permission only, shortened to 40 characters like Jade does)
Entities
- Owner name on tamed mobs, including offline owners. Names come from the server's profile cache, and any that can't be resolved show as
???instead of stalling the request - Visible potion effects with time remaining, plus absorption hearts
- Growth time left on babies, including tadpoles
- Breeding cooldowns for animals, villagers, and allays (allays show their duplication cooldown instead)
- Villagers: restocks used today and ticks until the next restock. New in Jade 26.3, and only shown for villagers that have actually traded
- Next egg for chickens, next scute for armadillos, and next sniffer egg for sniffers
- Zombie villager conversion time
- Inventories on horses, llamas, chest minecarts, and armor stands
- Body armor on wolves, horses, and happy ghasts
- Whether a copper golem is waxed
Other
- Shearable blocks. The server sends Jade the list of blocks that drop items when sheared, so the harvest-tool indicator is correct. The list is rebuilt when the server loads and when datapacks reload, so datapack changes are picked up.
- Loot table debug info for blocks and entities, for gamemasters only.
Everything Jade can work out on the client is left alone, since there's no point duplicating it: health and armor bars, crop growth, note blocks, TNT, signs, player heads, item frames and paintings, horse stats, villager professions, and breaking progress.
Anything built on vanilla block entities works without changes, including datapack-modified blocks. Custom GUIs that aren't real block entities won't appear, because there's nothing for the server to read.
Config overrides
Jade reads some of its settings from the client, so a player can hide health numbers or show twenty potion effects at once. If you'd rather control that for your server, config-overrides pushes values to the client during the handshake. This is the feature I'm happiest with, and I haven't seen it in other server-side tooltip plugins.
config-overrides:
'minecraft:entity_health': true
'minecraft:potion_effects.limit': 4
Keys are Jade config IDs, and values can be booleans, numbers, or strings. Invalid entries are logged and skipped, so they never break the handshake.
Installation
- Drop the jar into
plugins/. - Start or restart the server.
- Make sure players have Jade 26.3.x on their client.
plugins/JadeBridge/config.yml is created on first start.
Configuration
enabled: true
debug: false
bstats:
enabled: true
rate-limit:
block-requests: 20
entity-requests: 20
max-position-deviation: 21
config-overrides: {}
enabled: whether Jade messages are handled at all.debug: extra logging for requests and provider errors.rate-limit: requests per second, per player and per request type. Jade asks for data at most a few times a second while you look around, so 20 leaves plenty of headroom. New limits apply to new Jade sessions; players who are already connected keep their current limits until they rejoin.max-position-deviation: extra distance, in blocks, added to the player's interaction range when the server decides whether to send data. Jade's own server exposes this as a game rule, but Paper plugins can't register game rules because the registry is frozen before plugins load, so it's a config option here with the same default of 21.bstats.enabled: anonymous usage stats. Changing this requires a restart. Everything else applies on reload.
Commands
All commands require jadebridge.admin, which defaults to ops. Grant it to other roles through your permissions plugin.
| Command | Description |
|---|---|
/jadebridge status |
Protocol version, active sessions, and request counts |
/jadebridge providers |
Lists registered block and entity providers |
/jadebridge reload |
Reloads the config and resets request counters |
/jadebridge update |
Checks the latest stable Modrinth release and shows the install link |
/jadebridge debug |
Shows the current debug setting |
/jadebridge debug on / off |
Enables or disables debug logging |
Can players use this to cheat?
This question comes up with anything that shows hidden information, so here is how it works.
- Nothing is pushed. The server only answers requests, so a modified client can't get more than a normal one.
- Players without Jade are ignored. Anyone who hasn't completed the handshake gets nothing.
- Payloads are treated as hostile. Anything over 32 KiB is dropped before decoding. Structure is validated strictly, and requests with unknown provider IDs, more than 256 providers, or trailing bytes are rejected outright rather than partially read.
- Requests are rate limited per player.
- Range is enforced. The target must be in a loaded chunk and within the player's interaction range plus the deviation above. Out-of-range requests get a reply with coordinates only, so players can't read containers they aren't near, and they can't make the server load chunks.
- No scanning. Entities are looked up by ID through the level, never by searching.
- Sensitive data is gated. Command blocks and loot table debug info require gamemaster permission, as in Jade.
- Failures are contained. If a provider throws an exception, it's caught and logged once, and the rest of the response is still sent.
Known limitations
- Only the server half is implemented. This is deliberate, as the client handles the rest.
- A few private Minecraft members are read by reflection: tadpole age, armadillo scute time, villager restock time, and the loot table internals used to build the shearable block list. They fail soft if Mojang moves them, so the usual symptom is a feature going quiet rather than a crash, but they may need attention on version bumps.
Support and source
Found a bug, or a provider gives bad output on your setup? Open an issue on GitHub with your server build and Jade version and I'll take a look. The repo also has architecture notes, protocol notes, and a full provider list, plus build instructions if you'd like to compile it yourself. Licensed under MIT.
Usage stats
JadeBridge collects anonymous, aggregate usage data through bStats: server count, player counts, and Java and Minecraft versions. Nothing identifying and no player data. Set bstats.enabled: false in the config to opt out.


