Resource packs
Bedrock and Geyser
Bedrock Edition (phones, consoles, Windows) uses a different pack format from Java. Studio converts your pack for you, so you don't make anything twice. How Bedrock players get it depends on where they play.
Most Bedrock players reach a Java server through Geyser, a plugin that lets Bedrock players join a Java server. If that's you, read the first two rows.
| Where they play | What to use | What they get |
|---|---|---|
| A Java server running Geyser and RP Engine, our plugin | Nothing extra. Sync (sends a pack to you while testing) or Distribution (sends it to every player) | Everything below, plus placed models with their animations and 3D Armor |
| A Java server running Geyser, without RP Engine | Export › Bedrock players on a Java server | Custom items with their icons, reskins, Sounds, Armor and chat Icons |
| A Bedrock world or Realm | Export › Minecraft: Bedrock Edition | Reskins, Sounds, Armor and chat Icons |
On a Java server with Geyser#
Geyser translates the game, but it can't read a Java resource pack. Bedrock players need a Bedrock pack, and Geyser needs to be told which Java items are which Bedrock items. Studio makes both.
With RP Engine#
If the server runs RP Engine, there is nothing to set up. Each time you press Sync, a Bedrock player on the receiving end gets the Bedrock build of the pack; they are disconnected and rejoined for a few seconds, because Bedrock only accepts packs while joining. A pack served with Distribution always includes the Bedrock build too.
RP Engine registers your items with Geyser itself and draws placed models for Bedrock players near them. See RP Engine › Bedrock and Geyser for exactly what crosses over.
Without RP Engine#
Press Export on the pack and choose Bedrock players on a Java server. You get one zip laid out like Geyser's own folder:
packs/<your pack>.mcpack the Bedrock pack Geyser sends players
custom_mappings/resourcepack-ai-<pack>.json which Java items are which Bedrock items
README.txt- Unzip it into Geyser's folder:
plugins/Geyser-Spigot/on Paper or Spigot (plugins/Geyser-Velocity/,config/Geyser-Fabric/and so on elsewhere). - Restart the server. Geyser reads packs and mappings only when it starts.
- Give Java players the Java pack as usual (Export › Minecraft: Java
Edition, set in
server.properties).
That's it. A custom item is the same item for both editions: the give command on its page works for everyone, and Bedrock players see it with its own icon and name instead of a piece of paper.
Not with RP Engine
If the server runs RP Engine, leave custom_mappings/ out. RP Engine
registers the same items with Geyser, and two mappings for one item is one too
many. The one part worth taking from this zip there is packs/, and only if
you put the Java pack in RP Engine's content/ folder by hand: Sync and
Distribution send Bedrock players the pack themselves.
The same file works whatever Minecraft version your server runs. Keep Geyser up to date, since it uses Geyser's newer mapping format.
In a Bedrock world or Realm#
Export › Minecraft: Bedrock Edition gives you a .mcpack. Open it on any
Bedrock device and it imports itself; then turn it on under the world's
Resource Packs. Without a server there's nothing to hand out custom items
or place models, so a world shows the reskins, Sounds, Armor and chat Icons.
What crosses over#
| Asset | On Bedrock |
|---|---|
| Block and item reskins | Under Bedrock's own texture names |
| Custom items | Their sprite, or a picture of the model, as the item's icon |
| Models | Bedrock entities with native animations, placed by RP Engine |
| Armor | The same sheets, under Bedrock's names |
| 3D Armor | Drawn on the body, with RP Engine |
| Sounds | Under your event names |
| Icons | Bedrock's glyph sheets, so they work in chat |
These have no Bedrock equivalent and are left out: GUI screens, the HUD, Shaders, Text Effects, Dialogs, Emotes, Vehicles, models placed as blocks, per-face block textures and item variants.
If a reskin doesn't show on Bedrock#
Bedrock names some textures differently (golden_apple is apple_golden,
wooden_sword is wood_sword). Studio renames the ones it knows. A reskin of
a texture we haven't mapped simply doesn't show on Bedrock; it never breaks
the pack.
If Bedrock's button symbols change#
Chat Icons replace whole pages of Bedrock's own symbols, and Bedrock keeps a few of its button prompts on those pages. A page holding one of your Icons replaces Bedrock's symbols on it.
Designing for both#
If many of your players are on Bedrock, put anything they need to know somewhere that crosses over, such as an item's name and lore, or chat. A menu that only exists as a custom screen, the HUD or a dialog is invisible to them.
Testing it#
The test server runs Geyser: join from Bedrock on the same address and Sync as usual.