Skip to content

Java Integration

KilaBash edited this page Nov 2, 2024 · 6 revisions

Import Multiblocked2

You can find the latest version from our maven.

repositories{
    maven {
        name "firstdarkdev"
        url "https://maven.firstdarkdev.xyz/snapshots"
    }
}

dependencies {
    implementation fg.deobf("com.lowdragmc.ldlib:ldlib-forge-{minecraft_version}:{latest_version}") { transitive = false }
    implementation fg.deobf("com.lowdragmc.multiblocked2:Multiblocked2:{minecraft_version}-{latest_version}") { transitive = false }
}

Multiblocked2 Registry Event

Multiblocked2 provides a Forge event (MBDRegistryEvent) for registries.

public class MBDEvents {

    @SubscribeEvent
    public void onRegisterMachine(MBDRegistryEvent.Machine event) {
        System.out.println("Registering machine");
    }

    @SubscribeEvent
    public void onRegisterRecipeType(MBDRegistryEvent.MBDRecipeType event) {
        System.out.println("Registering recipe type");
    }

    // other events....
}

public void modInit() {
    IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();
    eventBus.register(new MBDEvents());
}

Register machines via Java Code

Instead of place projecs files under the .minecraft/assets/ldlib/mbd2/machine_type directly, there are two ways to register machines via code.

1. Create and register machines via raw code

@SubscribeEvent
public void onRegisterMachine(MBDRegistryEvent.Machine event) {
    var renderer = new IModelRenderer(MBD2.id("block/pedestal"));
    event.register(MBDMachineDefinition.builder()
            .id(MBD2.id("test_machine"))
                    .rootState(MachineState.builder()
                            .name("base")
                            .renderer(renderer)
                            .shape(Shapes.block())
                            .lightLevel(0)
                            .build())
            .blockProperties(ConfigBlockProperties.builder().build())
            .itemProperties(ConfigItemProperties.builder().build())
            .build());
}

2. Register machine project files from your mod resource assets

For example, you have such projects in your resource assets like this.

image
@SubscribeEvent
public void onRegisterMachine(MBDRegistryEvent.Machine event) {
    event.registerFromResource(this.getClass(), "mbd2/machine/machine_project_file.sm");
}