How to add resource packs for Bedrock players with Geyser
Bedrock players don't get your Java server resource pack. Put a Bedrock .mcpack in Geyser's packs folder so they download it on join.
Updated · 2 min read
Bedrock players do not receive the Java resource pack set in server.properties, because Bedrock cannot read Java packs. To give them custom textures, put a Bedrock resource pack (.mcpack or .zip) into Geyser's packs folder and restart. Geyser sends it to Bedrock players when they join.
Where the packs folder is
On a Paper server it is:
plugins/Geyser-Spigot/packs/
Geyser creates it on first start. Any valid Bedrock resource pack placed here is offered to every Bedrock player.
Steps
- Get or make a Bedrock version of your pack. It must have a Bedrock
manifest.jsonat its root. - In the file manager, open
plugins/Geyser-Spigot/packs/and upload the.mcpackor.zipfile. Do not unzip it. - Restart the server.
- Join from Bedrock. The client downloads the pack while loading in.
Converting a Java pack
If you only have a Java pack, it needs converting to Bedrock format first. The GeyserMC community maintains converter tools, including ones that handle custom item models; see the resource pack pages on the GeyserMC wiki. Simple texture swaps convert well; complex custom models, shaders and fonts may not convert fully.
Custom items with Java custom model data also need Geyser custom item mappings so Bedrock knows which texture to show. The wiki covers the mapping file format.
Forcing the pack
By default, Bedrock players can decline the pack. To require it, set this in plugins/Geyser-Spigot/config.yml (the option name may differ slightly between Geyser versions; check the comments in your file):
force-resource-packs: true
Keeping the pack small
- Bedrock players download the pack on each join until it is cached, and mobile players may be on slow connections. Compress textures and remove unused files.
- Very large packs slow down joining for everyone on Bedrock.
Pack not loading?
- No download prompt: the file is not a valid Bedrock pack, or it is nested inside an extra folder in the zip.
manifest.jsonmust be at the top level. - Pack loads but textures are wrong: the pack targets a different Bedrock version or uses Java file paths.
- Changed the pack but players see the old one: bump the version number in
manifest.jsonso clients download the new copy. - Geyser logs an error on startup: the console usually names the bad pack and the reason.
Java players
Nothing changes for Java players. Keep using resource-pack and resource-pack-sha1 in server.properties for them.