Wiki 9Minecraft Wiki 9Minecraft

Licensing Your Add-On and Crediting Other People

How to embed author metadata, license strings, and contributor attributions into Bedrock packs.

6Sections
3Code examples
3Known errors

When you prepare a Minecraft Bedrock add-on for public release, clear licensing and contributor credits protect your work and respect the creators whose assets you built upon. Bedrock provides official fields inside the pack manifest for storing attribution and license data, alongside standard file structures that survive the packaging process. You should set this up before your first public test build so that anyone inspecting or redistributing your `.mcaddon` archive knows the exact terms of use.

The Manifest Metadata Object

The primary location for machine-readable credit and license information in a Bedrock pack is the `metadata` object inside `manifest.json`. While `header` and `modules` are strictly required for the game to recognize and load the pack, `metadata` is an optional top-level block designed specifically for distribution platforms, pack managers, and curious players who open the archive.

Inside `metadata`, you can define an `authors` array containing the names or handles of the primary creators, a `license` string stating the legal terms or SPDX identifier, and a `url` string pointing to your project home or source repository. If your add-on consists of both a behavior pack and a resource pack, you should duplicate this `metadata` block across both `BP/manifest.json` and `RP/manifest.json`. Players frequently separate resource packs from behavior packs to use the textures standalone, and keeping the metadata in both ensures your credits travel with whichever half of the add-on is being used.

Although the vanilla Bedrock client does not currently render the `metadata` block directly on the main pack selection screen, external tooling, dedicated server dashboards, and community launchers parse these exact fields to display author names and license badges automatically.

FieldWhat it doesNotes
authorsLists the primary creators of the pack.Must be an array of strings, even if there is only one author.
licenseDeclares the license governing the pack contents.Accepts a short identifier like 'MIT', 'CC-BY-4.0', or 'All Rights Reserved'.
urlProvides a web address for the project or creator.Plain string. Avoid putting raw URLs in the visible pack description; put them here instead.
generated_withRecords the tools and versions used to build the pack.An object mapping tool names to arrays of version strings.
BP/manifest.json
{
  "format_version": 2,
  "header": {
    "name": "pack.name",
    "description": "pack.description",
    "uuid": "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
    "version": [1, 0, 0],
    "min_engine_version": [1, 20, 80]
  },
  "modules": [
    {
      "type": "data",
      "uuid": "f6e5d4c3-b2a1-4f5e-8d9c-0b1a2f3e4d5c",
      "version": [1, 0, 0]
    }
  ],
  "metadata": {
    "authors": [
      "Alex_Dev",
      "SamModels"
    ],
    "license": "MIT",
    "url": "example.com/my-addon-project"
  }
}

Surfacing Credits in the Game UI

Because the `metadata` block is only visible to people who unpack your files, you also need a way to show credits to everyday players inside the Minecraft interface. The standard way to do this is through your localization files (`RP/texts/en_US.lang` and `BP/texts/en_US.lang`). By referencing localization keys in your `manifest.json` header (`pack.name` and `pack.description`), you gain full control over how the text looks in the Settings and World Edit menus.

The `pack.description` string supports newline characters (`\n`) and standard Minecraft formatting codes (`§`). While the pack selection list truncates long descriptions after the first couple of lines, the expanded pack info panel displays the rest of the string. Putting a concise credit line and license note on the second line of your description guarantees that anyone activating your pack sees who made it.

If you are building a behavior pack that uses `@minecraft/server` scripts, another polite, non-intrusive method is to register a custom chat trigger or `/scriptevent` listener—such as `/scriptevent mypack:credits`—that prints a formatted list of contributors and asset licenses to the player's chat screen on demand. This avoids cluttering the screen during normal gameplay while keeping detailed attributions accessible in-game.

RP/texts/en_US.lang
pack.name=§6Industrial Machinery Add-On§r
pack.description=Adds automated quarries and conveyor belts.\n§7By Alex_Dev & SamModels | License: MIT§r

Choosing a License for Code vs. Art Assets

An add-on is rarely just one type of work; it is a hybrid archive containing JSON definitions, TypeScript or JavaScript code, 3D geometry, pixel art textures, and audio files. When you pick a license, you need to think about how it applies to both the functional code in your behavior pack and the artistic assets in your resource pack.

Software licenses like the MIT License, BSD, or GNU GPL v3 are built for code and JSON data. They handle liability disclaimers and source redistribution well, making them ideal for script libraries, entity behavior templates, and utility packs. On the other hand, Creative Commons licenses (such as CC-BY-4.0 or CC-BY-NC-SA-4.0) are tailored for artistic works like textures, Blockbench models, animations, and custom sounds.

You do not have to apply a single license to the entire `.mcaddon` archive. Dual-licensing is common and practical in the Bedrock community: you might release your TypeScript scripts and behavior JSON under the permissive MIT License so other coders can learn from your mechanics, while keeping your bespoke monster models and textures under CC-BY-NC-ND-4.0 or All Rights Reserved so people cannot rip your art for low-effort re-uploads. Whatever combination you choose, state the split clearly in both your manifest and your root license files.

License TypeWhat it allowsBest suited for
MIT / BSDAnyone can use, modify, and redistribute (even commercially) as long as your copyright notice stays intact.Script API modules, JSON behavior templates, open-source community frameworks.
CC-BY-4.0Anyone can remix, adapt, and build upon your work commercially, provided they give you visible credit.Base resource packs, sound effect packs, shared geometry libraries.
CC-BY-NC-SA-4.0Others can remix and share your work non-commercially, provided they credit you and license their new creations under identical terms.Full gameplay add-ons shared for free community use and modding.
All Rights ReservedNo one may copy, modify, or redistribute any part of the pack without your explicit permission.Commercial releases, studio projects, or signature art assets you do not want reused.

Packaging LICENSE.txt and CREDITS.txt

Relying solely on a short string like `"license": "MIT"` in `manifest.json` is not enough to satisfy the legal terms of most open-source or Creative Commons licenses, which require you to include the full license text or a link to it alongside the distributed files. Furthermore, when players install a `.mcaddon` or `.mcpack` file, Minecraft unzips the archive and copies the behavior and resource pack folders into independent directories (`development_behavior_packs` or `behavior_packs`, and `resource_packs`). Any loose text files sitting in the outer `.mcaddon` zip wrapper are discarded during installation.

To ensure your legal terms and contributor attributions actually remain on the user's device after installation, place a `LICENSE.txt` and a `CREDITS.txt` file directly inside the root folder of your Behavior Pack (`BP/LICENSE.txt`) and the root folder of your Resource Pack (`RP/LICENSE.txt`). Minecraft's pack loader ignores `.txt` and `.md` files in the root directory, so they add virtually zero overhead and will never trigger content log warnings.

Inside `CREDITS.txt`, break down third-party contributions by specific file paths. If you used three sound effects from a public sound library under a CC-BY license, or a script utility written by another developer, list the exact internal path (`RP/sounds/machines/drill_loop.ogg`), the original author's name, the source license, and whether you modified the file. This granularity protects you if someone questions the provenance of your assets and helps future developers know which parts of your pack are safe to reuse.

Crediting Tools and Co-Authors with generated_with

Beyond human authors, the `metadata` block in `manifest.json` supports an official `generated_with` sub-object. This field was designed to let automated editors, modelers, and build pipelines leave a small signature indicating which tools helped construct the pack. Each key inside `generated_with` is the string name of the tool or library (maximum 32 characters), and its value must be an array of version strings using semantic versioning format.

When you export a model or pack template from community tools like Blockbench or Bridge, they often inject or update their entry in `generated_with` automatically. If you are integrating a third-party code generator, a custom build script, or a community framework into your workflow, you can manually add entries here to credit the toolmakers.

Be careful with the formatting of version numbers inside `generated_with`. Unlike the `header.version` field—which normally takes an array of three integers like `[1, 0, 0]`—the `generated_with` entries strictly expect an array of strings, such as `["4.9.3"]`. Mixing up integer arrays and string arrays inside the manifest is one of the most frequent causes of validation errors when adding metadata by hand.

RP/manifest.json
{
  "format_version": 2,
  "header": {
    "name": "pack.name",
    "description": "pack.description",
    "uuid": "11223344-5566-4778-8990-aabbccddeeff",
    "version": [1, 0, 0],
    "min_engine_version": [1, 20, 80]
  },
  "modules": [
    {
      "type": "resources",
      "uuid": "ffeeddcc-bbaa-4998-8776-665544332211",
      "version": [1, 0, 0]
    }
  ],
  "metadata": {
    "authors": [
      "Alex_Dev",
      "SamModels"
    ],
    "license": "CC-BY-NC-SA-4.0",
    "generated_with": {
      "blockbench": [
        "4.8.0",
        "4.9.2"
      ]
    }
  }
}

Respecting Mojang Brand and Asset Guidelines

When writing your license and credits, remember that your rights only extend to the original work you created. Under the Minecraft Usage Guidelines, you cannot claim ownership over vanilla Minecraft assets, nor can you re-license Mojang's intellectual property. If your resource pack includes modified versions of vanilla textures or models—for example, a slightly recolored iron golem texture or the default humanoid geometry—your license must clarify that your terms cover only your original additions and modifications, while base game assets remain the property of Mojang AB.

You should also pay attention to how you name and brand your add-on in `pack.name` and your license headers. Official guidelines require that community creations do not pretend to be official Minecraft products or updates. Avoid naming your pack in a way that implies Mojang endorsement, and when distributing your pack externally, include the standard disclaimer stating that your project is not an official Minecraft product and is not approved by or associated with Mojang or Microsoft.

Which versions this applies to

Applies to all modern Bedrock Edition versions supporting manifest format_version 2 (1.13.0 and above, including 1.20.x and 1.21.x). No experimental toggles are required.

When it does not work

What you seeWhyThe fix
Failed to import pack / Content Log error: 'manifest.json: metadata/authors is not of type array'You wrote a single string for the authors field (e.g., "authors": "Alex_Dev") instead of wrapping it in square brackets as a JSON array.Change the value of "authors" to an array of strings, even for a solo creator: "authors": ["Alex_Dev"].
Content Log error: 'manifest.json: metadata/generated_with/<tool_name> element is not a valid version string'You used an array of numbers like [1, 0, 0] inside generated_with, or included non-numeric prefixes like ["v1.0.0"].Format every version inside generated_with as a quoted semantic version string containing three numbers separated by dots, such as ["1.0.0"].
The pack imports without errors, but the second line of credits in the description shows a literal '\n' or broken symbols in the menu.You either typed a double backslash ('\\n') in your .lang file, or saved the .lang file with an encoding other than UTF-8, corrupting the '§' formatting symbol.Use a single '\n' for line breaks inside .lang files, and ensure your code editor saves `en_US.lang` and `manifest.json` using standard UTF-8 encoding without BOM.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.