Table of Contents

Mining Levels

Introduction

The way mining levels and preferred tools are assigned has changed significantly in 1.17. Making your tools and blocks interact properly now requires adding them to specific tags.

Setting the preferred tool for your block

To define what tool is used to harvest your block, you need to add the block's identifier to a tag inside of tags/blocks/mineable that corresponds to your tool (“pickaxe.json”,“axe.json”, etc.):

/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
{
  "replace": false,
  "values": [
    "tutorial:example_ore_block",
    "tutorial:example_cobblestone_block"
  ]
}

Fabric API also provides two additional tags fabric:mineable/sword and fabric:mineable/shears for blocks that can be harvested with a sword or shears. You put these tags in resources/data/fabric/tags/blocks/mineable/.

Setting the block's mining level

To add a mining level requirement to your block that is under netherite, you'll need to add it to one of these three tags inside tags/blocks:

Stone or higher -> needs_stone_tool.json
Iron or higher -> needs_iron_tool.json
Diamond or higher -> needs_diamond_tool.json

Here we make our late-game ore variants require a diamond tool to harvest:

/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json
{
  "replace": false,
  "values": [
    "tutorial:example_late_game_ore",
    "tutorial:example_late_game_deepslate_ore"
  ]
}

Fabric API provides dynamic tags for mining levels above diamond, as well as for wood (mining level 0). Dynamic mining level tags are in the format fabric:needs_tool_level_N, where N is the wanted tool level as an integer. For example, a mining level tag for netherite (mining level 4) would be fabric:needs_tool_level_4. Dynamic tags are checked automatically. You put these tags in resources/fabric/tags/blocks/.

/src/main/resources/data/fabric/tags/blocks/needs_tool_level_4.json
{
  "replace": false,
  "values": [
    "tutorial:example_tough_block",
    "tutorial:example_netherite_anvil_block"
  ]
}

The default mining level of blocks not modified with mining level tags is -1 (the hand mining level).

Tool Tags

You will need to add your tool into the fabric tool tags to support modded blocks.

Example of adding a pickaxe to the pickaxes tag:

/src/main/resources/data/fabric/tags/items/pickaxes.json
{
  "replace": false,
  "values": [
    "tutorial:example_pickaxe"
  ]
}