conduit-mob
conduit-mob is the module for putting things in the world and making them behave. It is the layer chaos-event and set-piece games are built on: registering a custom entity, turning an ordinary zombie into a named elite, pacing a spawn wave so it does not blow the tick budget, pulling every entity in an area toward a point, or flying a UFO across the sky.
Most of it is one-call glue over vanilla APIs that are individually fine and collectively tedious.
When to depend on this
Section titled “When to depend on this”- Your game spawns mobs deliberately rather than relying on natural spawning.
- You want “elite” or “buffed” variants with visible nameplates and removable stat bundles.
- You are building scheduled events: waves, storms, debris, invasions.
- You need a custom entity type registered without the usual boilerplate.
- You have a flying prop that moves by direct repositioning rather than pathfinding.
What is in it
Section titled “What is in it”Registration and custom entities
EntityReg: one-call registration for customEntityTypes, collapsing the usual builder-plus-attributes-plus-renderer dance.StatusEffects: registering customMobEffects, plus a contagion helper for effects that spread between entities.
Making mobs interesting
MobBuff: a named, declarative, removable bundle of stat buffs. Removability is the point: an elite can be de-elited without rebuilding it.MobBuffs: attribute and equipment scaling for upgraded mobs.Mobs: the one-call “enhanced event mob” workflow, buffing a mob and badging it in a single step.MobBadge: a floating nameplate that follows a mob, with a live value such as remaining health.MobAnimations: display-animation helpers built on vanillaDisplaytransforms.
Spawning and pacing
MobSpawns: forced spawning helpers, the runtime layer event mods build on.MobWave: a capped, interval-paced spawn wave. The cap and the pacing are the whole value: an unpaced wave is how you stall a tick.MobWaves: the registry and driver that ticks active waves from one server-tick listener.
Physics and set pieces
Forces: stateless per-tick field forces over the entities in an area. The velocity primitive behind vortexes, shockwaves and black holes.Debris: rains falling blocks over an area.Flight: hand-driven flight stepping for craft that move by direct repositioning: UFOs, drones, flying bosses.Projectiles: observe and clone projectiles as they enter the world.Ufo: a complete animated flying-saucer prop: descends, fires an abduction beam, lifts a captive, departs.
Why Flight exists
Section titled “Why Flight exists”Worth calling out, because it is the least obvious API here and the reason is instructive.
A LivingEntity that you reposition directly still runs its own travel(), which adds a second movement on the same tick and produces a craft that visibly double-steps. Flight caps each step, turns the craft to face its direction of travel, and zeroes velocity so vanilla’s own movement contributes nothing.
Pair it with noPhysics, noGravity and per-tick tracking, and the client interpolates the result into smooth flight.
Tick cost
Section titled “Tick cost”MobDebugCommands provides /conduit mob spawnprobe, which reports what a scatter spawn actually costs on the tick it runs. Reach for it before assuming a wave is affordable; spawn cost is one of the easier ways to stall a server, and guessing is worse than measuring.
API surface
Section titled “API surface”me.zlex.conduit.mob EntityReg, StatusEffects, Mobs, MobBuff, MobBuffs, MobBadge, MobAnimations, MobSpawns, MobWave, MobWaves, Forces, Debris, Flight, Projectiles, Ufome.zlex.conduit.mob.command MobDebugCommandsMaven coordinate: me.zlex:conduit-mob:<engine_version>. Depends on conduit-core.