- 最后登录:
- -
- 阅读权限:
- 40
- 主题数:
- 7
- 总积分:
- 10975
- 回帖数:
- 723
- 精华数:
- 0
- MCID:
- taoismdeeplake
-
EU:0
RF:9950
Vis:18
Mana:0
AE:1761
|
本帖最后由 QQ酱22956 于 2022-1-10 16:36 编辑
简而言之:村庄等结构是在世界生成的时候确定位置和范围的,与任何后来的方块和实体变动无关,正常情况下无法被更改。如果某个东西破坏了村庄,一定是破坏了那个抽象数据结构,反之亦然。
这么高深的问题就悬赏5分……
locate会调用区块生成器里写死的一套东西,主世界的locate对各种主世界的结构生成器发起寻找请求,由结构生成器返回结果。主世界里有村庄生成器,下界等地方没有,所以即使下界等特殊维度即使有村庄也无法locate。你使用set diamond指令之后,可能是因为WE的设计缺陷或者其他问题破坏了结构判定导致的,属于bug范畴。
区块生成有两个阶段,第一个阶段生成的时候,会在周围半径八个区块,也就是17x17的范围内,规划出村庄的范围单独保存,此时村庄的核心所在的区块经常是加载都没加载过。村庄的范围被单独保存在特殊的地方。
村庄等结构是一个抽象概念,独立于方块和生物。无论方块和生物怎么变化,都不会影响一个区域是否是“结构”,除非你使用的修改方式破坏了区块存储数据或者结构存储数据。
该数据在文件里保存为saves\存档名字\data\villages.dat。你可以找个nbtexplorer之类的东西看看能否打开。
以上内容适用于1.12.2 Java版。其他版本未从代码里翻阅考证。
|
评分
-
查看全部评分
|