公告板
公告板的玩法见打工。数据包里和公告板有关的有三类文件:labor_board/levels.json 管等级,pet_task/ 管工作牌的种类,loot_table/pet_task/ 管做完工作牌的报酬。
等级
labor_board/levels.json 决定公告板有几级、每级每天贴几张牌、升到这一级要花多少钱:
{
"levels": [
{ "slips": 3 },
{ "slips": 4, "price": 16 },
{ "slips": 5, "price": 32 }
]
}第一级是公告板刚放下时的样子,所以不用写价格。可以加更多级,每级最多贴 31 张牌。这个文件只有一份,要改就整个替换。
工作牌
pet_task/ 下的每个文件是一种工作牌,模组自带除草、高级除草、近战讨伐、远程讨伐和街头演奏五种。以高级除草为例:
{
"capability": "chiikawa:farmer",
"counter": "chiikawa:weed",
"icon": "minecraft:tall_grass",
"amount": { "type": "minecraft:uniform", "min_inclusive": 16, "max_inclusive": 32 },
"reward": "chiikawa:pet_task/advanced_weeding",
"weight": 2,
"min_level": 2,
"requires": { "qualification": "chiikawa:weeding", "min_rank": 3 }
}| 字段 | 含义 |
|---|---|
capability | 哪个职业能领:chiikawa:farmer、chiikawa:fencer、chiikawa:archer、chiikawa:musician |
counter | 干什么活算进度,见下文 |
icon | 公告板和界面上画的图标 |
amount | 要干多少,可以是固定的数,也可以是原版的随机数写法 |
reward | 做完后发什么,是一张战利品表 |
weight | 可选,贴牌时被抽中的权重,默认 1 |
min_level | 可选,公告板到了几级才会贴这种牌,默认 1 |
requires | 可选,要持有什么证、至少几级才能领 |
counter 有四种:chiikawa:weed 拔一棵野草,chiikawa:pick_mushroom 采一个蘑菇,chiikawa:slay 打倒一只敌对生物,chiikawa:play_music_second 演奏一秒。
requires 里的 min_rank 按原作的级数写,5 是最低的 5 级,1 是最高的 1 级,写 3 就是持有 3 级或更高的证。
模组自带的牌里没有用到采蘑菇,正好可以拿来举例。在自己的命名空间下新建 data/my_pack/pet_task/mushroom_picking.json:
{
"capability": "chiikawa:farmer",
"counter": "chiikawa:pick_mushroom",
"icon": "minecraft:red_mushroom",
"amount": { "type": "minecraft:uniform", "min_inclusive": 4, "max_inclusive": 8 },
"reward": "my_pack:pet_task/mushroom_picking"
}再写一张 data/my_pack/loot_table/pet_task/mushroom_picking.json 当作报酬,公告板之后就会贴出采蘑菇牌了。界面上显示的牌名和进度来自资源包的语言文件,键名是 pet_task.my_pack.mushroom_picking 和 pet_task.my_pack.mushroom_picking.amount,后者写成 采了 %s 个蘑菇 这样,%s 会换成要干的数量。
报酬
报酬是原版的战利品表,放在 loot_table/pet_task/ 下,抽出来的东西直接进小伙伴的背包。发钱时写 chiikawa:currency 标签,而不是直接写绿宝石,这样改了货币也不用改报酬。
模组还加了一个战利品条件 chiikawa:qualification,按小伙伴持有的证来决定一个奖池给不给。除草牌就是这样,持有 5 级证的多给 1 颗绿宝石,4 级再多 1 颗,一直到 1 级:
{
"rolls": 1,
"conditions": [
{ "condition": "chiikawa:qualification", "qualification": "chiikawa:weeding", "min_rank": 3 }
],
"entries": [
{ "type": "minecraft:tag", "name": "chiikawa:currency", "expand": true }
]
}