User Tools

Site Tools


Sidebar

← 返回首页

Fabric 教程

安装

基础

物品

方块和方块实体

数据生成

世界生成

命令

事件

实体

流体

Mixin 和 ASM

杂项

Yarn

贡献 Fabric

zh_cn:tutorial:shield

添加盾牌

恭喜!在上一个教程中我们学会了如何创建自定义工具!想象一下,如果想要防御一把十分强大自定义的剑,常规的盾牌是不大起作用的。因此,我们将在这里尝试创建自定义的盾牌。 幸运的,CrimsonDawn45 已经为此制作了一个库来辅助创建自定义盾牌,如果没有他创建的库,我们甚至可能需要在这个教程中待上一个小时,感谢 CrimsonDawn45!

库的源码存储在 https://github.com/CrimsonDawn45/Fabric-Shield-Lib

为项目添加依赖

将以下的代码添加到对应的文件中:

gradle.properties

fabric_shield_lib_version=1.3.7


build.gradle (在 dependencies {} 下)

modImplementation "com.github.hackcoder1000:Fabric-Shield-Lib:v${project.fabric_shield_lib_version}-${project.minecraft_version}"


在编写本文时,最新 project.fabric_shield_lib_version 应为1.3.7,最新 project.minecraft_version 应为1.17.1。每当出现新的版本时,此页面都会更新。

build.gradle (在 repositories {} 下)

allprojects { repositories { maven { url 'https://jitpack.io' } } }


添加一块自定义的盾牌

现在我们正式开始!

请确保正确遵循了上一步并且刷新了项目依赖以添加库到项目中
第一步,创建一个物品实例

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"
}


到这里,一块自定义盾牌已经完成啦!

zh_cn/tutorial/shield.txt · Last modified: 2022/12/19 08:26 by solidblock