Cat_Anchor 发表于 2024-12-11 19:31:11

附加包教程:55.物品目录

本帖最后由 Cat_Anchor 于 2025-6-7 15:33 编辑

自定义物品目录教程提示:本教程仅适用于基岩版 1.21.60.23 及以后的版本,而且要开启实验性玩法。




前言

在 1.21.60.23 中,官方加入了暑假时提及的“物品目录”功能,允许我们定义创造模式物品栏和配方书中自定义物品和方块的顺序,并为它们创建分组。
也就是说,以后的创造模式物品栏不会因为很多新物品而变得无比混乱了!

但在正式开始之前,我们要首先明白方块是如何进入创造模式物品栏的。


https://klpbbs.com/static/image/hrline/line5.png


方块物品

我们获得一个方块时,真正获得的其实是一个代表这个方块的物品。那为什么我们只需要在 blocks 文件夹中定义方块,而无需在 items 文件夹中定义对应的物品呢?因为方块物品默认是由基岩引擎自动创建的。

如果这个物品和方块的功能不一致,那么会用 item. 前缀来区分方块和方块物品,比如 minecraft:camera 和 minecraft:item.camera。

默认情况下,方块物品是不能修改的。但是,如果我们创建一个与方块 ID 相同的物品,并设置 minecraft:block_placer 组件的 replace_block_item 字段为 true,那么这个物品就会取代默认的方块物品。
{
"format_version": "1.21.60",
"minecraft:item": {
    "description": {
      "identifier": "complementary:acacia_crafting_table"
    },
    "components": {
      "minecraft:block_placer": {
      "block": "complementary:acacia_crafting_table",
      "replace_block_item": true
      }
    }
}
}
这个物品会继承方块的 menu_category 字段。同时,如果不添加 minecraft:icon 组件,这个物品还会显示为对应方块。


https://klpbbs.com/static/image/hrline/line7.png


物品目录

现在我们可以开始了。首先,需要在行为包根目录下创建 item_catalog 文件夹,打开之后新建 crafting_item_catalog.json 文件。打开这个文件,输入以下内容。
{
"format_version": "1.21.60",
"minecraft:crafting_items_catalog": {
    "categories": [
      {
      "category_name": "construction",
      "groups": [
          {
            "group_identifier": {
            "icon": "minecraft:oak_planks",
            "name": "minecraft:itemGroup.name.planks"
            },
            "items": [
            "namespace:identifier"
            ]
          }
      ]
      }
    ]
}
}
这里,categories 是一个列表,其中有若干个对象。每个对象都有一个 category_name 字段,指定要修改哪个选项卡。以下是 category_name 的所有可用值和描述。字段描述
construction建筑
equipment装备
items物品
nature自然
之后,我们可以在 groups 字段中指定物品顺序。groups 是一个列表,其中每个对象都可以指定一些物品的顺序,或者将一些物品变成一个物品组。

我们来看每个对象中的字段。

items:这是定义物品顺序的字段,是一个字符串列表。每个字符串都是一个物品 ID,物品会按照列表中从上到下的顺序出现在创造模式物品栏中。这是必需字段。

group_identifier:如果要创建一个新的物品组,或者要将自定义物品加入原版的物品组,我们就需要这个字段了。它是可选的,包含两个字段。

name:可以填写原版已有的物品组的 ID,或者自定义新的 ID。这两种写法都需要有命名空间。如果填写原版 ID,那么会将 items 中定义的物品按照顺序添加到原版物品组的末尾。如果填写自定义的 ID,那么会创建一个新的物品组。这时,这个 ID 也是新物品组的本地化键名,需要在语言文件中定义这个物品组的名称,否则会显示这个字符串。

icon:这是物品组的图标。需要填写物品 ID,填写后使用这个物品作为物品组的图标。


https://klpbbs.com/static/image/hrline/line7.png


旧字段

仅凭 crafting_item_catalog.json 文件,我们就可以定义物品在创造模式物品栏和配方书中的位置了。那方块和物品原本的 menu_category 字段呢?

目前它还能用于将物品添加到原版组里,也能将物品放进选项卡而不在组内,但是无法保证顺序,而且也似乎无法将物品放进自定义组里。
group 字段的值现在也需要命名空间了,与新标准统一。


https://klpbbs.com/static/image/hrline/line7.png


原版 ID

截至 1.21.60.23,以下是所有可用的原版物品组 ID 和名称。分组 ID名称
minecraft:itemGroup.name.planks木板
minecraft:itemGroup.name.walls墙
minecraft:itemGroup.name.fence栅栏
minecraft:itemGroup.name.fenceGate栅栏门
minecraft:itemGroup.name.stairs楼梯
minecraft:itemGroup.name.door门
minecraft:itemGroup.name.glass玻璃
minecraft:itemGroup.name.glassPane玻璃板
minecraft:itemGroup.name.permission权限方块 *
minecraft:itemGroup.name.slab台阶
minecraft:itemGroup.name.stoneBrick装饰石头
minecraft:itemGroup.name.sandstone砂岩
minecraft:itemGroup.name.wool羊毛
minecraft:itemGroup.name.woolCarpet羊毛地毯
minecraft:itemGroup.name.concretePowder混凝土粉末
minecraft:itemGroup.name.concrete混凝土
minecraft:itemGroup.name.stainedClay陶瓦
minecraft:itemGroup.name.glazedTerracotta带釉陶瓦
minecraft:itemGroup.name.dye染料
minecraft:itemGroup.name.ore矿石
minecraft:itemGroup.name.stone石头
minecraft:itemGroup.name.log原木
minecraft:itemGroup.name.leaves树叶
minecraft:itemGroup.name.sapling树苗
minecraft:itemGroup.name.seed种子
minecraft:itemGroup.name.crop农作物
minecraft:itemGroup.name.grass地被植物
minecraft:itemGroup.name.flower花
minecraft:itemGroup.name.rawFood生食
minecraft:itemGroup.name.cookedFood熟食
minecraft:itemGroup.name.miscFood其他食物
minecraft:itemGroup.name.mushroom蘑菇
minecraft:itemGroup.name.monsterStoneEgg被虫蚀的石头
minecraft:itemGroup.name.mobEgg生物蛋
minecraft:itemGroup.name.helmet头盔
minecraft:itemGroup.name.chestplate胸甲
minecraft:itemGroup.name.leggings护腿
minecraft:itemGroup.name.boots靴子
minecraft:itemGroup.name.horseArmor马铠
minecraft:itemGroup.name.sword剑
minecraft:itemGroup.name.axe斧头
minecraft:itemGroup.name.pickaxe镐
minecraft:itemGroup.name.shovel锹
minecraft:itemGroup.name.hoe锄头
minecraft:itemGroup.name.arrow箭
minecraft:itemGroup.name.potion药水
minecraft:itemGroup.name.splashPotion喷溅药水
minecraft:itemGroup.name.lingeringPotion滞留药水
minecraft:itemGroup.name.ominousBottle不祥之瓶
minecraft:itemGroup.name.bed床
minecraft:itemGroup.name.chalkboard黑板 *
minecraft:itemGroup.name.anvil铁砧
minecraft:itemGroup.name.chest箱子
minecraft:itemGroup.name.shulkerBox潜影盒
minecraft:itemGroup.name.record唱片
minecraft:itemGroup.name.skull生物头颅
minecraft:itemGroup.name.boat船
minecraft:itemGroup.name.chestboat运输船
minecraft:itemGroup.name.rail铁轨
minecraft:itemGroup.name.minecart矿车
minecraft:itemGroup.name.pressurePlate压力板
minecraft:itemGroup.name.trapdoor活板门
minecraft:itemGroup.name.enchantedBook附魔书
minecraft:itemGroup.name.banner旗帜
minecraft:itemGroup.name.firework焰火
minecraft:itemGroup.name.fireworkStars焰火炸药
minecraft:itemGroup.name.coral珊瑚块
minecraft:itemGroup.name.coral_decorations珊瑚装饰
minecraft:itemGroup.name.buttons按钮
minecraft:itemGroup.name.sign告示牌
minecraft:itemGroup.name.wood树木
minecraft:itemGroup.name.banner_pattern旗帜图案
minecraft:itemGroup.name.netherWartBlock下界疣
minecraft:itemGroup.name.candles蜡烛
minecraft:itemGroup.name.goatHorn山羊角
minecraft:itemGroup.name.compounds化合物 **
minecraft:itemGroup.name.products产品 **
minecraft:itemGroup.name.element元素 **
minecraft:itemGroup.name.chemistrytable化学设备 **
minecraft:itemGroup.name.bundles收纳袋
minecraft:itemGroup.name.sculk幽匿
minecraft:itemGroup.name.hanging_sign悬挂告示牌
minecraft:itemGroup.name.potterySherds纹样陶片
minecraft:itemGroup.name.smithing_templates锻造模板
minecraft:itemGroup.name.copper铜
注:带 * 的是教育版独有的分组,基岩版不可用。带 ** 的是教育版和开启了教育版选项的基岩版可用的分组。


https://klpbbs.com/static/image/hrline/line7.png


总结

这一期是关于物品目录的介绍。用这个,我们就可以获取一些正常无法获取的隐藏物品了,实现如下效果。https://pic.imgdb.cn/item/67597492d0e0a243d4e1d027.jpg




第五十四期 第五十五期 第五十六期

YanRan233 发表于 2024-12-11 23:38:53

感谢楼主教程[哔哩_打call]

RanHx 发表于 2024-12-14 00:06:29

感谢楼主教程

MC平方 发表于 2025-2-17 09:19:03

本帖最后由 MC平方 于 2025-2-17 10:07 编辑

这个组件在基岩正式版1.21.60.10中启用!

不需要开启任何实验性玩法,实测创建自定义物品分类组成功!测试版本1.21.60.10基岩正式版。
那么问题来了,这个自定义分类组的命名在语言文件中的格式是什么?
物品是item.前缀:命名空间=
那么这个自定义分类组的是?
页: [1]
查看完整版本: 附加包教程:55.物品目录