add # 新增使用开源字体

This commit is contained in:
2026-10-26 11:34:00 +08:00
parent dc17f7f65c
commit 22cfddcf06
68 changed files with 1772 additions and 461 deletions
+4 -3
View File
@@ -22,9 +22,10 @@ NoneBot、AstrBot、真寻均可调用,不导入任何宿主对象。
| src/farm_render/renderer.py | 底图、作物、账户面板、成图缓存 |
| src/farm_render/service.py | 一次查询、后台执行、并发和取消管理 |
字体由部署方提供可合法使用的中文 TrueType/OpenType 文件路径。
示例使用本机已有微软雅黑;不会复制或发布 Windows 字体。Linux
应配置包含中文的字体;测试可通过 FARM_TEST_FONT 指定路径。当前
默认使用由 farm_service 分发并缓存的小赖字体(lxgw/kose-font v3.126),原版字体与
完整 SIL OFL 1.1 许可一同分发,版权声明见
`src/farm_render/data/OFL-Xiaolai.txt`。插件固定使用小赖字体,不提供
字体路径配置;开发测试可通过 FARM_TEST_FONT 指定路径。当前
实现校验字体可加载,不保证任意字体具备所有中文、Emoji 字形。
## 调用
+6 -3
View File
@@ -17,16 +17,19 @@ nonebot.load_plugin("nonebot_plugin_farm")
可在 `.env` 中设置:
```dotenv
FARM_FONT=C:/Windows/Fonts/msyh.ttc
FARM_IMAGE_FORMAT=AUTO
FARM_IMAGE_QUALITY=75
FARM_DEPLOYMENT=nonebot
```
`FARM_DATA_DIR` 可显式指定数据目录,默认沿用旧版插件 localstore 下的
默认数据目录沿用旧版插件 localstore 下的
`nonebot_plugin_farm/farm_db` 子目录。旧 `farm.db` 保留,首次使用按当前
机器人和平台迁入 `farm.sqlite3`;遇到账号或平台冲突会拒绝覆盖。
日志写入该目录的 `farm-preview.log`。字体不可用时提供文字响应。
日志写入该目录的 `farm-preview.log`。默认使用由 farm_service 分发并缓存的小赖字体;
字体不提供用户配置,旧的 `FARM_FONT` 不再读取;为避免旧存档被忽略,
继续兼容 `FARM_DATA_DIR`,未配置或为空时使用默认目录,不自动搬动数据库。
字体或素材下载失败时停止本次资源加载,保留文字功能,不自动重试;
重新加载插件后才会再次尝试。日志区分资源类别和安全错误原因。
`FARM_IMAGE_QUALITY` 为整数1~95,默认75,统一控制全部农场图片
的编码质量;越高通常越清晰、文件越大,PNG无损格式不受此值影响。
+8 -1
View File
@@ -36,8 +36,15 @@
的 deployment、机器人 ID 和平台,不跨身份重复导入;转换规则、失败处理
和不支持字段的保留方式见 [旧数据迁移](05-migration.md)。
原有显式 `farm_preview_data_dir` 配置继续生效。仅从选定目录读取旧版
默认数据目录为真寻 `DATA_PATH/farm_db`;继续兼容已有的
`farm_preview_data_dir` 显式配置,避免升级后忽略旧存档。不自动搬动数据库。
仅从当前选用的数据目录读取旧版
`farm.db`;不会搜索其他目录。未发布预览版的 `farm-preview.sqlite3`
不自动改名或导入,预览数据由开发者手动处理。
素材或字体下载失败时停止本次资源加载,保留文字功能,不自动重试。
重新加载插件后才会再次尝试;关闭插件时清理已有资源。
日志区分配置、素材、字体与渲染器,记录 HTTP 状态、超时或校验失败等
安全分类,不记录 URL 或可能含凭据的异常正文。
本轮只修改开发源并进行隔离测试;没有移动正在使用的宿主数据或重启机器人。
+29 -1
View File
@@ -8,13 +8,41 @@
- 前 6 块由 `initial_plot_count: 6` 表示,不重复保存空条件记录。
新用户默认6块;可靠识别为初始3块的旧用户一次性补3块普通空地。
- 开垦时,`expansion.rows.ordinal` 对应补偿完成后的下一实际地块编号。
土地升级表仍只是规则数据,本次未接入土地升级。
土地升级已接入,具体行为见下文。
- 表外序号,以及材料、星钻替代支付、冷却和额外解锁条件没有在图中
给出。不能默认免费、默认通过,或套用最后一行。24 不是土地总上限。
- 已提供“开垦”(每次1块)和“开垦 条件”(查询等级及费用)。
等级检查、扣币及新增空地在同一事务内完成,重放同消息不重复扣款。
目前配置覆盖7~24号,25号起明确提示规则未配置,不扣币。
## 土地升级
- `土地升级 1 条件` 只查询1号地下一等级的条件;`土地升级 1` 扣费升级。
地块编号来自“地块编号”,支持各平台共用命令。
- 普通→红→黑→金,逐级升级。每种目标等级的费用序号为:
已达到该等级或更高等级的地块数加1,不等于地块编号。
升为更高等级不会使低等级费用重新降低;表外序号拒绝,不猜测费用。
- 红土地增产10%,黑土地增产20%,金土地增产28%、经验加成28%。
黑、金土地开始新一季时,生长时间取基础时长的80%,向上取整到秒。
沿用旧实现加成,不叠加到原加成上;普通地的新账号规则不变。
- 升级使正在生长的作物当季立即成熟,不发放收获物、不增加收获次数。
多季作物收获后才进入下一季。先结算升级时刻已发生的虫害,并冻结
当前虫数对应的减产;不清除已经偷取的数量或偷取记录。
- 已成熟作物保持成熟,不恢复虫害损失;枯萎的是作物而非土地,
升级不会使枯萎作物复活,仍需铲除。空地只改变土地等级。
- 扣币、土地加成、当前季成熟和操作回执在同一SQLite事务提交。
同一消息重复处理返回原收据;等级不足、余额不足或中途失败全部回滚。
不同消息各执行一次升级,因此不要重复发送不同的升级消息。
- schema v5 为地块增加land_level;v1~v4按顺序事务迁移。
旧版导入账号从已保存的legacy_rows.userSoil恢复明确等级;
没有旧版记录的地块默认普通,不按加成猜等级,不改资产与历史加成。
原始记录非法时中止并回滚迁移,保留旧库。
- 三种升级土地图从legacy原样导出为包内land-soils.zip,约57KiB。
保持既有外部assets.zip的内容、摘要和下载来源不变;绘图和底图缓存
包含土地等级,升级后不会复用普通地旧图。
实现和验证使用临时构造玩家;未迁移生产数据、部署或重启机器人。
## 新用户注册
注册事务创建 1~6 号空地,初始农场币仍为 500。重复注册不额外发地。