Upgrades

Create machine upgrades using KubeJS

Custom Machine upgrades can be made with KubeJS script.

Create a .js file in the kubejs\server_scripts folder (ex: custom_machine_upgrades.js) and look at the example below to see all the available methods to create a Custom Machine upgrade with KubeJS.

If you're not familiar about custom machine upgrades see the wiki page.

Creating custom machine upgrade with KubeJS

//Use the 'cm_upgrades' event to register custom machine upgrades.
CustomMachineryEvents.upgrades(event => {

    //Create the upgrade builder and give it the item that will act as upgrade.
    //Use Item.of("item_id") to create the item.
    event.create(Item item)
    //If maxAmount is not specified the default is 64.
    event.create(Item item, int maxAmount)
    
    //Add a machine or a list of machines that will accept this upgrade, 
    //the machine ID must be "namespace:id" like "custommachinery:my_machine",
    //if the json is located in (my_datapack)/data/custommachinery/machines/my_machine.json
    .machine(String... machineID)
    
    //You can add a custom tooltip to the machine upgrade item.
    .tooltip(String... tooltips)
    //Use Text.of("text here") for more formatting options,
    //See https://kubejs.com/wiki/kubejs/Text/
    .tooltip(Text... tooltips)
    
    //Add a recipe modifier to this upgrade.
    .requirement(CMRecipeModifierBuilder modifier)
    
    //Add a component modifier to this upgrade.
    .component(CMRecipeModifierBuilder modifier)
    
    //Add a core modifier to this upgrade.
    .core(CMCoreModifierBuilder modifier)
})
Recipe modifierComponent modifierCore modifier

Examples

A gold ingot put inside the Power Crusher will double it's energy consumption with a maximum of 1000FE but also half it's duration time with a minimum of 100 ticks.

CustomMachineryEvents.upgrades(event => {
    event.create(Item.of('minecraft:gold_ingot'))
        .machine("custommachinery:power_crusher")
        .modifier(CMRecipeModifierBuilder.mulInput('custommachinery:energy', 2).max(1000))
        .modifier(CMRecipeModifierBuilder.mulInput('custommachinery:speed', 1.5).min(100))
})

Last updated