MCA: Quests 1.5.1 (Forge 1.20.1)
Curse Maven Snippet
What's new
MCA Quests 1.5.1
A patch release from a full audit of the quest lifecycle, rewards, persistence, multiplayer sync and the 1.5.0 interface.
Safe in both directions. Network protocol is unchanged at 13. Old saves load fine, and a save written by 1.5.1 still loads on 1.5.0 — downgrading just brings back the bugs this fixes.
Quests and villagers
Declining every quest a villager offered no longer brings them all back. With nothing left to show, the empty menu counted as stale and refilled from the full pool, undoing the 1.4.3 decline fix in exactly the case where a player most meant it. A villager who is out of offers now stays that way until the refresh window elapses, and says so.
"Before sunrise" is measured on the world clock. Time-of-day deadlines were computed in game time, which sleeping and /time set don't advance, so quests like Dawn Defense, Last Stand and Escort Me Home expired at arbitrary hours after a night's sleep — with a countdown that confidently agreed. Accepted quests now stamp the world clock, and the tracker corrects itself within a second of a sleep or a time change. Quests accepted before this version keep their old deadline until re-accepted.
Offers for situations that have ended are cleared. Since 1.4.3 a villager's offers are drawn once and kept, so an offer could outlive its situation — and Accept simply did nothing. Dead offers are now dropped and their slot refilled, and an offer that vanishes before Accept arrives says so instead of failing silently.
The last quest to fail leaves the tracker. A blown deadline, a dead giver or a lost protect target on your only active quest left it stuck on screen until relog.
Townstead hold objectives count time, not polls. hold_ticks credited a fixed amount per poll regardless of poll interval; on a slow-polling server a thirty-second hold could take thirty minutes, and objectives that reset on failure were unfinishable.
Rewards
Rewards no longer require the villager to be nearby. Hearts, village reputation and village titles were silently dropped when the giver's chunk wasn't loaded — the normal case for a quest finished out in the field, and the only case for self-completing quests. The quest completed, its cooldown armed, and the reward vanished without a log line. Quests now remember their giver's village at acceptance, and hearts bank into the same pending store deliveries already use.
A failing reward no longer strands the quest. Each reward now grants independently: a failure is logged with the quest and reward, and the rest are still granted, instead of leaving the quest marked as claimed with no way to hand it in.
Titles are visible across the MCA: Reputation seam. With that mod installed, quest-granted titles went only into this mod's store and never reached the canonical backend, so they didn't satisfy conditions or appear in the journal. Both sources are now read together. (Writing quest titles back into MCA: Reputation is deferred to 1.6.)
The world save stops growing with every turn-in. On installs without MCA: Reputation, every award, situation, project phase and delivery wrote a permanent marker that nothing ever removed. Dedupe is now a bounded per-player ring, and the accumulated markers are stripped on first load — your save will shrink.
Interface
- Every screen is keyboard-navigable. Arrows, PageUp/PageDown, Home/End scroll; Tab reaches widgets below the fold and scrolls them into view.
- The tracker reads as blocks, not a wall of text. More leading, roomier headings, and a gap between quests, so a title and its objective, destination and deadline group together. Progress bars no longer overlap the line beneath them.
- The tracker shows your first unfinished objective, not the first one, and a ready quest says "ready" in words as well as colour.
- Turn-ins explain themselves. Showing a complete quest to a villager who can't accept it now tells you where it goes, instead of offering only Abandon. A full quest log says it's full instead of the villager's generic "nothing today".
- Layout fixes: titles no longer run under difficulty pips or the pin/copy/waypoint buttons, project titles wrap inside their cards, and icon buttons scale their glyphs to fit.
- The villager menu stays out of your way. It only replaces an empty screen or one of this mod's own — it no longer yanks you out of a chest or your inventory. Back from a village project returns to the villager, not the world.
- Focus survives guidance updates. The quest log only rebuilds when a destination actually changes, so following a walking villager no longer drops focus every second.
- Client caches clear on logout, so nothing from your previous world flashes up before the first sync.
- The HUD toggle keybind is now labelled "Show/Hide Quest Tracker", which is what it does.
Also fixed
/reloadnow reaches template quests you've already accepted, so a pack author's fix applies to quests in progress.- Block-break, block-place and talk handlers respect cancelled events before crediting progress.
- Datapacks with two possession objectives for one item, or a profession turn-in with no professions, are rejected at load rather than shipping a quest that completes on one stack or can never be handed in. No bundled quest is affected.
- Two per-player maps in the progress tick are now cleared on logout.
For add-on developers
QuestReward gains RewardContext (giver UUID and name, dimension, frozen village id, quest id) and a three-argument grant that defaults to delegating to the existing two-argument method. Existing rewards compile and behave unchanged — override the new form only if you need to grant rewards while the villager is absent.
Seven new translation keys in both locales, and one relabelled. Documentation updated in DATAPACK.md and README.md.
This mod has no additional files