Minecraft 1.16.5模组开发(三十) 自定义成就系统(advancements)

我们本次将尝试在模组中加入属于自己的成就系统

1.打开Minecraft成就生成制作网站进行成就的制作

我的世界成就系统制作网站
Minecraft 1.16.5模组开发(三十) 自定义成就系统(advancements)

在data包下新建advancement文件夹 -> 在文件夹中新建一个我们的成就系统的文件夹(以readvancement为例) -> 在readvancement中新建一个root.json 文件(我们成就系统的根系统成就)

将网站自动生成的脚本粘贴到我们的root.json中。

父成就:

{
    "display": {
        "icon": {
            "item": "re8joymod:bottle1" //物品命名 你的模组名:物品名
        },
        "title":"Rose Torso.",
        "description": "Get the torso flask.",
        "background": "re8joymod:textures/items/dhands_block.png",  //背景图选择你的图片路径即可
        "show_toast": true,
        "announce_to_chat": true
    },
    "criteria": {
        "bottle2": {
            "trigger": "minecraft:inventory_changed",
            "conditions": {
                "items": [
                    {
                        "item": "re8joymod:bottle1"
                    }
                ]
            }
        }
    }
}

子成就

子成就需要有一个父成就节点(parent字段),其余与父成就写法类似

子成就代码示例(以armsflask.json为例):

{
    "display": {
        "icon": {
            "item": "re8joymod:bottle3"
        },
        "title": "Why is the arms?",
        "description": "Get the arms flask."

    },
    "parent": "re8joymod:readventure/root",  //增加了父成就节点(有父节点的原因是必须先完成父成就,才能去完成子成就)
    "criteria": {
        "bottle2": {
            "trigger": "minecraft:inventory_changed",
            "conditions": {
                "items": [
                    {
                        "item": "re8joymod:bottle3"
                    }
                ]
            }
        }
    }
}
你可以根据需要编写许多成就,与达成成就的不同方法

Minecraft 1.16.5模组开发(三十) 自定义成就系统(advancements)

2.运行游戏进行测试

以我们的物品栏成就为例,当我们拿出了物品,即物品栏中(或手中)出现了为我们的物品时,就判定为成就达成,此时会显示成就达成的情况。

Minecraft 1.16.5模组开发(三十) 自定义成就系统(advancements)

你也可以在主菜单的Advancements对达成的成就进行查看:

Minecraft 1.16.5模组开发(三十) 自定义成就系统(advancements)

OK,下次见~

上一篇:C语言读取redis lrange 实现


下一篇:盘点 VS Code 常用插件!选择最好用的插件,还你不一样的编译器