目录
- 新配方
- 工作台配方
- 无序合成配方
- 有序合成配方
- 熔炉配方
- 挖掘等级与掉落物
- 挖掘等级
- 标准等级配置
- 易错点分析
- 战利品与掉落物
- 普通方块掉落物
- 矿石方块掉落物
新配方
工作台配方
为便于你快速创建配方,可以直接去这个网站上通过拖拽的方式创建属于你的配方表,它会自动生成 json 文件,非常方便!
之后你仅需修改对应的物品方块为我们自定义的即可
https://crafting.thedestruc7i0n.ca/
无序合成配方
此配方用于将宝石块分解为单个锭
注意,minecraft:crafting_shapeless
表示无序合成
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "tutorialmod:zer_block"
}
],
"result": {
"item": "tutorialmod:zer_ingot",
"count": 9
}
}
有序合成配方
下面展示使用 9 个 ingot 合成一个 block 的配方
{
"type": "minecraft:crafting_shaped",
"pattern": ["###", "###", "###"],
"key": {
"#": {
"item": "tutorialmod:zer_ingot"
}
},
"result": {
"item": "tutorialmod:zer_block",
"count": 1
}
}
熔炉配方
熔炉配方很简单就三个,一个是普通熔炉配方、一个是高炉配方,当然还有一个烟熏炉配方(只不过我们自定义的物品都是矿石,没法用烟熏炉)
下面是普通熔炉配方(smelting)
{
"type": "minecraft:smelting",
"category": "misc",
"cookingtime": 200,
"experience": 1,
"group": "zer",
"ingredient": {
"item": "tutorialmod:zer_diamond"
},
"result": "tutorialmod:zer_ingot"
}
这个是高炉配方(blasting)
{
"type": "minecraft:blasting",
"category": "misc",
"cookingtime": 100,
"experience": 0.7,
"group": "copper_ingot",
"ingredient": {
"item": "minecraft:copper_ore"
},
"result": "minecraft:copper_ingot"
}
挖掘等级与掉落物
挖掘等级
挖掘等级用于确定你生成的方块能否被挖掘,以及可以使用何种工具进行挖掘
这一步和以往的MOD开发都有不同,由于MC版本迭代原因,内容更新较多,所以必须要按照指定步骤一一执行~
标准等级配置
首先按照下图所示创建这些文件夹和 json 文件
根目录 data 和 asstes 同级!
json 文件默认内容均为:
{
"replace": false,
"values": []
}
mineable 文件夹下四个文件分别对应斧头、锄头、镐子、铲子可以破坏的对应方块
把你新注册的自定义方块的 id 塞进 values 里面,就表示可以使用这一类工具来破坏
比如我想使用 pickaxe,也就是镐子来破坏宝石方块,那么我应该在 pickaxe.json
里面写:
{
"replace": false,
"values": ["tutorialmod:zer_block", "tutorialmod:raw_zer_block"]
}
任何一个以“needs”开头的文件均表示方块可以被哪一种等级的工具所挖掘
目前只有四种等级:
- level_4 最高级,即下界合金工具可破坏
- diamond
- iron
- stone
比如我想让我的方块只能被石质材料的工具破坏,那么我需要在 needs_stone_tool.json
里面写对应的 id
{
"replace": false,
"values": [
"tutorialmod:zer_block",
"tutorialmod:zer_ore",
"tutorialmod:nether_zer_ore"
]
}
总而言之,你需要设置两次:
- 第一次,在对应的工具 json 文件内设置,确定方块可被破坏的最佳工具
- 第二次,在对应的工具等级 json 文件内设置,确定方块可被破坏的工具等级
易错点分析
needs_tool_level_4.json
可被下界合金工具破坏的方块,这个文件只能在上图显示的固定文件夹内书写!
上图所示的所有文件以及文件夹名称都是死规定!别乱改!照抄就可以了!!!
战利品与掉落物
对于某些特殊的方块,我们需要设置不同类型的掉落物
- 普通方块:掉落方块本身
- 矿石方块:掉落一定数量的矿石原矿
掉落物配置请在该文件夹下配置:tutorialmod/loot_tables/blocks
,每个方块对应一种掉落方式!
普通方块掉落物
在这里推荐一个快速生成 loot_tabels 的网站,可以提升开发效率:https://misode.github.io/loot-table/
比如挖掘一个普通方块,直接掉落他自身,那就不需要过多设置,直接抄下方代码即可
你要修改的地方就是我加注释的地方
代码清单 zer_block.json
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "tutorialmod:zer_block" // 把他修改为方块ID
}
],
"rolls": 1.0
}
]
}
矿石方块掉落物
矿石挖掘后会掉落任意数量的矿石原矿,需要人为指定这个范围
同样的,你只需要修改下方代码注释部分,其他的保持默认直接套用即可
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"enchantments": [
{
"enchantment": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
],
// 设置你的方块ID
"name": "tutorialmod:end_stone_zer_ore"
},
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
// 挖掘后掉落物的数量范围
"max": 6.0,
"min": 4.0
},
"function": "minecraft:set_count"
},
{
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops",
"function": "minecraft:apply_bonus"
},
{
"function": "minecraft:explosion_decay"
}
],
// 挖掘后掉落的物品或者方块
"name": "tutorialmod:zer_diamond"
}
]
}
],
"rolls": 1.0
}
],
"random_sequence": "minecraft:blocks/copper_ore"
}