Block Upgrader
Upgrade, construct, and modify placed blocks through materials, tools, and timed in-world interactions.
Block Upgrader adds a simple, data-driven system for upgrading blocks directly in the world.
Instead of replacing blocks through crafting recipes, players can interact with placed blocks, provide materials, use tools, and complete upgrades over time.
Features
- In-world block upgrades
- In-world block construction
- Material requirements
- Timed construction
- Tool-based acceleration
- Multiple upgrade paths
- Reversible upgrades
- Item tag support
- Datapack support
- KubeJS support
- JEI integration
- Sophisticated Storage integration
- Optional mod integrations
How It Works
Look at a supported block while holding Shift to view its available upgrade.
Depending on the configured recipe, you may need to:
- Provide materials
- Wait for a construction timer
- Use tools to accelerate the process
- Choose between multiple upgrade paths
Upgrades can also be configured to preserve inventories, block data, or other information when converting between compatible blocks.
Example
The following recipe upgrades a Furnace into a Blast Furnace using Iron Ingots and a construction timer.
{
"source": "minecraft:furnace",
"result": "minecraft:blast_furnace",
"title": "Upgrade to Blast Furnace",
"materials": [
{
"item": "minecraft:iron_ingot",
"count": 12
}
],
"build_time": 1200,
"accelerators": [
{
"kind": "tool",
"item": "#minecraft:pickaxes",
"actions": 3,
"reduction": 1200,
"input": "RIGHT"
}
]
}
Recipe files are placed inside: data/<namespace>/jco_block_upgrades/
For example: data/example/jco_block_upgrades/furnace_to_blast_furnace.json
KubeJS
Block Upgrader can also be configured through KubeJS.
BlockUpgrades.create('example:chest_upgrade', upgrade => {
upgrade
.block('sophisticatedstorage:chest')
.result('sophisticatedstorage:copper_chest')
.title('Upgrade Chest')
.material('minecraft:copper_ingot', 8)
.transferMode('sophisticated_storage')
})
Documentation
More examples, KubeJS usage, advanced configuration options, integrations, and the complete list of available fields can be found on the GitHub repository.

