promotional bannermobile promotional banner

Block Upgrader

Upgrade blocks instead of crafting new ones (Datadriven)

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.

The Block Upgrader Team

profile avatar
Owner
  • 2
    Projects
  • 29
    Downloads

More from jcopapi