How to Add Resource Packs to a Bedrock Server
Learn how to install, configure and force resource packs on a Bedrock Dedicated Server, PocketMine or Nukkit server with UUID setup and troubleshooting.
How Resource Packs Work on Bedrock Servers
Bedrock Edition handles resource packs differently from Java Edition. On a Bedrock server, packs are bundled with the world and sent to players when they join. Players can be prompted to accept the pack or be required to use it. This makes distributing custom textures, sounds and UI changes much simpler than on Java, where players must manually install packs or use a separate download system. Setting up bedrock resource packs server-side is a core part of running a custom Bedrock experience.
For Java server resource pack distribution, see our Java resource pack guide.
Preparing the Resource Pack
A Bedrock resource pack is a folder (or .mcpack/.zip) containing at minimum:
manifest.json: Declares the pack's UUID, version, name and description.pack_icon.png: A 256x256 icon displayed in the pack list.- Asset folders like
textures/,sounds/,ui/,models/.
The manifest.json must contain two UUIDs: one for the header (identifies the pack) and one for the module (identifies the resource type). Generate unique UUIDs for your pack. Do not reuse UUIDs from other packs or examples, it causes conflicts.
{
"format_version": 2,
"header": {
"name": "My Server Pack",
"description": "Custom textures for our server",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
},
"modules": [
{
"type": "resources",
"uuid": "f1e2d3c4-b5a6-7890-abcd-ef0987654321",
"version": [1, 0, 0]
}
]
}
Adding a Pack to BDS
On the official Bedrock Dedicated Server:
- Place your resource pack folder inside
resource_packs/in the server directory. - Open
worlds/YOUR_WORLD/world_resource_packs.json(create it if it does not exist). - Add your pack's UUID and version:
[
{
"pack_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"version": [1, 0, 0]
}
]
Restart the server. Players joining will be prompted to download the bedrock resource packs server-side before entering the world.
Forcing the Resource Pack
To require the pack (players who decline are disconnected), set this in server.properties:
texturepack-required=true
This ensures a consistent visual experience for all players. Most competitive or themed servers use this setting.
Host any Bedrock or crossplay server with zero config headaches. Astroworld Hosting supports Geyser, BDS, and every server type on every plan.
Adding a Pack to PocketMine
PocketMine handles resource packs through its own system:
- Place the
.zipor.mcpackfile in theresource_packs/folder. - Open
resource_packs.ymland add the pack filename underresource_pack_list. - Set
force_resources: trueto require the pack.
PocketMine handles pack encoding and delivery automatically. Players receive the pack during the login sequence.
Adding a Pack to Nukkit
Nukkit supports resource packs through a similar mechanism. Place the pack in the resource_packs/ directory and configure nukkit.yml to reference it. Check your Nukkit fork's documentation for the exact config key, as it varies between forks (Nukkit, PowerNukkitX, Nukkit-MOT).
Pack Stacking and Priority
You can load multiple bedrock resource packs server-side. Packs listed first in world_resource_packs.json have higher priority. If two packs modify the same texture, the higher-priority pack wins. This lets you layer a base texture pack with a smaller override pack that changes specific elements.
Updating Packs
When you update a resource pack, increment the version number in manifest.json and update the matching version in world_resource_packs.json. The Bedrock client caches packs by UUID and version. If you change pack contents without updating the version number, players may continue using the old cached version. Incrementing the version forces a re-download.
See crossplay in action: Astroworld MC, IP play.astroworldmc.com, Java + Bedrock.
Behavior Packs
Behavior packs (add-ons that modify game logic, entities, loot tables) follow the same process but use world_behavior_packs.json instead. They are placed in the behavior_packs/ directory. Behavior packs can have resource pack dependencies declared in their manifest, which the server sends together.
For a comparison of what Bedrock add-ons can do versus Java mods, see our add-ons vs mods guide.
Troubleshooting
- Pack not showing for players: Verify the UUID in
world_resource_packs.jsonmatches the UUID in the pack'smanifest.jsonexactly. Case matters. - Players see old textures: Increment the version array in both
manifest.jsonandworld_resource_packs.json. Ask players to clear their cached packs in Settings, Storage. - Pack download fails: Large packs (100 MB+) may time out on slow connections. Compress textures, remove unused assets, or split into smaller packs.
- Console players cannot load pack: Console editions (Switch, Xbox, PlayStation) have stricter size limits for resource packs. Keep packs under 250 MB for best compatibility.