Changelog
版本:1.0.7 多实体绑定与居民管理
多实体绑定
- 家方块、农场方块、工坊方块、资源点方块支持多实体绑定。
- 绑定列表使用
BoundEntities保存,列表首位仍作为 owner 兼容旧存档。 - 家方块容量改为手动可调,不再由床数直接决定。
- 各方块管理页新增分页、解绑、容量调整和每个实体的“详细”入口。
居民与镇管理
- 镇方块新增居民管理入口,可汇总镇范围内所有家方块的居民名单。
- 支持手动登记镇居民、排除镇居民,以及查看居民详情。
- 居民详情页改为打开独立的 Steve 信息界面,支持 ESC 返回上一页。
镇强加载
- 镇管理页新增“强加载”子页面,可为当前镇开启或关闭强加载。
- 强加载范围按区块半径配置,当前上限为 8 个区块半径,并会在页面中显示预计区块数量和大致方块宽度。
- 设置保存在
TownblockEntity的ForceLoadEnabled和ForceLoadRangeChunksNBT 字段中。 - 开启后镇方块会通过
ServerLevel.setChunkForced(...)保持周围区块加载;关闭、调整范围或镇方块被替换/破坏时会撤销旧范围。 - 强加载开启时,镇会被视为持续精确运行状态,不触发无人镇离线补算,避免真实 tick 和离线模拟重复结算。
床位与睡觉
- Steve 床位统一改为
BedInfo,保存床头、床脚和朝向。 SleepTask和离线睡眠都直接按BedInfo定位,不再使用旧的BedPos三元坐标。- 修复睡觉时实体落到床下面的问题:
BedInfo.sleepY()现在使用床面高度Y + 0.5625,在线睡觉和离线回城睡觉都会使用同一坐标。
离线模拟拆分
- 离线模拟逻辑已拆到
src/main/java/com/BetterWorld/block/entity/townblock/offline/。 - 新增
OfflineTradeExecutor复用实时交易的核心校验,离线流程不再写第二套交易逻辑。 - 离线补算继续按天循环,维持资源点、农民、工匠、生活费、商人日结的顺序。
修复 部分
- 管理居民/工人页面的“详细”按钮现在打开独立 Steve 信息界面,不再把详情挤在原页面右侧。
- 从 Steve 信息书直接打开详情时,按 ESC 关闭;从家、农场、工坊、资源点或镇管理页面打开详情时,按 ESC 返回上一管理页面。
- Steve 信息菜单改为保存实体 ID 并延迟解析实体,避免从管理页点“详细”后一闪而过或立刻关闭。
- 从管理页查看居民详情时不再强制要求玩家离该 Steve 足够近,只要服务端能找到该 Steve,就允许打开资料页。
- 如果客户端暂时还没同步到目标 Steve,资料页会显示“正在加载史蒂夫资料...”,而不是空白或直接关闭。
- 绑定容量不能被减到当前绑定人数以下;继续点击减号会提示玩家先解绑多余成员。
- 镇居民列表里的家方块坐标显示位置左移,避免太靠右导致页面拥挤。
交易资金不足回家取钱
- 新增通用交易补钱流程:AI 交易遇到
buyer_no_money、buyer_payment_failed或merchant_no_money时,会登记补钱请求并尝试回家从家容器取镇货币。 - 买家钱不够时买家回家取钱;商人收购物品时钱不够,则由商人自己回家取钱。
- 补钱目标通过
TradeMoneyRefillGoal/TradeMoneyRefillTask执行,优先级高于普通工作和交易,但低于危险、睡觉和吃饭。 - 普通职业交易、买食物、工坊买材料/卖成品、资源工卖货、囤积交易和套利交易都会识别资金不足失败。
- 对于还没进入
TradeService就被预算预判挡住的情况,农民买种子、买食物和工坊买材料也会主动登记补钱请求。 - 如果只是资金不足,不会立刻挂长交易失败冷却;补钱后可以重新尝试。家里没有可用货币时会写日志并进入短冷却,避免反复跑家。
- 补钱请求会去重,同一段时间内不会刷屏;如果后续交易需要更多钱,会抬高已有请求金额并刷新 TTL。
性能说明
- 在线真实运行时,主要性能消耗仍来自实体 AI、寻路、Sensor 扫描、农民巡田、商人查找和容器/方块交互;多实体绑定会增加实体数量带来的线性成本,但不会额外引入每 tick 的全镇大扫描。
- 镇方块居民页和绑定总览主要在打开 GUI 或渲染页面时汇总当前镇数据,不应放到高频 tick 中反复扫描。
- 无人镇会让商人和资源点跳过精确 tick,再在玩家回镇时走镇级离线摘要补算;离线模拟按天、按镇、按容器做低粒度估算,成本通常比让所有实体持续真实跑 AI 低得多。
- 后续如果出现卡顿,优先检查
SensorSystem、MerchantFinder、农民巡田扫描、资源点生产频率、活跃 Steve 数量和正在打开的管理 GUI,而不是先怀疑离线模拟。 - 关闭默认
AIDebug控制台输出,避免大量 AI 目标/移动/交易日志拖慢 tick。 - 商人绑定实体查询增加同 tick 缓存;
MerchantFinder只需要排除“商人自己”时改为直接比 UUID,减少 256 格实体扫描。 - 多实体绑定查询增加同 tick 缓存,降低家/农场/工坊/资源点反复读取绑定实体时的扫描成本。
- 资源点 tick 优化为只有真正产出时才查找可投递资源工;普通规则进度不再每 tick 同步方块实体。
Files
betterworld-1.0.7-forge1.20.1.jar(849.59 KiB) Primary Download
External resources
Project members

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