Team Mod 是一个面向 MITE 1.6.4 / FishModLoader >= 3.4.2 的队伍系统模组。
它提供了完整的组队、邀请、成员管理、服务端持久化、客户端界面与管理员控制能力,并额外处理了友伤、登录提醒、状态同步和数据修复等细节。
- 按
O键打开队伍界面 - 创建队伍
- 邀请玩家加入队伍
- 接收邀请后在 GUI 中同意或拒绝
- 队长可转移队长、重命名队伍、踢出成员
- 玩家可主动离开队伍
- 队长离队时自动选择新队长
- 最后一名成员离队时自动解散队伍
- 队友之间自动禁用友伤
- 服务器与客户端之间同步队伍状态和邀请通知
- 玩家登录后会补发仍然有效的待处理邀请
- 邀请默认
10分钟过期 - 单个玩家最多同时保留
3个待处理邀请 - 对频繁查询和频繁邀请做了冷却限制,避免刷包
/teamlist查看当前所有队伍与队长/teamleader <队伍名> <新队长>强制修改指定队伍的队长,支持自动补全
- 队伍数据写入世界存档,支持周期性保存与停服刷盘
- 载入数据时会重建索引并尝试自修复不一致状态
- 名称匹配对大小写与首尾空格更宽容
- 支持根据存档历史玩家名解析邀请目标与成员显示名
项目内置了一套轻量 GUI:
- 主界面:创建、邀请、离队、转移队长、改名、成员管理
- 邀请弹窗:收到邀请后可直接接受或拒绝
- 成员管理页:队长可分页查看成员并执行踢出
默认热键定义在 TeamKeybinds 中,目前为 O。
模组初始化时会注册 TeamApiV1,其他模组可通过 TeamApiProvider.get() 获取实例。
当前暴露的方法包括:
apiVersion()getIdentityKey(ServerPlayer player)getLeaderIdentityKey(ServerPlayer player)isInTeam(ServerPlayer player)isSameTeam(ServerPlayer a, ServerPlayer b)
这套 API 适合做:
- 队友识别
- 队长身份判断
- 友军判定
- 其他模组的权限或交互联动
- JDK
17 - Gradle Wrapper
- FishModLoader
libs/下的本地依赖:RustedIronCore-*.jarManyLib-*.jar
build.gradle 会按以下顺序查找 FishModLoader:
gradle.properties中的fml_jar_path- 环境变量
FML_JAR_PATH fml_home/FML_HOME下的常见路径- 工作区内预设的默认候选路径
找不到时,构建会直接失败并给出提示。
RustedIronCore 和 ManyLib 的解析顺序如下:
gradle.properties中的显式路径- 对应环境变量
libs/目录下的模式匹配
建议每种依赖在 libs/ 中只保留一个匹配的 jar。
.\gradlew.bat compileJava
.\gradlew.bat test
.\scripts\team_regression.ps1 -ProjectRoot .构建产物默认位于 build/libs/。
项目已经包含一组以服务层为核心的单元测试,覆盖方向包括:
- 管理员改队长逻辑
- 邀请过期与筛选
- 聊天提示
- 冷却控制
- 数据修复
- 网络分发保护
- 本地化
- 登录邀请补发
- 持久化策略
- 玩家名解析
- 状态同步目标选择
- 存储读写支持
此外,scripts/team_regression.ps1 还提供了编译检查与手动回归清单。
src/main/java/com/github/hahahha/team/
api/ 对外 API
command/ 管理员命令
gui/ 客户端界面
mixins/ 游戏注入点
system/ 队伍核心逻辑、同步、存储与工具支持
src/main/resources/
assets/team/lang/ 中英文语言文件
fml.mod.json 模组元数据
team.mixins.json Mixin 配置
语言资源位于:
src/main/resources/assets/team/lang/en_US.langsrc/main/resources/assets/team/lang/zh_CN.lang
模组启动时会注册 team 资源域,服务端文本也带有 en_US 回退逻辑,避免某些情况下原版语言系统未加载模组词条。
- 当前
mod_version:1.1.0 - 模组 ID:
team - 入口类:
com.github.hahahha.team.TeamMod
本项目使用 MIT License。