冒险引擎

冒险引擎

结构生成冒险。接受任务,完成获得战利品,或者走开。数据包JSON用于整合包。

冒险引擎

当您靠近一个建筑时,冒险机会就会出现。您可以选择接受或拒绝。如果接受,该地点将启动目标(生成生物、标记物品、放置物品,一切按模板定义执行)。如果拒绝,该地点会暂时沉寂,您可以稍后返回。

Y 接受 · H 离开/放弃 · 按住 G 展开告示牌

只有您真正站在建筑上时,“接受”才会生效。站在旁边的草地上只会显示预览。创造模式下会绘制出边界框,方便您查看范围。

等级

侦察兵、冒险家、老兵、冠军、传奇。地点在首次生成悬赏时会随机选择一个等级。等级越高,计时器越长、怪物越强、战利品表越好,并且(对于寻物/献祭任务)物品列表也会不同。

报酬由战利品表加上原版经验值组成。

目标

每个悬赏都有一个主要目标,也可能附带一个次要目标。内置类型包括:击杀首领、清剿兽群、坚守据点(可选波次)、寻找标记物品、从怪物身上夺回物品、到达标记点、破坏标记方块、营救某人、保护结界直至主要目标完成、将物品献祭到熔岩/炼药锅/灵魂火中,或打开据点内的容器(箱子、木桶、宝库、陶罐、运输矿车)。

完成主要目标后,同一地点在冷却结束后可能会以“复仇”形式再次出现。

内置地点

前哨站、沙漠神殿、废弃传送门、丛林神庙、沼泽小屋、雪屋、海底神殿、林地府邸、远古城市、废弃矿井、沉船、古迹废墟、试炼密室、要塞、下界 fortress、堡垒遗迹。

添加您自己的内容

内容以数据包 JSON 格式呈现。一个目标文件声明“此建筑可以提供悬赏”,并指向四个池:等级、任务、奖励、复仇。这些池是加权列表。任务模板则是实际的目标定义。

data/<您的命名空间>/adventure_engine/
  targets/          polls/rank/
  ranks/            polls/quest/
  quest_templates/  polls/reward/
                    polls/revenge/

可作为普通数据包使用,也可作为 kubejs/data/...,或放在 config/adventure_engine/ 目录下的文件中(最后一种方式会覆盖 jar 包内的内容)。通过 /adventure reload 命令加载覆盖内容。

可以挂钩任何结构 ID 或结构标签,包括其他模组的结构。最简单的入门方式是复制一份 jar 包中的目标文件,然后修改结构列表和池 ID。

{
  "target": { "type": "structure", "structures": ["minecraft:pillager_outpost"] },
  "polls": {
    "rank": "mypack:outpost_ranks",
    "quest": "mypack:outpost_quests",
    "reward": "adventure_engine:standard_rewards"
  }
}

在任务池条目中,role 可以是 primarysideanyrank_min / rank_max 使用等级序号:侦察兵=1,冒险家=2,老兵=3,冠军=4,传奇=5。等级池还可以要求距离边界框中心的距离(min_distance / max_distance)。

寻物和献祭任务中的 item_bands 使用相同的 1–5 序号。游戏会从对应等级的物品列表中抽取一件物品。如果该序号不存在,则会使用下一个较低等级的列表。寻物任务会将标记物品放入箱子(或使其发光掉落)。只有该物品才能完成任务。献祭任务不会放置任何物品;投入任意一件属于该等级列表中的物品即可。

如果您不想编写战利品表,可以复用 adventure_engine:standard_rewards。原版经验值在等级文件中通过 minecraft_xp 字段配置。

命令

/adventure site — 显示您所站地点的告示牌
/adventure site accept / leave
/adventure reload — 重载覆盖内容(需要管理员权限)
/adventure cooldown — 移除附近的地点,使其可以重新生成悬赏(需要管理员权限)
/adventure cooldown all — 移除当前维度中的所有冷却地点(需要管理员权限)
/adventure debug event — 对您自己触发测试事件(需要管理员权限)

开发中功能

  • 世界事件
  • 冒险 Boss
  • 冒险修饰符
  • 队伍系统
  • 程序化战役生成器
  • 结构世界生成规则