观前须知

请注意:本教程假设您有资源包与数据包开发的基础!如果没有基础,请前往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)

【分页进度】自定义进度图标-第1张图片


一些示例:

该示例由分页进度模组本身中注册的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"
     }
}