数据包
跳转到导航
跳转到搜索
本文章所述内容仅适用于Java版。
数据包(Data Pack)为玩家自定义Minecraft的游戏内容提供了更多新方法。
其中以下内容可被覆盖或添加,但不限于:
对数据包的修改并不等于修改了包含相同逻辑部分的游戏代码。
使用[编辑 | 编辑源代码]
数据包是可被添加到.minecraft/saves/<世界名称>/datapacks/
目录下的文件夹或.zip
压缩包。

- 添加数据包
- 在创建新的世界界面中,选择更多选项卡,然后点击数据包按钮并将数据包文件夹或压缩包拖入以选择要载入的数据包。与资源包界面类似,玩家可以方便地在世界生成之前启用数据包或自定义加载顺序。
- 玩家也可以手动在对应的世界存档文件中添加数据包。数据包文件应添加到世界存档文件的
.minecraft/saves/<世界名称>/datapacks/
目录下。
- 加载数据包
- 在玩家每次通过存档选择界面进入存档后,则游戏将在加载世界的同时尝试加载数据包。
- 在正在运行的游戏存档中,玩家可使用
/reload
命令来手动加载数据包内的注册项:战利品表、配方、进度、物品修饰器、谓词和函数。否则数据包一般不会自动重新加载。 - 对于剩余的数据包注册项(例如
damage_type
、dimension
、dimension_type
、enchantment
、instrument
、jukebox_song
、trim_material
、trim_pattern
和worldgen
)的数据必须依赖于世界加载。[1][2][3][4][5]也即,它们都无法直接通过在游戏内输入/reload
命令来加载,你必须重新进入世界(或重新启动服务器)。另外,这些注册项的数据文件若出现语法错误等,可能导致进入存档后出现“安全错误”提醒。
注意,要加载的数据包至少应满足以下两个条件,否则将加载失败:
- 数据包的
pack.mcmeta
文件被游戏成功检测。 - 数据包中的所有文件都无任何语法错误。
加载顺序:
- 禁用数据包
- 在已经载入的世界中,玩家可以使用命令
/datapack disable
来手动禁用一个数据包。执行成功后,游戏会自动重新加载一次数据包。
- 启用数据包
- 在已经载入的世界中,玩家可以使用命令
/datapack enable
来手动启用一个已经被禁用了的数据包。执行成功后,游戏会自动重新加载一次数据包。
内容[编辑 | 编辑源代码]
数据包由一系列指定的文件和目录结构组成。在数据包根目录下,必须包含一个pack.mcmeta
文件(数据包元数据文件)。该数据将被组织到命名空间中,以不同包的文件相互影响。文件将如下加载:
data/<命名空间>/<注册名>/<路径>.json
文件以ID<命名空间>:<路径>
被加载到<注册名>
注册表中。<注册名>
和路径
均可以包含正斜杠(/
)以表示子文件夹。- 标签将加载
data/<命名空间>/tags/<注册名>/<路径>.json
文件以添加名为#<命名空间>:<路径>
的<注册名>
标签。
文件夹结构[编辑 | 编辑源代码]
/
<数据包名称>:数据包根目录
pack.mcmeta*:数据包元数据。这是数据包根目录下唯一必要的文件。
pack.png:“选择数据包”界面中的图标。
data
<命名空间>:命名空间文件夹。关于命名空间,参见命名空间ID § 命名空间。
data
下可包含多个不同的命名空间文件夹。function:
<函数名称>.mcfunction
structure:
<结构名称>.nbt
- 以下所有文件均为JSON文件:
tags:包含多个子文件夹。详见标签 § 使用。
<注册名>:
<标签名称>.json
advancement:
<进度名称>.json
banner_pattern:
<旗帜图案名称>.json
cat_variant:
<猫变种名称>.json
chat_type:
<聊天类型名称>.json
chicken_variant:
<鸡变种名称>.json
cow_variant:
<牛变种名称>.json
damage_type:
<伤害类型名称>.json
datapacks:
<内置数据包名称>
dimension:
<维度名称>.json
dimension_type:
<维度类型名称>.json
enchantment:
<魔咒名称>.json
enchantment_provider:
<魔咒提供器名称>.json
frog_variant:
<青蛙变种名称>.json
instrument:
<山羊角乐器名称>.json
item_modifier:
<物品修饰器名称>.json
jukebox_song:
<音乐唱片音乐名称>.json
loot_table:
<战利品表名称>.json
painting_variant:
<画变种名称>.json
predicate:
<战利品表谓词名称>.json
pig_variant:
<猪变种名称>.json
recipe:
<配方名称>.json
test_environment:
<游戏测试环境名称>.json
test_instance:
<游戏测试实例名称>.json
trial_spawner:
<试炼刷怪笼配置数据名称>.json
trim_material:
<盔甲纹饰材料名称>.json
trim_pattern:
<盔甲纹饰图案名称>.json
wolf_sound_variant:
<狼音效变种名称>.json
wolf_variant:
<狼变种名称>.json
worldgen
biome:
<生物群系名称>.json
configured_carver:
<雕刻器名称>.json
configured_feature:
<地物名称>.json
placed_feature:
<已放置地物名称>.json
noise_settings:
<噪声设置名称>.json
noise:
<噪声名称>.json
density_function:
<密度函数名称>.json
multi_noise_biome_source_parameter_list:
<多噪声生物群系源参数表名称>.json
processor_list:
<方块处理器名称>.json
structure:
<结构名称>.json
structure_set:
<结构集名称>.json
template_pool:
<结构池名称>.json
flat_level_generator_preset:
<超平坦预设名称>.json
world_preset:
<世界预设名称>.json
pack.mcmeta
[编辑 | 编辑源代码]
当根目录中存在一个包含JSON格式数据的pack.mcmeta
文件时才能被Minecraft识别为一个数据包。
- :根对象。
- *pack:存放数据包信息。
- *description:一个文本组件,用于表示数据包的描述信息。在创建世界的数据包页面,或光标在
/datapack list
命令列出的数据包名称上悬停时,会显示此描述。 - *pack_format:数据包所支持版本的编号。如果此数值不匹配当前游戏版本需要的数值,数据包将显示警告信息,且在加载时需要额外确认。有关数据包版本编号的完整列表,请参阅§ 数据包版本。
- supported_formats:(可选)数据包所支持版本的数据包版本编号范围。
- 若类型为:仅支持一个版本,作用同pack_format。
- 若类型为:支持在某两个版本之间的所有版本。
- :2个版本编号,表示一个闭区间。指定的范围必须包含pack_format所表示的版本。
- 若类型为:支持在某两个版本之间的所有版本。与上标签作用等价。
- min_inclusive:最低兼容的数据包版本编号。
- max_inclusive:最高支持的数据包版本编号。
- *description:一个文本组件,用于表示数据包的描述信息。在创建世界的数据包页面,或光标在
- filter:(可选)包过滤器,用于指定数据包要忽略的文件。在block内被匹配到的任何模式都将形如其不在该数据包中存在。
- features:(可选)要启用的实验性内容。注意:如果添加了该字段,则该数据包需要在创建新世界的时候添加,否则在更改旧世界的level.dat前无法添加。
- *enabled:启用的内容,以命名空间ID的方式添加,可用的值有:
minecraft:trade_rebalance
(村民交易的平衡性调整)、minecraft:redstone_experiments
(红石实验性内容)和minecraft:minecart_improvements
(矿车改进)。
- *enabled:启用的内容,以命名空间ID的方式添加,可用的值有:
- overlays:(可选)指定要覆盖的部分,即应用在“标准”包内容上的子包。其目录是其自己的资源和
data
目录(存放于包的根目录下)。- *entries:覆盖列表。其顺序很重要,列表中的第一个对象将被首先应用。
-
- formats:指定一个版本编号范围,表示该包应在此范围的版本内加载。具体格式与supported_formats相同。示例:
16
,[16,17]
,{"min_inclusive": 16, "max_inclusive": 17}
- directory:各版本要覆盖的目录(允许的字符:
a-z
、0-9
、_
和-
)。
- formats:指定一个版本编号范围,表示该包应在此范围的版本内加载。具体格式与supported_formats相同。示例:
-
- *entries:覆盖列表。其顺序很重要,列表中的第一个对象将被首先应用。
- *pack:存放数据包信息。
1.21.5原版数据包(/datapack
命令显示为[Vanilla(内置)])中的pack.mcmeta
文件(你可以在客户端client文件或official server服务端文件中找到):

pack.mcmeta
json
{
"pack": {
"description": "The default data for Minecraft",
"pack_format": 71
}
}
data
[编辑 | 编辑源代码]
参见:命名空间ID
data
目录下可包含不同的命名空间目录,以存储不同的数据包内容。命名空间的名称只能使用小写英文字母、数字、-
和_
。原版命名空间目录为minecraft
,其中可包含了主要的原版数据。
每个进度、魔咒、函数、战利品表、画变种、谓词、配方、结构、狼变种、标签和伤害类型可以直接放入到对应的文件夹内,也可以放入到对应的文件夹下的子文件夹内。
在原版游戏中,数据将从两个位置加载:
- 版本.jar文件中,
data/minecraft
下的数据内容,即原版数据包(Vanilla Datapack)中的数据。 - 游戏存档文件中,
datapacks/<某数据包名>/data/<某命名空间>
下的数据内容,即玩家的自定义数据。- 若命名空间名为
minecraft
,则会尝试覆盖原版数据包中的数据内容。例如:datapacks/test/data/minecraft/banner_pattern/base.json
文件将会覆盖原版数据包中的data/minecraft/banner_pattern/base.json
文件。 - 若命名空间名不为
minecraft
,则不会覆盖原版数据包中的数据内容(即使与原版数据包命名空间下的文件结构相同)。此情况下,该包中的所有数据都是玩家新增的非原版数据。 - 若有2个以上的存档数据包中的命名空间名称相同,则会按照存档数据包的加载优先级覆盖相应的数据内容。
- 若命名空间名为
数据包版本[编辑 | 编辑源代码]
下表粗略描述了各正式版的数据包版本编号及其数据包内容的变化:
编号 | 正式版本 | 标志性/破坏性更改 |
---|---|---|
4 | 1.13–1.14.4 | 加入了初始的数据包版本编号4。 |
5 | 1.15–1.16.1 | 加入了谓词。 |
6 | 1.16.2–1.16.5 | 为自定义世界生成加入了实验性支持。 |
7 | 1.17–1.17.1 | /replaceitem 命令变为了/item 命令。set_damage 战利品函数现在需要一个有效的type字段。 |
8 | 1.18–1.18.1 | 加入了一系列实验性快照中世界生成的新特性。战利品表现在需要一个type字段。移除了对记分板、分数持有者和队伍名的长度限制。 |
9 | 1.18.2 | 加入了实验性数据包加入自定义结构和配置洞穴生成机制的支持。加入了密度函数,对自定义世界生成进行了更新。现在/locate 命令第一个参数为已配置的结构,而非一个结构类型,故对于那些成组的结构现在需要使用结构类型标签。例如/locate village 现在变为/locate #village 。 |
10 | 1.19–1.19.3 | 数据包元数据文件pack.mcmeta 现在带有一个filter字段。以/locate 命令合并了/locatebiome ,同时改变了其语法。 |
12 | 1.19.4 | 加入了伤害类型。移除了伤害谓词中的所有的布尔型标志,取而代之的是伤害类型标签。生物群系字段precipitation变为has_precipitation。 |
15 | 1.20–1.20.1 | 改变了告示牌的NBT。例如Text1 现在应为front_text.messages[0] 。所有在placed_block 、item_used_on_block 以及allay_drop_item_on_block 进度触发器中的字段,都已经被折叠到位置(location )字段中。重命名alternative 谓词为any_of 。 |
18 | 1.20.2 | 加入了函数宏。NBT中的状态效果现在为命名空间ID而非数值。例如1 现在为minecraft:speed 。 |
26 | 1.20.3–1.20.4 | 文本组件的解析变得更加严格。重命名grass 方块及物品为short_grass 。记分板可设置显示名称和数字格式。 |
41 | 1.20.5–1.20.6 | 重命名sweeping 魔咒为sweeping_edge 。改变了item_used_on_block 进度触发器的行为。将一些倍率超过127的状态效果的行为使用属性来替代。物品堆叠(Item Stack)相关的非结构化NBT数据被结构化的物品堆叠组件取代。重命名了谓词中的durability 、potions 、nbt 以及enchantments 字段。配方的合成物现在可以指定物品组件。世界生成数据格式中的整型和浮点型提供器不再包裹于靠近type 字段的额外字段value 中。加入了一个物品子谓词以及新的战利品函数。 |
48 | 1.21–1.21.1 | 加入了魔咒数据驱动和画变种的数据驱动。重命名物品子谓词中的enchantment 字段为enchantments 重命名诸如loot_tables 和tags/items 的旧版文件夹名为loot_table 和tags/item 。移除了火球power标签,并将其替换为acceleration_power。属性现在有单独的命名空间ID字段id ,而非一个name 和uuid 。 |
57 | 1.21.2–1.21.3 | 加入了trial_spawner 和instrument 子文件夹以用于配置试炼刷怪笼和山羊角乐器。为玩家子谓词加入了input字段。加入了新的实体子谓词,将进度触发器killed_by_crossbow 重命名为killed_by_arrow ,并加入了新可选物品谓词字段fired_from_weapon ,用于匹配发射箭的物品。加入了配方类型crafting_transmute ,移除了配方类型crafting_special_shulkerboxcoloring 。魔咒效果damage_item 被重命名为change_item_damage ,以允许负值。 |
61 | 1.21.4 | 移除了“冬季小更新”内置数据包和winter_drop 功能开关。 |
历史[编辑 | 编辑源代码]
Java版 | |||||||
---|---|---|---|---|---|---|---|
1.13 | 17w43a | 加入了数据包。 | |||||
17w46a | 加入了/datapack 命令,用于控制加载的数据包。 | ||||||
17w48a | 现在数据包可读取自定义配方。 | ||||||
18w01a | 崩溃报告中现在会列出启用的数据包。 | ||||||
1.15 | 19w38a | 加入了predicates 文件夹,可以在此处定义战利品表谓词。 | |||||
pre1 | 数据包版本号更改为5 。 | ||||||
1.16 | 20w22a | 稍微修改了数据包的加载机制,防止数据包带来的崩溃。 | |||||
游戏将会检测严重的数据包问题,比如关键标签的缺失,将会阻止世界的加载。 | |||||||
如果数据包加载失败,那么修改将不会被应用,游戏将会使用旧的数据包。 | |||||||
数据包列表仅在数据包成功加载后才会更改。 | |||||||
服务器添加了--safeMode 选项让游戏只加载原版数据包。 | |||||||
pre1 | 现在可以在创建世界之前加载数据包。 | ||||||
数据包现在可以添加和修改维度。 | |||||||
1.16.2 | 20w28a | 现在数据包可配置自定义世界生成。 | |||||
rc1 | 数据包版本号更改为6 。 | ||||||
1.17 | 20w45a | pack_version 被拆分,数据包和资源包现在使用相互独立的版本数字。 | |||||
20w46a | 由于MC-204861,数据包版本号更改为7 。 | ||||||
加入了item_modifiers 子文件夹。 | |||||||
1.18 | 21w37a | 由于加入了一系列实验性快照中世界生成的新特性,数据包版本号更改为8 。 | |||||
1.18.2 | pre1 | 现在可在实验性数据包中添加自定义结构,即游戏现在可生成并存储由数据驱动的配置的结构。 | |||||
现在可通过数据包对一些洞穴生成机制进行配置。 | |||||||
由于对数据包加入了以上新功能,数据包版本号更改为9 。 | |||||||
1.19 | 22w11a | 在pack.mcmeta中加入了filter 字段,用于按命名空间和正则表达式忽略低优先级数据包中的匹配内容。 | |||||
由于对数据包加入了以上新功能,数据包版本号更改为10 。 | |||||||
1.19.3 | 22w42a | 加入了chat_type 子文件夹。 | |||||
加入了datapacks 子文件夹,包含用于启用特定功能的原版数据包(功能数据包)。 | |||||||
原版世界生成数据包现在在游戏的jar文件中可见。故诸如dimension_type 、worldgen 之类的内容都可见。 | |||||||
1.19.4 | 23w03a | 数据包版本号更改为11 。 | |||||
23w06a | 加入了damage_type 子文件夹。 | ||||||
数据包版本号更改为12 。 | |||||||
1.20 | 23w12a | 数据包版本号更改为13 。 | |||||
23w16a | 数据包版本号更改为14 。 | ||||||
23w18a | 数据包版本号更改为15 。 | ||||||
1.20.2 | 23w31a | 数据包版本号更改为16 。 | |||||
数据包现在可以与多个游戏版本兼容。 | |||||||
23w32a | 数据包版本号更改为17 。 | ||||||
pre1 | 数据包版本号更改为18 。 | ||||||
1.20.3 | 23w40a | 数据包版本号更改为19 。 | |||||
23w41a | 数据包版本号更改为20 。 | ||||||
23w42a | 数据包版本号更改为21 。 | ||||||
23w43a | 数据包版本号更改为22 。 | ||||||
23w44a | 数据包版本号更改为23 。 | ||||||
23w45a | 数据包版本号更改为24 。 | ||||||
23w46a | 数据包版本号更改为25 。 | ||||||
pre1 | 数据包版本号更改为26 。 | ||||||
1.20.5 | 23w51a | 数据包版本号更改为27 。 | |||||
24w03a | 数据包版本号更改为28 。 | ||||||
24w04a | 数据包版本号更改为29 。 | ||||||
24w05a | 数据包版本号更改为30 。 | ||||||
物品或实体中存储的药水效果不再编码默认值。 | |||||||
24w06a | 数据包版本号更改为31 。 | ||||||
24w07a | 数据包版本号更改为32 。 | ||||||
24w09a | 数据包版本号更改为33 。 | ||||||
24w10a | 数据包版本号更改为34 。 | ||||||
加入了banner_pattern 和wolf_variant 子文件夹。 | |||||||
24w11a | 数据包版本号更改为35 。 | ||||||
24w12a | 数据包版本号更改为36 。 | ||||||
24w13a | 数据包版本号更改为37 。 | ||||||
24w14a | 数据包版本号更改为38 。 | ||||||
pre1 | 数据包版本号更改为39 。 | ||||||
pre2 | 数据包版本号更改为40 。 | ||||||
pre3 | 数据包版本号更改为41 。 | ||||||
1.21 | 24w18a | 数据包版本号更改为42 。 | |||||
加入了enchantment 、enchantment_provider 和painting_variant 子文件夹。 | |||||||
24w19a | 数据包版本号更改为43 。 | ||||||
24w20a | 数据包版本号更改为44 。 | ||||||
24w21a | 数据包版本号更改为45 。 | ||||||
将structures 、advancements 、recipes 、loot_tables 、predicates 、item_modifiers 和functions 文件夹重命名为对应的单数形式。 | |||||||
加入了jukebox_song 子文件夹。 | |||||||
pre1 | 数据包版本号更改为46 。 | ||||||
pre2 | 数据包版本号更改为47 。 | ||||||
pre3 | 数据包版本号更改为48 。 | ||||||
1.21.2 | 24w33a | 数据包版本号更改为49 。 | |||||
加入了instrument 子文件夹。 | |||||||
24w34a | 数据包版本号更改为50 。 | ||||||
24w35a | 数据包版本号更改为51 。 | ||||||
加入了trial_spawner 子文件夹。 | |||||||
24w36a | 数据包版本号更改为52 。 | ||||||
24w37a | 数据包版本号更改为53 。 | ||||||
24w38a | 数据包版本号更改为54 。 | ||||||
24w39a | 数据包版本号更改为55 。 | ||||||
24w40a | 数据包版本号更改为56 。 | ||||||
pre1 | 数据包版本号更改为57 。 | ||||||
1.21.4 | 24w44a | 数据包版本号更改为58 。 | |||||
24w45a | 数据包版本号更改为59 。 | ||||||
24w46a | 数据包版本号更改为60 。 | ||||||
pre2 | 数据包版本号更改为61 。 | ||||||
1.21.5 | 25w02a | 数据包版本号更改为62 。 | |||||
加入了pig_variant 子文件夹。 | |||||||
25w03a | 数据包版本号更改为63 。 | ||||||
加入了test_environment 和test_instance 子文件夹。 | |||||||
25w04a | 数据包版本号更改为64 。 | ||||||
加入了cat_variant 和frog_variant 子文件夹。 | |||||||
25w05a | 数据包版本号更改为65 。 | ||||||
加入了cow_variant 子文件夹。 | |||||||
25w06a | 数据包版本号更改为66 。 | ||||||
加入了chicken_variant 子文件夹。 | |||||||
25w07a | 数据包版本号更改为67 。 | ||||||
25w08a | 数据包版本号更改为68 。 | ||||||
加入了wolf_sound_variant 子文件夹。 | |||||||
25w09a | 数据包版本号更改为69 。 | ||||||
25w10a | 数据包版本号更改为70 。 | ||||||
pre2 | 数据包版本号更改为71 。 |
参见[编辑 | 编辑源代码]
外部链接[编辑 | 编辑源代码]
- misode.github.io,一个数据包生成器。
- Pack.mcmeta Generator on misode.github.io,pack.mcmeta生成器。
参考[编辑 | 编辑源代码]
导航[编辑 | 编辑源代码]
基本概念 | |||||||||
---|---|---|---|---|---|---|---|---|---|
数据包 |
| ||||||||
资源包 | |||||||||
相关条目 | |||||||||
相关教程 | |||||||||
参考实例 |
|
版本 | |||||
---|---|---|---|---|---|
开发周期 |
| ||||
技术 |
| ||||
多人游戏 | |||||
游戏订制 |