戈特施的怪物图鉴

戈特施的怪物图鉴

一个模组基底库,包含怪物类、AI目标、模型和纹理,供其他模组在此基础上构建。GMM本身不添加任何内容——Dungeon Denizens v2+就是基于它运行的示例之一。

Gottsch 的生物图鉴 (GMM)

Gottsch 地牢模组背后的共享生物库。

GMM 本身不会向你的世界添加任何内容。它是一个基类库——一个共享的怪物类、AI 目标、模型、渲染器和纹理的集合,其他模组以此为基础构建它们的怪物。如果你安装了像 Dungeon Denizens v2+ 这样的模组,GMM 就是其底层运行的引擎。


工作原理

原版怪物代码并非为跨模组共享而设计。每个模组通常都会重新发明自己的飞行 AI、自己的施法目标、自己的召唤逻辑——即使这些怪物行为几乎完全相同。GMM 通过将可复用的部分提取到一个地方来解决这个问题。

GMM 自身注册的实体、物品或方块数量为 零。它仅提供:

  • 基础怪物类 (GMMMonster, GMMFlyingMonster, WingedHumanoid,以及类似 BowSkeleton 和 Beholderkin 的种族专属基类)
  • 可复用的 AI 目标 (远程/投掷物攻击、施法、怪物召唤、友军警报、飞行与着陆、盾牌格挡、仆从/所有权指令)
  • 共享的模型、渲染器和纹理
  • 一个数据包驱动的配置系统,用于在不修改代码的情况下调整生成门槛和怪物行为

使用方模组(如 Dungeon Denizens,以及未来 Gottsch 的地牢模组)注册它们自己的 EntityType,这些类型指向 GMM 的类,并复用 GMM 的资源。当两个模组需要相同的怪物行为时,它们共享一个实现,而不是维护两个。


包含内容

GMM 目前为不断增长的 D&D 风格怪物阵容提供基类和资源——包括软泥怪、僵尸、亡灵、眼魔类、兽人、构造体等等。

📖 完整怪物名单、背景设定和截图: 请参阅 GitHub Wiki,了解 GMM 提供的每个怪物家族的详细分类。

每个怪物家族都通过相同的基类共享其行为,因此 GMM 中的错误修复或改进会立即惠及所有基于其构建的模组。


对于整合包作者

怪物生成门槛和许多行为数值(计时、概率、消失规则等)都是数据驱动的,并非硬编码。使用方模组在 data/<namespace>/gmm/mob_config/<name>.json 下提供 JSON 文件,你可以使用自己的数据包覆盖其中的任何内容:

{
  "spawn": { "enabled": true, "minHeight": 0, "maxHeight": 255 },
  "properties": { "rangedProbability": 0.5 },
  "flags": { "someToggle": true }
}

编辑 JSON 并运行 /reload——更改将在下一次怪物生成时生效。无需重新编译,无需 mixins。请参阅 怪物配置参考,了解每个怪物读取的所有键、其默认值及其控制内容。

你还可以通过其标签系统自定义 GMM 怪物所装备、食用和响应的内容——请参阅 标签参考 获取完整列表(武器/护甲池、食尸鬼食物、友军警报)以及可复制粘贴的数据包示例。


对于开发者

GMM 的存在是为了让模组不必重复编写 AI 和渲染代码。如果你正在构建一个想要 Gottsch 风格怪物的模组:

  • 依赖 GMM,并注册你自己的指向其基类的 EntityType
  • 通过 GMM 的标签系统(gmm: 命名空间的实体类型和物品标签)贡献装备、盟友和召唤目标,而不是硬编码跨模组引用——请参阅 标签参考
  • 复用 GMM 的模型/渲染器/纹理,或扩展其基类以创建你自己的变体

GMM 从不引用使用方模组的类——所有跨模组耦合都通过标签、数据包配置或一小套由使用方接线的静态钩子点(例如,怪物的投射物发射器或环境音效)进行。


兼容性

  • ✅ 自身不添加任何新内容——单独安装 GMM 不会改变你的世界中的任何东西
  • ✅ 任何依赖它的模组都需要它(请查看该模组的页面以了解具体的依赖关系)
  • ✅ 行为/生成调整由数据包驱动,因此整合包可以在不修改代码的情况下重新调整怪物

配套模组

以下模组需要 GMM:


许可证

在 GNU 宽通用公共许可证 (LGPL) 下授权。源代码可在 GitHub 上获取。