石堆

石堆

[人类+AI垃圾] 一个小型模组,能够自然推进进度并提供奖励,帮助玩家弄清楚他们应该专注于什么。

Cairn - 你的任务指南

This project was made with the help of AI

免责声明:本模组在制作过程中大量使用了 AI,以便让我学习网络通信的原理、理解各种概念等,还使用了大量代码自动补全(但我仍然通过阅读代码进行了审查)。如果你不喜欢 AI 生成的内容,那么这个模组不适合你。


Cairn 是一个允许你追踪进度(advancement)等内容的模组,并根据它们所在的等级给予你奖励。

奖励可以被数据包覆盖,如果你想禁用奖励,或者更改完成进度所获得的内容。

进度和奖励可以在同一服务器上的其他玩家之间共享。

该模组既可用于客户端,也可用于服务器。

每个进度都是一个任务。Cairn 将你游戏中已有的进度——原版的以及每个模组的——转换成一个任务日志,无需配置或生成步骤。

任务

  • 每个进度都会被自动发现,并在 /reload 后保持最新。
  • 最多可追踪 5 个任务(可配置)。在原版进度界面中右键点击一个进度即可追踪它;标记会显示哪些已被追踪。
  • 以通俗语言显示的要求——"获取:铁锭"、"击杀:烈焰人"、"到访:恶地"——这些是从每个进度自身的条件中推导出来的,并显示你每行的进度。显示在进度界面的悬停面板中(按住 Shift 查看完整列表)、HUD 上,以及通过 /cairn info 供原版客户端查看。
  • 完成一个已追踪的任务可以自动追踪它的下一步。

HUD 和提示弹窗

  • 屏幕任意角落的屏幕追踪器,使用原版自身的进度框架绘制,显示每个任务的进度和未完成的要求。
  • 完成提示弹窗,显示所发放的奖励。

奖励

  • 使用原版自身的奖励格式,通过数据包文件为你不拥有的进度附加奖励:data/<namespace>/cairn/rewards/<path>.json(战利品表、经验值、函数)。无需编辑其他模组的文件。
  • 为 25 个原版进度内置了新手奖励,使用的物品绝不会意外完成另一个进度。可以关闭。
  • 对于其他所有内容,可按框架类型(task/goal/challenge)配置默认经验值。配方解锁和免费授予的进度永远不会发放奖励。
  • 通过标签风格的数据包文件排除进度。

多人游戏

  • 可独立在服务端运行;原版客户端会收到聊天消息和命令。
  • 可选的共享进度:一个玩家获得的,所有人都获得,包括之后加入的玩家。每个玩家仍然获得自己的奖励。
  • 每个玩家的状态存储在世界中,并能在死亡后保留。

命令

  • /cairn list、track、untrack、tracked、info、rewards、shared

需要 Obsidian Weave 1.2.1 或更新版本。支持 Fabric、Forge 和 NeoForge。

我们有一些可能感兴趣的配置项:

任务

  • include_recipe_advancements(true)- 将隐藏的配方解锁进度视为任务。它们可以携带奖励,但绝不会出现在追踪器中。
  • max_tracked(5)- 玩家一次可以追踪多少个任务。
  • auto_track_next_child(true)- 当一个已追踪的任务完成时,开始追踪其第一个未完成的子任务。

奖励

  • default_rewards(true)- 为每个没有奖励文件的已显示进度给予经验值,基于其框架类型。
  • default_xp_task(10)、default_xp_goal(30)、default_xp_challenge(100)- 每个框架类型的经验值点数。
  • default_xp_hidden_multiplier(1.5)- 隐藏进度的倍率。
  • bundled_rewards(true)- 使用 Cairn 为 25 个原版进度内置的物品奖励(火把、面包、箭、绿宝石以及其他绝不会意外完成另一个进度的物品)。数据包奖励文件始终优先。

多人游戏

  • shared_progression(false)- 任何玩家获得的每个进度条件都会被服务器上的所有人获得,包括之后加入的玩家。每个玩家仍然会收到自己的奖励。配方解锁不共享。

HUD(客户端)

  • hud_corner(top_left)- 追踪器所在的屏幕角落:top_left、top_right、bottom_left、bottom_right。
  • hud_offset_x(4)、hud_offset_y(4)- 距该角落的像素距离。
  • hud_max_rows(5)- HUD 显示多少个已追踪的任务。
  • hud_show_progress(true)- 在每个任务下方显示 x/y 条件计数。
  • hud_requirement_lines(2)- 在每个任务下方列出多少个未完成的要求;0 表示隐藏它们。
  • hud_show_description(false)- 在每个任务下方显示进度自身的描述。