Upgrades

Make an existing item capable of modifying recipe requirements

Machine upgrades are items that can be used to change the behaviors of a custom machine recipe while it's processing.

You can change the properties of almost every requirements, for example make a machine consume 2x more FE but also half the processing time.

You can define any item registered in the game as machine upgrade.

The defined item will works as a machine upgrade only if placed in an item component slot with variant property set to upgrade. See Item Component variant property for more info.

The machine upgrade must be defined in a json file placed in a datapack, such as machines and recipes json.

The path of the machine upgrade json file must be : [datapack_name]/data/[namespace]/upgrades/my_upgrade.json

You can use whatever you want as [datapackname] but [namespace] and json file name must be all lowercase without spaces or special characters except _

Properties

The upgrade json has 3 mandatory properties and 2 optional properties.

Mandatory properties

Item

Name : item

Description :

The item you want to use as upgrade, you can define only one item per upgrade json file (but you can make as many file as you want).

The item can be any vanilla or modded item.

Example :

"item": "minecraft:diamond"

The upgrade will be a vanilla diamond.

Machines

Name : machines

Description :

A list of custom machines where this upgrade is allowed.

Example :

"machines": ["custommachinery:magic_spawner", "custommachinery:power_crusher"]

This upgrade can be applied to the magic spawner and power crusher machines.

Modifiers

Name : modifiers

Description :

A list of requirements modifiers. These are used to define how the upgrade will influence the recipe processing.

Example :

"modifiers": [
    {
        "requirement": "custommachinery:energy",
	"mode": "input",
	"operation": "multiplication",
	"modifier": 0.5
    }
]

This modifier will half the energy input required to process the recipe. See more about requirement modifiers in the following section.

Optional properties

Max

Name : max

Description :

A positive integer that define the maximum amount of upgrades of this type that can be applied in a machine at a time.

Each item in a stack count as a separate upgrade.

This does not limit the stack size in the upgrade slot, but upgrades in excess won't be taken in account.

Default : 64

Example :

"max": 4

Only 4 upgrades can be applied in the machine.

Tooltip

Name : tooltip

Description :

The tooltip that will render when a player hover any machine upgrade item in a gui. This is a text component.

Default :

"tooltip": {
    "text": "custommachinery.upgrade.tooltip",
    "color": "aqua"
}

Example :

"tooltip": {
    "text": "Speed upgrade MK1",
    "color": "orange"
}

The tooltip will be "Speed upgrade MK1" in orange.

Example

The machine upgrade json below make a vanilla diamond item half the recipe duration in the Custom Machinery Power Crusher included in the test datapack.

upgrade.json
{
    "item": "minecraft:diamond",
    "machines": ["custommachinery:power_crusher"],
    "modifiers": [
        {
	    "requirement": "custommachinery:speed",
	    "mode": "input",
	    "operation": "multiplication",
	    "modifier": 0.5
	}
    ]
}