NewSchokr 13 is here. A whole new UI, seven locations, snapshots and more. Read more →

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

  1. Get or make a Bedrock version of your pack. It must have a Bedrock manifest.json at its root.
  2. In the file manager, open plugins/Geyser-Spigot/packs/ and upload the .mcpack or .zip file. Do not unzip it.
  3. Restart the server.
  4. 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.json must 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.json so 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.