Wiki 9Minecraft Wiki 9Minecraft

Aim Assist Reference (Categories, Presets, and Command)

Configure target prioritization and camera friction for touch and controller players.

5Sections
3Code examples
3Known errors

Aim assist in Minecraft Bedrock helps players on touchscreens and gamepads keep their crosshair aligned with blocks and entities while moving or interacting. Add-on creators can define custom aim assist categories and presets inside the behaviour pack to make custom blocks, furniture, or mobs easier—or harder—to target. You reach for this system when building custom tools, combat mechanics, or intricate block interactions where default targeting feels sluggish or imprecise on non-mouse inputs.

How the Aim Assist System Works

The Bedrock aim assist architecture is split into two distinct behaviour pack definitions: categories and presets. Both are stored as JSON files inside your behaviour pack, and neither requires a resource pack counterpart to function. Once defined in files, presets are assigned to players dynamically using the /aimassist command or through script APIs.

Categories define groups of blocks and entities and assign targeting priority weights to each identifier. When the player looks around, the game evaluates potential targets within the player's view cone and uses the active category weights to decide which block or entity should pull the camera or cursor. A higher weight means the crosshair will favour that target when multiple valid targets sit close together.

Presets act as the overarching configuration profile applied to a player. A preset references your custom categories, links them to specific items held in the player's mainhand, and dictates lists of blocks or entities that should be completely ignored by the targeting logic.

Aim Assist Categories

Category files live in the BP/aim_assist/categories/ directory. Each file defines a single category with a unique namespaced identifier. Inside the priority maps, numeric weights determine how strongly the crosshair gravitates toward a specific block or entity type.

You can specify individual identifiers alongside fallback defaults. The block_default and entity_default properties set the baseline magnetism for any block or mob not explicitly listed in your maps.

FieldWhat it doesNotes
identifierUnique ID for this category.Must use a custom namespace (cannot use the minecraft namespace).
priorities.blocksKey-value map of block identifiers to integer weights.Higher values increase targeting magnetism toward those blocks.
priorities.entitiesKey-value map of entity identifiers to integer weights.Higher values increase targeting magnetism toward those entities.
priorities.block_defaultFallback integer weight for unlisted blocks.Optional. Used when a targeted block is not in the blocks map.
priorities.entity_defaultFallback integer weight for unlisted entities.Optional. Used when a targeted entity is not in the entities map.
BP/aim_assist/categories/lumberjack_category.json
{
  "format_version": "1.21.50",
  "minecraft:aim_assist_category": {
    "description": {
      "identifier": "my_pack:lumberjack_priority"
    },
    "priorities": {
      "blocks": {
        "minecraft:oak_log": 80,
        "minecraft:birch_log": 80,
        "minecraft:spruce_log": 80,
        "minecraft:mangrove_log": 80
      },
      "entities": {
        "minecraft:bee": 10
      },
      "block_default": 20,
      "entity_default": 30
    }
  }
}

Aim Assist Presets

Preset files are placed in the BP/aim_assist/presets/ directory. A preset brings everything together by mapping held items to specific categories. For example, you can make the game use your wood-cutting priority category whenever the player holds a diamond axe, while falling back to a general category when their hand is empty.

Presets also allow you to define global exclusions via the liquid_targeting_items and exclusions lists, preventing the camera from snagging on decorative blocks, tall grass, or non-interactive ambient entities.

FieldWhat it doesNotes
identifierUnique ID for this preset.Referenced directly in the /aimassist command.
exclusionsLists of blocks and entities to never target.Contains 'blocks' and 'entities' string arrays.
liquid_targeting_itemsArray of item identifiers.Enables aim assist to snap to water and lava when holding these items.
item_settingsMaps held item identifiers to category identifiers.Switches the active priority rules based on mainhand item.
hand_settingsCategory identifier used when the player's hand is empty.Usually set to 'minecraft:default' or a custom category ID.
default_item_settingsCategory identifier used for any item not listed in item_settings.Acts as the fallback when holding unmapped items.
BP/aim_assist/presets/custom_preset.json
{
  "format_version": "1.21.50",
  "minecraft:aim_assist_preset": {
    "description": {
      "identifier": "my_pack:custom_tools_preset"
    },
    "exclusions": {
      "blocks": [
        "minecraft:short_grass",
        "minecraft:tall_grass",
        "minecraft:fern"
      ],
      "entities": [
        "minecraft:armor_stand"
      ]
    },
    "liquid_targeting_items": [
      "minecraft:bucket",
      "minecraft:glass_bottle"
    ],
    "item_settings": {
      "minecraft:diamond_axe": "my_pack:lumberjack_priority",
      "minecraft:iron_axe": "my_pack:lumberjack_priority"
    },
    "hand_settings": "minecraft:default",
    "default_item_settings": "minecraft:default"
  }
}

Applying Presets with the /aimassist Command

Defining JSON files in your behaviour pack registers the presets with the world, but it does not automatically turn them on for players. To activate a preset, use the /aimassist command inside functions, command blocks, or script events. The command also lets you adjust the maximum view angle and distance at which the assist kicks in, as well as choosing between angle-based camera rotation or distance-based cursor slowing.

If you want to revert a player back to standard settings or remove custom targeting rules entirely, the clear subcommand strips the active preset from the targeted player.

BP/functions/apply_assist.mcfunction
# Apply custom preset with specific view angles (vertical 45, horizontal 60) and max distance of 7 blocks
aimassist @a set 45 60 7 angle my_pack:custom_tools_preset

# Clear active aim assist for a specific player
aimassist @p clear

Input Modes and Limitations

Aim assist is designed for touch and game controller input modes, where fine-grained cursor control is harder than with a mouse. Players can toggle or adjust their personal aim assist preferences in the client settings menu, which may override or scale the behaviour of your presets depending on their input device.

When testing your pack on a desktop PC with a keyboard and mouse, you may not feel camera magnetism unless you switch to a controller or test on a touch-enabled device. Additionally, entities without a valid collision box or hit-box (where both width and height are set to zero in their collision component) cannot be targeted by aim assist regardless of their priority weight.

Which versions this applies to

Introduced as an experimental feature around Bedrock 1.21.40 and moved to stable in 1.21.50+. Does not require an experimental toggle when using format_version 1.21.50 or higher.

When it does not work

What you seeWhyThe fix
Content Log Error: [AimAssist] Failed to find category 'my_pack:lumberjack_priority' referenced in preset.The category identifier written in your preset's item_settings does not match the description.identifier inside your category JSON file, or the category file is in the wrong folder.Ensure category files are placed in BP/aim_assist/categories/ and that the identifier string matches character-for-character.
Command outputs: Failed to set aim assist for Player.The preset identifier passed to the /aimassist command is unregistered, or the vertical/horizontal angle arguments are out of the valid numeric range.Verify the preset JSON is valid and located in BP/aim_assist/presets/. Keep angle arguments between 10 and 90 degrees, and distance within normal reach limits.
Custom blocks or entities in priorities map are completely ignored by the camera.The target is either also listed in the preset's exclusions array, or the entity has a zero-size minecraft:collision_box component.Remove the identifier from the exclusions list in the preset, and ensure custom entities have a non-zero collision box so the raycast can hit them.

Reference, straight from the game files

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