Rotwire is a Minecraft 1.21.1 NeoForge mod developed as part of a curated zombie-survival modpack. Rather than acting as a standalone gameplay overhaul, it serves as the integration layer that coordinates persistent encounters, custom entities, progression systems, and multiple third-party mods into a cohesive experience.
The project emphasizes modular Java design, clear separation of responsibilities, and data-driven systems wherever practical.
The architecture handbook starts at
docs/README.md. It covers the system structure, every Java service and its dependencies, persistent state, network and
runtime flows, the complete configuration surface, data/resource ownership,
testing, upgrades, operations, and release maintenance.
Design Goals
Rotwire is built around several architectural principles:
modular feature separation event-driven gameplay using NeoForge's event bus data-driven content through JSON resources and datapacks minimal hard-coded integration logic clear separation between gameplay logic and modpack configuration reusable components that can be extended independently
Where possible, gameplay behavior is exposed through data packs, loot tables, advancements, configuration files, and Patchouli content instead of Java code.
Encounter System
The encounter package implements persistent building encounters for Lost Cities.
By default, the nearest building within 64 blocks is activated and receives a one-time persistent population before the player enters. Server configuration can switch newly discovered buildings back to capped, replenishing wave mode.
Responsibilities include:
encounter lifecycle management building selection encounter persistence mob spawning boss site selection server-side state synchronization
Encounter progress survives world saves and server restarts.
Horde Atmosphere
Rotwire reads The Hordes' authoritative per-player event state on the server and synchronizes a compact atmospheric state to each client. Scheduled horde days gradually draw in fog before the event without reimplementing The Hordes' calendar, random variation, or player-time rules.
FTB Quests powers a radio-contact progression layer styled as a low-light field pager. Players browse contacts as text chapters, accept and turn in contracts near a calibrated Radio Transmitter, and collect persistent courier deliveries after category-based delays. The quest book remains usable as a journal away from the radio, but server-side task checks prevent remote acceptance or final submission. See the radio quest authoring guide for the tag contract, delays, persistence rules, and extension notes.
Radio Transmitters also map local Lost Cities zones and report shared city progress through a compact drawer in the Survivor Network screen. Fully cleared encounter buildings raise city danger, which increases tagged infected's maximum health without weakening them when they later leave the city. Uncommon ambient zombies also roam outdoor Lost Cities street chunks without participating in building encounters. See City operations for the gameplay loop, status drawer, street population, progression defaults, and server tuning.
Calibrated Radio Transmitters now include a collapsible WX drawer with the
current condition plus stable forecasts for today and tomorrow. Ordinary rain
and storms mask sight and sound for the stealth system. Contaminated variants
instead make direct outdoor precipitation dangerous after a short warning:
the screen-edge vignette shifts from dirty green to pulsing red-orange and
prompts the player to seek shelter, without adding a countdown bar. See
Weather forecast and contaminated precipitation.
Natural creeper and vanilla skeleton-family spawns are confined to deeper
underground areas in configured dimensions. The default Overworld policy
allows them at Y 47 or lower, while spawners, commands, spawn eggs, structure
triggers, and Rotwire encounters remain untouched. This behavior is owned by
Rotwire and configured in rotwire-mobs.toml; it does not require In Control.
Zombies remain the surface threat. Rotwire's existing daylight-capable city street population is joined by rare wilderness wanderers: by default their spawn roll is one sixth as likely as the city roll and no more than two remain nearby. At night, both outdoor populations use three times their daylight spawn chance while preserving vanilla underground zombie spawning. The required Hordes configuration keeps zombies from igniting in sunlight without granting general fire immunity.
Carried equipment now forms a second survival constraint: inventory, armor, offhand items, and Traveler's Backpack contents contribute linearly by per-item weight category, while firearms, armor, and other equipment use larger equipment values. A compact lower-right HUD reports current load and stealth state, while the player inventory adds a weight bar whose tooltip lists the server's live tier thresholds and penalties. Light crouched players can avoid automatic infected targeting, but sight builds progressive suspicion and firing, attacking, or mining a durable block creates a radius-bounded investigation event. Horde mobs ignore the stealth window and Brutes detect faster. The radio quest interface also reports horde-day state and a 24-hour world clock without changing the existing pre-horde fog. See Stealth, attention, and encumbrance.
Skipping the night in a Traveler's Backpack sleeping bag applies Restless Sleep. A complete tarp camp or a sleeping bag sheltered inside SimplyTents, with a lit campfire and prepared food in a deployed backpack, consumes a ration instead and provides a rested night. SimplyTents checks are centered on each tent and expand to cover large variants and yurts. Prepared Shelter appears while the player is inside a campsite that currently meets every requirement. Remaining awake through a complete natural night grants New Dawn. For 50 seconds, either effect changes one full hunger icon and one full thirst icon every ten seconds in the harmful or beneficial direction. See Sleep survival.
A Radio Transmitter placed under a complete tarp or inside SimplyTents becomes a persistent Camp Radio. Its Camp Hub reports shelter, sleeping bag, fire, backpack, ration, coverage, and network status, then provides a Contracts handoff to the existing Survivor Network. Owner-installed extensions add a secure courier cache, kit-based field repairs, and a live operations relay that reports weather, nearby hostiles, city danger, and delivery traffic while extending radio access across the active campsite. Installed modules and cached equipment drop safely if the radio is dismantled. Repeatable contracts from Ward, Reed, and Vale deliver replacement modules through the courier network. The first Survivor Network setup shipment now includes a Tarp so a new survivor always has an obtainable route into the campsite loop. See Camp Radio.
Entity System
Custom entities are isolated inside the entity package.
The current implementation includes:
Rotwire Brute BruteRockProjectile
Entity-specific AI remains inside the entity implementation while generic navigation and mining behaviour is delegated to ZombieTactics-Profiled.
Rather than modifying Lost Cities directly, Rotwire consumes building metadata exposed by Lost Cities and layers encounter behaviour on top of generated structures.
This keeps the integration loosely coupled and easier to maintain across Lost Cities updates.
Handcrafted is a required dependency. Its furniture is placed through data-driven
Lost Cities palettes in selected libraries and civic interiors. When Lost Cities
Modern Tweaks 2.0.7 is installed, Rotwire also supplies narrowly targeted
lcmt: part overrides for those interiors and railway seating; the common empty
town, library, civic, factory, and shop interior slots are also replaced with
small Handcrafted furniture arrangements so generated floors are rarely blank.
The regular LCMT apartment tower families (lcmt:building1 through
lcmt:building8) use Rotwire-owned decorated copies of their normal floor
parts. Each decorated part retains the original walls, windows, doors, lights,
chests, and other LCMT/vanilla objects, with Handcrafted furniture merged into
the same 16x16 slices. This makes the exact files used by world generation easy
to edit in-place. All eight families use the same validated two-wide stairs,
clear landing vestibules, dedicated ground floors, and enclosed roof exits.
Their exterior shells are no longer interchangeable rectangles: the families
use separate brick, clinical, civic, research, industrial, bunker, housing,
and mixed-use material profiles with chamfered corners, recessed window bays,
façade ribs, balconies, buttresses, and matching roof geometry. All depth stays
inside the building chunk, so roads and neighboring multibuilding cells remain
untouched.
The same definitions override both base Lost Cities and LCMT IDs, so inherited
city styles and vanilla multibuildings cannot select older or incompatible
vertical layouts.
Furniture is confined to slices[1], directly above the untouched floor in
slices[0]. Its circled symbols (① through ⑳ and ⓐ through ⓜ) are
reserved for Rotwire and do not overlap any character used by LCMT 2.0.7.
To customize a normal floor, edit the corresponding full part under
data/rotwire/lostcities/parts/building1 through building8; the original
room shell and its vanilla objects remain visible around the furniture markers.
The eight retrofitted families are generated by
tools/generate_stair_retrofits.py, which deliberately preserves every
Handcrafted marker and vanilla loot chest. Every furnished replacement floor
also contains at least three accessible Handcrafted storage blocks.
Rotwire also owns a separate custom-building family under
rotwire:custom_buildings. It contains three standalone towers, a connected
2x2 quarantine hospital, and a 3x2 emergency block. Every occupied floor is
connected by a two-wide stair flight; the palette intentionally contains no
ladder block. Building definitions force five or more floors independently of
the selected Lost Cities profile. The standalone towers have distinct stepped,
recessed, ribbed, and balcony silhouettes; the hospital uses an articulated
32x32 perimeter while keeping every internal quadrant seam open. Small
child-city-style overrides append the new selectors to base Lost Cities and
LCMT styles while preserving the pinned upstream biome-specific selectors.
Lost Cities streets and parks also carry post-collapse greenery. Base street
shapes and LCMT's matching base variants keep their road lanes and street
furniture, but add scattered dirt planters whose tree roll is 93.75%. Four new
park layouts select temperate, arid, jungle, or snowy saplings to suit the
active city style. A persisted completion pass adds up to three mature trees
to safe positions in every new open city chunk, including small dirt cuts in
clear sidewalk locations; chunks completed by the earlier pass receive one
additional tree. Dynamic Trees supplies biome-appropriate species and its own
tree forms when installed; vanilla growth remains the fallback. The same pass
completes every exposed building face using broken vertical vine runners. It
still scales with the active Lost Cities profile's vineChance, but preserves
visible facade materials and prunes earlier solid-green walls when they load.
Serene Seasons and Immersive Snow remain free to handle the resulting foliage.
The in-game Survivor's Field Manual is treated as part of the project itself rather than external documentation.
Patchouli pages are maintained alongside the source code, allowing gameplay documentation to evolve together with implementation. Its Survival section includes the radio WX forecast, ordinary-weather cover, contaminated exposure, warning vignette, shelter timing, Camp Hub operation, modular upgrades, and live recipes for Zip-Up, Large, and Canopy tents plus Canvas Walls.
The project intentionally moves as much content as possible into resource packs.
Examples include:
loot tables advancements damage types Patchouli entries crafting overrides recipe removals
This reduces hard-coded behaviour and makes balancing significantly easier.
Rotwire intentionally does not hard-code every gameplay rule.
Several balancing decisions are delegated to external configuration supplied by the surrounding modpack, including:
Waystones Tough As Nails The Hordes Lost Cities PointBlank
This separation allows gameplay tuning without requiring Java changes or recompilation.
Dependencies Dependency Purpose Lost Cities World generation integration Handcrafted Generated furniture palettes PointBlank Firearms and ammunition Waystones Travel mechanics Tough As Nails Survival systems Patchouli In-game documentation The Hordes Horde scheduling and infection FTB Quests Survivor Network contacts, contracts, and quest journal Traveler's Backpack Optional carried-weight integration ZombieTactics Optional loud-gun investigation marker
Development dependencies are resolved through Modrinth Maven and are not bundled into the final artifact.
The project contains unit tests covering encounter selection, encounter state behaviour, city danger progression, and bounded connected-city surveying. Resource-heavy changes (Patchouli, loot tables, integrations) should additionally be validated inside the complete development modpack.
Rotwire's original code and resources are licensed under the MIT License.
Portions of the Lost Cities data resources are copied or adapted from The Lost Cities and remain subject to their original MIT license and copyright notice. See THIRD_PARTY_NOTICES.md.
Third-party mods and libraries are not bundled with Rotwire and remain subject to their respective licenses.