教程:制作数据包

教程:制作数据包

本教程介绍的是Java版制作数据包的方法。关于基岩版上与之功能类似的行为包,请见“Tutorial:制作行为包”。

本文章所述内容仅适用于Java版。

本教程包含Java版1.21.5至最新预览版内容

若发现版本内容不匹配等问题,请帮助我们扩充或修改

本教程建议学习者事先具备命令方块和JSON、SNBT基础

在不熟悉这些前置知识的情况下学习可能会遇到很多额外问题

该教程的编辑正在进行中。 讨论

请帮助我们扩充或改进它。附加说明:补充§ .json文件中的具体方法和细节,加入数据包调试相关的操作介绍

本教程介绍如何制作数据包。数据包允许玩家添加或修改函数、战利品表、世界结构、进度、配方、谓词、标签、维度和自定义世界生成等Minecraft游戏内容。

目录

1 概述

2 准备工作

2.1 相关问题

3 创建数据包

3.1 pack.mcmeta

4 添加内容

4.1 命名空间

4.2 命名空间ID和注册表

4.3 创建并运行函数

4.4 函数概要

4.5 .json文件

4.6 JSON和SNBT结构补全

4.7 .nbt结构文件

4.8 与资源包共同作用

5 开发工具和实用程序

6 参见

6.1 实例

7 导航

概述[编辑 | 编辑源代码]

数据包是什么?

数据包可以是一个文件夹或压缩包,你可以通过数据包在原版自定义一些游戏内容。

数据包是MOD吗?它们的区别是什么?

若将Minecraft结构分解为如下几个部分:

源代码层:指和游戏源代码直接相关的部分。MOD一般属于这一层,且是第三方的(比如Fabric、Forge等)。

数据驱动层:可通过源代码生成或修改,源代码也通过这一层读取和处理附加的数据和资源信息。资源包和数据包属于这一层,你可以编写原版数据包,也可以编写属于第三方MOD的数据包。

游戏层:游戏完全正常运行时与玩家产生直接交互的部分。此时不涉及对游戏源代码以及游戏文件的修改。大多数游戏内具体玩法属于这一层。

数据包开发者一般在数据驱动层和游戏层进行创作,而MOD开发者则面向这全部3个层。

总之,MOD和数据包都是一种修改和添加新内容的方法,只不过它们面向的层不同,所以在开发方式、自由度方面存在差异。数据包的开发过程一般没有MOD直接,并且存在很多局限性,MOD虽然在开发上非常自由,但是整体开发环境比较庞大,涉及的知识面也更广,并且可能存在很多兼容性问题。

制作数据包可以干嘛?

为游戏本体或MOD本体添加内容。在原版,你可以通过数据包添加配方。在很多MOD中,你也可以使用数据包添加配方或者其他的一些自定义内容。但这一般都需要遵循游戏jar所事先规定好的格式,所以你也可能需要具备一些阅读源代码的技巧。

原版地图创作。每个游戏存档都可以绑定若干属于该存档的数据包。为了追求地图开发的便捷性,直接使用数据包是个不错的选择。

在原版实现仿MOD内容。由于数据包局限性,数据包很多时候并不能做到真正意义上添加一个不同的游戏对象。在这种有限条件下创作出“完全不像是原版能够实现”的内容也是制作数据包的乐趣之一。

准备工作[编辑 | 编辑源代码]

本节主要内容为安装VSCode软件及配置相应插件。VSCode是如今很多数据包制作者都常用的编辑软件,可以很方便地安装插件,有些插件可极大提升编辑体验。

VSCode官网

点击以上链接进入官网后,点击左下角的“Download for”按钮以安装官网所推荐的VSCode版本。右上角的“Download”按钮可以手动选择要安装的VSCode平台版本。更详细的安装细节在此不过多阐述。

安装完成后,打开VSCode。如果你的界面语言为英文,可以在侧边栏找到“Extension”图标,点击后在展开区域上方的输入框中输入“Chinese”,找到“Chinese (Simplified) ”(简体中文)或“Chinese (Traditional) ”(繁体中文)并点击“Install”按钮以安装中文语言套件。

点击侧边栏的“Extension”(插件)图标,在搜索框中输入“mcfunction”,找到“syntax-mcfunction”插件,点击“Install”(安装)按钮安装。

点击侧边栏的“Extension”(插件)图标,在搜索框中输入“spyglass”,找到“Datapack Helper Plus by Spyglass”插件,点击“Install”(安装)按钮安装。

安装syntax-mcfunction插件

安装Datapack Helper Plus by Spyglass插件

请确保你已经安装了“syntax-mcfunction”插件,否则“Datapack Helper Plus by Spyglass”可能无法运行。

相关问题[编辑 | 编辑源代码]

此段内容过长,请通过显示按钮阅读

该章节主要讲述了插件安装失败的一种解决方法,你可以先跳过该章节。

如果在初始化Spyglass时弹出连接错误提示,则可参考如下解决方法:

进入网址https://tool.chinaz.com/dns,点击“查询DNS”,输入raw.githubusercontent.com,在查询出的“解析内容”中选择一个地址复制。

然后在你的操作系统中找到hosts文件。Win11系统中,该文件位于C:\Windows\System32\drivers\etc。你可以右键hosts文件,选择“用VSCode”打开。在hosts文件中添加你刚才复制的地址,并随后加上raw.githubusercontent.com。例如:

185.199.111.133 raw.githubusercontent.com

同样方法,继续添加github.com的DNS解析地址:

185.199.111.133 raw.githubusercontent.com

20.205.243.166 github.com

然后按Ctrl+S保存。此时如果弹出无法保存的提示,请选择“Retry as Admin”(以管理员权限重试),之后便成功保存。

为了确保插件初始化正常,之后应点击“Datapack Helper Plus by Spyglass”的齿轮图标,选择“Uninstall”(卸载)以卸载插件,然后再次安装。

现在,在你的命名空间新建一个函数文件:

DHP插件的命令自动补全效果

Test

data

test

function

test.mcfunction

pack.mcmeta

在函数中键入命令,看看是否会有自动补全提示框出现。如果没有任何影响,或依然出现插件错误提示,可以在你的工作区根目录中添加一个spyglass.json文件:

TEST

spyglass.json

data

test

function

test.mcfunction

pack.mcmeta

spyglass.jsonjson

{

"env": {

"dataSource": "jsDelivr"

}

}

该解决方案来自:Spyglass Issue#1445 - Server initialization failed。

然后再关闭VSCode,重新进入。若等待一段时间后插件依然报错后无法正常使用,你可再尝试卸载“Datapack Helper Plus by Spyglass”插件,重复该章节的步骤。

创建数据包[编辑 | 编辑源代码]

参见:命令 § datapack、​Java版存档格式以及.minecraft

在1.21.6以上的正式版,你可以按照如下步骤创建数据包:

在聊天栏执行命令:/datapack create my_example "这是一条介绍"

进入游戏,在单人游戏“选择世界”界面,选中一个世界,点击左下角的“编辑”按钮。

在“编辑世界”界面中,点击“打开世界文件夹”按钮。

在弹出的系统界面中,找到datapacks文件夹。

进入datapacks文件夹中,你可以看到使用/datapack create命令所新建的my_example数据包。

在1.21.5及以下的版本,除了第一步执行的命令不可用外,其余步骤大致相同。总之,你应确保在存档datapacks目录中包含以下结构的文件夹:

my_example

data

pack.mcmeta

pack.mcmeta[编辑 | 编辑源代码]

参见:数据包 § pack.mcmeta

pack.mcmeta是数据包所必须的文件,因为Minecraft通过该文件识别数据包。

生成的数据包中已经包含该文件。你还可以尝试修改pack.mcmeta的内容:

pack.mcmetajson

{

"pack": {

"pack_format": 80,

"description": "§6教程数据包",

"supported_formats": [26, 100]

}

}

pack_format是数据包的版本编号。在游戏内按下F3+V后将显示当前游戏的版本信息,其中pack_data即当前游戏对应的数据包版本编号。历史版本编号参见数据包 § 数据包版本。如果你认为你的数据包不止支持这一个版本,则还可以通过supported_formats设置数据包的版本编号范围。

更多字段建议对照数据包 § pack.mcmeta,并在VSCode中自动补全相关字段(自动补全由之前所安装的DHP插件提供)。默认情况下,按Tab ↹即可自动补全提示框中的所选字段。

虽然pack_format等版本编号字段与对应版本不匹配时,会在数据包选择界面中将该数据包渲染为“不兼容的数据包”,但这并不代表该数据包在该版本下一定无法运作。实际上,版本编号一般用于提醒用户尽量选择更合适的版本而非“唯一可用的版本”。数据包的文件结构和文件内容才是决定数据包加载是否成功的核心因素。

执行/datapack list,看看你的数据包是否已经启用:

已启用2个数据包:[vanilla(内置)],[file/my_example(世界)]

如果/datapack list命令执行后没有看到你的包,请检查:

是否保存了pack.mcmeta文件。若未保存,则该文件可能为一个不包含任何内容的空文件,游戏将不会读取到任何关于数据包的内容。

是否保证了pack.mcmeta文件的JSON语法正确。一般情况下,JSON语法错误会直接在配置好插件的VSCode中以红色标示出来。你应检查是否缺漏大括号{}、逗号,、冒号:,双引号"",方括号[]。请记住,对于每个左大括号、双引号或方括号,必须有一个右大括号、双引号或方括号与之配对;JSON中的每一个字段名都必须被双引号包括(这可不是SNBT!)。

添加内容[编辑 | 编辑源代码]

命名空间[编辑 | 编辑源代码]

主条目:命名空间

data中允许包含多个命名空间,比如:

my_example

data

test:test命名空间。

minecraft:原版命名空间。

注意,数据包中的命名空间、路径、文件夹名和文件名应仅包含以下符号:

0123456789 数字

abcdefghijklmnopqrstuvwxyz 小写字母

_ 下划线

- 连字号(减号)

/ 正斜杠(不能用于命名空间)

. 句号(不能用于命名空间)

首选命名格式为以下划线隔开的小写字母单词(lower_case_with_underscores),称为蛇形命名法(lower snake case)。

本教程中使用test作为data中的新增的命名空间(你可以根据你的喜好使用其他名称,但是请使用英文和下划线,不要出现其他字符)。最重要的是,请让命名空间保持独特性,这样可以最大限度地防止数据包冲突。如果实在想不出好的命名空间,不妨使用你的游戏ID。

以上便完成了数据包基本文件夹结构的创建。

命名空间ID和注册表[编辑 | 编辑源代码]

主条目:命名空间ID和注册表

创建并运行函数[编辑 | 编辑源代码]

主条目:数据包 § 文件夹结构和Java版函数

在VSCode工作区中的数据包文件夹

完善之前所创建的空数据包:

使用VSCode打开 datapacks文件夹(你可以直接拖拽到空的VSCode工作区中)。

点击工作区的图标“New File”(新建文件)以及“New Folder”(新建文件夹),创建如下的目录结构:

<世界存档文件夹>

datapacks

my_example

pack.mcmeta:数据包元数据文件。该文件必须存在。

data

test:test命名空间。

function:test命名空间下的函数文件夹(在1.21及以上版本,函数文件夹是function而非functions)。

tick.mcfunction:test:tick函数。

load.mcfunction:test:load函数。

minecraft:原版命名空间。

tags:原版标签文件夹。

function:原版函数标签文件夹。

tick.json:原版刻函数,将自动在每一刻执行其中的函数。

load.json:原版加载函数,将在加载数据包时执行。

函数文件必须在命名空间目录下的function目录或其子目录中。函数文件的后缀名必须是.mcfunction,在正在运行的世界中可通过/reload命令重新加载。

现在,完善刻函数和加载函数:

data/test/function/tick.mcfunctionmcfunction

execute as @a at @s run tp @s ~ ~0.5 ~

data/test/function/load.mcfunctionmcfunction

tellraw @a "加载成功!"

# 如果不存在最近的一位玩家,则在1s后又运行该函数,这将保证该函数在加载世界阶段过后可以选择到玩家。

execute unless entity @p run schedule function test:load 1s

以上两个函数通过原版标签驱动:

data/minecraft/tags/function/tick.jsonjson

{

"values": [

"test:tick"

]

}

data/minecraft/tags/function/load.jsonjson

{

"values": [

"test:load"

]

}

这样,当你进入存档或执行/reload后,你将看到提示信息,并且在存档运行的每一刻,你都将被向上传送0.5格。

函数概要[编辑 | 编辑源代码]

函数是一系列顺次执行的命令。如果你还不熟悉各种命令的格式,建议参照各命令子页面的示例,在游戏内运行后查看实际效果。在数据包中,函数以函数文件的形式存在,文件中的每一行都可代表一条完整的命令。

每个函数可以看做一系列从上到下依次执行的多条命令。在同一个函数内,每条命令的起始位置都有相同的命令上下文参数(参阅命令上下文 § 行为)。对于原版数据包函数的问题可归结为如何控制这些环境参数的问题(在社区中有很多玩家将命令上下文称为执行环境)。数据包函数的核心命令为/execute,读者可以结合命令上下文条目中的介绍进行实际操作,这样更易理解其内涵。

在行与行之间,可新增以#开头的注释行,以记录编写思路。在读取函数时,注释行会被忽略,所以不用担心注释内的内容是否会出现读取问题。如果你准备将你的数据包分享给其他数据包用户,并且他们有可能阅读你的函数代码,则可添加更为详细的注释。

在VSCode的DHP插件支持下,你可以用不同数量的#开头以对注释进行分层。对于几行连续的注释,会将其中开头#数量最多的注释渲染为粗体。比如:

data/test/function/test.mcfunctionmcfunction

## 这是一段示例(本行注释文字将会被加粗)

say 1

### 这是另一段示例(本行注释文字将会被加粗)

## 这是该段示例的子部分

# 这是该段示例的一个二级子部分

execute as @s run tp @s ~ ~10 ~

要注意,虽然聊天栏中的命令可以带前导斜杠,但在函数中这是不允许的:

# 在函数中这样写会报错

/execute as @s run tp @s ~ ~10 ~

如果一个函数文件中的某条命令无法解析,则会导致其所在的整个函数无法运行。例如以下函数:

data/test/function/test.mcfunctionmcfunction

say Hi

tp @s ~ ^ ~

setblock ~ ~ ~ diamond_block

虽然该函数文件所在的路径正确,但由于其中的tp命令有语法错误(相对坐标和局部坐标混用)——不仅是错误的那一行,其中的所有语句都会失效。

有时候,你需要在函数中书写大量的SNBT:

give @s stick[consumable={animation:"crossbow", consume_seconds:2.0, has_consume_particles:false, sound:"block.anvil.break"}]

将给予玩家一个木棍,该木棍挂载了一个consumable组件,组件的具体数据以SNBT表示。显然,这种书写方式比较拥挤,在阅读时也不够清爽,不妨写为下面这种格式:

give @s stick[consumable={\

animation:"crossbow", \

consume_seconds:2.0, \

has_consume_particles:false, \

sound:"block.anvil.break" \

}\

]

添加换行和缩进后就很容易看出SNBT的结构了。但是要注意,行之间必须添加反斜杠来进行承接。

有些时候,我们希望命令中的某些部分是运行时可变的。比如,我们希望给予一个和玩家当前主手所选中的物品的ID一样的物品。你可能会想到用以下的穷举方法:

execute if items entity @s weapon.mainhand minecraft:acacia_boat run give @s minecraft:acacia_boat

execute if items entity @s weapon.mainhand minecraft:acacia_button run give @s minecraft:acacia_button

# ... 此处省略若干对物品ID的穷举

显然,这种方法效率很低,而且将带来极大的工作量。以上命令其实都具有同一种结构:execute if items entity @s weapon.mainhand <物品ID> run give @s <物品ID>——将命令中的某一个部分暂时使用一个未知量来填充:

data/test/function/macro_test.mcfunctionmcfunction

$execute if items entity @s weapon.mainhand $(id) run give @s $(id)

这里的未知量$(id)中的名称是可以自定义的,但是要注意,括号中的名称不能使用中文或其他符号。具体允许的符号可参考该章节所对应的主条目。

接下来,只需要获取玩家主手物品的ID即可。因为我们可以直接传递主手物品ID到以上的宏函数中,$(id)将被替换为传入的物品ID:

# 将玩家手持物品ID存储在xclib:data这个命令存储的arg.id标签中

data modify storage xclib:data arg.id set from entity @s SelectedItem.id

# 将xclib:data命令存储的arg复合标签传递给宏函数

function test:macro_test with storage xclib:data arg

为了将参数传递给宏函数,必须先将参数封装进一个复合标签。在成功获取到玩家手持物品ID后,命令存储的SNBT可能为:

{arg:{id:"minecraft:apple"}}

表示为树状图:

arg

id:minecraft:apple

显然,这里的id与宏函数中的id匹配:

data/test/function/marco_test.mcfunctionmcfunction

$execute if items entity @s weapon.mainhand $(id) run give @s $(id)

最终宏函数将变为一条普通命令:

data/test/function/marco_test.mcfunctionmcfunction

execute if items entity @s weapon.mainhand minecraft:apple run give @s minecraft:apple

虽然宏函数让命令变得非常灵活,但是要注意,宏函数有较高的额外开销,可能对性能造成很大影响。在服务器中也要谨慎使用宏函数,使用时必须考虑宏函数所带来的副作用。

在游戏规则sendCommandFeedBack为true且每次以玩家的身份运行函数(玩家主动运行或通过/execute)时,均会返回一行“已执行函数example:test中的x条命令”。在某些场景下,你可能并不希望玩家看到这条信息,将这条规则手动设置为false即可。另外,如果你使用循环型命令方块高频执行某个函数时可能会收到大量命令方块消息,此时通过命令/gamerule commandBlockOutput false关闭即可。

在函数中允许通过function命令来调用其他函数,也可以直接调用自己。核心的要点是,被调函数会继承原来的执行环境(继承命令上下文参数)。

如下,在该函数中,先使用execute命令改变上下文参数中的执行者为“距离执行位置最近的一个实体”,然后调用了另一个函数:

data/test/function/call_other_function.mcfunctionmcfunction

say 在主调函数中,我是:@s

execute as @n run function test:func1

data/test/function/func1.mcfunctionmcfunction

say 在被调函数中,我是:@s

如果你在世界中的某个位置放置命令方块,并设置命令然后启动命令方块:

则会看到输出的两个名称都是相同的(如果找不到这输出为空)。

如果改为调用自己:(这被称为递归执行)

data/test/function/call_other_function.mcfunctionmcfunction

execute as @n run function test:call_other_function

则会发生瞬间(1刻内)的多次循环。你会看到聊天栏输出大量的“在主调函数中,我是:XXX”——该函数递归并且无条件地执行,直到累计达到单刻最大命令数后终止执行。所以对于递归函数,一定要考虑递归边界(让递归终止的条件),防止递归函数的执行次数过多——这会造成函数性能被极大消耗。

在VSCode中,DHP插件提供了函数跳转功能。只需要指向/function命令后的函数命名空间ID,按住Ctrl的同时点击鼠标左键即可。

DHP插件所提供的函数跳转功能

另外,如果你学过一些编程语言,前文的函数文件其实可以大概描述为如下的Python风格伪代码:

def test:test(flag) -> int:

say 运行中...

execute as @s run tp @s ~ ~10 ~

# 发现魔法羊

execute if entity @e[tag=magical_sheep,limit=1] run \

function test:found_magical_sheep()

exec(f'''execute if score #{flag} var matches 0 run return fail''')

return 1

.json文件[编辑 | 编辑源代码]

注意:诸如魔咒、盔甲纹饰图案、盔甲纹饰材料等都无法直接通过/reload命令来重新加载。你应通过重进世界来加载。

在数据包中,.json文件占据了很大一部分,比如进度、战利品表、配方、魔咒等。

在编写时,推荐的方式是先解压相应版本的原版.jar包,从解压后的.jar包中找到data文件夹,该文件夹即原版数据包的data文件夹。在编写任何一个JSON文件时,你都可在其中找到相应的文件作为参考范例,同时对照wiki中的数据格式页面进行修改或扩充。

如果你不知道哪些文件可以是JSON文件,可以参考数据包 § 文件夹结构。你只需要确保相应的JSON文件在其目录或子目录中即可。

JSON和SNBT结构补全[编辑 | 编辑源代码]

Spyglass的DHP插件提供了非常强大的自动补全功能。善加利用,你可以非常方便地编写大量字段而无需查看其他参考文档。

查看字段描述信息

查看字段类型,这里带有方括号,表示它之后是一个元素为MyQuest的列表

.nbt结构文件[编辑 | 编辑源代码]

参见:教程:自定义结构生成

结构可以用于结构方块或拼图方块,也可以覆盖Minecraft中原版结构的外观。结构以NBT格式存储,你可以使用结构方块创建NBT文件。MCEdit之类的第三方软件也可以导出NBT文件。

当你使用结构方块成功保存一个结构后,在.minecraft/saves/temp/generated/test/structures/目录及其子目录下,可以看到你保存的.nbt文件。例如,我在结构方块所输入的结构名为test:bar,那么保存后的结构文件路径为:.minecraft/saves/temp/generated/test/structures/test/bar.nbt。

在你的命名空间文件夹中,你可以创建structure文件夹,然后放入刚才通过结构方块保存的结构文件。

与资源包共同作用[编辑 | 编辑源代码]

在很多地图或服务器玩法中,往往需要数据包和资源包共同搭配。在社区中,很多优秀作品也由于其独特的美术风格而脱颖而出。对于这种在非MOD环境下通过资源包或数据包制作“新方块”或“新生物”的游戏包,一些社区玩家将其称为“原版模组”。

以下是一些相关教程:

教程:Java版自定义物品

教程:自定义盔甲纹饰

在开发服务器级或模块式的数据包时,你可能需要使用外部工具进行代码生成——包中有大量重复且需要进一步抽象的逻辑层。为了提高互操作性,提高开发效率,你可以考虑使用类似Beet的工具。在设计上,你可将Beet当做“中间处理工厂”——你可以利用Python编写Beet Plugin,并对已有的包文件施加影响。在已有的社区项目中,Gamemode4项目是典型的使用Beet开发的中大型数据包族。

开发工具和实用程序[编辑 | 编辑源代码]

现在有很多的工具可以帮助你更容易地编写数据包。以下列表包含了一些转换器以及语法高亮插件相关的软件工具。对于这些第三方的程序,要谨慎安装——这些程序并没有受到严格监控,可能包含恶意软件。

IDE或编辑器中的语法高亮插件

名称

支持的IDE或编辑器

描述

所支持的最新游戏版本

syntax-mcfunction

Visual Studio Code以及Sublime Text

提供函数文件的语法高亮

1.21.7

Spyglass

VS Code、VSCodium

提供了语法补全、语法错误检查和目标选择器性能提示等

1.21.7

Datapack Icons

Visual Studio Code

一个比较花俏的,带有minecraft风格图标的主题,专为数据包开发者设计

1.21

Minecraft Command DevKit

IntelliJ IDEA

满足了模组和函数文件的协同调试需求

1.21

MCFunction.xml

Notepad++

语法高亮

1.13.3

转译器和框架

名称

描述

所支持的最新游戏版本

Beet

Minecraft包开发工具和基于Python的转义器。

1.21.6或更高

MC-build

数据包预编译语言

1.21

Sandstone

Typescript语言的Minecraft数据包库

1.20.6

TMS Transpiler

一个Python工具,可以将带缩进的函数代码汇编为数据包中的有效文件。

1.21

ObjD

数据包构建框架,旨在尽量减少数据包开发中的重复性工作。

1.20.4

Minity

另一种可编译为数据包的脚本语言,使用Node.js编译器。

1.18

Minecraft Script

基于JavaScript的语言,可以通过Node.js编译器被编译为处于工作状态中的数据包。

1.13.3

可视化生成器

名称

类型

描述

所支持的最新游戏版本

Misode's Data Pack Generators

Website

面向Minecraft数据包的JSON生成器

1.21

MCStacker

Website

一个命令生成器集合

1.21

MCreator

Program

一个易于使用,功能齐全的图形工具,用于创建数据包和模型。

1.20.4

MCDatapacker

Program

一个用于创建和编辑数据包的离线程序

1.20.4

NBTData Pack Generator

Website

一个在线生成器,用于没有任何功能的原始数据包框架。

1.20.2

Minecraft Recipe Generator

Website

一个在线生成器,用于制作自定义配方。

1.20.1

Recipe Generator

Website

一个在线生成器,生成合成所需的JSON文件。

1.20

Datapack Creator

Program

一个IDE,用于使用一些有用的工具创建数据包。

1.17

Minecraft Tools Recipe Generator

Website

一个在线生成器,用于生成合成所需的JSON文件。

1.12

Origin Creator

Website

一个功能齐全的数据包web工具。

未知

参见[编辑 | 编辑源代码]

数据包

资源包

Tutorial:安装数据包

实例[编辑 | 编辑源代码]

射线投射

消除视线

导航[编辑 | 编辑源代码]

编Java版可自定义内容

基本概念

注册表

命名空间ID

标签

命令

命令存储

命令上下文

NBT格式

NBT路径

SNBT格式

JSON

文本组件

格式化代码

UUID

数据包

函数

结构模板

声音事件

注册

定义格式

聊天类型

对话框

伤害类型

魔咒

魔咒提供器

唱片机曲目

猫变种

青蛙变种

猪变种

牛变种

鸡变种

狼变种

狼音效变种

画变种

山羊角乐器

试炼刷怪笼配置数据

旗帜图案

盔甲纹饰

测试环境

测试实例

游戏行为

战利品表

战利品上下文

随机序列

物品修饰器

谓词

配方

进度

实体谓词

世界生成

维度

维度类型

世界预设

超平坦预设

噪声

噪声设置

密度函数

生物群系

雕刻器

已配置的地物

已放置的地物

结构

结构集

结构池

处理器列表

资源包

纹理

模型

物品模型映射

字体

着色器

声音事件

相关条目

属性

数据组件

数据组件谓词

粒子数据格式

实体数据格式

方块实体数据格式

物品格式

存档格式

世界生成

数据生成器

相关教程

安装数据包

制作数据包

自定义盔甲纹饰

参考实例

官方实例

洞穴与山崖预览数据包

实验性内置数据包

示例数据包

教程实例

实例:射线投射

实例:视线魔法

编教程

新手教程

下载、安装与购买

成功地启动游戏

菜单屏幕

游戏术语

计量单位

不该做的事

新手生存

新手指南

第一天

第二天

第三天

提示与技巧

饥饿管理

生存注意事项

庇护所

庇护所

沙漠

微型

最佳居住生物群系

最佳建筑材料

建筑与结构

房屋类型

导航

综合

无聊的时候做什么

跑酷

空置域

伪和平

节省时间的小窍门

在水下利用TNT破坏方块

成就指南[仅BE]

进度指南[仅JE]

Minecraft

下界

末地

冒险

农牧业

最佳附魔指南

拓殖

战斗

完成冒险

双持

探索洞穴

利用碰撞箱

使用地图

测量距离和角度

采矿技术

钻石

化石

远古残骸

下界快速旅行

下界传送门

支柱跳跃

幻翼防护

生成骑士

穿越和破坏基岩

防卫僵尸围城[仅JE]

考古

不可破坏的末地水晶

使用更少的末地水晶重生末影龙

区块加载器

透视镜

挂机池

整理物品

潜影盒储存

物品运输

生物运输

自动化烧炼

选择燃料

爆炸室

凋灵笼

光速船[仅BE]

无材料消耗转换药水类型[仅BE]

在超平坦世界中管理史莱姆

减少摔落伤害

Minecraft和教育

视频

游戏直播

村民和交易

村庄生存

创建村庄

村庄机制

治愈僵尸村民

村民养殖

村民交易所

流浪商人陷阱

建筑

给工程添加美感

空气闸

建筑术语

建造游轮

建造大都市

建造过山车

建造安全的家园

建造水建筑

建造几何体

防御

家具

电梯

带釉陶瓦的图案

建造地板

像素艺术

牧场

屋顶类型

弧形屋顶

屋顶建造指南

暗门

建造居住地

水下建筑

墙壁和桥墩

水闸

调色板

建造蹦床

挑战

获得潮涌核心

触发及战胜袭击

打败末影龙

打败凋灵

挑战自定义地图

制作自定义地图

征服结构

征服神殿和神庙

征服掠夺者前哨站

征服堡垒遗迹

征服林地府邸

征服海底神殿

征服试炼密室

征服下界要塞

征服末地城

探索深暗之域和远古城市

特殊玩法

冒险模式生存

极限模式

超极限模式

在一个地区中长期生存下去

沙漠生存

在无限沙漠中生存

下界生存

从零开始下界生存

末地生存

雷暴生存

超平坦世界生存[仅JE]

岛屿生存

空岛生存

在和平难度中收集资源

速通

游荡生存

无限石头生存

愚人节版本生存[仅JE]

22w13oneBlockAtATime

24w14potato

农场

方块和物品

紫水晶

骨粉

仙人掌

农作物(小麦、胡萝卜、马铃薯、甜菜根、火把花和瓶子草)

西瓜、南瓜

紫颂果

圆石、石头或玄武岩

可可豆

泥土

滴水石锥

鸡蛋

花朵

蛙明灯

蜂蜜

海带

蘑菇

音乐唱片

下界疣

黑曜石

袭击农场

1.21前

海泡菜

甘蔗

甜浆果

原木、树苗和苹果

海龟鳞甲

藤蔓

羊毛

药水

经验

基岩

方块和物品复制

过时方法

铁轨复制机[仅JE]

TNT复制[仅JE]

零刻作物催熟技术[仅BE]

生物

刷怪塔

怪物磨床

刷怪笼陷阱

动物(猪、牛、绵羊)

烈焰人

洞穴蜘蛛

苦力怕

闪电苦力怕

溺尸

末影人

山羊

守卫者

铁傀儡

岩浆怪

以物易物

潜影贝

史莱姆

鱿鱼

海龟

村民

女巫

流浪商人

凋灵骷髅

僵尸猪灵

悦灵

红石

基础红石

基本逻辑门

高频电路

计时器

抽奖箱

漏斗

通用物品分类器

机械

侦测器稳定器

密码锁

随机发生器

红石机械

红石音乐

红石技巧

鲁布·戈德堡机械

探测器

方块更新感应器

比较器更新感应器

昼夜探测器

矿车

矿车

火车站

储存

数字化存储系统

陷阱

陷阱

陷阱设计

雪傀儡防御炮

TNT大炮

活板门利用

活塞

活塞使用

活塞电路

无延迟科技

飞行器

半连接性[仅JE]

零刻活塞[仅JE]

无头活塞[仅JE]

高级红石

光照操纵

高级红石电路

算术逻辑

计算器

时钟

摩尔斯码

打印机

红石计算机

红石电报机

多人游戏

玩法

游玩服务器

PvP

Java版1.9前、基岩版

基地

隐藏箱子

起床战争

空岛战争

猎人游戏

服务器管理

防止恶意破坏

服务器监狱

服务器商店

雪球菜单

架设服务器

架设Java版服务器

架设基岩版服务器

服务器架设脚本[仅JE]

服务器启动脚本

FreeBSD启动脚本

OpenBSD启动脚本

Ubuntu启动脚本

WebSocket服务器[仅BE]

架设Mod服务器[仅JE]

架设Hamachi服务器

架设Spigot服务器

虚拟硬盘服务器

使用ngrok搭建服务器

架设ZeroTier服务器

本地局域网联机

服务器维护

使用LeviLamina架设服务器[仅BE]

技术性

Minecraft帮助FAQ

自定义皮肤

地图

自定义地图

下载地图

使用MCEdit刷新旧区块[仅JE]

强制打开存档[仅JE]

降级存档

资源包

制作资源包

纹理

音效和音乐

语言和文本

模型

加载资源包

数据包[仅JE]

制作数据包

实例:射线投射

视线魔法

自定义物品

安装数据包

自定义世界生成

自定义结构生成

自定义盔甲纹饰

附加包[仅BE]

基岩版开发指南

制作资源附加包

高级

基岩版实体文档

修改实体模型

制作行为包

自定义实体

自定义方块

自定义物品

自定义附加包语言文件

自定义音效

命令格式

仅Java版

生成下落的方块

文本组件

NBT命令标签

物品堆叠组件

记分板

SNBT

NBT路径

命令方块

结构方块

用命令操控实体

NBT与JSON

自定义命令触发

目标选择器

游戏安装

仅Java版

提高帧率

更新Java

修复Apache Log4j2漏洞

编写启动器

快照版本安装

获取崩溃报告

查看游戏日志

仅基岩版

Minecraft URL Scheme

汇报漏洞

在U盘中使用旧版启动器运行游戏

恢复损坏的地图数据

修复因数据包损坏的世界

在Google Drive上运行游戏

将游戏数据保存到Dropbox云端

仅限地图数据

在ChromeOS上运行Java版

过时教程

到达边境之地

获取崩溃报告(旧版)

无数据包生存

升级LWJGL

更新Minecraft

命令统计值

村民养殖(村庄与掠夺前)

村庄链

水道

水车

仅英文

自定义纹理包

基于门的铁傀儡陷阱

人工湖

矿车加速器

中继器重启系统

水梯

无延迟电路

教程

新手手册

高难度通关配装总结

成就指南

高塔指南

常见问题

教程

新手手册

基地建设指南

资源收集指南

单位阵容组合

注:作下划线标记的教程为中文原创教程。

相关推荐

哪家牛排才是“性价比之王”?山姆、盒马、家家悦眼肉牛排真实测评
【毕业论文排版课程】WPS文字指南:如何删除word中的空白页
19亿巅峰对决!姆巴佩回归,皇马尤文决战迈阿密之巅