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.
onEvent('cm_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 modifier to this upgrade.
//See below for modifier syntax.
.modifier(CMRecipeModifierBuilder modifier)
})
Making a modifier
//Create a modifier that add/multiply a value to any input/output requirement of the specified type.
//requirement must be specified using its id: "namespace:requirement"
//Value can be any numerical value.
//Pick one of the 4 methods below :
CMRecipeModifierBuilder.addInput(requirement, value)
CMRecipeModifierBuilder.mulInput(requirement, value)
CMRecipeModifierBuilder.addOutput(requirement, value)
CMRecipeModifierBuilder.mulOutput(requirement, value)
//All methods below are optional
//Specify a target, in case the requirement have several values that can be modified.
//Only 1 target can be defined for a modifier, default is none.
.target(String target)
//Specify a chance for this modifier to be applied.
//Must be a value between 0 and 1, 0 is never applied and 1 is 100% chance to be applied.
//Default is 1.
.chance(double chance)
//Specify the maximum value that can be obtained after applying this modifier.
//It can be any numerical value.
//Default is POSITIVE_INFINITY.
.max(double max)
//Specify the minimum value that can be obtained after applying this modifier.
//It can be any numerical value.
//Default is NEGATIVE_INFINITY.
.min(double max)
//Change the tooltip displayed when holding shift while hovering the upgrade item.
//Default : a short string that describe the effect of this modifier.
.tooltip(String tooltip)
//Use Text.of("text here") for more formating options.
//See https://kubejs.com/wiki/kubejs/Text/
.tooltip(Text tooltip)
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.
onEvent('cm_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