Add-On Manifest Dependencies Reference
One of the most frustrating experiences for any aspiring Minecraft add-on creator is meticulously crafting custom content, only to have it fail to load in the game without a clear error message. Often, the culprit isn’t a bug in your custom blocks or entities, but a subtle misconfiguration within a single, yet supremely critical, file: the manifest.json. This seemingly innocuous file is the very backbone of any Minecraft Bedrock add-on, defining its identity, outlining its content, specifying its version, and, most importantly, declaring its dependencies on other packs or script modules. An incorrect manifest.json will effectively render your add-on inert, regardless of how perfectly coded or designed its other components might be.
![]()
The Unseen Architect: Why manifest.json Reigns Supreme
At its core, the manifest.json serves as a declaration of intent and necessity. When you create an add-on that relies on another existing pack – perhaps a custom resource pack for textures or a foundational behavior pack providing core mechanics – your add-on needs to communicate this requirement to Minecraft. The manifest.json facilitates this by explicitly stating that your add-on requires another pack or a native module to function correctly. This crucial declaration ensures that all necessary dependencies are loaded by Minecraft before your add-on attempts to utilize their resources or functionalities, preventing crashes, missing assets, and unexpected behaviors.
The Digital Fingerprint: UUIDs and Versioning
In the vast ecosystem of Minecraft add-ons, unique identification is paramount. This is where UUIDs (Universally Unique Identifiers) come into play. Every single pack you create requires a distinct 36-character header UUID. Think of this as the pack’s unique serial number, guaranteeing that Minecraft can differentiate it from every other add-on in existence. Beyond the pack itself, each module *within* a pack also demands its own unique UUID. This granular identification allows Minecraft to manage and load specific components independently.
- Module Types: The type of module you’re defining dictates its role. A standard Behavior Pack typically includes a
datamodule, which houses all its gameplay logic, entities, items, and recipes. Resource Packs, conversely, utilize aresourcesmodule for textures, sounds, models, and UI definitions. For more advanced functionality, Scripted Behavior Packs introduce ascriptmodule, which points to an entry file that kickstarts your custom JavaScript code. Each of these module types, when defined, must have its own unique UUID and version. - Versioning: Dependencies aren’t just about identifying a pack; they’re also about ensuring compatibility. When declaring a dependency, you specify its UUID alongside a version, typically presented in a
[major, minor, revision]format. This allows your add-on to specify that it needs a particular version (or newer) of its dependency. For most stable Bedrock packs,manifest version 2has become the practical baseline, offering a robust set of features. Developers experimenting with cutting-edge functionalities might encountermanifest version 3, which is currently preview-facing and includes optional pack settings, but it’s important to remember that preview features are subject to change.
Crafting Connections: Declaring Dependencies Step-by-Step
Implementing dependencies correctly is a methodical process. Follow these steps carefully to ensure your add-on loads without issue:
- Create
manifest.json: The very first step is to ensure that a file namedmanifest.jsonexists at the absolute root directory of your add-on pack. This is non-negotiable; Minecraft will not recognize your pack otherwise. - Define Header and Modules: Inside your
manifest.json, you’ll specify theformat_version– typically2for modern, stable packs. Crucially, you’ll define a uniqueheadersection containing your pack’s primary, unique UUID. Following this, you’ll define your pack’s module(s) (e.g.,datafor a behavior pack,resourcesfor a resource pack). Each of these module definitions must also include its own distinct UUID and version. - Add
dependenciesSection: To declare what your pack needs from others, you must include a dedicated"dependencies"section within yourmanifest.json, typically as an array of objects. - Specify Dependencies: For each external pack your add-on relies on, you’ll add an entry to the
dependenciesarray. Each entry requires two key pieces of information: itsuuid, which must be the exact header UUID of the dependent pack, and itsversion, matching the version of that dependent pack. Minecraft uses this information to locate and load the required pack. - Script API Dependencies: If your add-on leverages the powerful Script API for advanced custom logic, you’ll declare these dependencies a little differently. Instead of a pack UUID, you’ll specify the
module_name(e.g.,@minecraft/server) and its correspondingversion. This tells Minecraft to load the specific native script module your code requires.
Cultivating Reliability: Essential Tips for Manifest Management
Adhering to best practices can save countless hours of troubleshooting:
- Unique UUIDs are Non-Negotiable: This cannot be stressed enough. Always generate new UUIDs for every new pack and every new module within that pack. Never reuse UUIDs from other projects, online tutorials, or even different versions of your own pack. Reusing UUIDs is a primary cause of “Duplicate Pack” errors and severe loading conflicts.
- Clear Naming Conventions: While not directly impacting functionality, using clear and descriptive pack names and descriptions is vital. These are what players see in the Minecraft UI when they interact with your add-on, making it easier for them to understand and manage their installed content.
- Precise Version Management: The version you declare for a dependency in your
manifest.jsonmust exactly match the actual version of the dependent pack it’s trying to load. A mismatch, even a minor one, can lead to your add-on failing to recognize its dependency. - Restart Minecraft Religiously: After making any changes to your add-on files, especially the
manifest.json, it is absolutely crucial to restart Minecraft. The game often caches manifest data, and a restart ensures that it re-reads all the add-on files and applies your changes. - Consult Official Documentation: The Minecraft Bedrock development landscape evolves. For features concerning preview APIs or the newer
manifest version 3, always double-check the official Minecraft documentation. These elements are subject to change and may have specific requirements not covered in general guides.
Decoding Failure: Common Manifest-Related Pitfalls and Solutions
Even with careful planning, errors can occur. Understanding common error messages and their root causes is key to efficient debugging:
- Missing Dependency: This is a frequent error. It most commonly indicates a UUID or version mismatch between what your add-on declares and what Minecraft finds. It can also occur if only one part of a multi-part add-on (e.g., you installed the behavior pack but forgot the accompanying resource pack) was installed, and the other part is the declared dependency. Double-check all UUIDs and versions.
- Duplicate Pack: This error arises when Minecraft detects two or more imported copies of a pack that share the exact same UUID. This is why generating unique UUIDs for every pack is so critical. To fix this, identify the duplicate packs in your resource/behavior pack folders and remove the redundant copy, or regenerate UUIDs for one of them if they are intended to be distinct.
- Unknown Pack Name / Malformed JSON: This is a general indicator of structural errors within your
manifest.json. Common culprits include missing commas between properties, incorrect property names (e.g., “formatVersion” instead of “format_version”), or invalid values assigned to properties. Use a JSON validator to pinpoint syntax errors. - Incorrect File Structure: Your
manifest.jsonmust reside directly within the root directory of your add-on pack. If it’s nested in a subfolder or placed incorrectly, Minecraft won’t find it, and your add-on will not load. - Forgetting to Activate Both Packs: While dependencies are designed to automate loading, if your
manifest.jsonisn’t perfectly configured, or if you’re dealing with older packs, you might still need to manually activate both your add-on and its resource pack (if applicable) within the world settings. This is a temporary workaround while you troubleshoot manifest issues.
The Blueprint for Success
The manifest.json file, though often overlooked until problems arise, is the foundational blueprint for any successful Minecraft Bedrock add-on. Mastering its structure, understanding the role of UUIDs and versioning, and diligently following best practices for declaring dependencies will not only prevent countless headaches but also ensure that your custom content integrates seamlessly into the Minecraft experience. By paying close attention to this vital file, you lay the groundwork for stable, functional, and enjoyable add-ons that enrich the blocky world for everyone.