
Better Harvest Level
A config-driven tool progression mod for modpack developers
- Загрузки
- 581
- Подписчики
- 7
- Обновлён
- 5 июля 2026 г.
- Лицензия
- LGPL-3.0-only
Опубликован 24 марта 2026 г.
BetterHarvestLevel
Take full control of your modpack's mining progression. BetterHarvestLevel lets you define custom tool tiers, override harvest levels for any block or tool, and unify cross-mod progression — all through simple JSON config files.
Features
Custom Tier Definitions
Define your own mining tiers beyond vanilla's wood/stone/iron/diamond/netherite hierarchy. Each tier supports:
- Custom name, display name, and color
- Numeric level for ordering
- Configurable icon item (shown in Jade tooltips)
- Insertion point (
after/before) for precise tier ordering
Block & Tool Overrides
Override which tier is required to mine any block, or what tier any tool belongs to. Target overrides by:
- Individual ID —
minecraft:obsidian,create:brass_block - Tag —
#minecraft:needs_iron_tool - Mod namespace —
create:*(all blocks/items from a mod) - Regex — pattern-match across the entire registry
Tier Equivalence Groups
Group tiers that should be treated as equivalent for mining purposes. Useful for mods that add parallel progression paths (e.g., making a modded alloy tier equivalent to iron).
Config Layering
Split your overrides across multiple files for organization. Use blocks.json, blocks_create.json, blocks_thermal.json, etc. — BetterHarvestLevel merges them all automatically in alphabetical order. Keep per-mod configs clean and separate.
Jade/WAILA Integration
Blocks with BHL overrides display their required tier in the Jade tooltip, complete with:
- Tier name in its configured color
- A harvestability indicator (green checkmark or red X) based on your held tool
- The tier's icon item
In-Game Commands
/bhl check held— Show the BHL tier of your held tool/bhl check looking— Show the required tier of the block you're looking at/bhl info— List all registered tiers and override counts/bhl reload— Hot-reload all config files without restarting
Mod Ignore List
Exclude entire mods from override resolution so their blocks and tools are left untouched.
Supported Versions
| Loader | Minecraft Version |
|---|---|
| Forge | 1.20.1 |
| Fabric | 1.20.1 |
| NeoForge | 1.21.1 |
| Fabric | 1.21.1 |
Getting Started
- Install the mod and launch the game once. Config files are generated in
.minecraft/config/betterharvestlevel/. - Edit
tiers.jsonto define your tier hierarchy. - Add block overrides in
blocks.json(or create per-mod files likeblocks_create.json). - Add tool overrides in
tools.json(or per-mod files liketools_thermal.json). - Optionally define equivalence groups in
equivalences.json. - Use
/bhl reloadin-game to apply changes instantly.
Example: Adding a custom tier and overriding a block
tiers.json — Add a "copper" tier between stone and iron:
{
"tiers": [
{ "name": "wood", "level": 0, "displayName": "Wood", "color": "#A0522D", "builtIn": true },
{ "name": "stone", "level": 1, "displayName": "Stone", "color": "#AAAAAA", "builtIn": true },
{ "name": "copper", "level": 2, "displayName": "Copper", "color": "#E8851C", "builtIn": false, "iconItem": "minecraft:copper_ingot" },
{ "name": "iron", "level": 3, "displayName": "Iron", "color": "#FFFFFF", "builtIn": true },
{ "name": "diamond", "level": 4, "displayName": "Diamond", "color": "#55FFFF", "builtIn": true },
{ "name": "netherite", "level": 5, "displayName": "Netherite", "color": "#555555", "builtIn": true }
]
}
blocks.json — Require the copper tier to mine lapis ore:
{
"overrides": [
{ "target": "minecraft:lapis_ore", "type": "block", "requiredTier": "copper" },
{ "target": "minecraft:deepslate_lapis_ore", "type": "block", "requiredTier": "copper" }
]
}
For Modpack Developers
BetterHarvestLevel is built specifically for modpack developers who need granular control over mining progression. Ship your tier and override configs with your modpack — no end-user configuration needed. The layered config system means you can organize overrides per-mod and easily add or remove mod-specific files as your modpack evolves.
Ченджлог
2.0.0+neoforge-262Релиз26.2 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+neoforge-261Релиз26.1, 26.1.1, 26.1.2 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+neoforge-1211Релиз1.21.1 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+forge-1201Релиз1.20.1 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+fabric-262Релиз26.2 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+fabric-261Релиз26.1, 26.1.1, 26.1.2 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+fabric-1211Релиз1.21.1 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
2.0.0+fabric-1201Релиз1.20.1 · 5 июля 2026 г.
Changelog
v2.0.0
- Full rewrite, covering Forge/Fabric 1.20.1, Fabric/NeoForge 1.21.1, and Fabric/NeoForge 26.1.x and 26.2
- On Fabric 26.2, Jade must be pinned to 26.2.8+fabric or older; 26.2.9+fabric rewrote the harvest tool API
- Block overrides now work in both directions, raising or lowering a block's harvest requirement instead of only tightening it
- Tool overrides can empower a tool, not just restrict it, and bare hands are handled through a reserved
handtier instead of ad-hoc special-casing - Enforcement moved to the harvest check event on NeoForge and Forge; Fabric uses two small mixins (player and item stack), and the old mixin set is gone
- Resolved rules now sync to clients on join and on reload, so multiplayer prediction and tooltips match the server
- Jade shows the modified harvest requirements (required-tool icon and harvestability check), including custom tier icons via
iconItem - Added
/bhl info,/bhl check, and/bhl reloadcommands; reload re-resolves tag, mod, and regex overrides and re-syncs all clients, fixing the old reload bug
Known limitations
- Block overrides cannot gate tools whose tier the mod cannot derive: modded tools that carry a
minecraft:tooldata component but are not vanillaTieredItemand have notools.jsonoverride fall back to vanilla behavior. Add an explicittools.jsonoverride for that tool to work around this. Plain items with no tool component at all are treated as a bare hand. - On Forge 1.20.1 only, Jade's harvestability checkmark follows vanilla for blocks whose requirement BHL changed; the required-tool icon and actual enforcement are correct
- On 26.x, swords have no deniesDrops rule so they abstain to vanilla for block overrides; give them a tools.json tier if you need them gated
- tiers.json files generated by pre-port 2.0 test builds lack the copper tier; delete the file once so it regenerates
v1.1.0
- Ores can no longer be mined with any sufficiently-tiered tool: vanilla's tool-type check (
mineable/*tags) is preserved, BHL only tightens the tier requirement on top of it (#3) - Tools that aren't vanilla
TieredItem(Tinkers' Construct etc.) are no longer locked to "cannot mine" — they defer to vanilla unless given a tier intools.json(#2) tools.jsonoverrides now apply to any item, not just vanilla tiered tools- The wrong-tool mining speed penalty no longer hits unknown tools or the empty hand, which should unstick fake-player automation like Workers (#4)
- The Jade tooltip checkmark now reflects actual harvestability instead of a tier-only estimate
- Tier names that aren't defined in
tiers.jsonare logged once instead of silently allowing mining
Комментарии
Загружаем…