MCA: Quests 0.9.0 (Forge 1.20.1)
Curse Maven Snippet
What's new
[0.9.0] - 2026-07-07
An MCA: Conversations add-on bridge, lead-style escorts, and a substantial quest-pack expansion.
Existing saves and datapacks are unaffected — the new escort_entity fields are optional and default
to the previous behavior, and the conversation hooks do nothing unless the add-on registers them.
Added
- MCA: Conversations — voiced quest dialogue — a new add-on API (
QuestDialogueHooks/QuestDialogueResolver) lets MCA: Conversations speak a quest's lifecycle line (offer / in-progress / ready / complete / failed) in the villager's own personality instead of the static datapackdialoguetext. Resolved server-side at Component-build time; degrades safely to the static line when no resolver is registered, the resolver returnsnull, or it throws — so the base mod is unchanged without the add-on. - MCA: Conversations — conversation-driven objectives — objectives implementing
ExternalSignalObjectiveadvance when the add-on pushes a signal viaQuestManager.notifyExternalObjective(player, signalId, villagerUuid)— e.g. "the player talked to this villager about topic Y" — letting talk-based quests progress from an actual conversation rather than a built-in detector. - NPC-led escorts —
escort_entitygains aleadflag (defaultfalse). Withlead: truethe villager walks to the destination itself and pauses whenever the player is farther thanwait_distanceblocks (default 6), so the player must stay close to keep it safe — the inverse of the old player-leads / villager-follows behavior. Driven server-side through MCA's brain (MoveState.MOVE+ the vanillaWALK_TARGETmemory), isolated behindMcaCompat; the lead pace is configurable via the newleadVillagerSpeedoption. Lead/follow movement is now also released cleanly on quest complete/abandon/fail. Pairs withfailure.fail_on_giver_death. - Staged relative-escorts — when a
leadescort's target is someone other than the giver (a relative or other villager), the escortee now waits invulnerable and motionless at its spot until the player comes withinwait_distance; the escort then "truly begins" — the escortee becomes mortal, starts being led, and from that point its death fails the quest (newESCORT_TARGET_DIEDreason, heart penalty applied to the giver). Auto-detected forlead+ non-selfvillager, overridable with the newstage_until_nearfield. The escortee is locked by UUID (so a re-resolvingfamilytarget can't swap relatives) and the hold is released on engage/cleanup so a held villager is never left frozen. - Findable quest targets — for an active quest, objectives that target a specific villager
(
deliver_to_villager,heal_entity,cure_villager,escort_entity,protect_entity,defend_villager) now resolve the target's real name and home village in the objective line — e.g. "Deliver 1× Paper to Hans (your brother) — Oakvale" (the name comes from MCA's persistent family tree, so it shows even when the relative is unloaded) — and the target villager glows through walls while it is loaded, so it can be found. NewhighlightQuestTargetsconfig (default on) toggles the glow. Objective lines are resolved server-side, so no protocol change. Family-relative quests are also gated onrelated_villager_status <relation> same_villageso they are only offered when a findable relative exists — fixingrelations/letter_to_brother, which could previously be offered to a villager with no sibling at all (an impossible quest). mcaquests:giver_distance_from_villagecondition — gates a quest on the giver being at leastmin_distanceblocks from its home-village center (optionally also outside the village border). Fails safe to not met when the giver has no village. Combine withmcaquests:timeNIGHTviaany_ofto reserve escort / "out after dark" quests for villagers genuinely far from home or caught out at night.mcaquests:reach_locationobjective — the player travels to a location anchor; arrival sticks complete (distinct fromenter_structure, which keys off a named structure).mcaquests:defend_locationobjective — defeat hostile threats near a fixed place anchor (the place-anchored sibling ofdefend_villager).- ~54 new built-in quests plus 3 chains, 2 projects, 2 situations, and 2 templates, emphasizing
combat/defense, relationship & family arcs, and village/emergent events: lead-escort and
night/distance-gated quests, gate defenses and night watches (showcasing
defend_location), spouse / child / parent storylines, the multi-stage courting, lost_child (branching), and aging_parent relationship arcs, the muster_the_militia and rebuild_the_walls community projects, and the defend_the_gate / raiders_at_the_gate situations.
Changed
- The built-in
relations/escort_me_homequest now useslead: trueand is gated to a villager a short way from home during the day (keeping its "before nightfall" deadline). A new night/far variant,relations/lead_me_home, covers being caught out after dark with no time limit.
Fixed
- Escort/lead quests now actually work. Three compounding bugs are resolved:
- Erratic, stuttering movement. A led villager's walk target was only re-issued once per second, so
MCA's per-tick brain behaviors overwrote it for the other 19 ticks — the villager drifted/stuttered
instead of walking to its destination. Lead actuation now runs every tick so the walk target sticks,
and the
wait_distanceleash gained hysteresis so it no longer thrashes start/stop at the boundary. - "Escort to the village" while already in it / never completing. Arrival at a village anchor
(
home_village/nearest_village) now triggers when the villager is inside the village border, not within a small radius of the single center point, and the check is horizontal (the village center'sYno longer blocks completion). Home-village lead quests are also gated withrequire_outside_borderso a villager already inside the village isn't offered an "escort me home". - Drifting destination. The escort destination is now resolved once and frozen when the quest is
accepted, so a
nearest_village(previously recomputed against the player's position every tick) or a moving relative target no longer snaps around.nearest_villagealso resolves relative to the escortee/giver rather than the player.
- Erratic, stuttering movement. A led villager's walk target was only re-issued once per second, so
MCA's per-tick brain behaviors overwrote it for the other 19 ticks — the villager drifted/stuttered
instead of walking to its destination. Lead actuation now runs every tick so the walk target sticks,
and the
reach_locationuses the same border-aware, horizontal arrival as escorts.
Compatibility
- The MCA: Conversations integration is optional. MCA: Quests only ships the hooks and their
safe fallbacks; the consumer lives in the separate MCA: Conversations add-on. With the add-on
absent, dialogue stays the static datapack text and
ExternalSignalObjectivequests progress through their normal detectors — nothing else changes.
This mod has no additional files

