Coding Drowned in Minecraft: A Bedrock Behavior Pack Guide
To change how a Drowned attacks in Minecraft Bedrock Edition, create a behavior pack that overrides the vanilla Drowned entity, then edit a documented component such as melee attack damage. The most important rule is to start from the current vanilla entity file and preserve its component groups and events. A short replacement file can accidentally remove the mob's normal targeting, trident mode, movement, or spawn behavior.
This guide focuses on coding Drowned in Minecraft Bedrock with a small, reversible melee-damage change. It also explains where Java modding differs, how to activate the pack, and what to check when the game ignores an edit. There are no hidden trident or AI exploits here: the useful tools are the documented entity JSON components.
What “Drowned modding” means in each edition
Bedrock behavior packs define entity behavior in JSON. Microsoft’s current Drowned reference includes separate melee and ranged component groups: the melee group contains minecraft:attack, while the ranged group defines trident attacks. The Bedrock behavior pack route below edits that structure directly.
Java Edition uses a different system. Bedrock entity JSON cannot be dropped into a Java world. If you want to change built-in Drowned AI in Java, use a Java mod loader and a project configured for the exact Minecraft version you target. Fabric’s official setup guide asks creators to match the game, mappings, Loader, and Loom versions. A Java datapack remains useful for supported data-driven content, but it is not a substitute for arbitrary Java-side AI code.
| Edition | Use this route | Important limit |
| Bedrock | Behavior pack entity JSON | The steps below replace the vanilla Drowned definition in the selected world. |
| Java | A version-matched Fabric or other Java mod | Do not reuse Bedrock JSON or Java snippets from a different game version. |
Four steps to customize a Bedrock Drowned
1. Create a behavior pack and manifest
Make a new folder named DeepDrowned inside your Bedrock development behavior packs directory. Within it, create manifest.json and an entities folder. Your project should have this shape:
DeepDrowned/
manifest.json
entities/
drowned.json
A behavior pack needs a manifest with a header and a data module. Use two different, newly generated UUIDs for the header and module fields; the values below are placeholders, not UUIDs Minecraft can load. Keep the manifest format and minimum engine version compatible with the Bedrock build you are targeting.
{
"format_version": 2,
"header": {
"name": "Deep Drowned",
"description": "A Drowned behavior test",
"uuid": "REPLACE_WITH_UNIQUE_HEADER_UUID",
"version": [1, 0, 0],
"min_engine_version": [1, 16, 0]
},
"modules": [
{
"type": "data",
"uuid": "REPLACE_WITH_DIFFERENT_MODULE_UUID",
"version": [1, 0, 0]
}
]
}
Generate a separate UUID for each field instead of copying IDs from another pack. The official behavior pack tutorial explains the manifest, folder layout, activation, and common setup errors.
2. Copy the current vanilla Drowned definition
Open Microsoft’s vanilla Drowned behavior reference. Copy the complete entity JSON into DeepDrowned/entities/drowned.json, then leave its identifier as minecraft:drowned. Bedrock can override a vanilla asset by using the same identifier in a higher-priority pack, and Microsoft’s behavior-pack tutorial uses that same replacement pattern for a vanilla cow.
Use the whole current file as your starting point. The Drowned definition contains event-driven component groups for melee, ranged attacks, equipment, and other behaviors. Removing large sections to make a tiny “custom Drowned” file can break those transitions. Because this example deliberately uses the reserved minecraft: namespace to replace vanilla content, it changes ordinary Drowned for worlds where the pack is active. For a separate custom mob with its own identifier, follow Microsoft’s custom entity guide instead; that approach uses a namespaced ID and may require a resource pack for its appearance.
3. Change one documented component
In the copied file, find component_groups, then minecraft:melee_mode, then minecraft:attack. The stable vanilla reference lists the melee damage value as 3. Change only that value to 5 for a modest test buff:
"minecraft:attack": {
"damage": 5
}
This is a fragment for the existing minecraft:melee_mode group, not a complete entity file. Keep the neighboring minecraft:behavior.melee_attack and equipment entries intact. The value is damage in the component’s game units; it is not a promise of a particular number of hearts against every target, since armor and other game rules can affect the result.
Other changes belong in different parts of the vanilla definition. For example, the ranged group contains minecraft:behavior.ranged_attack settings such as its minimum and maximum attack intervals, and target selection is defined separately. Change one component at a time. The official entity behavior component guide explains how priorities and behavior goals interact.
4. Activate the pack and test in a disposable world
Save the files, launch Bedrock, and create a test world with cheats enabled. In the world’s settings, open Add-Ons > Behavior Packs, find Deep Drowned under My Packs, and activate it. Spawn a Drowned with /summon minecraft:drowned ~ ~ ~ or test one that appears in the world. Compare its melee hits with a control world that does not use the pack. Avoid testing in a valuable survival world until the edit is behaving as expected.
Changing the melee component affects the Drowned entity definition that the pack overrides; it does not selectively target one named Drowned. If you need a unique boss while keeping ordinary Drowned unchanged, create a custom entity with its own namespace rather than overwriting minecraft:drowned. Microsoft’s vanilla asset guidance describes identifier-based overrides.
Fix common behavior-pack problems
- The pack does not appear: confirm the folder is under the development behavior packs directory, the file is really named
manifest.json, both UUIDs are valid and different, and the JSON brackets and commas are correct.
- The pack loads but Drowned are unchanged: verify the path is exactly
entities/drowned.json, the entity identifier remains minecraft:drowned, the edited value is inside the melee group, and the pack is active in this world.
- Another add-on wins: check pack order and move your pack above conflicting behavior packs. Pack stacking can determine which version of an overridden asset takes effect.
- The entity stops behaving correctly: restore a clean copy of the current vanilla Drowned JSON, reapply only the one intended change, then test again. Do not delete unrelated groups or events just to shorten the file.
Microsoft’s Add-On troubleshooting guide covers identifier, pack-loading, and entity issues. Creator documentation and format requirements can change, so check the stable reference for your target Bedrock version before publishing the pack or sharing it with other players.
Sources and version notes
This rewrite uses the current Microsoft Learn stable references for the Drowned entity, behavior packs, and entity components, plus the Fabric project setup documentation for the Java-versus-Bedrock distinction. The example intentionally changes only a Bedrock melee-damage value; it does not claim to test a live game build or promise compatibility with every platform or server configuration.
For Java mod development, begin with Fabric’s project creation guide and select the Minecraft version you actually plan to support. Use the corresponding version-specific documentation before editing Drowned code.