Skip to content

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.

  • 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.

Registration and custom entities

  • EntityReg: one-call registration for custom EntityTypes, collapsing the usual builder-plus-attributes-plus-renderer dance.
  • StatusEffects: registering custom MobEffects, 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 vanilla Display transforms.

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.

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.

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.

me.zlex.conduit.mob EntityReg, StatusEffects, Mobs, MobBuff, MobBuffs,
MobBadge, MobAnimations, MobSpawns, MobWave, MobWaves,
Forces, Debris, Flight, Projectiles, Ufo
me.zlex.conduit.mob.command MobDebugCommands

Maven coordinate: me.zlex:conduit-mob:<engine_version>. Depends on conduit-core.