本帖最后由 贰逼 于 2015-8-26 08:55 编辑

模块基础
第二页为 NBT基础概念
本大章节将会涉及到学习模块前的基础。
所以在曾经没有机会使用指令方块的玩家仍然可以在本大章学习一些基础。
这些基础不会引申,仅仅是必要掌握内容。

模块基础将会涉及到
指令
  • 预置指令
  • 常用指令
坐标
  • 基础
  • 相对坐标

NBT标签

  • 作用与内容
  • 标准格式

实体选择器

  • 主类
  • 分项

计分板

  • 变量概念
  • 创建变量
  • 设置初始值
  • 变量与选择器

模块概论

全索引链接
上一篇坐标)- 下一篇(实体选择器

§1.3 NBT标签
第二页为 NBT内容作用
几乎所有物体,所有游戏内容,包括所有实体/方块及玩家本身都储存着NBT标签

NBT标签代表着物体的特性。而方块/实体的特性,和玩家/物品,能够被命令方块访问(修改/读取)

其中实体/方块的NBT储存在区块中,需要加载区块才能被指令访问,
玩家/物品NBT储存在player.dat中。
其余的NBT虽然不能被指令访问,但是依旧存在其他的dat文件中(压缩格式为NBT),也可通过外置NBT进行访问。

  • 修改NBT的工具

  1. CommandNBT

能够直接在游戏内通过原版指令修改NBT
包括在线修改指令:entitydata/blockdata(修改实体/方块NBT)
以及定义NBT指令:summon/setblock(生成自定义NBT实体/方块)

还有间接更改玩家NBT的:give/replaceitem(物品操作)
也有比较NBT的:testfor/testforblock(方块比较)

但是CommandNBT局限于区块和player.dat(目前官方的两种允许修改的)

全部CommandNBT:

  2. InGameNBT

能够通过mod来修改NBT,内容比CommandNBT多
常用于1.6及以下版本(还不允许CommandNBT)

由于无法自动化,所以逐渐淘汰。


  3. NBT Explorer

支持外部修改所有NBT
功能强大。

        1.3.1 作用与内容
第二页为 NBT格式
  • 作用
NBT支持被修改

  • 内容
NBT为物体的特性



所以修改NBT就是修改物体的特性

比如NBT:Fuse是苦力怕的爆炸时间(单位Tick):
那么修改Fuse为0就能做到瞬间爆炸的效果:









  1. /summon Creeper ~ ~ ~ {Fuse:0}
复制代码

*定义生成的苦力怕瞬间爆炸

  1. /entitydata @e[type=Creeper] {Fuse:0}
复制代码

*修改已有的苦力怕瞬间爆炸

这就是NBT被修改的意义,能够更改特征
(也涉及了指令生成NBT和修改NBT的区别)
当然NBT也能被获取,以后将会讲到


       1.3.2 标准格式
大家可能注意到了,NBT除了有项目,也有框架

其实NBT就是一个物体所有特征的大框架

一个项目表现为:
"标签":"值"

一个列表表现为:
"标签":["子标签":"值",……]

一个框架表现为:
"标签":{"子标签":"值",……}
*与标签
"标签":{"子标签":["孙标签":"值",……]……}
*与列表


总之:
一个项目为基本单位,包含标签和值;
一个列表为项目集合;
一个框架为列表和项目的集合。

(Wiki有详解)
其中可以省略引号
虽然NBT本身就是json,但是与游戏中json不同的是NBT提供修改功能


那么NBT修改的只是找到的标签,所以NBT也支持自定义NBT,具体作用就是储存一个存在的自定义tag。


[groupid=546]Command Block Logic[/groupid]