Assembly Table is a NeoForge mod for Minecraft 1.21.1 that brings back a BuildCraft-inspired assembly workflow with modern FE-based automation.
The mod adds Assembly Table machines, configurable lasers, chipset items, and scripting support for custom recipes through both KubeJS and CraftTweaker.
ShiftThe mod supports both KubeJS and CraftTweaker for recipe creation.
The custom recipe type is:
assemblytable:assembly_table
Recipe format:
{
"type": "assemblytable:assembly_table",
"result": { "item": "minecraft:diamond" },
"ingredients": [
{ "ingredient": { "item": "minecraft:iron_ingot" }, "count": 2 },
{ "ingredient": { "item": "minecraft:redstone" }, "count": 1 }
],
"energy": 1000
}
Example:
ServerEvents.recipes(event => {
event.custom({
type: 'assemblytable:assembly_table',
result: Item.of('minecraft:diamond'),
ingredients: [
{ ingredient: { item: 'minecraft:iron_ingot' }, count: 2 },
{ ingredient: { item: 'minecraft:redstone' }, count: 1 }
],
energy: 1000
})
})
Assembly Table recipes can be added through the global bc_assemblyTable recipe manager.
Example:
bc_assemblyTable.addRecipe(
"my_recipe_new_ct",
<item:mekanism:ultimate_universal_cable>,
[
<item:minecraft:iron_ingot> * 4,
<item:minecraft:diamond>,
<item:minecraft:netherite_scrap> * 6
],
5000000
);
Method signature:
bc_assemblyTable.addRecipe(
recipeId as String,
outItem as IItemStack,
ingredient as IIngredientWithAmount[],
energyRequired as int
);
Laser variants can be created through LaserConfig.builder().
Supported builder options:
targetRange(int) - search range in front of the laserenergyBuffer(int) - internal FE buffermaxTransferPerTick(int) - maximum FE sent per tickmaxSpeedTransferPerTick(int) - alias for max transfer, useful for warmup-based lasersmaxReceivePerTick(int) - maximum FE the laser can receive per tickbeamColor(...) - default beam color when warmup is disabledwarmupDisabled() - keeps classic instant transfer behaviorwarmup(int) - enables warmup for the specified number of ticksrampUpTicks(int) - alias for warmup(int)warmupColors(Vec4i low, Vec4i mid, Vec4i max) - colors for low, medium, and max speed stagesExample:
LaserConfig config = LaserConfig.builder()
.targetRange(6)
.energyBuffer(1000)
.maxSpeedTransferPerTick(1000)
.maxReceivePerTick(5000)
.rampUpTicks(60)
.warmupColors(
new Vec4i(255, 40, 20, 200),
new Vec4i(255, 220, 30, 200),
new Vec4i(30, 100, 255, 200)
)
.build();
Block entities that want to receive power from lasers should implement LaserTarget.
Contract:
getRequiredLaserPower() - returns how much FE the target currently wantsreceiveLaserPower(int) - accepts FE and returns leftover energyisInvalidTarget() - tells lasers whether the target should be ignoredGNU LGPL 3.0