教程:制作数据包/实例:视线魔法

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

目录

1 预期效果

2 对射线投射的改进

3 右键检测

3.1 数据包实现

4 视线爆炸魔法

4.1 数据包实现

5 蜂巢探视魔法

5.1 胡萝卜钓竿开关

6 参见

7 导航

此教程介绍一个数据包制作的实例,阅读此教程前可先阅读Tutorial:制作数据包和Tutorial:制作资源包。

本教程适用于Java版1.21.2以上版本。低于该版本的实际效果请自行评估。

预期效果[编辑 | 编辑源代码]

在本实例中,我们将利用Tutorial:制作数据包/实例:射线投射中所讲述的一些知识,使得玩家右键物品后能在其视线所指处发生以下事件:

爆炸。

若为蜂巢或蜂箱,则输出其中的成年和幼年蜜蜂数量。

对射线投射的改进[编辑 | 编辑源代码]

在之前的射线投射实例中,我们设计了一个非常基础的射线投射算法。接下来我们将让其拥有更强大的兼容性。首先我们改进一下shoot部分:

generic/function/raycast/shoot.mcfunctionmcfunction

# particle minecraft:end_rod ~ ~ ~ 0 0 0 0 0

# execute positioned ~ ~-0.5 ~ run summon interaction ^ ^ ^ {Tags:["test","source_entity"]}

scoreboard players add #raycast_check_times var 1

execute if score #raycast_check_times var >= #raycast_max_check_times var run return run function generic:raycast/end

# 检测当前位置是否有可穿过的方块,没有就停止

execute unless block ~ ~ ~ #generic:raycast/can_pass run return run function generic:raycast/end

# 如果射到实体就停止

execute if score #raycast_pass_entity var matches 0 positioned ~-0.5 ~-0.5 ~-0.5 if entity @n[dx=0,dy=0,dz=0,tag=!source_entity] positioned ~0.5 ~0.5 ~0.5 if function generic:raycast/check_entity run return run function generic:raycast/end

# 每次的步长从0.1改为0.5,减少递归次数

execute positioned ^ ^ ^0.5 run function generic:raycast/shoot

以上代码新增了检测实体的部分,这使得我们的射线在碰撞到实体后也会执行终止函数。考虑到检测实体可能不是所有系统都必须的,所以我们通过判断#raycast_pass_entity的分数来对检测实体的功能进行开关控制,为0时表示不忽略实体,为1时即默认状态下忽略实体。

考虑到我们的步长是0.5,为了更加精确的检测到实体,我们采取先检测以当前位置为中心1×1×1正方体范围内有无实体,若有则执行另一个步长为0.1的递归检测:

generic/function/raycast/check_entity.mcfunctionmcfunction

# particle minecraft:end_rod ~ ~ ~ 0 0 0 0 0

# execute positioned ~ ~-0.5 ~ run summon interaction ^ ^ ^ {Tags:["test","source_entity"]}

# 制造一个非常小的正方体检测区域

execute positioned ~-0.995 ~-0.995 ~-0.995 as @e[dx=0,dy=0,dz=0,tag=!source_entity] positioned ~0.99 ~0.99 ~0.99 if entity @s[dx=0,dy=0,dz=0] run return 1

scoreboard players add #raycast_check_entity_times var 1

execute if score #raycast_check_entity_times var matches 10.. run return fail

execute positioned ^ ^ ^0.1 run function generic:raycast/check_entity

这里的#raycast_check_entity_times类似于之前shoot中的#raycast_check_times,用来记录当前已经递归过的次数。由于之前已经检测到了以当前位置为中心的1×1×1正方体范围内存在实体,故我们直接设定最大检测次数为10即可。

递归结束后,我们将原来的单个分配函数变为一个函数标签:

generic/function/raycast/end.mcfunctionmcfunction

# particle minecraft:dust{color:[0, 0, 1], scale:1.0} ~ ~ ~ 0.1 0.1 0.1 0 50 force

function #generic:raycast

scoreboard players set #raycast_max_check_times var 0

scoreboard players set #raycast_pass_entity var 1

tag @s remove source_entity

函数标签可以被理解为一个函数接口。因为数据包之间都可以直接在对应的命名空间下添加该标签,以直接将射线射出后的终端执行环境接入到自身的逻辑中。这里我们先留空以备用:

generic/tags/function/raycast.jsonjson

{

"values": []

}

最后,我们在start函数中也对#raycast_check_entity_times设定初始值0:

generic/tags/function/raycast/start.mcfunctionmcfunction

# /execute as @s anchored eyes run

scoreboard players set #raycast_check_times var 0

scoreboard players set #raycast_check_entity_times var 0

tag @s add source_entity

execute positioned ^ ^ ^0.5 run function generic:raycast/shoot

现在,只需要编写并执行以下函数就能完整使用该射线投射模块:

# 设定最大递归次数为1000

scoreboard players set #raycast_max_check_times var 1000

# 不忽略实体

scoreboard players set #raycast_pass_entity var 0

# 从当前执行者的眼睛位置开始执行

execute anchored eyes run function generic:raycast/start

右键检测[编辑 | 编辑源代码]

所需的主要知识:

命令/execute

命令/give

SNBT格式

物品堆叠组件

参数类型#item_stack

参数类型#item_predicate

Java版函数

标签

记分板

数据包实现[编辑 | 编辑源代码]

这里我们主要使用1.21.2的新增组件来实现右键检测。首先,利用进度检测玩家消耗了物品:

generic/advancement/event/right_click.jsonjson

{

"criteria": {

"generic:right_click_event": {

"trigger": "minecraft:consume_item",

"conditions": {

"item": {

"predicates": {

"custom_data": "{listen_event:'right_click'}"

}

}

}

}

},

"rewards": {

"function": "generic:event/right_click"

}

}

我们不希望物品消失,所以我们必须要通过一些方法来恢复被消耗的物品:

generic/function/event/right_click.mcfunctionmcfunction

advancement revoke @s only generic:event/right_click

# 模拟协程,将当前执行者和执行者手持物寄存,待1t时间后再恢复其手持物

data modify entity 0-0-0-0-0 Thrower set from entity @s UUID

data modify storage generic:event right_click.last_selected_item set from entity @s SelectedItem

schedule function generic:event/right_click/delay_1t 1t

function #generic:right_click

generic/function/event/right_click/delay_1t.mcfunctionmcfunction

function generic:event/right_click/regain_item with storage generic:event right_click.last_selected_item

generic/function/event/right_click/regain_item.mcfunctionmcfunction

$execute as 0-0-0-0-0 on origin run item modify entity @s weapon.mainhand {"function": "set_components", components:$(components)}

创建函数标签#generic:right_click:

generic/tags/function/right_click.jsonjson

{

"values": []

}

之后其他系统只需要使用函数标签即可“继承”右键触发后的执行环境。

以上实现的直接利用进度触发,在性能上较好,同时直接利用了函数标签来方便其他函数承接,在扩展性方面也更胜一筹。由于新版组件可以单独设定动画效果和冷却时间,故在功能设计上也更加灵活。

视线爆炸魔法[编辑 | 编辑源代码]

为了达到爆炸的目的,我们可以在视线所指处召唤一个瞬间爆炸的TNT或者苦力怕。

所需知识:

相对坐标

局部坐标

目标选择器

记分板

命令/execute

命令/summon

命令/particle

数据包

Java版函数

在Tutorial:制作数据包/实例:射线投射中我们已经较为清楚地描述了“raycast”的实现,该章节的主要思路即借助之前所创建的函数来实现在所指位置召唤爆炸实体。

数据包实现[编辑 | 编辑源代码]

在右键检测函数中添加要接入的函数(添加函数接口):

generic/tags/function/right_click.jsonjson

{

"values": [

"test:sight_magic/extender/right_click"

]

}

承接右键检测函数标签(实现右键检测接口):

test/function/sight_magic/extender/right_click.mcfunctionmcfunction

# 断开非属sight_magic的执行源

execute unless items entity @s weapon.mainhand *[custom_data~{id:'sight_magic'}] run return fail

# 使用一对used_sight_magic来传递该域的上下文标志

tag @s add used_sight_magic

# 模拟条件分支,根据手持物品的不同执行不同的函数。这里意为产生一个射线,并在射线终止处发生爆炸

execute if items entity @s weapon.mainhand *[custom_data~{cause_event:'explosion'}] run function test:sight_magic/explosion/start

# 域闭合

tag @s remove used_sight_magic

玩家右键后,在当前玩家的眼睛位置产生射线,然后在射线终止处发生爆炸:

test/function/sight_magic/explosion/start.mcfunctionmcfunction

tag @s add explosion

scoreboard players set #raycast_max_check_times var 500

scoreboard players set #raycast_pass_entity var 0

execute at @s anchored eyes run function generic:raycast/start

tag @s remove explosion

然后只需实现射线投射接口:

generic/tags/function/raycast.jsonjson

{

"values": [

"test:sight_magic/extender/raycast_end"

]

}

test/function/sight_magic/extender/raycast_end.mcfunctionmcfunction

# 排除其他执行源

execute if entity @s[tag=!used_sight_magic] run return fail

# 在射线终止处爆炸

execute if entity @s[tag=explosion] run function test:sight_magic/explosion/do_at

直接召唤一个tnt来实现爆炸:

test/function/sight_magic/explosion/do_at.mcfunctionmcfunction

summon tnt

现在,如果你获得了一个这样的木棍:

summon item ~ ~ ~ {Item:{components:{"minecraft:consumable":{animation:"block",consume_seconds:0.0f,has_consume_particles:0b,on_consume_effects:[{sound:"minecraft:entity.player.attack.crit",type:"minecraft:play_sound"}],sound:"minecraft:entity.player.attack.crit"},"minecraft:custom_data":{cause_event:"explosion",id:"sight_magic",listen_event:"right_click"},"minecraft:use_cooldown":{seconds:0.1f},"minecraft:use_remainder":{count:1,id:"minecraft:stick"}},count:1,id:"minecraft:stick"}}

按下右键后,由于食用时间为0,故会在一瞬间触发右键检测进度,继而通过右键检测函数标签调用我们的视线魔法相关函数。最终效果即在视线所指的方块或实体处产生爆炸。

蜂巢探视魔法[编辑 | 编辑源代码]

蜂巢探视魔法将允许玩家通过右键使用手中的物品来获取其所指蜂巢中的成年和幼年蜜蜂数量。

我们继续创建相关函数。在我们的test命名空间下的sight_magic文件夹中,创建bee_finder目录,以制作新的蜂巢探视魔法。接下来,我们仿照前文的视线爆炸魔法,首先实现右键触发功能:

test/sight_magic/extender/right_click.mcfunctionmcfunction

# ...(这里省略了一些命令)

tag @s add used_sight_magic

execute if items entity @s weapon.mainhand *[custom_data~{cause_event:'explosion'}] run function test:sight_magic/explosion/start

# 这是新增的命令,该命令意为,当玩家右键使用带有cause_event:'get_bees'自定义标签值的主手物品后触发bee_finder/end函数

execute if items entity @s weapon.mainhand *[custom_data~{cause_event:'get_bees'}] run function test:sight_magic/bee_finder/start

tag @s remove used_sight_magic

右键触发后,就发射一条射线:

test/sight_magic/bee_finder/startmcfunction

tag @s add get_bees

scoreboard players set #raycast_max_check_times var 100

execute anchored eyes run function generic:raycast/start

tag @s remove get_bees

随后直接转到射线终点位置,在extender/raycast_end中新增一条命令:

test/sight_magic/extender/raycast_end.mcfunctionmcfunction

execute if entity @s[tag=!used_sight_magic] run return fail

execute if entity @s[tag=explosion] run function test:sight_magic/explosion/do_at

# 新增的命令:(用来实现bee_finder)

execute if entity @s[tag=get_bees] run function test:sight_magic/bee_finder/do_at

将教程“射线投射”中bee_finder的相关主要代码复制过来并稍作修改:

test/sight_magic/explosion/do_at.mcfunctionmcfunction

execute unless block ~ ~ ~ #beehives run return run function test:sight_magic/bee_finder/fail/invalid_block

data modify storage generic:data queue.value set from block ~ ~ ~ bees

execute unless data storage generic:data queue.value[] run return run function test:sight_magic/bee_finder/fail/no_bees

function test:sight_magic/bee_finder/counter/init

function test:sight_magic/bee_finder/counter/run

tellraw @s [{"text": "成年蜜蜂数:"}, {"score": {"name": "#bee_finder_adult_number", "objective": "var"}}, {"text":" 幼年蜜蜂数:"}, {"score": {"name": "#bee_finder_baby_number", "objective": "var"}}]

其余相关函数文件也一并复制过来并修改一些细节:

test/sight_magic/bee_finder/fail/invalid_block.mcfunctionmcfunction

tellraw @s {"text": "目标方块不是蜂巢或蜂箱!", "color": "red"}

test/sight_magic/bee_finder/fail/no_bees.mcfunctionmcfunction

tellraw @s {"text": "目标方块没有蜜蜂!", "color": "red"}

test/sight_magic/bee_finder/counter/init.mcfunctionmcfunction

scoreboard players set #bee_finder_baby_number var 0

scoreboard players set #bee_finder_adult_number var 0

test/sight_magic/bee_finder/counter/run.mcfunctionmcfunction

function generic:data/queue/fetch_head

scoreboard players reset #bee_finder_bee_age var

execute store result score #bee_finder_bee_age var run data get storage generic:data queue.output.entity_data.Age

execute if score #bee_finder_bee_age var matches ..-1 run scoreboard players add #bee_finder_baby_number var 1

execute if score #bee_finder_bee_age var matches 0.. run scoreboard players add #bee_finder_adult_number var 1

execute if data storage generic:data queue.value[] run function test:sight_magic/bee_finder/counter/run

现在执行以下命令(将之前木棍中的cause_event:'explosion'改为cause_event:'get_bees'):

summon item ~ ~ ~ {Item:{components:{"minecraft:consumable":{animation:"block",consume_seconds:0.0f,has_consume_particles:0b,on_consume_effects:[{sound:"minecraft:entity.player.attack.crit",type:"minecraft:play_sound"}],sound:"minecraft:entity.player.attack.crit"},"minecraft:custom_data":{cause_event:"get_bees",id:"sight_magic",listen_event:"right_click"},"minecraft:use_cooldown":{seconds:0.1f},"minecraft:use_remainder":{count:1,id:"minecraft:stick"}},count:1,id:"minecraft:stick"}}

就能获得一根右键后可以获取目标方块中的蜜蜂数量的木棍。

胡萝卜钓竿开关[编辑 | 编辑源代码]

此段落需要更新。

段落中某些信息已经不符合当前版本情况。

上面提到了函数nuke:entities/player,下面会给出所有和这个胡萝卜钓竿开关相关的函数:

nuke:entities/player

execute as @s[scores={nukeUseCSt=1..}] at @s run function nuke:use_carrot_on_a_stick/type

nuke:use_carrot_on_a_stick/type

execute if items entity @s weapon.mainhand carrot_on_a_stick run function nuke:use_carrot_on_a_stick/mainhand

execute if items entity @s weapon.offhand carrot_on_a_stick run function nuke:use_carrot_on_a_stick/offhand

scoreboard players reset @s nukeUseCSt

nuke:use_carrot_on_a_stick/mainhand

execute if items entity @s weapon.mainhand carrot_on_a_stick{id:'nuke:remote'} run function nuke:use_carrot_on_a_stick/items/remote

execute unless entity @s[tag=nuke_used] if items entity @s weapon.mainhand carrot_on_a_stick{id:'nuke:remote_off'} run function nuke:use_carrot_on_a_stick/items/remote_off

tag @s remove nuke_used

nuke:use_carrot_on_a_stick/items/remote_off

execute if items entity @s weapon.offhand carrot_on_a_stick run loot replace entity @s weapon.offhand 1 loot nuke:remote

execute if items entity @s weapon.mainhand carrot_on_a_stick run loot replace entity @s weapon.mainhand 1 loot nuke:remote

function nuke:start

nuke:use_carrot_on_a_stick/items/remote

execute if items entity @s weapon.offhand carrot_on_a_stick run loot replace entity @s weapon.offhand 1 loot nuke:remote_off

execute if items entity @s weapon.mainhand carrot_on_a_stick run loot replace entity @s weapon.mainhand 1 loot nuke:remote_off

function nuke:stop

tag @s add nuke_used

nuke:start

scoreboard players set @s nukePerson 1

nuke:stop

scoreboard players set @s nukePerson 0

“随便做”牌遥控器

“随便做”牌遥控器,打开状态

为了和普通的胡萝卜钓竿区别开来,我们会在物品的custom_data中嵌入自己的id标签(如果你不希望这个标签被其他的数据包占用,你也可以命名为类似nuke_id),并把关闭状态的遥控器的id的值设定为nuke:remote_off,开启的设定为nuke:remote。

/execute if items用来检测玩家的主手和副手上的物品是否为胡萝卜钓竿。此处我们检测custom_data,就是为了区分玩家手上是遥控器还是普通的钓竿。

同时,还可以通过custom_model_data来重新指定遥控器的纹理。

新建一个资源包,填写好pack.mcmeta,在assets/minecraft/models/item/carrot_on_a_stick.json写入以下内容:

{

"parent": "item/handheld_rod",

"textures": {

"layer0": "item/carrot_on_a_stick"

},

"overrides": [

{ "predicate": { "custom_model_data": 13400000 }, "model": "nuke:item/remote"},

{ "predicate": { "custom_model_data": 13400001 }, "model": "nuke:item/remote_off"}

]

}

其中的overrides就是来指定custom_model_data的。我们指定了两个物品标签谓词,分别指定了一个custom_model_data和它对应的模型:13400000(对应nuke:item/remote)和13400001(对应nuke:item/remote_off)。

assets/nuke/models/item/remote.json

{

"parent": "item/handheld",

"textures": {

"layer0": "nuke:item/remote"

}

}

其中nuke:item/remote对应纹理assets/nuke/textures/item/remote.png,也就是开启的状态的纹理。

另一个模型文件同理。

为了获取物品的方便,我们使用战利品表来预定义物品。此处以关闭的遥控器为例。

nuke:remote_off.json

{

"pools": [

{

"rolls": 1,

"entries": [

{

"type": "minecraft:item",

"name": "minecraft:carrot_on_a_stick",

"functions": [

{

"function": "minecraft:set_components",

"components": {

"custom_data": "{id:'nuke:remote_off'}",

"custom_model_data": 13400001,

"custom_name": "{\"translate\":\"item.nuke.remote_off\"}"

}

}

]

}

]

}

]

}

掉落一份该战利品表就会获得关闭状态的遥控器。除了定义components中的custom_data,我们也自定义了物品的custom_model_data和显示名称。显示名称和实例:蜜蜂助手的多语言一样去写就行。此处在简体中文中显示的名称为“遥控器 (关闭)”。

同理,定义一份开启的。

总结:基本思路是,循环检测胡萝卜钓竿,如果有玩家用了遥控器就切换遥控器的状态,并且根据遥控器的状态决定是开始爆炸还是停止爆炸。

切换遥控器的状态,可以直接替换玩家对应的槽位,比如像上方一样使用/loot replace,然后调用定义好的战利品表,十分方便。

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

ruhuasiyu的数据包制作教程

ruhuasiyu的更多的合成数据包,其中包含大量可学习借鉴的地方

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

编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与JSON

自定义命令触发

目标选择器

游戏安装

仅Java版

提高帧率

更新Java

修复Apache Log4j2漏洞

编写启动器

快照版本安装

获取崩溃报告

查看游戏日志

仅基岩版

Minecraft URL Scheme

汇报漏洞

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

恢复损坏的地图数据

修复因数据包损坏的世界

在Google Drive上运行游戏

将游戏数据保存到Dropbox云端

仅限地图数据

在ChromeOS上运行Java版

过时教程

到达边境之地

获取崩溃报告(旧版)

无数据包生存

升级LWJGL

更新Minecraft

命令统计值

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

村庄链

水道

水车

仅英文

自定义纹理包

基于门的铁傀儡陷阱

人工湖

矿车加速器

中继器重启系统

水梯

无延迟电路

教程

新手手册

高难度通关配装总结

成就指南

高塔指南

常见问题

教程

新手手册

基地建设指南

资源收集指南

单位阵容组合

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

上一篇: 汽车之家
下一篇: WLK怀旧服:25人团奥杜尔带团指南 团长必备

相关推荐

炉石传说10级不掉星 炉石传说天梯奖励及10级什么水平
2014年世界俱乐部杯决赛
13个最便宜的Android电视盒推荐合集:你最喜欢哪一款?
秘鲁世界杯历史排名及表现(探索秘鲁在世界杯的成绩和影响)
为什么会有那么多明星不雅视频流出?事件背后的真相和法律问题!
古代钱的单位贯是多少(古代计量单位知多少,贯是多少?)