Worldgen Devtools

Worldgen Devtools

一个帮助开发世界生成数据包和模组的模组。允许在游戏中重新加载世界生成数据包并重置区块。按名称和目标为拼图方块上色。

工具

世界生成开发工具

这是一款提供工具以简化世界生成数据包和模组创建的模组。

注册表(世界生成)重载

需要使用 reloadRegistries 游戏规则按世界启用。

警告:虽然此功能相当稳定,但该工具仍可能损坏你的世界。因此请仅在测试世界中启用。

允许使用 /reload 命令重载注册表内容(例如所有世界生成数据),或在使用 /datapack 命令启用/禁用数据包时进行重载。没有此模组,更改需要重新打开世界才能生效。

条目永远不会从注册表中移除,即使加载的数据包中不再存在该条目。相反,它们被标记为“过时”,因此不会对世界生成产生影响,也不能被其他数据包文件引用。现有区块仍可使用过时条目,直到世界重新打开。世界高度和噪声形状(即高度和单元大小)无法重载。

客户端同步

部分重载的数据会影响客户端,例如生物群系颜色、维度类型和盔甲纹饰。在多人游戏中,需要同步维度和生物群系效果。这会导致客户端重新绘制所有区块。如果不需要此行为,可以使用 syncAfterRegistryReload 游戏规则禁用它。

重置区块

将区块重置为仅噪声

/resetchunks [<范围>] 命令重置玩家周围指定范围内的区块 - 使用当前世界生成数据和设置重新生成。默认为 0(即仅当前区块)。如果你想重置某个结构,需要重置结构起点所在的区块。

注意:此实现实际使用了正常的世界生成线程,因此性能远优于未注册的原版命令。

彩色拼图方块

试炼密室中的彩色拼图方块

根据拼图方块指定的“名称”或“目标名称”为其着色。如果“名称”不是 minecraft:empty,则拼图方块根据“名称”的哈希值着色。否则,如果“目标名称”不是 minecraft:empty,则拼图方块根据“目标名称”的哈希值着色。

如果“名称”和“目标名称”都设置为 minecraft:empty,则拼图方块会显示为已停用状态,箭头和连接器变为灰色。

在物品栏中,如果拼图方块有存储的 NBT 数据(Shift+选取),则会以相应的颜色渲染,并显示提示信息,指示“名称”、“目标池”和“目标名称”。

获取密度命令

用于调试任意位置密度函数值的命令。

/getDensity density_function <密度函数> [<位置>]

返回指定位置(或玩家位置)处密度函数 df 的值。

/getDensity noise_router <条目> [<位置>]

返回当前维度噪声路由器中指定条目所对应的密度函数,在指定位置(或玩家位置)处的值。

世界生成性能分析

区块分析示例

记录每个区块生成每一步所花费的时间,并保存在每个区块中。要访问它,请使用 /chunkprofiling <范围> 命令。范围控制平均性能分析所需的区块数量;默认为 0。

定位特征

定位大型棕色蘑菇

使用 /locate feature <已配置特征> 来定位附近的已配置特征。如果当前区块包含该特征多次,则会列出最多 5 个最近的位置。这仅适用于安装此模组后生成的区块。

日志改进

  • 放置在特征中的空高度范围也会记录导致问题的已放置特征。

追踪

/chase 命令提供了在 Minecraft 的两个不同实例之间同步玩家位置的选项。对于比较世界生成的差异非常有用。这是一个原版命令,仅由此模组注册。

游戏规则

此模组添加的游戏规则:

游戏规则
maxChunkStatus 应执行世界生成的哪些步骤?
-> NOISE_ONLY:仅生成石头、空气、水和熔岩。
-> SURFACE:应用表面规则。
-> SURFACE_AND_CARVERS:应用表面规则和雕刻器。
-> ALL:应用表面规则、雕刻器和特征。
applyProcessorLists 是否应用结构的处理器列表?
applyGravityProcessor 是否应让结构部件匹配地形?
keepJigsaws 结构生成后是否保留拼图方块?
reloadRegistries /reload 命令是否也应重载注册表?
syncAfterRegistryReload 重载后是否应向所有客户端重新发送注册表内容?
saveChunks 区块是否应保存?禁用后旧区块不会被删除。