地物——浅谈Minecraft地形生成(九)

地物——浅谈Minecraft地形生成(九)

地物放置#**放置修饰器(Placement Modifier)决定了一个地物类型在世界中应该如何被生成,而放置修饰器则是在已放置的地物(Placed Feature)**文件中配置的。它存放在数据包的data/<命名空间>/worldgen/placed_feature目录下,其格式如下:

而放置修饰器的具体类型可以在这里找到:放置修饰器。

在放置地物的过程中,首先将会获取到要放置的地物的初始坐标。对于直接放置的地物而言,这个初始坐标是一个区块的西北角,即一个区块中xz坐标较小的位置;对于被其他地物放置的地物而言,这个初始坐标就是调用此地物的地物在经过放置修饰器修饰后的坐标。

随后,初始坐标将会被传入放置修饰器列表的第一个放置修饰器进行处理(如果没有放置修饰器就直接返回原坐标),然后继续将放置修饰器处理后的结果传给下一个放置修饰器,直到列表完成。值得注意的是,放置修饰器可能会传回”空“的坐标,也就是阻止此地物生成,此时此后的放置修饰器将不会被进行,转而直接放弃此次生成。

例如,我们有一个简单的例子:

1{2 "feature": "minecraft:oak",3 "placement": [4 {5 "type": "minecraft:biome"6 },7 {8 "type": "minecraft:count",9 "count": 410 },11 {12 "type": "minecraft:in_square"13 },14 {15 "type": "minecraft:rarity_filter",16 "chance": 417 }18 ]19}这个例子中,按照顺序有四个放置修饰器。第一个放置修饰器是biome,它用于限制地物只能被放置在可以放置此地物的生物群系中,也就是说只有我们上一章里面的features地物列表中包含此地物的生物群系才会生成这种地物。第二个放置修饰器是count,它的值为四,所以会返回四个和输入坐标一样的坐标,而这四个返回的坐标每一个都会分别执行一次后续的放置修饰器。第三个放置修饰器是in_square,它将会让输入的坐标在xz轴上随机增加一个值从而实现地物的随机分布。现在,这四个坐标将会被传入最后一个放置修饰器,也就是rarity_filter,它只会以1/chance的概率通过输入的坐标,因此四个输入的坐标,平均而言只会有一个坐标能成功通过。最后,这个坐标将会被放置这个地物。值得注意的是,rarity_filter中的chance是一个正整数,且不是直接通过的概率。相反,它的倒数才是通过的概率。

相关推荐

构建你的第一款游戏
365bet是什么公司

构建你的第一款游戏

⌛ 10-22 👁️ 4011
立秋进补有讲究,这些食物需避开
365bet规则

立秋进补有讲究,这些食物需避开

⌛ 08-09 👁️ 4771