Changelog
版本:1.0.6 镇级离线模拟和离线摘要
套利和交易日志
-
修复套利失败原因显示
arbitrage_failed日志中的失败原因现在会走log.betterworld.trade_failure_reason.*翻译。- 不再把
reverse_trade_loop这类内部原因 key 直接显示给玩家。
-
套利候选提前避开反向交易限制
ArbitrageStrategy在挑选买入商人和卖出商人时会检查TradeLoopGuard。- 被短期反向交易限制挡住的套利机会会被跳过,减少“刚发现机会就失败”的刷屏日志。
离线模拟
-
按镇级边界触发
- 离线模拟不再盯着单个区块加载等级,而是看镇范围内是否还有非旁观玩家。
TownblockEntity会记录最后一次强加载时的LastStrongLoadedGameTime和LastStrongLoadedDayTime。- 镇范围内无人时,商人和资源点跳过精确 tick;玩家回来后如果离线时长超过
town.offlineSimulation.minTicks,镇会按时间差补算。 - 默认最小离线时长是 6000 tick,单次最多补算
town.offlineSimulation.maxDays天,默认 30 天。
-
按天循环计算
- 离线补算不是把所有结果一次性算完,而是按“天”循环推进。
- 每天先抓一份当日商人价格快照,再用这份快照执行当天离线交易。
- 当天交易结束后,再做商人跨日经济结算,第二天交易就使用更新后的价格。
- 这样可以避免“同一天前后价格不一致”或“离线交易误用未来价格”的问题。
-
当前已经补算的内容
- 资源点:按产出规则补生产,产物先进入资源点容器,再按比例由资源工从容器中售出。
- 农民:会读取绑定农场方块缓存的耕地和作物扫描结果,按作物类型和离线天数估算日均产量;估算收获先进入农民家容器,再和家中已有农产品一起按比例卖给商人。
- 工匠:会按工坊配方、家容器材料和每日加工上限估算加工批次,消耗材料并把成品存回家容器;随后出售家容器里的成品,并按材料缺口从商人处买回一部分材料。
- 生活费:按离线天数从每个镇内绑定 AI 的个人
money中扣固定日常开销,扣掉的钱直接消失。 - 关系:镇内绑定 AI 会按离线天数累积少量社交好感变化,并写入统一日志。
- 位置:离线结束后不回放路径,只按当前时间把 AI 放到工作点、家附近或床附近的合理锚点。
-
计算原则
- 所有离线交易都受性格影响,交易比例会乘以
PersonalityProfile.offlineTradeRatioMultiplier();当前覆盖资源售卖、农民出售、工匠出售、工匠采购和工匠加工上限。 - 交易按当天价格快照结算,商人资金不足时只成交可支付数量,剩余物品回到原容器。
- 资源点、农民、工匠的离线交易都只扫描绑定容器,不会乱扫其他箱子。
- 离线模拟的目标是“前情提要”,让资金、价格、库存、关系、日志和位置能互相解释,而不是精确还原每一秒。
- 所有离线交易都受性格影响,交易比例会乘以
-
离线摘要
- 每个 Steve 还会保存一条单独的离线摘要。
- 摘要会从价格波动、资金变化、交易卡住、里程碑和关系变化里挑 3 到 5 件最重要的事。
- 信息书日志页顶部会先显示这条摘要,再显示按天分页的详细日志。
-
离线模拟代码结构拆分
- 离线模拟逻辑已从
TownblockEntity抽到src/main/java/com/BetterWorld/block/entity/townblock/offline/。 TownOfflineSimulation负责总控,OfflineTownContext负责收集镇内实体、家、工坊和商人。OfflineTradeService、OfflinePlacementService、OfflineSocialService分别处理离线交易、落点和关系变化。TownblockEntity只保留触发入口和必要状态访问器。
- 离线模拟逻辑已从
-
新增 OfflineTradeExecutor
- 离线买卖由
OfflineTradeExecutor统一执行,复用实时交易同类核心规则:价格、库存、资金、收购容量、税额和经济统计。 - 离线交易使用当天价格快照,不写实时商人经营日志,不触发实时经济页网络同步。
MerchantblockEntity新增离线统计记录方法,只更新统计并标记脏数据,避免无人镇补算时发送实时同步包。- 资源点本体只负责离线产出到资源点容器,资源工售卖统一交给镇级离线交易服务。
- 离线买卖由
-
农民离线产量估算
OfflineTownContext现在会收集绑定到农民的FarmblockEntity。OfflineTradeService会根据农场扫描缓存中的耕地数量和作物类型估算每日产量。- 小麦、胡萝卜、土豆、甜菜会按不同作物产物进入农民家容器,并写入离线产出日志和离线摘要。
- 该逻辑不修改真实田地状态,只用于让离线期间的农民库存、出售、资金和日志能互相解释。
-
工匠离线加工
- 工匠离线期间会按工坊配方检查家容器材料,估算可加工批次。
- 加工会消耗家容器中的材料,把成品放回家容器,再进入同一天的离线出售流程。
- 加工批次受
WORKSHOP_MAX_CRAFTS_PER_WORK_TASK和性格倍率影响,不模拟逐 tick 加工。 - 资源工离线日志措辞改为“资源点物资被售出”,避免误导玩家以为真实执行了取货路径。
Files
betterworld-1.0.6-forge1.20.1.jar(771.94 KiB) Primary Download
External resources
Project members

xxxx_62669
Member
Technical information
License
MIT
Client side
required
Server side
required
Project ID
