promotional bannermobile promotional banner

MCA: Quests

An RPG-style, datapack-driven quest system for MCA:Reborn villagers. Right-click a villager, open the new Quests menu, accept a job, complete it out in the world, and turn it in for sweet rewards and hearts.
Back to Files

MCA: Quests 0.9.0 (Forge 1.20.1)

File namemcaquests-0.9.0.jar
Uploader
OtectusOtectus
Uploaded
Jul 7, 2026
Downloads
1.2K
Size
863.6 KB
Mod Loaders
Forge
File ID
8386811
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:mca-quests-1579993:8386811")

Learn more about Curse Maven

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 datapack dialogue text. Resolved server-side at Component-build time; degrades safely to the static line when no resolver is registered, the resolver returns null, or it throws — so the base mod is unchanged without the add-on.
  • MCA: Conversations — conversation-driven objectives — objectives implementing ExternalSignalObjective advance when the add-on pushes a signal via QuestManager.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 escortsescort_entity gains a lead flag (default false). With lead: true the villager walks to the destination itself and pauses whenever the player is farther than wait_distance blocks (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 vanilla WALK_TARGET memory), isolated behind McaCompat; the lead pace is configurable via the new leadVillagerSpeed option. Lead/follow movement is now also released cleanly on quest complete/abandon/fail. Pairs with failure.fail_on_giver_death.
  • Staged relative-escorts — when a lead escort'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 within wait_distance; the escort then "truly begins" — the escortee becomes mortal, starts being led, and from that point its death fails the quest (new ESCORT_TARGET_DIED reason, heart penalty applied to the giver). Auto-detected for lead + non-self villager, overridable with the new stage_until_near field. The escortee is locked by UUID (so a re-resolving family target 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. New highlightQuestTargets config (default on) toggles the glow. Objective lines are resolved server-side, so no protocol change. Family-relative quests are also gated on related_villager_status <relation> same_village so they are only offered when a findable relative exists — fixing relations/letter_to_brother, which could previously be offered to a villager with no sibling at all (an impossible quest).
  • mcaquests:giver_distance_from_village condition — gates a quest on the giver being at least min_distance blocks from its home-village center (optionally also outside the village border). Fails safe to not met when the giver has no village. Combine with mcaquests:time NIGHT via any_of to reserve escort / "out after dark" quests for villagers genuinely far from home or caught out at night.
  • mcaquests:reach_location objective — the player travels to a location anchor; arrival sticks complete (distinct from enter_structure, which keys off a named structure).
  • mcaquests:defend_location objective — defeat hostile threats near a fixed place anchor (the place-anchored sibling of defend_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_home quest now uses lead: true and 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_distance leash 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's Y no longer blocks completion). Home-village lead quests are also gated with require_outside_border so 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_village also resolves relative to the escortee/giver rather than the player.
  • reach_location uses 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 ExternalSignalObjective quests progress through their normal detectors — nothing else changes.

This mod has no additional files