Examples
Machine Recipes
Atomic Reconstructor
js
ServerEvents.recipes(event => {
// removes all laser recipes
event.remove({ type: "actuallyadditions:laser" })
// adds a recipe that laser-transforms a netherrack into a magma block
// uses the default energy of 1000 Crystal Flux
event.recipes.actuallyadditions.laser("magma_block", "netherrack")
// adds a recipe that laser-transforms a brown mushroom into a red mushroom
// uses 500 Crystal Flux as energy
event.recipes.actuallyadditions.laser("minecraft:red_mushroom", "minecraft:brown_mushroom", 500)
// adds a recipe that laser-transforms a brown mushroom into a red mushroom
// uses a builder function to define the energy property
event.recipes.actuallyadditions
.laser("minecraft:red_mushroom", "minecraft:brown_mushroom")
.energy(500)
})
Crusher
js
ServerEvents.recipes(event => {
// removes all crusher recipes
event.remove({ type: "actuallyadditions:crushing" })
// adds a recipe that crushes a cobblestone into 2 gravel
// uses the default chance of 100%
// handles both gravel blocks as one output
event.recipes.actuallyadditions.crushing("2x gravel", "cobblestone")
// adds a recipe that crushes any stone into 2 gravel and a sand
// uses the default chance of 100% for both outputs
// handles the gravel as first output and the sand as second output
event.recipes.actuallyadditions.crushing(["2x gravel", "sand"], "#c:stones")
// adds a recipe that crushes a magma block into 2 netherrack and a magma cream
// uses the default chance of 100% for the netherrack
// uses the specified chance of 20% for the magma cream
// handles the netherrack as first output and the magma cream as second output
event.recipes.actuallyadditions.crushing(
[Item.of("minecraft:netherrack", 2), CrushingResult.of("magma_cream", 0.2)],
"minecraft:magma_block"
)
// should error because no output
// event.recipes.actuallyadditions.crushing([], "minecraft:stone");
// should error because more than two outputs
// event.recipes.actuallyadditions.crushing(
// ["minecraft:stone", "minecraft:stone", "minecraft:stone"],
// "minecraft:stone"
// );
})
Empowerer
js
ServerEvents.recipes(event => {
// removes all empowerer recipes
event.remove({ type: "actuallyadditions:empowering" })
// adds a recipe that empowers a dirt block with 2 nether warts, a red mushroom and a brown mushroom as modifiers into 2 mycelium
// uses the default energy of 1000 Crystal Flux
// uses the default laser color of white (0xFFFF_FFFF)
// uses the default time of 100 ticks (5 seconds) to process
event.recipes.actuallyadditions.empowering(Item.of("minecraft:mycelium", 2), "dirt", [
"nether_wart",
"minecraft:red_mushroom",
"nether_wart",
"minecraft:brown_mushroom",
])
// adds a recipe that empowers any stone with 4 magma cream modifiers into 4 magma blocks
// uses 2000 Crystal Flux as energy
// renders with red lasers
// takes 60 ticks (3 seconds) to process
event.recipes.actuallyadditions.empowering(
"4x magma_block",
"#c:stones",
["magma_cream", "magma_cream", "magma_cream", "magma_cream"],
2000,
Color.RED.argb,
60
)
// adds a recipe that empowers any stone with 4 magma cream modifiers into 4 magma blocks
// uses builder functions to define the properties
event.recipes.actuallyadditions
.empowering("4x magma_block", "#c:stones", [
"magma_cream",
"magma_cream",
"magma_cream",
"magma_cream",
])
.energy(2000)
.color(Color.RED.argb)
.time(60)
// should error because no modifiers
// event.recipes.actuallyadditions.empowering("minecraft:stone", "minecraft:stone", []);
// should error because more than four modifiers
// event.recipes.actuallyadditions.empowering("minecraft:stone", "minecraft:stone", [
// "minecraft:stone",
// "minecraft:stone",
// "minecraft:stone",
// "minecraft:stone",
// "minecraft:stone",
// ]);
})
Fermenting Barrel
js
ServerEvents.recipes(event => {
// removes all fermenting recipes
event.remove({ type: "actuallyadditions:fermenting" })
// adds a recipe that ferments a bucket of lava into a bucket of water
// uses the default time of 100 ticks (5 seconds) to process
event.recipes.actuallyadditions.fermenting("water", "lava")
// adds a recipe that ferments a 40 millibuckets of lava into a 20 millibuckets of water
// takes 20 ticks (1 second) to process
event.recipes.actuallyadditions.fermenting(Fluid.of("water", 20), Fluid.of("lava", 40), 20)
// adds a recipe that ferments a 40 millibuckets of lava into a 20 millibuckets of water
// uses a builder function to define the time property
event.recipes.actuallyadditions.fermenting(Fluid.of("water", 20), Fluid.of("lava", 40)).time(20)
// should error because no more than two buckets for result
// event.recipes.actuallyadditions.fermenting(Fluid.of("water", 2100), "lava");
// should error because no more than two buckets for ingredient
// event.recipes.actuallyadditions.fermenting("water", Fluid.of("lava", 2100));
})
Press
js
ServerEvents.recipes(event => {
// removes all press recipes
event.remove({ type: "actuallyadditions:pressing" })
// adds a recipe that presses any sapling into 250 millibuckets of water
event.recipes.actuallyadditions.pressing(Fluid.of("water", 250), "#minecraft:saplings")
// adds a recipe that presses a magma block into a bucket of lava
event.recipes.actuallyadditions.pressing("lava", "magma_block")
// should error because no more than two buckets for result
// event.recipes.actuallyadditions.pressing(Fluid.of("water", 2100), "minecraft:stone");
})
Misc Recipes
Coffee Ingredients
js
ServerEvents.recipes(event => {
// removes all coffee ingredient recipes
event.remove({ type: "actuallyadditions:coffee_ingredient" })
// adds a recipe that produces a coffee with a strength effect from any sapling
// uses the default effect duration of 10 seconds
// uses the default effect amplifier of 0 (level 1)
// uses the default maxAmplifier of 1
// uses the default extraText of an empty string
event.recipes.actuallyadditions.coffee_ingredient("minecraft:strength", "#minecraft:saplings")
// adds a recipe that produces a coffee with a speed effect from a carrot
// uses the MobEffect binding to define the effect
// uses the default effect duration of 10 seconds
// uses the default effect amplifier of 0 (level 1)
// uses the default maxAmplifier of 1
// uses the an extra text of "Carrot Edition"
event.recipes.actuallyadditions.coffee_ingredient(
MobEffect.MOVEMENT_SPEED,
"carrot",
3,
"Carrot Edition"
)
// adds a recipe that produces a coffee 3 different effects from a potato
// uses the EffectInstance binding to create configured effects
// uses a mix of MobEffect binding and id effects
// Haste 4 (30 seconds), Regeneration 1 (10 seconds), Strength 3 (1 minute)
// uses builder functions to define the maxAmplifier and extraText properties
event.recipes.actuallyadditions
.coffee_ingredient(
[
EffectInstance.ofEffect(MobEffect.DIG_SPEED, 30, 3),
EffectInstance.ofEffect(MobEffect.REGENERATION, 10),
EffectInstance.ofId("minecraft:strength", 60, 2),
],
"potato"
)
.maxAmplifier(2)
.extraText("Multi Effect")
})
Color Change
js
ServerEvents.recipes(event => {
// removes all color change recipes
event.remove({ type: "actuallyadditions:color_change" })
// adds a recipe that color-changes a stone into a diorite
event.recipes.actuallyadditions.color_change("diorite", "stone")
})
Liquid Fuel
js
ServerEvents.recipes(event => {
// removes all liquid fuel recipes
event.remove({ type: "actuallyadditions:liquid_fuel" })
// adds a recipe that generates energy from a bucket of lava
// uses the default energy of 1000 Crystal Flux
// uses the default time of 100 ticks (5 seconds) to process
event.recipes.actuallyadditions.liquid_fuel("lava")
// adds a recipe that generates energy from a 200 millibuckets of water
// uses 2000 Crystal Flux as energy
// takes 50 ticks (2,5 seconds) to process
event.recipes.actuallyadditions.liquid_fuel(Fluid.of("water", 200), 2000, 50)
// adds a recipe that generates energy from a 200 millibuckets of water
// uses buidler functions to define the energy and time properties
event.recipes.actuallyadditions.liquid_fuel(Fluid.of("water", 200)).energy(2000).time(50)
// should error because no more than two buckets for fuel
// event.recipes.actuallyadditions.liquid_fuel(Fluid.of("water", 2100));
})
Mining Lens
js
ServerEvents.recipes(event => {
// removes all mining lens recipes
event.remove({ type: "actuallyadditions:mining_lens" })
// adds a recipe that converts any stone into diorite
// uses the default weight of 10
event.recipes.actuallyadditions.mining_lens("diorite", "#c:stones")
// adds a recipe that converts coal ore into diamond ore
// uses a weight of 200
event.recipes.actuallyadditions.mining_lens("diamond_ore", "coal_ore", 200)
// adds a recipe that converts coal ore into diamond ore
// uses a builder function to define the weight property
event.recipes.actuallyadditions.mining_lens("diamond_ore", "coal_ore").weight(200)
})
Solid Fuel
js
ServerEvents.recipes(event => {
// removes all solid fuel recipes
event.remove({ type: "actuallyadditions:solid_fuel" })
// adds a recipe that generates energy from any sapling
// uses the default energy of 1000 Crystal Flux
// uses the default time of 100 ticks (5 seconds) to process
event.recipes.actuallyadditions.solid_fuel("#minecraft:saplings")
// adds a recipe that generates energy from a potato
// uses 2000 Crystal Flux as energy
// takes 50 ticks (2,5 seconds) to process
event.recipes.actuallyadditions.solid_fuel("potato", 2000, 50)
// adds a recipe that generates energy from a potato
// uses 2000 Crystal Flux as energy
// takes 50 ticks (2,5 seconds) to process
event.recipes.actuallyadditions.solid_fuel("potato").energy(2000).time(50)
})
Events
js
ActuallyAdditionsEvents.empower(event => {
// spawn a lightning bolt at the position of empowerer when the recipe finishes
event.level.spawnLightning(event.pos.x, event.pos.y, event.pos.z, true)
})