文件
BotStore/.env.example
T
lyizai 39624da2d5 feat: 支持多机器人挂机、开拓日志、公屏完整日志与大地图
多机器人(src/bot/botPool.js、src/config/botsConfig.js)
- .env 用 MC_BOTS 一次配置多个账号(JSON 数组或 用户名:密码 逗号分隔),未配置时回退单机器人
- 每个机器人独立连接 / 登录 / 扩地状态机,共享一份领土数据服务与运行日志
- 密码只从 .env 读取;data/bots.json 只存启用状态、备注名、自动开始与各自的配置覆盖
- 每个机器人可覆盖全局配置(策略 / 目标邦国 / 目标数量等),未覆盖字段回退全局默认

开拓日志(src/core/expansionLog.js)
- 逐条记录开拓玩家、邦国、区块、方块坐标、时间与判定来源,追加写入 data/expansion-log.jsonl
- 支持按机器人 / 邦国 / 时间筛选、统计、导出带 BOM 的 CSV,超过 16MB 自动轮转

游戏公屏完整日志与聊天框(src/core/chatLog.js)
- 每个机器人的全部公屏 / 系统 / 动作栏消息按机器人分文件留档,自身发出的聊天与指令同样留档
- 控制台新增公屏聊天页签与消息发送框

登录验证门禁
- 游戏侧:未完成登录验证时拒绝发送指令 / 聊天,isReady() 也不放行扩地任务;
  新增 server.loginConfirmTimeoutMs 兜底,避免服务器不回提示导致永远卡在未登录
- 控制台侧:新增 WEB_PASSWORD 与 /api/login、/api/session,页面登录框验证通过才允许操作

大地图(src/core/bigMapService.js)
- 爬取服务器地图站点(squaremap)的瓦片图片与领土标记,一张图上看全部机器人坐标
- 坐标系对源站实测标定并用 27 个王城交叉验证;瓦片磁盘缓存,层级 0 启动预爬取、更高层级按需穿透
- 领土按 markers.json 原始多边形绘制(预编译 Path2D,even-odd 保留孔洞),叠加王城与机器人标签

配套改造
- TerritoryModel 新增 flyingChunksOf / ownChunksOf,邦国归属改为按名称显式传入,
  不再依赖全局 selfStateName(多机器人会互相覆盖)
- Web 接口以 /api/bots/:id/... 为主,原单机器人接口保留为默认机器人的等价别名
- 新增 scripts/check-web-ids.js 校验前端元素引用一致性

测试从 154 增至 242,全部通过。
2026-09-27 21:22:57 +08:00

42 行
1.8 KiB
Bash

# 环境变量示例:复制为 .env 并填入真实值
# .env 已被 .gitignore 忽略,绝不要提交真实密钥
# ==================== Minecraft 服务器 ====================
MC_HOST=bgjq.simpfun.cn
MC_PORT=25565
MC_VERSION=1.21.4
# ---- 多机器人(推荐):同时挂多个玩家,用逗号分隔「用户名:密码」 ----
# 密码只从这里读取,绝不写入代码、配置文件或控制台存储
MC_BOTS=<bot-name-1>:<password-1>,<bot-name-2>:<password-2>
# 用户名/密码里含逗号或冒号时,改用 JSON 数组写法:
# MC_BOTS=[{"username":"bot1","password":"p1"},{"username":"bot2","password":"p2","label":"二号机"}]
# ---- 单机器人兜底:未设置 MC_BOTS 时生效 ----
MC_USERNAME=<your-bot-name>
MC_PASSWORD=<your-server-password>
# offline=离线服(服务器用 /login 密码登录);microsoft=正版
MC_AUTH=offline
# ==================== Web 控制台 ====================
WEB_HOST=127.0.0.1
WEB_PORT=3081
# 控制台令牌(可写进 URL 的 ?token=,便于直接点击打开;留空则本机免登录)
WEB_TOKEN=
# 控制台登录密码:配置后页面会弹出登录框,验证通过才允许操作机器人的控制台 / 聊天框 / 扩地任务
WEB_PASSWORD=
# ==================== 领土数据源与大地图 ====================
# 地图站点根地址(末尾不带斜杠)
# 程序会请求:
# <DYNMAP_BASE>/tiles/<DYNMAP_WORLD>/markers.json 领土标记
# <DYNMAP_BASE>/tiles/<DYNMAP_WORLD>/<z>/<x>_<y>.png 大地图瓦片图片
DYNMAP_BASE=http://bgjq.simpfun.cn
# 世界目录名(对应地图站点上的世界名)
DYNMAP_WORLD=minecraft_overworld
# ==================== SimpCore 开放 API(可选) ====================
# https://open.bgjq.top 申请
SIMP_API_KEY=<your-simp-api-key>