开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] 附加包教程:50.拼图结构(二)

 发表于 2024-10-31 19:50:54 来自手机|显示全部楼层|阅读模式 IP:天津
本帖最后由 Cat_Anchor 于 2024-11-26 19:51 编辑

前言
来,看着这张图片。
这是什么?这是我做的第一个拼图结构。所谓拼图结构,就是若干个结构模板拼起来的大结构。
上期,我们简单解释了拼图结构。在 1.21.50.26 中,拼图结构的数据驱动功能已经被加入,所以我会开始更新相关教程。这期,我们将讲解拼图结构的生成需要的文件。
拼图结构
为了生成一个拼图结构,我们需要在行为包根目录的 worldgen 文件夹下创建一个 jigsaw_structures 文件夹,并在其中定义拼图结构。示例如下。
  1. {
  2.   "format_version": "1.21.20",
  3.   "minecraft:jigsaw": {
  4.     "description": {
  5.       "identifier": "complementary:debug_hallway"
  6.     },
  7.     "heightmap_projection": "world_surface",
  8.     "start_height": 10,
  9.     "start_pool": "",
  10.     "max_depth": 5,
  11.     "step": "underground_structures",
  12.     "terrain_adaptation": "none",
  13.     "biome_filters": {}
  14.   }
  15. }
复制代码
以下是这些字段的描述。
字段功能描述类型
identifier拼图结构的ID。字符串
heightmap_projection用于计算相对起始高度的高度图。字符串
start_height拼图结构开始生成的高度,配合heightmap_projection使用。整数
start_pool生成拼图结构时使用的第一个模板池。字符串
max_depth范围是[0, 20]。拼图结构生成的最大递归深度。整数
step拼图结构要在哪个世界生成阶段生成。字符串
terrain_adaptation可选,地形应该如何适应生成的拼图结构。字符串
biome_filters可选,拼图结构可以生成的生物群系。此项与地物文件中的同名字段写法一致。列表或对象

参数解释
| 生成高度
| heightmap_projection
这个字段用于确定生成拼图结构时,开始计算的高度。有两个选项,分别是ocean_floor和world_surface。假设start_height为0,填写ocean_floor时,拼图结构从海平面开始生成;填写world_surface时,拼图结构从地表开始生成。

| start_height
这个字段用于决定拼图结构生成高度的偏移量,填写正数会让拼图结构从上方生成,负数同理。例如,heightmap_projection填写ocean_floor,而且start_height填写10,拼图结构将在海平面10格以上开始生成。

| 生成规模
| max_depth
这个字段用于确定生成的拼图结构的规模。原文档给出的解释为“例如,生成一个max_depth为5的放置道路的拼图结构,在从原点开始的任何给定方向上,道路长度最多为5个结构模板”。也可以参考上期附加包教程中关于拼图结构规模的描述。

| 生成阶段
| step
这个字段用于确定拼图结构应该在哪个世界生成阶段被放置,会影响处理器对方块的判断。
生成一个存档时,首先根据种子生成石头地形,然后在底层的石头变成深板岩,在顶层的石头根据生物群系变成草方块和泥土之类的方块,给低洼的地方填上水,接下来会生成矿石、各种岩石、湖和涌泉,然后是要塞,结构和地物,最后是一些植被和生物群系特性。(这里写的生成顺序不一定正确。)
那么这个拼图结构要在哪个生成阶段被放置?这就可以用这个字段指定。所有可用值和描述如下,描述根据值的翻译填写,可能不正确。
描述
raw_generation原始生成
lakes
local_modifications本地修改
underground_structures地下结构
surface_structures地表结构
strongholds要塞
underground_ores地下矿物
underground_decoration地下装饰
fluid_springs涌泉
vegetal_decoration植被装饰
top_layer_modification顶层修改


| 地形适应
| terrain_adaptation
这个字段用于放置拼图结构后使其适应地形,可以指定掩埋一个拼图结构,此时使用地形方块覆盖整个拼图结构。例如生成的要塞如果正好暴露在大型洞穴下,会在要塞周围生成一圈石头(石头会正常地变为矿石和其他岩石),防止要塞暴露在外。虽然要塞不是拼图结构,这个字段的功能仍然与其相似。
以下就是所有可选的处理类型。
描述
beard_box向上递减
beard_thin从地面向上递减
bury掩埋但露出一部分
encapsulate完全包围
none

以下是这些值的解释。(注:环境方块就是那里的地形方块,比如石头。这里的密度可能是指方块的厚度。)
bury:环境方块密度将被添加到结构的所有部分,但仅在其起始部分的 Y 边界内。用于需要整体埋在地表之下,但起始结构模板露出地面的结构,例如古迹废墟。
beard_thin:环境方块密度将被添加到结构下面,而在地面以上,方块密度将被降低。
beard_box,环境方块密度将被添加到结构的下面,并且在该结构占据的整个盒子内,方块密度会被减少。该结构所占据的整个盒子内的块密度将被减少。
encapsulate:用方块包围结构的每一部分。
原版示例
以下是原版的古迹废墟的定义文件,作为参考。我也会在下面附上解释。
  1. {
  2.   "format_version": "1.21.20",
  3.   "minecraft:jigsaw": {
  4.     "description": {
  5.       "identifier": "minecraft:trail_ruins"
  6.     },
  7.     "biome_filters": [
  8.       {
  9.         "test": "has_biome_tag",
  10.         "operator": "==",
  11.         "value": "has_structure_trail_ruins"
  12.       }
  13.     ],
  14.     "step": "underground_structures",
  15.     "terrain_adaptation": "bury",
  16.     "start_pool": "minecraft:trail_ruins/tower",
  17.     "max_depth": 7,
  18.     "start_height": -15,
  19.     "heightmap_projection": "world_surface"
  20.   }
  21. }
复制代码

这个文件定义了古迹废墟拼图结构,它会在有 has_structure_trail_ruins 标签的生物群系生成。在地下结构放置过程中,它会生成,而且使用了掩埋的地形适应选项。它的最大递归深度是 7,从世界表面向下 15 格开始生成,这就是为什么这个结构通常被埋在地下。最后,它使用 minecraft:trail_ruins/tower 这个模板池作为起始模板池,也就是生成的第一个结构从这个模板池中选择。
注意,目前只有古迹废墟和试炼密室可以用 JSON 修改,其他的拼图结构使用的是旧版拼图结构系统,不能更改。
后记
这一期,我初步讲解了拼图结构文档。在 1.21.50 版本包中出现了 worldgen 文件夹,推测拼图结构相关文件应该放在这个文件夹里。事实证明,我的推测是正确的。如果把相关文件放在正确的文件夹中,在 1.21.50.26 版本中,拼图结构就可以正常生成了。下期介绍拼图结构集。


苦力怕论坛,感谢有您~
 发表于 2024-11-1 17:49:57 来自手机|显示全部楼层 IP:广东省
看起来……好晕啊
3#2024-11-1 17:49:57回复收起回复
苦力怕论坛,感谢有您~
 发表于 2024-10-31 22:10:11 来自手机|显示全部楼层 IP:广东省
感谢楼主教程
2#2024-10-31 22:10:11回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-12-27 21:51

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3