HomeJavaModsBreakable Blocks
Breakable Blocks
ModsJava

Breakable Blocks

Breakable blocks is a configurable, high-performance server-side Fabric mod for Minecraft that lets server owners make normally unbreakable or restricted…

⬇ Download on Modrinth
Breakable Blocks — screenshot 1

Breakable blocks

Breakable blocks is a configurable, high-performance server-side Fabric mod for Minecraft 1.21.x, 26.1.x, and 26.2.x. It lets server owners make normally unbreakable or restricted blocks mineable, assign exact break durations, require specific tools and tiers, create custom drops, preserve supported block entity data, and protect selected blocks from explosions.

Everything is controlled through one human-readable JSON5 file on the server. Players can join with completely vanilla clients; no client mod, resource pack, or custom registry synchronization is required.

Supported Versions

Minecraft Java Fabric Loader Status
1.21.x 21 0.19.3+ Full support
26.1.x 25 0.19.3+ Full support
26.2.x 25 0.19.3+ Full support

Fabric API is required. Breakableblocks only needs to be installed on the server.


Purpose & Function

Breakableblocks replaces hard-coded block restrictions with server-controlled rules. Each configured block can use vanilla mining or a custom server-authoritative mining session. Custom sessions track progress every server tick, display the normal cracking animation, verify that the player remains nearby, and cancel safely when the player stops mining, disconnects, changes dimension, or the block changes.


Key Features

Feature Description
Server-Side Only Vanilla clients can connect normally. No client installation or synchronization packet is required.
Per-Block Rules Every namespaced block ID receives its own independent mining, requirement, drop, and explosion settings.
Tick-Accurate Mining Custom mining advances on the server tick loop and renders standard block-breaking progress.
Requirement Checks Supports tool type, material tier, Silk Touch, and operator-only checks.
Controlled Drops Replaces vanilla drops with a configured item and count for custom mining sessions.
Data-Aware Drops Can attach supported block entity data to the resulting item stack.
Explosion Resistance Removes protected positions from an explosion before block destruction occurs.
Atomic Reloads Valid configuration entries replace the active runtime map without requiring a restart.
JSON5 Configuration Supports comments, trailing commas, and readable formatting.
Integration Callbacks Exposes server-side break, placement, and explosion callbacks for protection integrations.

Enhance your server setup! Check out my other server-side mods over at : Fabric Server Essentials


Installation

  1. Install the matching Fabric Loader for your Minecraft server.
  2. Install the matching version of Fabric API.
  3. Place the Breakableblocks JAR in the server's mods directory.
  4. Start the server once to generate config/block-configuration.json5.
  5. Edit the generated rules and run /blockconfiguration reload.

The mod is not required in any connecting player's client-side mods directory.


Commands & Examples

Command Description Example
/blockconfiguration reload Reloads and validates block-configuration.json5. /blockconfiguration reload
/blockconfiguration validate Reports how many valid, enabled entries are active. /blockconfiguration validate
/blockconfiguration list Lists every active block rule and its mining mode. /blockconfiguration list
/blockconfiguration inspect <block> Displays the active settings for one exact block ID. /blockconfiguration inspect minecraft:bedrock

Block identifiers must include their namespace, such as minecraft:bedrock or yourmod:custom_block.


Configuration File

Breakableblocks creates the following file on first server start:

config/block-configuration.json5

Each top-level key is a namespaced block identifier:

{
    // Mine bedrock in 30 seconds with a Netherite pickaxe.
    "minecraft:bedrock": {
        "enabled": true,
        "miningMode": "FIXED_TICKS",
        "fixedTicks": 600,
        "requiredTool": "pickaxe",
        "requiredTier": "netherite",
        "requireSilkTouch": false,
        "dropItem": "minecraft:bedrock",
        "dropCount": 1,
        "preserveBlockEntity": false,
        "explosionResistant": true,
        "protectionBehavior": "NORMAL"
    },

    // Only operators may mine this command block.
    "minecraft:command_block": {
        "enabled": true,
        "miningMode": "FIXED_TICKS",
        "fixedTicks": 100,
        "requiredTool": "pickaxe",
        "requiredTier": "netherite",
        "dropItem": "minecraft:command_block",
        "dropCount": 1,
        "explosionResistant": true,
        "protectionBehavior": "OPERATOR_ONLY"
    },

    // Preserve supported data when dropping a trial spawner.
    "minecraft:trial_spawner": {
        "enabled": true,
        "miningMode": "FIXED_TICKS",
        "fixedTicks": 300,
        "requiredTool": "pickaxe",
        "requiredTier": "netherite",
        "dropItem": "minecraft:trial_spawner",
        "dropCount": 1,
        "preserveBlockEntity": true,
        "explosionResistant": true
    }
}

Configuration Reference

Field Type Default Description
enabled Boolean true Enables or disables this block entry. Disabled entries are not loaded.
miningMode String VANILLA VANILLA uses normal breaking. FIXED_TICKS uses the configured server duration.
fixedTicks Integer 0 Required duration for FIXED_TICKS. Must be greater than zero.
requiredTool String "" Optional tool requirement: pickaxe, axe, shovel, or hoe.
requiredTier String "" Optional minimum tier: wood, stone, gold, iron, diamond, or netherite.
requireSilkTouch Boolean false Requires Silk Touch on the held tool.
dropItem String "" Namespaced item ID dropped after a successful custom break. Empty means no configured drop.
dropCount Integer 1 Number of configured items to drop. Valid range: 0-2304.
preserveBlockEntity Boolean false Copies supported block entity data to the configured drop.
explosionResistant Boolean true Prevents explosions from destroying the configured block.
protectionBehavior String NORMAL Use OPERATOR_ONLY to restrict custom mining to server operators.

dropItem, dropCount, and block entity preservation apply to custom mining sessions. A block using VANILLA mining continues through Minecraft's normal loot behavior.


Usage Walkthrough

1. Start the server once:

The default configuration is generated at config/block-configuration.json5.

2. Add or edit a block rule:

"minecraft:obsidian": {
    "enabled": true,
    "miningMode": "FIXED_TICKS",
    "fixedTicks": 40,
    "requiredTool": "pickaxe",
    "requiredTier": "diamond",
    "dropItem": "minecraft:obsidian",
    "dropCount": 1,
    "explosionResistant": true
}

3. Reload without restarting:

/blockconfiguration reload

4. Confirm the active rule:

/blockconfiguration inspect minecraft:obsidian

The example makes obsidian take exactly 40 ticks, or approximately 2 seconds, while requiring a Diamond-tier pickaxe.


Default Rules

The generated starter configuration includes examples for blocks such as:

Every default can be changed, disabled, or removed. Modded blocks can be configured using their registered namespace and block ID.


Server-Side Behavior

Custom mining sessions are validated entirely by the server:

This keeps vanilla clients synchronized while preventing client-side mining speed changes from bypassing server rules.


Important Notes

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more