leaf-treegen

leaf-treegen

为世界添加树木多样性,基于物种JSON。

装饰

LeafTreeGen

通过原版世界生成程序化生成、感知生物群系的自定义树木。

LeafTreeGen 添加了数十种自定义树木品种。树木在 JSON 中通过数学定义,启动时烘焙为原版 .nbt 结构模板,然后添加到拼图模板池中,由游戏自身的世界生成机制处理放置。没有运行时方块放置监听器。

基于我最初为个人 Iris 世界编写的 Python 代码制作,原本使用 .iob 文件。Iris 现在在其最新版本中采用了我的程序化引擎。

我已重新设计,你可以选择只运行一次以生成数据包(基于 .nbt),或者保留它以管理程序化生成和自定义树苗。


截图

樱花林巨树 樱花林巨树——一棵高耸的巨型樱花树在一片较小的樱花树林上方确立了其匹配的生物群系。

黑暗森林树冠 黑暗森林树冠——密集重叠的高大树冠,散布着巨大的蘑菇,从树线以上俯瞰。

黑暗森林蘑菇 黑暗森林蘑菇。

自定义热带草原树木 自定义热带草原树木。

圣诞树 圣诞树——所有树木均可通过带有 NBT 标签的树苗放置。


特性

  • 匹配生物群系的品种——热带草原金合欢、黑暗森林树冠、冰川松、樱花林、螺旋冠森林和彩虹林,映射到它们适合的生物群系
  • 程序化引擎——树木根据每个品种的参数在 Java 中构建:高度、树干形状、倾斜角度和树冠层
  • 拼图世界生成——插件在首次加载时写入一个原版世界生成数据包,并让 Minecraft 的结构系统放置树木
  • 可种植的树苗——/leaftree give 分发带有 NBT 标签的树苗,在有效生物群系中种植时会生长为随机变种
  • 重载命令——/leaftree reload 重新烘焙所有变种并重新生成数据包
  • 服务器友好的放置——大树跨多个刻放置,在每刻预算内进行,以保持主线程响应
  • 多平台——一个 jar 文件可在 Paper、Folia、Fabric 和 NeoForge 上运行,所有平台均提供相同功能(世界生成、树苗和 /leaftree 命令)

品种亮点

类别 示例
温带 森林、白桦林、原始白桦林、枫树-白桦巨树、白蜡林
热带 丛林、樱花林、蓝花楹林
寒冷 针叶林、原始松树针叶林、冰川松
黑暗与奇异 黑暗森林巨树、螺旋冠森林、彩虹林、辉光菇
完整生物群系树木映射表
生物群系 品种 标志性形状 角色
forest forest 圆润橡树,中型到大型 主要
flower_forest oak-small-mid 小型到中型圆润橡树,零散分布 主要
plains oak-small-mid 稀疏的小型到中型橡树 主要
meadow oak-small-mid 稀疏的小型到中型橡树 主要
meadow meadow-azalea 小型橡树干,杜鹃花树冠 点缀
meadow rainbow-grove 白桦树干,多色调树冠 稀有地标
dark_forest glowcap 发光的棕色蘑菇灌木 下层植被
dark_forest dark-forest-floor-lights 微小的菌光体发光蘑菇 地面覆盖物
dark_forest dark-forest-mids 小型到中型扭曲黑暗橡树 中层植被
dark_forest dark-forest-megas 带有巨大树冠的巨型黑暗橡树 树冠层
birch_forest birch-forest 高大纤细的白色白桦 主要
old_growth_birch_forest old-growth-birch-forest 高耸的原始白桦 主要
old_growth_birch_forest maple-birch-giants 巨大的枫树和白桦地标 稀有地标
taiga taiga 锥形云杉 主要
snowy_taiga evergreen 覆雪的锥形云杉 主要
snowy_taiga christmas-tree 装饰着饰品的节日云杉 极其稀有的地标
old_growth_pine_taiga old-growth-pine-taiga 高大、树干裸露的松树 主要
old_growth_spruce_taiga old-growth-pine-taiga 高大、树干裸露的松树 主要
snowy_plains glacierpine 覆霜的云杉,带有冰柱尖端 主要
ice_spikes glacierpine 覆霜的云杉,带有冰柱尖端 主要
grove glacierpine 覆霜的云杉,带有冰柱尖端 主要
snowy_slopes glacierpine 覆霜的云杉,带有冰柱尖端 稀疏
frozen_peaks glacierpine 覆霜的云杉,带有冰柱尖端 稀疏
jagged_peaks glacierpine 覆霜的云杉,带有冰柱尖端 稀疏
jungle jungle 丛林树,小型到巨型 主要
sparse_jungle jungle 丛林树,小型到巨型 主要
bamboo_jungle bamboo-jungle 环绕着竹子的丛林树 主要
savanna savanna 平顶倾斜金合欢 主要
savanna_plateau savanna 平顶倾斜金合欢 主要
windswept_savanna savanna 平顶倾斜金合欢 主要
cherry_grove cherry-grove 层叠的粉色樱花树冠 主要
cherry_grove jacaranda-grove 巨大的垂枝樱花木蓝花楹 稀有地标
windswept_hills ashwood 覆盖着蜘蛛网的瘦削灰色枯淡橡树 主要
windswept_forest ashwood 覆盖着蜘蛛网的瘦削灰色枯淡橡树 主要
windswept_gravelly_hills ashwood 覆盖着蜘蛛网的瘦削灰色枯淡橡树 主要
swamp swamp 垂挂藤蔓的垂枝橡树 + 红树 主要
mangrove_swamp swamp 垂挂藤蔓的垂枝橡树 + 红树 主要

命令

命令 描述
/leaftree generate species=<id> 在光标位置放置一棵树(管理员测试)
/leaftree give species=<id> [player] [amount] 分发自定义树苗
/leaftree list [species=<id>] 列出已注册的品种或变种
/leaftree reload 应用配置更改并重新生成数据包

需要 leaftreegen.admin 权限节点。


配置

品种在 species/ 文件夹中定义为 JSON 文件。生物群系分配和放置调整(间距、间隔、盐值)位于 config.yml 中,并支持按品种覆盖。

generation-mode: DATAPACK   # DATAPACK | PROCEDURAL | BOTH | NONE

placement:
  glacierpine:
    spacing: 6
    separation: 3
    biomes:
      - minecraft:snowy_taiga
      - minecraft:grove
{
  "name": "glacierpine",
  "procedural": {
    "trunk-block": "minecraft:spruce_log",
    "leaf-block": "minecraft:spruce_leaves",
    "height-min": 10,
    "height-max": 18,
    "trunk-shape": "LINEAR",
    "canopy": [
      { "yOffset": 0, "radius": 4 },
      { "yOffset": 3, "radius": 3 },
      { "yOffset": 6, "radius": 2 }
    ]
  }
}

要求

  • Java 25+
  • 以下之一:
    • Paper 或 Folia 1.21+
    • Fabric 26.1+(Fabric Loader 0.18.4+,Fabric API)
    • NeoForge 26.1+