v1.1.5: 修复规划完成后不寻路问题
- isTargetStillValid 增加己方领土数据 fallback 与保守放行 - 修复地图刷新竞态导致 selfState 暂时为 null 时所有目标被跳过、玩家原地不动的问题
这个提交包含在:
@@ -400,9 +400,20 @@ implements SubtitleChatMonitor.Listener {
|
||||
}
|
||||
HashSet<ChunkPos> own = new HashSet<ChunkPos>(m.sessionClaims());
|
||||
TerritoryState self = m.selfState();
|
||||
// Fallback:如果当前刷新后的模型找不到己方邦国,使用启动/规划时缓存的模型
|
||||
// 启动检查成功说明邦国一定存在,fallback 解决竞态/刷新导致的 self 暂时性 null,避免所有目标被跳过
|
||||
if (self == null && this.model != null) {
|
||||
self = this.model.selfState();
|
||||
}
|
||||
if (self != null) {
|
||||
own.addAll(self.chunks());
|
||||
}
|
||||
// 己方领土数据暂时不可用时保守视为有效,避免所有目标被误跳过导致玩家原地不动;
|
||||
// 规划器生成目标时己方领土必然非空,此处 own 为空仅可能是刷新竞态,放行让寻路继续
|
||||
if (own.isEmpty()) {
|
||||
this.log("警告:己方领土数据暂时为空,保守放行目标 " + this.target.x() + "," + this.target.z());
|
||||
return true;
|
||||
}
|
||||
return this.ownNeighbors(this.target, own) > 0;
|
||||
}
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户