[最高支持到1.19版本,对于1.14及以下版本,请参考英文原版wiki:https://fabricmc.net/wiki/tutorial:shield]
恭喜!在上一个教程中我们学会了如何创建自定义工具!想象一下,如果想要防御一把十分强大自定义的剑,常规的盾牌是不大起作用的。因此,我们将在这里尝试创建自定义的盾牌。 幸运的,CrimsonDawn45 已经为此制作了一个库来辅助创建自定义盾牌,如果没有他创建的库,我们甚至可能需要在这个教程中待上一个小时,感谢 CrimsonDawn45!
将以下的代码添加到对应的文件中:
gradle.properties
fabric_shield_lib_version=1.6.0-1.19
build.gradle (在 dependencies {} 下)
modImplementation "com.github.CrimsonDawn45:Fabric-Shield-Lib:v${project.fabric_shield_lib_version}"
在编写本文时,最新 project.fabric_shield_lib_version 应为1.3.7,最新 project.minecraft_version 应为1.17.1。每当出现新的版本时,此页面都会更新。
build.gradle (在 repositories {} 下)
maven { url = 'https://jitpack.io' }
如果你的mod用于1.17或更高的游戏版本、或者你正在使用FabricShieldLib version 1.5.0 或以上,记得同时也要添加下面的东西:
gradle.properties
fabric_asm_version=2.3 cloth_version=8.1.77 mod_menu_version=4.0.6 crowdlin_version=1.4+1.19
(These versions will be updated in this wiki alongside the mod version)
build.gradle (under dependencies)
modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}") { exclude(group: "net.fabricmc.fabric-api") } include("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}") modCompileOnly modRuntimeOnly ("com.terraformersmc:modmenu:${project.mod_menu_version}"), { exclude(group: "net.fabricmc.fabric-api") } modImplementation("com.github.Chocohead:Fabric-ASM:v${project.fabric_asm_version}") { exclude (group: "net.fabricmc.fabric-api") } include("com.github.Chocohead:Fabric-ASM:v${project.fabric_asm_version}")
build.gradle (under repositories, the one above dependencies)
maven { url "https://maven.shedaniel.me/" } maven { url "https://maven.terraformersmc.com/releases/" }
现在我们正式开始!
请确保正确遵循了上一步并且刷新了项目依赖以添加库到项目中
第一步,创建一个物品实例
public static final Item NETHERITE_SHIELD = new FabricShield(new FabricItemSettings().group(ItemGroup.COMBAT), 10, 2500, 13, Items.NETHERITE_INGOT); // FabricShield(settings, cooldownTicks, durability, enchantability, repairItem)
然后,注册这个物品
Registry.register(Registries.ITEM, new Identifier("moreshields", "netherite_shield"), NETHERITE_SHIELD)
我们已经创建了自定义盾牌的物品
现在,我们需要为自定义盾牌添加纹理和模型
对于纹理,可以使用任意的资源,如果不知道需要怎么样绘制,可以参考游戏原版的盾牌图案,然后在原版盾牌图案的基础上进行修改。绘制完成后放置到 resources/textures/item/<filename>.png
对于模型, 需要编写一些 .json 文件
指定物品模型
{ "parent":"fabricshieldlib:item/template_shield", "textures":{ "shield":"moreshields:item/netherite_shield" }, "overrides": [ { "predicate": { "blocking": 1 }, "model": "moreshields:item/netherite_shield_blocking" } ] }
把它放到 resources/models/item/netherite_shield.json
然后是方块模型
{ "parent":"fabricshieldlib:item/template_shield_blocking", "textures":{ "shield":"moreshields:item/netherite_shield" } }
放到 resources/models/item/netherite_shield_blocking.json
最后,不要忘记添加本地化语言文件 en_us.json
{ "item.moreshields.netherite_shield": "Netherite Shield" }
到这里,一块自定义盾牌已经完成啦!