此篇教程基于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的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")
})
这是效果: