782 发表于 2022-5-13 18:11:23

附加包教程第十期——物品:武器基础

本帖最后由 782 于 2022-6-3 22:01 编辑


物品(三)
武器基础
一、前言
自1.16.100附加包更改以来,制作自定义武器变得非常简单,因为这些更改允许在 行为包/items文件夹中简单地为其定义物品功能,
并在 资源包/textures/items文件夹中提供相应纹理,并且有一个功能全面的武器,可以选择自己认为合适的组件进行自定义武器。
本期教程教大家制作最基础的武器——剑,下一期会教大家给剑添加事件等其他内容。
本期教程假定读者已经基本了解第八期(物品:基础)的内容。
提示:使用此附加包时,必须打开“假日创造者功能”实验性玩法!
static/image/hrline/line4.png
二、行为包文件示例与详解
示例:
{
    "format_version": "1.16.100",
    "minecraft:item": {
      "description": {
            "identifier": "demo:my_sword",
            "category": "equipment"
      },
      "components": {
            "minecraft:creative_category": {
                "parent": "itemGroup.name.sword"
            },
            "minecraft:max_stack_size": 1,
            "minecraft:hand_equipped": true,
            "minecraft:durability": {
                "max_durability": 600
            },
            "minecraft:damage": 10,
            "minecraft:enchantable": {
                "value": 10,
                "slot": "sword"
            },
            "minecraft:icon": {
                "texture": "my_sword"
            },
            "minecraft:display_name": {
                "value": "我的自定义剑"
            },
            "minecraft:repairable": {
                "repair_items": [{
                  "items": "minecraft:stick",
                  "repair_amount": "context.other->query.remaining_durability + 0.05 * context.other->query.max_durability"
                }]
            }
      }
    }
}
详解:
新物品需要唯一的标识符“identifier”,填写字符串。

在“description”对象中多了一个新的组件:“category”,填写字符串。
之前,这个组件出现在资源包文件中,
但1.16.100将附加包修改后,在行为包中必须要有这个组件,否则可能不会生效。
还要值得注意的是:
1.16.100以后的版本中,不再使用资源包文件,资源包文件的组件都将移植到行为包文件。

“components”定义了物品所使用的组件。让我们深入理解:

[*]“minecraft:creative_category”定义了创造模式下集合在那些物品组中间,是JSON对象,内含“parent”组件。
在“parent”后面填写物品组名称,可用物品组的表格如下:

类别      意思

itemGroup.name.anvil 铁砧
itemGroup.name.arrow 箭
itemGroup.name.axe 斧
itemGroup.name.banner 旗帜
itemGroup.name.banner_pattern 旗帜图案
itemGroup.name.bed 床
itemGroup.name.boat 船
itemGroup.name.boots 靴子
itemGroup.name.buttons 按钮
itemGroup.name.chest 箱子
itemGroup.name.chestplate 胸甲
itemGroup.name.concrete 混凝土
itemGroup.name.concretePowder 混凝土粉末
itemGroup.name.cookedFood 熟食
itemGroup.name.copper 铜块
itemGroup.name.coral 珊瑚
itemGroup.name.coral_decorations 珊瑚与珊瑚扇
itemGroup.name.crop 农作物
itemGroup.name.door 门
itemGroup.name.chalkboard 黑板(仅教育版)
itemGroup.name.dye 颜料
itemGroup.name.enchantedBook 附魔书
itemGroup.name.fence 栅栏
itemGroup.name.fenceGate 栅栏门
itemGroup.name.firework 烟花火箭
itemGroup.name.fireworkStars 烟火之星
itemGroup.name.glass 玻璃
itemGroup.name.glassPane 玻璃板
itemGroup.name.glazedTerracotta 带釉陶瓦
itemGroup.name.grass 草
itemGroup.name.helmet 头盔
itemGroup.name.hoe 锄
itemGroup.name.horseArmor 马铠
itemGroup.name.leaves 树叶
itemGroup.name.leggings 护腿
itemGroup.name.lingeringPotion 滞留药水
itemGroup.name.log 原木
itemGroup.name.minecart 矿车
itemGroup.name.miscFood 其他食物
itemGroup.name.mobEgg 刷怪蛋
itemGroup.name.monsterStoneEgg 被虫蚀的方块
itemGroup.name.mushroom 蘑菇
itemGroup.name.netherWartBlock 下界石英块
itemGroup.name.ore 矿石
itemGroup.name.permission (未知)
itemGroup.name.pickaxe 镐
itemGroup.name.planks 木板
itemGroup.name.potion 药水
itemGroup.name.pressurePlate 压力板
itemGroup.name.rail 铁轨
itemGroup.name.rawFood 生食
itemGroup.name.record 唱片
itemGroup.name.sandstone 砂岩
itemGroup.name.sapling 树苗
itemGroup.name.seed 种子
itemGroup.name.shovel 铲
itemGroup.name.shulkerBox 潜影盒
itemGroup.name.sign 告示牌
itemGroup.name.skull 头颅
itemGroup.name.slab 台阶
itemGroup.name.splashPotion 喷溅药水
itemGroup.name.stainedClay 陶瓦
itemGroup.name.stairs 楼梯
itemGroup.name.stone 石头(变种)
itemGroup.name.stoneBrick 石砖
itemGroup.name.sword 剑
itemGroup.name.trapdoor 活板门
itemGroup.name.walls 墙
itemGroup.name.wood 木头
itemGroup.name.wool 羊毛
itemGroup.name.woolCarpet 地毯

[*]“minecraft:durability”定义了物品的耐久度,是一个JSON对象。
它里面可以包含两个组件,我们今天只用其中之一。
“max_durability”是我们今天使用的,表明物品的耐久度,填写整数。
“damage_chance”是另一个,表示物品消耗耐久度的概率,填写浮点数(小数)。
[*]“minecraft:damage”定义武器的伤害点数,填写整数。
[*]“minecraft:enchantable”指定物品可以附魔上什么魔咒,是一个JSON对象。
其中的“slot”定义它可以被附上的魔咒类型。
可以是以下的其中之一:

类型 意思      

bow 弓
armor_feet 靴子
armor_torso 胸甲
armor_head 头盔
armor_legs 护腿
hoe 锄
axe 斧
pickaxe 镐
shovel 铲
sword 剑
elytra 鞘翅
fishing_rod 钓鱼竿
flintsteel 打火石
shears 剪刀
cosmetic_head (可能)装饰性头戴物

“value”未知有什么作用,填写10即可。
[*]“minecraft:icon”定义了物品的图标,填写字符串。
这个原本是资源包的文件,后来1.16.100更新移植到了行为包文件。
注意不要与item_texture.json中定义的不一样。
[*]“minecraft:display_name”定义了物品显示的名称,其中有
这里可以直接写物品的显示名称,也可以写lang代码,再在.lang文件中定义。
[*]“minecraft:repairable”定义了可以修复武器的物品,里面的“repair_item”数组就定义了这些。
“repair_item”里面的“items”定义了修复所使用的物品,填写字符串。
“repair_amount”定义了一次修复的耐久值,可以是整数,也可以是Molang表达式
这里的Molang表达式比较难懂,我们现在不用理解透彻,用的时候填整数(耐久值)或直接复制这个Molang表达式即可。

static/image/hrline/line3.png
三、item_texture文件示例
{
    "resource_pack_name": "demo",
    "texture_name": "atlas.items",
    "texture_data": {
      "my_sword": {
            "textures": "textures/items/my_sword"
      }
    }
}
static/image/hrline/line9.png
四、本期文件下载
行为包文件示例:
item_texture.json文件示例:
static/image/hrline/5.gif
预告:下一期会教大家在武器中添加事件

大家的打赏是对楼主最好的鼓励!
附加包教程系列导航
上一期下一期

Huanglaoke 发表于 2022-5-13 18:30:54

请教一下大神,我做的模组里的“彩虹神剑”一砍就破,耐久度太低了怎么办?

782 发表于 2022-5-13 18:34:21

Huanglaoke 发表于 2022-5-13 18:30
请教一下大神,我做的模组里的“彩虹神剑”一砍就破,耐久度太低了怎么办? ...

可以把“damage_chance”删了看一看
或者耐久度填的太高了

一只呆明球 发表于 2022-10-2 15:30:29

请问耐久度最高可以填多少[贴吧_太开心]

hdihd 发表于 2023-5-3 00:24:31

作者作者作者,怎么会巨大化

​qwq​​​​​ 发表于 2024-6-25 23:11:07

minecraft:enchantable的value越高,用附魔台附出的附魔越好
页: [1]
查看完整版本: 附加包教程第十期——物品:武器基础