BetterQuesting

[!INFO] Git Commit: f5042d9011de39cd9f4e5e608f0aeceab6850beb | Updated: 2026-10-02

BetterQuesting 是一个 1.7.10 Forge 的任务 / 剧情框架模组,由 Funwayguy 开发、GTNewHorizons 维护。模组本名(分类名)与 modid 一致:gradle.properties:10 写明 modId = betterquesting,主类 betterquesting/core/BetterQuesting.java:53 的常量 MODID = "betterquesting" 与之相符 —— modid 与分类名相同,无不一致。

核心本身几乎不提供游戏内容:它注册 2 个方块、4 个物品、1 个实体、1 个流体、1 个创造标签,以及 16 条封包、45 项客户端配置、15 个 API 键、8 套 GUI 主题。真正让玩家看到任务树的是同 jar 内打包的 bq_standard(Standard Expansion)—— 它提供 13 种任务类型与 6 种奖励类型。

定位:独立模组,无宿主

dependencies.gradle 全文没有指向任何「宿主模组」的依赖,外部条目仅 6 项(GTNHLib、NotEnoughItems、DuraDisplay、VendingMachine、annotations 库、TX-Loader)。BetterQuesting 名字里不含任何暗示宿主的词,本分类也不做任何宿主猜测。

硬前置只有一条:@Mod(dependencies = "after:gtnhlib@[0.10.7,)")(BetterQuesting.java:50,after 而非 required-after)。

⚠️ 一个仓库打包 4 个 modid

BetterQuesting 这一个仓库编译出 4 个 @Mod,mcmod.info 也列了 4 条 modList 条目:

modid 名称 依赖声明 本分类是否展开
betterquesting BetterQuesting after:gtnhlib@[0.10.7,) ✅ 本分类主体
bq_standard Standard Expansion required-after:betterquesting 仅在交叉处标注归属
questbook BetterQuesting Quest Book required-after:betterquesting 仅在交叉处标注归属
cb4bq Command Blocks for Better Questing required-after:betterquesting 仅在交叉处标注归属

mcmod.info 中后三条的 "parent" 字段均为 "betterquesting"。本分类只文档化核心 modid;属于另 3 个 modid 的内容在相关条目里明确标注归属,不与核心混为一谈。

一行统计

维度 数量
方块 2
物品 4(extra_life 含 3 个 meta)
实体 / 流体 1 / 1
TileEntity 2
创造标签 1
核心自带任务类型 / 奖励类型 0 / 0
封包处理器 16
客户端配置项 45
世界级设置项 12
任务属性(NativeProps) 52(另有 1 个被注释)
API 键 15(11 公共 + 4 仅客户端)
GUI 主题 8
工具箱工具 12
任务导入器 3(其中 1 个自述为空实现)
根指令 / 子指令 4 / 15

方块列表

  • 提交站 (OSS) - 2 槽 IFluidHandler + ISidedInventory 方块,把物品/流体投进槽位即可完成对应任务,供漏斗与管道自动化
  • 观测站 (OOS) - 无 GUI 无槽位,每秒扫描六个邻居的容器与储罐,把内容喂给拥有者名下的队伍共享任务

物品列表

  • 额外生命 - 3 个 meta(1 颗心 / 1/2 / 1/4),硬核模式下唯一回命道具,仅 meta 0 可用
  • 入门指南 - 右键打开 GUI ID 1 的内置帮助界面,复用原版书写书贴图
  • 占位符组 - 2 物品 + 1 实体 + 1 流体共 4 个注册项,整合包删模组后冻住缺失引用并在原物品回归时自愈

任务系统列表

  • 任务数据模型 - 任务线 → 任务 → 任务项/奖励三层 UUID 数据库,含前置依赖的三档可见性
  • 任务属性 - 52 个 NativeProps 属性的完整总表(1 个 FRAME 已被注释掉)
  • 任务状态与逻辑 - 5 态状态机 + 7 档可见性 + 6 种布尔运算的判定规则

奖励系统列表

  • 奖励框架 - 注册表 / 存储 / 基类三件套;核心自带 0 个具体奖励类型,6 个全部来自 bq_standard

网络协议列表

  • 封包协议 - 16 个 betterquesting:* 处理器 + 判别式恒为 0 的 PacketQuesting 单通道

设置列表

  • 客户端配置 - 45 项存于 config 文件的玩家设置,全部在单一 general 分类下
  • 世界任务设置 - 12 项随世界存档持久化的设置,含「读空 NBT 即重置」的重置路径

指令列表

  • 指令 - 4 个根指令(bq_admin / bq_user / bq_client / bq_copyquests)与 15 个子指令

集成列表

  • 跨模组集成 - 7 个 isModLoaded 探测、GTNHLib / DuraDisplay / VendingMachine / NEI / DreamCraft 的实际行为,以及同 jar 4 modid 的对照

API 列表

  • API 参考 - 15 个 ApiKey 常量,公共 11 / 仅客户端 4
  • 扩展示例加载器 - ExpansionLoader 的 15 次服务注册与附属包接入的 4 步流程

主题与工具列表

  • 主题 - bq_themes.json 定义的 8 套主题,10 个资源工厂中 6 个在用
  • GUI 工具箱 - 12 个可视化任务设计工具,8 档网格吸附
  • 导入器 - 3 个任务包导入器(HQM 任务 / HQM 战利品袋 / 空壳),全部属 bq_standard

队伍与玩法列表

  • 队伍系统 - 3 档权限的进度共享队伍,源码中不存在人数上限
  • 生命值与硬核模式 - 死亡扣命、耗尽即封禁(单人则删档),与 1/3/10 三个生命数值
  • 任务通知 - GTNHLib TitleAPI 后端的通知队列,16 项配置 + 14 项逐任务覆写

核实说明

  • 版本门:Form ① 命中 gradle.properties:24 的 minecraftVersion = 1.7.10(同行 27 行为 forgeVersion = 10.13.4.1614)。项目为 RetroFuturaGradle(build.gradle 用 com.gtnewhorizons.gtnhconvention,settings.gradle 声明 com.gtnewhorizons.gtnhsettingsconvention 2.0.24),故 Form ① 有效,非 ForgeGradle 静默返回的情形。tools/version_gate.py 对本分类判定 ok。
  • 提交哈希:git cat-file -t f5042d9… 返回 commit。该提交同时是仓库唯一标签 3.8.87-GTNH 的指向(git rev-list -n1 3.8.87-GTNH 输出同一哈希,git rev-list --count 3.8.87-GTNH..HEAD = 0)。核实分支/标签:master,等于 3.8.87-GTNH。该仓库为浅克隆(git log 显示 grafted),故只能确认 HEAD 与标签一致,无法回溯更早历史。
  • 源码语言:纯 Java,find -name '*.java' = 518 个;.scala / .kt / .groovy 各 0 个。
  • ⚠️ 口径提示:仓内 src/main/java 同时包含 4 个 modid 的源码。标注为「核心自带」的数字均只统计 src/main/java/betterquesting/**;标为 bq_standard 的内容单独归属。