观前须知
请注意:本教程假设您有资源包与数据包开发的基础!如果没有基础,请前往Minecraft wiki中相应页面进行学习!
使用资源包创建自定义进度图标
请在你的资源包“assets/你的命名空间/”的文件中创建一个名字叫做advancements_frame_types文件夹。你可以在里面创建JSON文件来添加新的进度图标。(目前暂时不知道对于JSON文件的名称除了基本的格式要求外有没有名字规定,在该模组中默认进度的注册JSON文件为名称为builtin.json)但请注意:该文件无法更改原版的进度图标,尽管分页进度源模组可以更改原版进度图标。(见源码)
JSON文件格式:
{(根标签)
"texture_sheet":包含自定义进度图标的纹理文件的路径。每个进度图标的大小应为26x26像素且有一个已获得和未获得的变种,放在未完成的进度图标顶部。
"frame":一个进度图标的列表,每个条目包含:
{ 一个条目
"name":进度图标的名称,需要配合您的数据包和模组,这将构成此进度图标的注册名称(id内容)。
"x": 进度图标纹理图中进度图标的起始x坐标。
"y": 进度图标纹理图中进度图标的起始y坐标。
"item_offset_x"(可选):若使用该进度图标,则将进度图标中的物品向右移动(如果为负数,则向左移动)。
"item_offset_y"(可选):若使用该进度图标,则将进度图标中的物品向下移动(如果为负数,则向上移动)。
"formatting"(可选):用于自定义框架升级的文本颜色。可选的有:black(黑色)、dark_blue(深蓝色)、dark_green(深绿色)、dark_equa(深青色)、dark_red(深红色)、dark_purple(紫色)、gold(金色)、gray(灰色)、dark_grey(深灰色)、blue(蓝色)、green(绿色)、equa(青色)、red(红色)、light_purple(粉红色)、yellow(黄色)、white(白色)
}
}
其中texture_sheet中官方给予了示例,见源码中的示例。
加上分页进度内置的进度图标,当前游戏中的图标统计为:
(图片来自wiki)
一些示例:
该示例由分页进度模组本身中注册的paginatedadvancements:arrow与pagintedadvancements:aquircle。下列为其中的注册源代码:
{
"texture_sheet": "textures/gui/frames.png",
"frames": [
{
"name": "arrow",
"x": 0,
"y": 0,
"item_offset_x": -4,
"item_offset_y": 0,
"formatting": "yellow",
},
{
"name": "squircle",
"x": 26,
"y": 0,
"formatting": "gray"
}
]
}
使用数据包导入自定义的进度图标
请在你的数据包“data/你的命名空间/”的文件中创建一个名字叫做advancements_frames文件夹。你可以在里面创建JSON文件来对于已有进度添加进度图标(目前暂时不知道对于JSON文件的名称除了基本的格式要求外有没有名字规定,在该模组中默认进度的注册JSON文件为名称为builtin.json)(可我为什么不可以直接使用advancements文件夹中的frame来自定义呢)。这种进度图标是覆盖型的,原advancements文件夹中frame内容所规定图标将失效,被强制覆盖。但是原本的“进度”,“目标”与“挑战”型的显示仍然由advancements文件夹中的frame中规定。
JSON文件格式:
[ (根标签,为一个列表)
{(一个要显示自定义进度图标的进度)
"advancements":进度的注册名,表示要覆盖进度图标的进度。
"frame":进度图标的注册名,表示要覆盖的进度图标。
}
]
编写示范:
[
{
"advancement": "minecraft:story/shiny_gear",
"frame": "minecraft:task"
},
{
"advancement": "minecraft:story/cure_zombie_villager",
"frame": "paginatedadvancements:arrow"
}
}