此篇教程基于1.20.1版本


各种仪式所对应的type

        锻造仪式    forge

        活力仪式    animation

        魔法仪式    magic

        霜冻仪式    frost

        死灵仪式    necroturgy

        大地仪式    geoturgy

        大师死灵仪式 lich

        天空仪式    sky

        风暴仪式    storm

        安息仪式    sabbath

        进阶下界仪式 adept_nether

        专家下界仪式 expert_nether


数据包:

创建一个目录, 在里面放入以下内容:

 - data

    - [命名空间]: 例如: goety

            - [命名空间]: recipes

                    - json数据

-  pack.mcmeta


在pack.mcmeta文件中写入

{

    "pack": {

        "description": "这是你的数据包介绍",

        "pack_format": 16

    }

}

然后游戏里使用/datapack list指令可以找到你刚刚创建的数据包就成功了

下一步是配方的创建

在data\goety\recipes下面新建一个json文件 , 命名最好使用英文!!!

注: //及后面的内容复制粘贴的时候需要删掉!

在里面写入:

{

    "type": "goety:ritual",    // goety的仪式类型,不需要修改

    "ritual_type": "goety:craft",// 同上 不需要修改

    "activation_item": {

        "item": "minecraft:gold_ingot" // 中间的输入物品

    },

    "craftType": "forge", // 仪式类型 此处为锻造 , 值可以改为上面提到的type列表

    "soulCost": 1, //  每秒的灵魂消耗

    "duration": 10, // 持续时间 单位为秒

    "ingredients": [

        {

            "item": "minecraft:iron_ingot" //  基座周围的物品, 可以接受12个为上限

        },

        {

            "item": "minecraft:iron_ingot" // "item"可以替换为"tag" 这是原版数据包的知识

        },

        {

            "item": "minecraft:iron_ingot"

        },

        {

            "item": "minecraft:iron_ingot"

        }

    ],

    "result": {

        "item": "minecraft:diamond" // 合成结果

    }

}

这是效果:

自定义[Goety]诡恶巫法仪式配方-第1张图片更多的示例可以查看goety的jar文件里面的data\goety\recipes里面找到


KubeJS:

KubeJS在配方事件里面提供了一个custom方法,可以接收一个json数据

ServerEvents.recipes(event => {
    event.custom(
        {
        "type": "goety:ritual",
        "ritual_type": "goety:craft",
        "activation_item": {
            "item": "minecraft:gold_ingot"
        },
        "craftType": "forge",
        "soulCost": 1,
        "duration": 10,
        "ingredients": [
            {
                "item": "minecraft:iron_ingot"
            },
            {
                "item": "minecraft:iron_ingot"
            },
            {
                "item": "minecraft:iron_ingot"
            },
            {
                "item": "minecraft:iron_ingot"
            }
        ],
        "result": {
            "item": "minecraft:diamond"
        }
    })
})


结果是一样的

此外,我写了一个方法,可以直接调用这个方法来创建配方,可以让配方创建更加方便,缺点是不够灵活

ServerEvents.recipes(event => {
    /**
    * 调用方法用于创建Goety仪式配方
    * @param {string} craftType 配方类型
    * @param {number} soulCost 每秒的灵魂消耗
    * @param {number} duration 持续时间 单位为秒
    * @param {Array} ingredients 材料
    * @param {string} input 输入物品
    * @param {string} result 输出物品
    */
    function ritualRecipe(craftType, soulCost, duration, ingredients, input, result) {
        const ingredientObjects = ingredients.map(item => ({ "item": item }))
        let recipe = {
            "type": "goety:ritual",
            "ritual_type": "goety:craft",
            "craftType": craftType,
            "soulCost": soulCost,
            "duration": duration,
            "ingredients": ingredientObjects,
            "activation_item": {
                "item": input
            },
            "result": {
                "item": result
            }
        }
        event.custom(recipe)
    }
    // 调用方法创建配方
    ritualRecipe('magic', 5, 30, [
        "minecraft:diamond",
        "minecraft:diamond",
        "minecraft:diamond",
        "minecraft:diamond"
    ], "minecraft:netherite_ingot", "minecraft:diamond")
})

这是效果:


自定义[Goety]诡恶巫法仪式配方-第2张图片