本篇教程由作者设定使用 CC BY-NC-ND 协议。

写在前面

概述

Heracles 是一个年轻的任务模组,它具有完备的基本功能和图形化的操作界面,适合整合包制作者使用。

Heracles 是 Terrarium Earth 制作的 Project Odyssey 系列的一部分,这个系列包括(下图从左到右)团队模组 Argonauts,任务模组 Heracles,文本解析库 Hermes,领地模组 Cadmus 以及腐竹管理工具 Prometheus。作为同一个系列,它们之间可以相互联动,以打造一个完整的团队游戏功能。

使用 Heracles 创建任务系统-第1张图片

模组的任务存储于 .minecraft/config/heracles 目录下,可以在游戏外编辑任务内容。这个目录的结构如下:

heracles
├ quests                       (存放所有任务组文件夹)
│ └ 任务组 们                   (存放所有任务,默认为 main)
│    └ 任务标识符.json 们       (单独存放每个任务的内容)
├ group.txt                    (存放所有的任务组名)
└ tutorial.html                (初次打开任务菜单会显示的内容,可以更改)

注意

此处演示的模组版本为 1.1.11,MC 版本为 1.20.1 Fabric 。

Heracles 尚处于偏早期开发状态,其内容可能不稳定,某些功能可能会随着版本的更迭而出现差别,当以实际情况为准。同时,请尽可能确保你使用的 Heracles 模组处于最新版本。

这是我第一次写教程,文中的内容均来自于我的使用体验,在没有任何参照的情况下成文,完整性、正确性均无法保证。切勿盲从,请务必以批判的眼光看待这篇教程。

如果教程的内容出现了错误,请在评论区指出。

部分名词阐释

文中出现的一些名词具有相似性,可能会混淆,我将在这一节进行简单的阐释(不是严格的定义,只是做一个简单的区分):

  • 任务(Quest):类似于进度中的目标,其中可能包含一个或多个要求;

  • 任务组(Questline):包含一系列任务的组,通常在一个页面中展示其中所有的任务;

  • 任务项(Task):任务中的具体要求。

部分实用命令

让某玩家完成某一任务:

/heracles complete <任务 ID> <选择器>

重置某玩家在某一任务中的进度:

/heracles reset <任务 ID> <选择器>

重置某玩家的所有任务的进度:

/heracles resetall <选择器>

创建任务

打开任务界面

默认情况下,打开任务界面的按键为 U 。

使用 Heracles 创建任务系统-第2张图片

除了使用键盘按键以外,Heracles 还有“任务书”物品,需要使用命令获得。

整合包作者也可以将其作为初始物品,给予第一次加入存档的玩家。手持任务书右键即可打开任务界面。

使用 Heracles 创建任务系统-第3张图片

任务界面如下所示。点击右上角的“切换编辑模式”即可开始创建、编辑任务。

使用 Heracles 创建任务系统-第4张图片

进入编辑模式后,任务界面左上角将出现四个按钮,分别为移动/选择[V]、抓手/拖动工具[H]、添加任务[U]以及链接工具[L],方括号内为它们的快捷键。

使用 Heracles 创建任务系统-第5张图片


移动/选择使用 Heracles 创建任务系统-第6张图片

单击任务打开编辑侧栏(标题、副标题、图标、依赖等)

双击任务进入详细设置(任务描述、要求、奖励)

拖动任务可改变其在界面上的位置

抓手/拖动工具使用 Heracles 创建任务系统-第7张图片拖动以在界面上平移,不会改变任务的坐标
添加任务使用 Heracles 创建任务系统-第8张图片在任务区域任意位置单击以创建任务
链接工具使用 Heracles 创建任务系统-第9张图片先单击一个任务,待其出现淡蓝色边框后,单击其他任务,便可将有淡蓝色边框的任务设为父任务。

注意:在编辑过程中,请养成随时按 Ctrl + S 保存的习惯,因为编辑时的更改可能无法及时保存。

创建新任务

选择“添加任务”,在任务区域任意位置点击左键,在弹出的对话框中输入任务标识符(即任务 ID,只能为 ASCII 字符,将会作为任务文件的名字)。点击“提交”,任务图标便会出现在先前点击的区域。

使用 Heracles 创建任务系统-第10张图片使用 Heracles 创建任务系统-第11张图片

编辑任务

编辑标题、副标题与位置

点击“移动/选择”,然后单击一个任务,屏幕右侧便会出现一个编辑栏。现在你可以在标题、副标题的文本框中输入任意内容。

注意:虽然理论上副标题接受换行,但是请不要这样做,因为换行的控制符会被显示为控制码。

使用 Heracles 创建任务系统-第12张图片

你可以在“位置”中指定任务图标的 XY 坐标,也可以直接在任务界面拖动任务图标到想要的位置。

编辑图标

点击“动作”中的“更改图标”按钮,在对话框中选择一个新的任务图标。点击左上角的“切换模式”,可以在所有物品、背包物品与标签中切换。单击物品便可以完成选择。

点击“动作”中的“更改图标背景”,在对话框中选择一个图标背景,点按以完成选择。

使用 Heracles 创建任务系统-第13张图片使用 Heracles 创建任务系统-第14张图片使用 Heracles 创建任务系统-第15张图片

编辑依赖

点击“动作”中的“更改依赖”,在对话框上方的文本框中输入想要作为父任务的任务标识符,然后按下“+”即可完成添加。一个任务可以拥有多个父任务。

当然,也可以使用“链接工具”设置从属关系。先单击一个任务,待其出现淡蓝色边框后,单击其他任务,便可将有淡蓝色边框的任务设为父任务。

拥有从属关系的任务之间会有带箭头的线连接。

文本框下方会显示所有的父任务,点按右上角的“×”可以将其删除。

注意:任务之间连接线的渲染存在滞后的可能性,如果两个任务之间没有出现连线,可以退出任务界面重进。

使用 Heracles 创建任务系统-第16张图片使用 Heracles 创建任务系统-第17张图片

删除任务

点击“动作”中的“删除任务”,在弹出的对话框内选“继续”即可删除任务。

注意:在 1.1.13 之前的版本中,当一个任务被删除时,其子任务将无法被激活(#170)。

编辑任务设置

点击“动作”中的“编辑任务设置”。

使用 Heracles 创建任务系统-第18张图片

独立进度*尚不明确
隐藏直到

锁定:该任务始终显示

进行中:该任务有正在进行的任务项时才会显示

已完成:该任务完成以后才会显示(类似于隐藏进度)

Parent Visible:其父任务可见时才会显示

解锁通知是否在该任务解锁时显示通知
显示依赖箭头是否显示该任务与其父任务之间的连线
可重复任务是否可以反复进行

编辑任务概述

在选择“移动/选择”时,双击任务图标,进入编辑页面。

首先映入眼帘的是一个文本编辑器,它可以用鼠标拖动来选择文本,可以编辑文本的颜色格式,甚至还可以把文本变成乱

但是编辑器并不是所见即所得的,它依赖 Hermes,以某种标记语言的方式来存储文本(与 Markdown 颇有几分相似)。想要预览文字的效果,必须退出编辑模式。

Hermes 使得用户可以在任务概述中插入多种多样的内容,想要深入了解的话可以前往其 WIKI,或者看一看这篇教程
使用 Heracles 创建任务系统-第19张图片


使用 Heracles 创建任务系统-第20张图片

编辑任务项

在左边栏选择“任务项”,点击“+”便可以创建一个新的任务项。

选择类型,输入标识符(同样要求 ASCII 字符),再按“提交”,任务项便创建完成。

使用 Heracles 创建任务系统-第21张图片稍后将会弹出“编辑任务项”窗口,其中会有这个任务项的设置项。先前选择的任务类型不同,其中的设置项不尽相同,不同之处将在后文分说。以下为相同的设置项:

标题覆盖这个任务项显示的标题,可以为任意字符
图标覆盖这个任务项所显示的图标,选择方式可参考先前的“更改图标”

点击“保存”,便能在列表中看到方才添加的任务项。

将鼠标悬停在任务项上,其右边会出现 2 个按钮。上方为编辑按钮,点击可以调出任务项的编辑页面;下方为删除按钮,点击即可删除。

使用 Heracles 创建任务系统-第22张图片

以下将粗略讲述不同的任务类型:

改变维度

从一个指定维度到达另一个指定维度方可满足条件。

使用 Heracles 创建任务系统-第23张图片

使用 Heracles 创建任务系统-第24张图片

原先置身的维度 ID 或所属的标签 ID
目标维度的 ID 或·所属的标签 ID

当输入框内不是一个完整的 ID 时,文本框的下方会有提示,单击选择便可以快速输入。

后文中所有需要输入 ID 的文本框均具有这种自动补全机制。
结构

进入指定的结构方满足条件。

使用 Heracles 创建任务系统-第25张图片使用 Heracles 创建任务系统-第26张图片

结构目标结构的 ID 或所属的标签 ID

经验

获取定量经验方满足条件。

使用 Heracles 创建任务系统-第27张图片使用 Heracles 创建任务系统-第28张图片

经验类型选取经验的单位,可选“等级”或“值”
经验数量要求获取的经验量
收集类型

取得:获得指定数量的经验即满足条件

自动提交:获得指定数量的经验并自动扣除后,方能满足条件

提交:手动扣除指定数量的经验后方满足条件(会标出”提交“二字)

虚拟

虚拟任务被刻意设置为无法通过除命令以外的方式完成,这种任务类型的用途是:将任务奖励设置为执行完成某一虚拟任务的命令,从而在不同任务,甚至是不同任务组之间建立联系。

使用 Heracles 创建任务系统-第29张图片使用 Heracles 创建任务系统-第30张图片

虚拟 ID(可共享)*尚不明确
描述虚拟任务可以自定义描述,这行字在其他类型中是系统生成的任务要求

实体交互

右键指定实体方可满足条件。

使用 Heracles 创建任务系统-第31张图片使用 Heracles 创建任务系统-第32张图片

实体需要交互的实体 ID 或所属的标签 ID

生物群系

到达指定生物群系方可满足条件。

使用 Heracles 创建任务系统-第33张图片

使用 Heracles 创建任务系统-第34张图片

生物群落目标生物群系的 ID 或所属的标签 ID

物品交互

使用指定物品右键方可满足条件。

使用 Heracles 创建任务系统-第35张图片

使用 Heracles 创建任务系统-第36张图片

物品需要交互的物品或所属的标签,选择方式可参考先前的“更改图标”

方块交互

右键指定方块方可满足条件。

使用 Heracles 创建任务系统-第37张图片使用 Heracles 创建任务系统-第38张图片

方块需要交互的方块 ID 或所属的标签 ID

击杀实体

杀死指定数量的特定实体方可满足条件。

使用 Heracles 创建任务系统-第39张图片使用 Heracles 创建任务系统-第40张图片

要击杀的实体需要杀死的实体 ID 或所属的标签 ID
击杀数量需要杀死的实体总数

获取物品

获取指定数量的特定物品方可满足条件。

使用 Heracles 创建任务系统-第41张图片使用 Heracles 创建任务系统-第42张图片

物品需要获取的物品或所属的标签,选择方式可参考先前的“更改图标”
数量需要获取的物品的数量
收集类型

取得:获得指定数量的物品即满足条件

自动提交:获得指定数量的物品并自动扣除后,方能满足条件

提交:手动扣除指定数量的物品后方满足条件(会标出”提交“二字)

进度

获取指定进度后方可满足条件。

使用 Heracles 创建任务系统-第43张图片使用 Heracles 创建任务系统-第44张图片配方

使用指定的配方后方可满足条件。

使用 Heracles 创建任务系统-第45张图片

使用 Heracles 创建任务系统-第46张图片

配方需要使用的配方 ID(可以在 JEIEMI 等修改器中查看)

检查

点击“✔”即满足条件,可用于存放注意事项。

使用 Heracles 创建任务系统-第47张图片

使用 Heracles 创建任务系统-第48张图片该类型没有特别的设置项。

统计数据

指定的统计数据达到特定值方可满足条件。

使用 Heracles 创建任务系统-第49张图片使用 Heracles 创建任务系统-第50张图片

统计数据要求的统计数据的 ID
目标统计数据需要达到的值

编辑奖励

在左边栏选择“奖励”,点击“+”便可以创建一个新的奖励。

选择类型,输入标识符(同样要求 ASCII 字符),再按“提交”,奖励便创建完成。

使用 Heracles 创建任务系统-第51张图片

稍后将会弹出“编辑奖励”窗口,其中会有这个奖励的设置项。先前选择的奖励类型不同,其中的设置项不尽相同,不同之处将在后文分说。以下为相同的设置项:

标题覆盖这个奖励显示的标题,可以为任意字符
图标覆盖这个奖励所显示的图标,选择方式可参考先前的“更改图标”

点击“保存”,便能在列表中看到方才添加的奖励。

将鼠标悬停在奖励上,其右边会出现 2 个按钮。上方为编辑按钮,点击可以调出奖励的编辑页面;下方为删除按钮,点击即可删除。

使用 Heracles 创建任务系统-第52张图片以下将粗略讲述不同的奖励类型:

经验

奖励特定数量的经验。

使用 Heracles 创建任务系统-第53张图片使用 Heracles 创建任务系统-第54张图片

经验类型选取经验的单位,可选“等级”或“值”
经验数量奖励的经验量

命令

执行一条命令。

使用 Heracles 创建任务系统-第55张图片

使用 Heracles 创建任务系统-第56张图片


命令要执行的命令

注意:执行的命令不能太长,只能输 32 个字,超出的部分将会被忽略。


物品

给予指定数量的特定物品。

使用 Heracles 创建任务系统-第57张图片

使用 Heracles 创建任务系统-第58张图片

物品需要获取的物品或所属的标签,选择方式可参考先前的“更改图标”
数量需要获取的物品的数量

战利品表

在指定的战利品表中随机获取物品。

值得指出的是,通过自行编写战利品表,可以实现类似 FTBQ 中随机奖励的功能。

使用 Heracles 创建任务系统-第59张图片

使用 Heracles 创建任务系统-第60张图片

战利品表指定的战利品表 ID

注意:版本 1.1.13 以前的模组中,战利品表没有自动补全。

编辑任务组

任务界面左边是任务组栏,在编辑模式下,右上方会有“创建组”按钮,即会弹出对话框,输入组名(接受任意字符)后点击“提交”即成功创建。

注意:虽然任务组名理论上可以包含非 ASCII 字符,但是一旦包含这些字符,其中的任务文件将被存放于“main”目录之下,且再次启动时可能会出现乱码。

使用 Heracles 创建任务系统-第61张图片使用 Heracles 创建任务系统-第62张图片

鼠标悬停至任务组上方时,其右上角会出现关闭按钮,点击即可删除组。

只能删除不包含任何任务的组。

本地化

注意:Terrarium Earth 并未给出本地化的具体方法,以下内容来自我的探索,仅能算是盲人摸象,故一切仅供参考,具体方法以实践为准。

Heracles 已经明确表示支持任务文本的本地化,不同语言的翻译依赖资源包实现。如果你是一个整合包作者,且为你的整合包量身定制了专属的资源包(或者专属的模组),你可以选择将翻译文件置于你的资源包(模组)之中。

目前我已经摸索出了任务标题、任务副标题、任务项标题、奖励标题的翻译方法,任务组名还没有探索出具体的操作方法。

想要让 Heracles 支持其他语言,必须使用翻译键替换任务文件中的文本。在 任务标识符.json 中,原本内容为

"title(或者 subtitle)": "标题文字"

的代码应被替换为

"title(或者 subtitle)": {
    "translate": "翻译键"
}

,但是,任务项与奖励的标题需要被替换为

"title": "翻译键"

即可。

我在尝试中,使用了如下格式的翻译键:

任务组名.命名空间.任务标识符(.任意后缀)

本地化键名需要使用 ASCII 字符。

其中,命名空间需自己指定,与资源包一致。后缀是可选的,它可以作为区分同一个任务不同文本的本地化键名的提示,因此最好加上。

关于任务概述的翻译,还请参考 Hermes 的 WIKI 或者这篇教程

然后开始制作资源包(推荐边改任务文件边做资源包),并在其中创建语言文件,具体制作方法与要求请参阅 Minecraft Wiki

完成了这些应该就能进入游戏测试了。

如果需要翻译的文本显示的是翻译键本身,请检查:

  • 游戏是否刷新,如果否,请输入 /reload 重载任务文件,或者重载资源包或语言文件;

  • 是否漏掉了或者多加了“translate”,如果是,请更改并重载任务文件;

  • 翻译键的格式是否正确,如果是,请更正并重载任务文件;

  • 语言文件里是否有对应的翻译,如果否,请加上并重载资源包或语言文件。