CurseForge · Minecraft mod
Multiblock Lib 1174
A custom multiblock mod
Quick answer
Which Multiblock Lib 1174 release should I use?
Multiblock Lib 1174 multiblocklibes-0.0.12.jar targets 26.2 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.
Where it goes
Is Multiblock Lib 1174 required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does Multiblock Lib 1174 multiblocklibes-0.0.12.jar need?
multiblocklibes-0.0.12.jar. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
This file does not list any required or optional mods.
Before you install it
Add Multiblock Lib 1174 without breaking your instance.
Built for Multiblock Lib 1174 multiblocklibes-0.0.12.jar. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use multiblocklibes-0.0.12.jar. It targets 26.2 with NeoForge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
This file does not list any required mods. Do not add a library just because a different file uses it.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside multiblocklibes-0.0.12.jar. It opens that exact file at the source.
About this project
What does Multiblock Lib 1174 add?
1174's MultiblockLib
This is a mod which custom multiblock structure
How to use?
00 Config project
Add this mod's cursemaven to your build.gradle
01 Register Controller And Port
public class Register {
public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MultiblockLib.MOD_ID);
public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MultiblockLib.MOD_ID);
// 1.Port
public static final DeferredBlock<Block> TEST_ITEM_PORT_IN_B = BLOCKS.register(
"test_item_port_in",
// ↓You can use ItemPortBlock, FluidPortBlock, FEPortBlock to register different port types
registryName -> new ItemPortBlock(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, registryName)),
// ↓The IO Mode of the port, INPUT, OUTPUT or BOTH
4, IOMode.INPUT
// ↑The size of the port
));
public static final DeferredItem<Item> TEST_ITEM_PORT_IN =
ITEMS.register("test_item_port_in",
registryName -> new PortBlockItem(TEST_ITEM_PORT_IN_B.get(), new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, registryName)),
IOMode.INPUT
));
// If your port isn't directional, pls register like this
public static final DeferredBlock<Block> TEST_WASTE_B = BLOCKS.register(
"test_waste",
registryName -> new ItemPortBlock(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, registryName)),
1, IOMode.OUTPUT
) {
@Override
public boolean isDirectional() {
return false;
}
});
// 2.Detector, which can make player know where need to place something
public static final DeferredItem<Item> TEST_DETECTOR =
ITEMS.register("test_detector",
registryName -> new MultiblockDetector(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, registryName))
));
// 3.Builder, which can build the structure automatically
public static final DeferredItem<Item> TEST_BUILDER =
ITEMS.register("test_builder",
registryName -> new MultiblockBuilder(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, registryName))
));
}
The hardest part is the Controller
First, code Controller's BlockEntity
public class TestControllerBlockEntity extends ControllerBlockEntity {
public TestControllerBlockEntity(BlockPos worldPosition, BlockState blockState) {
super(Register.TEST_CONTROLLER_BE.get(), worldPosition, blockState);
// ↑This is its blockentity type, we'll code them later
}
// Both of these values can be changed dynamically
// Number of recipes the machine can handle at the same time
@Override
public int getParallels() {
return 1;
}
// Speed. The bigger, the faster
@Override
public int getParseSpeed() {
return 1;
}
}
Then, code its Block
public class TestControllerBlock extends ControllerBlock {
public TestControllerBlock(Properties properties) {
super(properties);
}
@Override
public @Nullable <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState blockState, BlockEntityType<T> type) {
return createTickerHelper(type, Register.TEST_CONTROLLER_BE.get(), TestControllerBlockEntity::tick);
// ↑This is its block register, we'll code them later
}
@Override
protected MapCodec<? extends BaseEntityBlock> codec() {
return simpleCodec(TestControllerBlock::new);
}
@Override
public @Nullable BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
return new TestControllerBlockEntity(blockPos, blockState);
}
}
Last, go back into your register class
public static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITY_TYPES =
DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, MultiblockLib.MOD_ID);
public static final DeferredBlock<Block> TEST_CONTROLLER_B = BLOCKS.register(
"test_controller",
registryName -> new TestControllerBlock(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, registryName))
));
public static final DeferredItem<Item> TEST_CONTROLLER =
ITEMS.register("test_controller",
registryName -> new BlockItem(TEST_CONTROLLER_B.get(), new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, registryName))
));
public static final Supplier<BlockEntityType<TestControllerBlockEntity>> TEST_CONTROLLER_BE = BLOCK_ENTITY_TYPES.register(
"test_controller",
() -> new BlockEntityType<>(
TestControllerBlockEntity::new,
false,
TEST_CONTROLLER_B.get()
)
);
02 Structure
Build your structure in you world
Use this command
/multiblocklibes structure -104 56 -61 -109 59 -64 -99 56 -61 TestExport
First BlockPos is the controller pos
Second & third is block of two corners The string is the file's name Find your file at /GameFile/multiblockes/xxx.json
It's a recipe json file
{
"type": "multiblocklibes:structure",
// Structure's id
"structure_id": "blast",
// Controller's block id
"controller_id": "multiblocklibes:test_controller",
"pattern": [
// Block can exist in somewhere, it's a json array
[1, 0, 0, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[-1, 0, 0, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[1, 0, 1, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[-1, 0, 1, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[1, 0, 2, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[0, 0, 2, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[-1, 0, 2, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[0, 0, 1, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[1, 3, 0, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[0, 3, 0, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[-1, 3, 0, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[1, 3, 1, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[-1, 3, 1, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[1, 3, 2, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[0, 3, 2, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[-1, 3, 2, ["minecraft:oxidized_cut_copper", "multiblocklibes:test_item_port_in", "multiblocklibes:test_item_port_ou", "multiblocklibes:test_fluid_port_in", "multiblocklibes:test_fluid_port_ou", "multiblocklibes:test_fe_port"]],
[0, 1, 0, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[1, 1, 0, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[-1, 1, 0, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[1, 1, 1, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[-1, 1, 1, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[1, 1, 2, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[0, 1, 2, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[-1, 1, 2, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[0, 2, 0, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[1, 2, 0, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[-1, 2, 0, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[1, 2, 1, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[-1, 2, 1, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[1, 2, 2, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[0, 2, 2, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[-1, 2, 2, ["minecraft:diamond_block", "minecraft:emerald_block"]],
[0, 3, 1, ["multiblocklibes:test_waste"]]
],
"requirements": [
// The Structure Requirements
]
}
You can also add sth in "The Structure Requirements"
{
// How many blocks in Structure
"id": "right_count_blocks_structure_requirement",
"property": [
["multiblocklibes:test_fe_port"],
1
]
}
{
"id": "max_blocks_structure_requirement",
"property": [
["multiblocklibes:test_fe_port"],
1
]
}
{
"id": "min_blocks_structure_requirement",
"property": [
["multiblocklibes:test_fe_port"],
1
]
}
// Add Description to the Structure
// Translatable
{
"id": "desc_structure_requirement",
"property": [
"tran",
"key.modid.sth"
]
},
// Literal
{
"id": "desc_structure_requirement",
"property": [
"lite",
"Also Trys War Thunder !!"
]
}
// Some block need be same
{
"id": "same_block_structure_requirement",
"property": [
[0, 1, 0],
[1, 1, 0],
[-1, 1, 0],
[1, 1, 1],
[-1, 1, 1],
[1, 1, 2],
[0, 1, 2],
[-1, 1, 2],
[0, 2, 0],
[1, 2, 0],
[-1, 2, 0],
[1, 2, 1],
[-1, 2, 1],
[1, 2, 2],
[0, 2, 2],
[-1, 2, 2]
]
}
03 Recipe
This is an example recipe
{
"type": "multiblocklibes:recipe",
// Recipe Time
"time": 100,
// Recipe ID
"recipe_id": "blast_revipe_test",
// Binding Structure
"structure_id": "blast",
"requirements": [
// Recipe requirement
]
}
Recipe requirements:
// Item Requirement
{
"id": "item_recipe_requirement",
"property": [
"input",
"minecraft:iron_ingot",
3
]
},
{
"id": "item_recipe_requirement",
"property": [
"output",
"minecraft:netherite_ingot",
1,
// If you want to make the item can only be output through ports of a specified type
// Also can be use in fluid and FE requirement
["multiblocklibes:test_item_port_ou"]
]
}
{
"id": "fluid_recipe_requirement",
"property": [
"output",
"mod_id:some_fluid",
2
]
}
{
"id": "fe_recipe_requirement",
"property": [
"input",
5000
]
}
{
"id": "block_recipe_requirement",
"property": [
// It won't destroy block when input
"input",
["modid:blovkkkkk"],
0,3,0
]
}
{
"id": "command_recipe_requirement",
"property": [
// When execute, input or output!
"input",
"summon modid:sth_mob",
0,3,0
]
}
{
"id": "desc_recipe_requirement",
"property": [
// When execute, input or output!
"input",
"tran",
"key.modid.eeeeeee"
]
}
{
// How many blocks in Structure
"id": "right_count_blocks_structure_requirement",
"property": [
["modid:sth_block"],
10
]
}
{
"id": "min_count_blocks_structure_requirement",
"property": [
["modid:sth_block"],
10
]
}
{
"id": "max_count_blocks_structure_requirement",
"property": [
["modid:sth_block"],
10
]
}
Project description from CurseForge.
Pick your setup
Multiblock Lib 1174 by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
26.1.2
1 loader buildCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Multiblock Lib 1174 versions and loaders
multiblocklibes-0.0.12.jar
17 Aug 2026
multiblocklibes-0.0.11.jar
16 Aug 2026
multiblocklibes-0.0.10.jar
31 Jul 2026
multiblocklibes-0.0.9.jar
30 Jul 2026
multiblocklibes-0.0.8.jar
27 Jul 2026
multiblocklibes-0.0.7.jar
23 Jul 2026
multiblocklibes-0.0.6.jar
16 Jul 2026
multiblocklibes-0.0.5.jar
15 Jul 2026
multiblocklibes-0.0.4.jar
14 Jul 2026
multiblocklibes-0.0.3.jar
14 Jul 2026
multiblocklibes-0.0.2.jar
11 Jul 2026
multiblocklibes-0.0.1.jar
11 Jul 2026
Looking for an older file? The official CurseForge project page is in Resources.