# 树木生成

首先我们需要参照 **方块基础** 一节所讲解的内容，创建树木的木头和叶子两个方块和它们的材质。

### 树木生成配置

在任意物品配置文件中添加如下内容：

```
trees_populators:
  my_tree:
    worlds:
    - world
    bottom_blocks:
    - DIRT
    - GRASS_BLOCK
    - PODZOL
    chance: 40.0
    max_height: 100
    min_height: 50
    amount: 3
    iterations: 2
    tree_type: TREE
    leaves: myitems:my_leaves
    log: myitems:my_log
    biomes:
    - PLAINS
    - SUNFLOWER_PLAINS
    - MOUNTAINS
```

所给的示例配置中，我们创建了id为 `my_tree` 的树木生成器，其下为其配置，包括：

* worlds：该生成规则所生效的世界，可以添加无数多的世界。
* bottom\_blocks：该树木在哪些方块上生成，可以添加无数多的方块。
* chance：各个区块在生成时使用该生成规则的概率，`100` 即代表生成新的区块时必定使用 **1** 次该规则，也就是在合适情况下必定会至少有 **1** 棵这样的树木生成。
* min\_height：该生成规则的最低高度。
* max\_height：该生成规则的最高高度。
* iterations：在 `chance` 选项下，生成规则在该区块被决定使用后，将会生成多少组的树木。
* amount：每组树木的数量，一组树木将会相邻生成。
* 在上面配置中，1个区块必定有1次生成，1次生成将会生成 **2** 组树，每组树实际生成 **3** 个树木，所以 **1** 个区块实际生成 **6** 棵树。
* tree\_type：树木类型。树木类型决定你设置的自定义树木的样式，例如丛林木较高，而橡木矮小，请试想你在玩单机MC时各个树木的样式，就是它们！
* levels：叶子的方块id。
* log：原木的方块id。
* biomes：该生成规则在哪些生物群系使用。

### 树木类型

* TREE：普通的树，类似最普通橡木。
* BIG\_TREE：高大的树，只是比 `TREE` 树干高了一些，你可以理解游戏中高大一些的橡木的样子。
* REDWOOD：云杉树，数根树根交叉后笔直向上。
* TALL\_REDWOOD：高大的云杉树。树顶的树叶较为稀少。
* BIRCH：白桦树。
* JUNGLE：丛林树。有 **4** 格宽。
* SMALL\_JUNGLE：小丛林树。仅 **1** 格宽。
* COCOA\_TREE：带有可可豆的树木。仅 **1** 格宽。
* JUNGLE\_BUSH：丛林灌木。较丛林木较矮小。
* RED\_MUSHROOML：红蘑菇。又小又宽。
* BROWN\_MUSHROOM：灰蘑菇。像伞状一样。
* SWAMP：沼泽树。将会有苔藓附在其上。
* ACACIA：金合欢树。
* DARK\_OAK：深色橡树。
* MEGA\_REDWOOD：巨型云杉树。有 **4** 格宽。
* TALL\_BIRCH：高大的白桦树。树顶的树叶较为稀少。
* CHORUS\_PLANT：紫菘植物样式。末地外岛遍地都是的就是它。
* CRIMSON\_FUNGUS：下界绯红树。
* WARPED\_FUNGUS：下界扭曲树。
* AZALEA：杜鹃花树。在繁茂洞穴上生成。

具体的图片和介绍可以在 [**Minecraft Wiki**](https://minecraft.fandom.com/zh/wiki/%E6%A0%91%E6%9C%A8) 上找到。

### 树苗

设置完树木以后，我们需要再设置这个树木的树木。找到任意一个物品，在其下添加如下行为属性即可：

```
    behaviours:
      sapling:
        tree_populator: orange_tree
```

例如：

```
items:
  orange_tree_sapling:
    display_name: 树苗
    permission: orange_tree_sapling
    resource:
      material: ORANGE_WOOL
      generate: true
      textures:
      - block/orange/sapling.png
    behaviours:
      sapling:
        tree_populator: orange_tree
```

### 树木的限制

* 不建议在末地使用。
* 当自定义的树木和原版树木混在一起时将会产生问题，这是MC本身原因导致的。
* 较大的树木在生成时将会产生性能问题，不建议设置过多的高大树木。
