Skip to main content
Add-ons9 min read

Bedrock Behavior Packs: Creating Your First Pack

Learn how to create a behavior pack for Bedrock Edition from scratch, including manifest setup, entity modifications, and custom recipes.

What You Will Build

This guide walks you through creating a simple behavior pack that modifies zombie behavior and adds a custom crafting recipe. By the end, you will understand the folder structure, manifest format, and JSON syntax used in Bedrock behavior packs.

Setting Up the Folder Structure

Navigate to the behavior packs folder on your platform. On Windows, this is:

%localappdata%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\development_behavior_packs\

Create a new folder for your behavior pack. The name can be anything, but use underscores instead of spaces:

my_first_pack/
  manifest.json
  pack_icon.png

The Manifest File

Every behavior pack needs a manifest.json that identifies it to the game. Create this file with the following structure:

{
  "format_version": 2,
  "header": {
    "name": "My First Behavior Pack",
    "description": "Modifies zombie behavior and adds recipes",
    "uuid": "YOUR-UNIQUE-UUID-HERE",
    "version": [1, 0, 0],
    "min_engine_version": [1, 20, 0]
  },
  "modules": [
    {
      "type": "data",
      "uuid": "ANOTHER-UNIQUE-UUID-HERE",
      "version": [1, 0, 0]
    }
  ]
}

Replace the UUID placeholders with actual UUIDs. You can generate them using an online UUID generator. Each UUID must be unique across all your packs.

Modifying Entity Behavior

To modify a mob, you need to override its behavior definition. Create an entities folder and add a zombie.json file:

my_first_pack/
  manifest.json
  pack_icon.png
  entities/
    zombie.json

The entity file uses JSON to define components that control the mob's behavior. Here is an example that makes zombies faster and gives them more health:

{
  "format_version": "1.20.0",
  "minecraft:entity": {
    "description": {
      "identifier": "minecraft:zombie",
      "is_spawnable": true,
      "is_summonable": true,
      "is_experimental": false
    },
    "component_groups": {
      "minecraft:zombie_adult": {
        "minecraft:movement": {
          "value": 0.35
        },
        "minecraft:health": {
          "value": 40,
          "max": 40
        }
      }
    }
  }
}

This example only shows a fragment. A complete entity file includes all component groups, components, and events from the vanilla definition plus your modifications. The best practice is to copy the vanilla entity file and modify it rather than writing from scratch.

Adding Custom Recipes

Create a recipes folder and add a JSON file for your recipe:

my_first_pack/
  manifest.json
  pack_icon.png
  entities/
    zombie.json
  recipes/
    gravel_from_flint.json

Example recipe that lets you craft gravel from 4 flint:

{
  "format_version": "1.20.0",
  "minecraft:recipe_shaped": {
    "description": {
      "identifier": "mypack:gravel_from_flint"
    },
    "tags": ["crafting_table"],
    "pattern": [
      "FF",
      "FF"
    ],
    "key": {
      "F": {
        "item": "minecraft:flint"
      }
    },
    "result": {
      "item": "minecraft:gravel",
      "count": 1
    }
  }
}

Modifying Loot Tables

Loot tables control what drops when entities die or chests generate. Create a loot_tables folder:

my_first_pack/
  loot_tables/
    entities/
      zombie.json

Example loot table that makes zombies drop diamonds rarely:

{
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "item",
          "name": "minecraft:rotten_flesh",
          "weight": 1,
          "functions": [
            {
              "function": "set_count",
              "count": { "min": 0, "max": 2 }
            }
          ]
        }
      ]
    },
    {
      "rolls": 1,
      "conditions": [
        {
          "condition": "random_chance",
          "chance": 0.05
        }
      ],
      "entries": [
        {
          "type": "item",
          "name": "minecraft:diamond",
          "weight": 1
        }
      ]
    }
  ]
}

Testing Your Pack

  1. Make sure your pack folder is in the development_behavior_packs directory.
  2. Open Minecraft and create a new world (or edit an existing one).
  3. In world settings, scroll to Behavior Packs.
  4. Your pack should appear in the Available list. Activate it.
  5. Enter the world and test your changes.

Enable the Content Log in Settings to see any errors in your JSON files. This is invaluable for debugging.

Common Mistakes

  • Invalid JSON syntax (missing commas, extra commas, mismatched braces). Use a JSON validator.
  • Duplicate UUIDs. Every pack and module needs a unique UUID.
  • Wrong folder structure. Files must be in the correct subdirectories.
  • Mismatched format_version. Use a version that matches your target Minecraft version.
  • Overriding only part of an entity. If you override an entity, you typically need to include the complete definition or use component groups carefully.

Next Steps

  • Study the vanilla behavior pack (extractable from the game files) to understand all available components.
  • Learn the scripting API for more complex behaviors that cannot be done with JSON alone.
  • Create a matching resource pack to add custom textures and models for your modified entities.
  • Join Bedrock add-on development communities for help and feedback.

Related Astroworld Resources

Related Guides