【Minecraft】Fabric Mod开发完整流程3 - 配方与挖掘等级

新配方


工作台配方

为便于你快速创建配方,可以直接去这个网站上通过拖拽的方式创建属于你的配方表,它会自动生成 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"
	]
}

总而言之,你需要设置两次:

  1. 第一次,在对应的工具 json 文件内设置,确定方块可被破坏的最佳工具
  2. 第二次,在对应的工具等级 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"
}

猜你喜欢

转载自blog.csdn.net/delete_you/article/details/132209444
今日推荐