Skip to content

Quickstart

This walkthrough installs Conduit, scaffolds a tiny /hello command-driven game mod, and runs it against a dev Minecraft server. Total time: ~10 minutes.

  • JDK 25 on your PATH (java -version should print 25.x.x)
  • Gradle wrapper (every Fabric template ships one — you don’t need a system install)
  • A reachable copy of the Conduit Maven artifacts. For now, that means cloning zlexo/conduit and running ./gradlew publishToMavenLocal once.

Start from the Fabric template mod or scaffold one with mr generate. Make sure your gradle.properties has:

minecraft_version=26.1.2
loader_version=0.19.2
loom_version=1.16-SNAPSHOT
fabric_api_version=0.149.1+26.1.2

In your mod’s build.gradle:

repositories {
mavenLocal()
}
dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
// Conduit modules — depend on only what you need.
implementation "me.zlex:conduit-core:0.8.0+mc26.1.2"
implementation "me.zlex:conduit-render:0.8.0+mc26.1.2"
// Bundle them in your jar (Jar-in-Jar) for one-file delivery.
include "me.zlex:conduit-core:0.8.0+mc26.1.2"
include "me.zlex:conduit-render:0.8.0+mc26.1.2"
}
package me.you.hello;
import com.mojang.brigadier.Command;
import me.zlex.conduit.teleport.SafeTeleport;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;
public class HelloMod implements ModInitializer {
@Override
public void onInitialize() {
CommandRegistrationCallback.EVENT.register((dispatcher, registry, env) ->
dispatcher.register(Commands.literal("hello")
.executes(ctx -> {
var p = ctx.getSource().getPlayer();
p.sendSystemMessage(Component.literal("Hi from Conduit!"));
// SafeTeleport handles cross-dim + chunk-load safely.
var dest = new net.minecraft.world.phys.Vec3(p.getX(), p.getY() + 50, p.getZ());
SafeTeleport.teleport(p, (net.minecraft.server.level.ServerLevel) p.level(), dest,
p.getYRot(), p.getXRot(), arrived -> arrived.fallDistance = 0f);
return Command.SINGLE_SUCCESS;
})));
}
}
Terminal window
./gradlew runServer

Join your dev server, type /hello, and you should levitate fifty blocks up safely. That’s Conduit’s SafeTeleport doing the chunk-ticket dance for you.

  • Game lifecycle — wire your mod into the phase machine instead of a flat command.
  • In-world UI — paint interactive panels in front of your players.
  • Architecture — the module dependency stack.