MCA:任务

MCA:任务

一套用于MCA:Reborn村民的RPG风格、数据包驱动的任务系统。右键点击村民,打开新的任务菜单,接受工作,在世界中完成它,然后提交以获得丰厚的奖励和好感度。

MCA: Quests

一个为 《Minecraft Comes Alive: Reborn》 村民设计的 RPG 风格、数据包驱动的任务系统。右键点击村民,打开新的 任务 菜单,接受一份工作,在世界上完成它,然后交付以获取物品、经验值、状态效果——以及与你与该村民的 MCA 爱心值 的显著提升。

服务器权威、防复制、完全数据驱动:每个任务都是一个 JSON 文件,因此整合包和玩家无需编写代码即可添加自己的任务。


功能

  • 🗨️ 集成菜单 — 一个 任务 按钮直接注入到 MCA 的村民交互屏幕中(无需额外步骤,无需学习单独的 UI)。
  • 📜 150+ 内置任务,涵盖 所有村民职业 — 农夫、渔夫、牧羊人、图书管理员、牧师、盔甲匠、武器匠、工具匠、石匠、屠夫、制箭师、皮匠、制图师 — 以及 无业/傻瓜 村民和 MCA 的 守卫(包含弓箭手、冒险家和雇佣兵的额外内容)。
  • 🎭 多提供对话 UI — 村民一次会提供多个任务,每个任务都带有风味对话、目标和奖励摘要;可在行内 接受/拒绝/完成/放弃。
  • 🔗 关系任务链 — 将任务链接成多阶段剧情线,并记忆你的行动:农夫让你送小麦,然后扩建农场,接着帮助学徒,最后邀请你参加盛宴。任务链会根据你是否完成、失败或放弃之前的步骤而分支,并且 UI 会显示剧情线名称和“第 2 部分,共 4 部分”。完全数据驱动 — 无需编写代码(包含 4 个示例剧情线)。
  • 🌾 活村庄情景 — 村庄会对 世界上发生的事情做出反应。袭击、死亡、僵尸感染、亲属失踪、饥荒和夜幕会开启临时的 情景,这些情景会在附近的村民身上浮现出动态的、有时限的 任务提供 — “击退袭击”、“治愈感染者”、“寻找失踪的孩子”、“填满空粮仓” — 并在你提供帮助(或失败)后转化为村庄声望。服务器权威、限流以防刷屏、并持久保存于世界存档中。完全数据驱动(situations/)且向后兼容;包含 6 个示例情景。
  • 🏘️ 村庄工程 — 共享的、多阶段的 社区目标,由整个服务器共同完成。一个赞助村民召集整个城镇 — 修复水井、补充守卫室库存、修复图书馆 — 任何玩家都可以贡献:进度是共享的,并存储在世界存档中,因此捐赠、击杀和建造都会汇入一个公共池。选择一个 范围(玩家、村民、家庭、职业或村庄),各个阶段会发放 共享奖励(给贡献者、最佳贡献者、所有帮助过的人或整个村庄),以及模组侧的村庄声望。完全数据驱动且向后兼容;包含 6 个示例工程。
  • 🏅 进度:声望等级与头衔 — 村庄声望现在沿着一个命名的阶梯攀升(陌生人 → 熟人 → 朋友 → 尊敬 → 敬仰),并有升级弹窗和自动获得的 头衔。使用 reputation_tier 条件限制玩家声望等级的任务,使用 grant_title 奖励授予头衔,并在一个新的 日志 屏幕(村庄声望、等级、头衔和已完成任务档案)中进行追踪。完全数据驱动(reputation_tiers/、titles/)且向后兼容。
  • 🎯 10 种目标类型 — 交付物品、收集、制作、钓鱼、击杀生物、破坏/放置方块、访问生物群系或维度、以及与特定职业对话。
  • 🎁 7 种奖励类型 — 物品、经验值、经验等级、状态效果、战利品表、命令(默认关闭)和 MCA 爱心值。
  • 🔒 25 种条件类型 + all_of / any_of / not 复合条件 — 通过爱心值、职业、生物群系、维度、时间、天气、手持物品、进度、等级、随机概率和任务历史(已完成/未完成/失败/已放弃)来限制提供。
  • 💞 MCA 感知条件 — 根据村民的生活模拟状态限制任务:他们是否是你的 配偶 或 家人,他们的 关系状态、年龄、性格、心情、村庄/家庭、健康 或 感染状态,甚至是否有 亲属失踪或已死亡。全部可选、数据驱动且安全可靠;包含 6 个示例任务(配偶跑腿、孩子请求、病患村民的良药、守卫巡逻、寻子搜索、纪念)。
  • 🧭 任务追踪 — 一个可按键切换的 任务日志、一个完全可重新定位的 HUD 追踪器(显示任务发布者名称),以及任务准备交付时的 弹窗提示 + 音效。
  • 🛡️ 服务器权威 & 防利用 — 所有选择、验证和奖励发放都在服务器端完成;交付是原子性和幂等的,因此数据包刷屏无法复制奖励。
  • 🧩 可扩展 — 一个公共 Java API 允许附加组件注册自己的目标/奖励/条件类型,并且五个 Forge 事件(QuestAccepted/Ready/Completed/Abandoned/Failed)允许其他模组进行响应。
  • 💬 MCA: 对话集成(可选)— 安装了 MCA: 对话 附加组件后,村民会以 自己独特的个性说话,说出任务的提供/进度/完成/失败语句,而不再是静态文本,并且“与这个村民对话”的目标进度来自 **** 一次实际的对话**。MCA: Quests 仅提供钩子和安全回退 — 没有该附加组件时,对话将保持原样,其他一切不变。

需求

Minecraft 1.20.1
模组加载器 Forge 47.4.10 或更新版本
MCA Reborn 必需 — 7.6.x
Architectury API 必需 (Forge) — MCA Reborn 依赖它
MCA: Conversations 可选 — 开启有声任务对话及对话驱动的目标

MCA: Quests 自身无法独立运行——它是 MCA Reborn 的一个附加组件。

安装

  1. 为 Minecraft 1.20.1 安装 Forge。
  2. 将 MCA Reborn、Architectury API 和 MCA: Quests 放入你的 mods/ 文件夹。
  3. 启动游戏。右键点击一个成年 MCA 村民,然后点击 任务。

工作原理

右键点击村民 → 任务 → 选择一个提供 → 接受。通过 HUD 或任务日志按键(在“控制”中绑定“打开任务日志”)进行追踪。当目标完成时,你会看到一个弹窗提示;返回一个符合条件的村民处并 完成 任务,即可领取奖励并提升爱心值。

配置

首次运行时,config/ 目录下会生成两个文件:

  • mcaquests-common.toml — 游戏规则(提供数量、冷却时间、爱心值缩放、交付规则、村民跟随开关……)。
  • mcaquests-client.toml — 视觉效果(HUD 位置、弹窗、音效、菜单按钮)。

请参阅 CONFIG.md 了解所有选项及其默认值。

添加你自己的任务

任务从任意数据包的 data/<命名空间>/mcaquests/quests/**.json 路径加载。在游戏中运行 /mcaquests export-schema 获取一个可工作的示例,并参阅 DATAPACK.md 了解完整的字段参考和逐步的数据包操作指南。常用命令:/mcaquests list、/mcaquests validate、/mcaquests reload。

共享的 村庄工程 与其一同从 data/<命名空间>/mcaquests/projects/**.json 路径加载 — 请参阅 DATAPACK.md 的 [村庄工程] 章节以及 /mcaquests project list|info|validate 命令。

突发的 情景 从 data/<命名空间>/mcaquests/situations/**.json 路径加载 — 将世界事件触发器(袭击、死亡、感染、亲属失踪、饥荒、夜晚)与一个有时限的提供配对。请参阅 DATAPACK.md 的 [情景:活着的村庄] 章节以及 /mcaquests situation list|info|validate|debug 命令。

从源码构建

需要 JDK 17。

./gradlew build

生成的 jar 文件位于 build/libs/ 目录。MCA Reborn 和 Architectury 会自动拉取(MCA 通过 Modrinth Maven)。注意:gradle.properties 将 org.gradle.java.home 固定到一个本地 JDK 17 路径 — 请将其调整为你自己的 JDK 17 安装路径,或者移除该设置并在运行 Gradle 时将 JAVA_HOME 指向 JDK 17。

兼容性说明

MCA Reborn 未暴露公共 API,因此 MCA: Quests 链接到其内部类,因此被锁定在 7.6.x 版本线上。未来 MCA 的主要版本更新可能需要此模组进行更新。所有 MCA 的访问都隔离在一个单一的 McaCompat 适配器后面,以便于处理。

MCA: 对话 集成是一个软依赖:MCA: Quests 暴露了对话和目标钩子(QuestDialogueHooks、ExternalSignalObjective),附加组件会针对这些钩子进行注册。当未安装该附加组件时,钩子仅执行空操作 — 任务对话回退到静态的数据包文本,目标通过其常规检测器进展。

许可与鸣谢

基于 GPL-3.0 许可证发布,与 MCA Reborn(此模组链接了其内部代码)一致。

  • Minecraft Comes Alive: Reborn 由 Luke100000 及贡献者制作 — 本模组基于此构建。
  • 由 otectus 创作。