Skip to main content
← All Guides
Bedrock · 5 min read

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:

  1. Place your resource pack folder inside resource_packs/ in the server directory.
  2. Open worlds/YOUR_WORLD/world_resource_packs.json (create it if it does not exist).
  3. 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:

  1. Place the .zip or .mcpack file in the resource_packs/ folder.
  2. Open resource_packs.yml and add the pack filename under resource_pack_list.
  3. Set force_resources: true to 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.json matches the UUID in the pack's manifest.json exactly. Case matters.
  • Players see old textures: Increment the version array in both manifest.json and world_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.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe