Bedrock Edition modding works completely differently from Java. There's no Forge, no Fabric, no mod loaders. Instead, Bedrock uses "behavior packs" and "resource packs" that modify the game through data-driven configuration.
Understanding Bedrock Addons
Bedrock addons consist of two components:
Resource Packs: Change visuals. Custom textures, models, sounds, and UI elements. Clients download these when joining your server.
Behavior Packs: Change game logic. Custom entities, crafting recipes, loot tables, and world generation. These run server-side.
Together, they form an addon. You can find addons on sites like MCPEDL, CurseForge (Bedrock section), and the Bedrock Addon community Discord servers.
Installing Addons on a Bedrock Server
Step 1: Create the Required Folders
In your server directory, create:
development_behavior_packs/
development_resource_packs/
Or use the standard folders:
behavior_packs/
resource_packs/
Step 2: Upload the Addon Files
Extract the addon (.mcaddon or .mcpack files are just ZIP archives). You'll get folders containing a manifest.json file. Place each pack in the appropriate directory.
Step 3: Activate Packs
Edit world_behavior_packs.json and world_resource_packs.json in your world folder:
[
{
"pack_id": "uuid-from-manifest",
"version": [1, 0, 0]
}
]
The pack_id comes from the addon's manifest.json file.
Step 4: Restart the Server
Restart and check the console for any errors. Missing dependencies or version mismatches will show as warnings.
Popular Bedrock Addons
| Addon | Type | What It Does |
|---|---|---|
| Better on Bedrock | Resource | Improves textures and UI |
| Vanilla Tweaks | Both | Quality of life improvements |
| SimplySwords | Behavior | New weapon types and combat |
| More Simple Structures | Behavior | Additional world structures |
| Farming Expansion | Behavior | New crops and farming mechanics |
Limitations vs Java Modding
Bedrock addons can't do everything Java mods can:
- No new block types beyond retextures of existing blocks
- Limited scripting (GameTest framework / Script API)
- No custom dimensions
- Limited entity AI modification
- Resource pack size affects client download time
However, the Script API is expanding rapidly. Mojang adds new capabilities with each update, and complex addons are becoming more possible.
Performance Considerations
Bedrock servers are inherently more efficient than Java. The C++ codebase handles entity processing and chunk management much faster.
However, behavior packs with heavy scripting can slow things down. Each script that runs per tick adds overhead. Test addons individually and monitor performance.
For a Bedrock server with 5-10 addons and 20 players, a 4GB plan on Space-Node handles it comfortably. NVMe SSD is important for fast resource pack delivery to connecting clients.
What Bedrock "addons" actually are
Bedrock addons are pairs of packs:
- Behavior Pack (
*_BP/): JSON entity files, scripts, loot tables, recipes. - Resource Pack (
*_RP/): textures, models, sounds, particles.
Servers serve both. Clients download the resource pack on join (default), or admins ship them via marketplace links. JSON is checked against game-version-specific schemas; mismatched versions crash on load.
Folder structure on a dedicated Bedrock Server (BDS)
bedrock-server/
bedrock_server
server.properties
permissions.json
worlds/
Bedrock level/
world_behavior_packs.json
world_resource_packs.json
behavior_packs/
MyAddon_BP/
manifest.json
resource_packs/
MyAddon_RP/
manifest.json
The world JSON files reference packs by UUID and version. Edit them carefully; one wrong version array kills the world.
Activating a pack: the JSON files
world_behavior_packs.json:
[
{ "pack_id": "8e6c2b0a-2f1d-4b8e-9b1f-0e2d4c5f6a7b", "version": [1, 0, 0] }
]
UUID and version must match MyAddon_BP/manifest.json. Copy them exactly.
server.properties for addons
texturepack-required=true
resource-pack-required=true
Without these, clients can choose to skip resource pack download and end up seeing missing textures (the purple/black checkerboard) on custom items.
Common breakage
| Symptom | Cause | Fix |
|---|---|---|
| World won't load after pack install | wrong pack_id or version in world JSON | re-copy from manifest.json |
| Custom entity invisible | resource pack not active | check world_resource_packs.json |
| Players see default textures | client didn't download | ensure resource-pack-required=true |
| Crash on world load | manifest min_engine_version too high | lower min_engine_version to current BDS version |
| Addon loads but scripts don't run | scripting API not enabled | set experiments for Beta APIs in world settings |
Marketplace vs custom
Marketplace packs are encrypted and only loadable on Realms or via Marketplace install. They are not deployable on a custom dedicated server. Custom packs (yours, or community) load fine on BDS.
