队伍系统 (Party System)

基本信息

属性 值
管理器 betterquesting.questing.party.PartyManager(单例,经 ApiReference.PARTY_DB 暴露)
队伍实体 betterquesting.questing.party.PartyInstance
邀请管理 betterquesting.questing.party.PartyInvitations
权限枚举 EnumPartyStatus:MEMBER / ADMIN / OWNER
世界开关 NativeProps.PARTY_ENABLE,默认 true(存于 世界任务设置)
任务范围 队伍内成员共享任务(ParticipantInfo.getSharedQuests())
封包 3 条:party_sync / party_action / invite_sync

功能

队伍让多名玩家共同推进同一批任务。核心机制不是「组队一起做」,而是进度共享:每个玩家是任务的一个 ParticipantInfo,完成任一成员的任务会让整队都看到该任务完成。

队伍系统与另外两个系统深度耦合:

  • 生命值共享 —— 硬核模式下队伍成员同生共死(见 生命值与硬核模式)
  • 方块自动化 —— 观测站 遍历的是 pInfo.getSharedQuests(),即它喂的是队伍共享的任务集,不是某个人的私有任务

队伍内权限分三档(EnumPartyStatus):MEMBER < ADMIN < OWNER。源码中该枚举只有成员声明,无任何判定方法(api/enums/EnumPartyStatus.java 共 3 行),具体权限判定散落在 PartyInstance / PartyManager 内。

队伍人数

⚠️ 源码中不存在队伍人数上限。 对 questing/party/ 全目录检索 MAX、too_many、full_party、max 等模式,零命中;PartyManager 中唯一的 size() 出现在 if (... .size() > 0) 形式的空判断里(PartyManager.java:161),不是上限检查。因此本条目不给出任何人数上限数字 —— 任何具体数值都会是编造。

队伍能否创建、以及队伍能否加入,取决于世界属性 PARTY_ENABLE 与 IQuest.PARTY_ENABLE 的取值(后者随每个任务线/任务独立存在)。

封包交互

封包 ID 方向 作用
NetPartySync betterquesting:party_sync 服务端 → 客户端 同步队伍状态变更
NetPartyAction betterquesting:party_action 客户端 → 服务端 创建 / 解散 / 转让等动作
NetInviteSync betterquesting:invite_sync 双向 邀请的收发与应答

玩家登录时服务端会重建队伍视图并全量推送 —— 见 handlers/EventHandler 中调用 NetBulkSync.sendReset(mpPlayer, true, true) 后紧接 PartyManager.SyncPartyQuests(party.getValue(), false) 的那段逻辑(重连时若玩家已有队伍,先把队伍任务重新同步一遍)。

数值

数值名 值
权限档位 3(MEMBER / ADMIN / OWNER)
队伍人数上限 源码中不存在(已检索 MAX / too_many / full_party 等,零命中)
相关封包数 3
PARTY_ENABLE 默认值 true
队伍内共享的内容 任务进度(ParticipantInfo.getSharedQuests())、生命值

相关条目