ZH:Data types

本文章定义了在协议中使用的数据类型. 所有在网络上发送的数据（除VarInt和VarLong外）都是大字节序的，也就是说，字节是从最大的字节到最小的字节发送. 大多数日常遇到的电脑都是小字节序的，所以也许有必要在网络上发送数据前更改字节序.

定义
== 标识符 == === 标识符 ===

标识符是一个以 为形式的带命名空间的位置. 如果没有提供命名空间，那么它默认为 （即， 变为. 自定义内容应该总是在它自己的命名空间中，而不是默认的中. 命名空间应该只使用这些字符： ，实际的名称可能会包含更多符号. 命名约定是 （蛇形命名法）. 更多信息.

== VarInt和VarLong == === VarInt和VarLong ===

可变长度格式，就像较小的数会使用较少的字节. 于Protocol Buffer Varints非常相似：7个最底位用于编码值而最高位用于指示在之后还有多少用于数字下一部分的字节. 最低位的组写在最前面，后面跟着更高位的组；因此，VarInts实际上是小字节序的（然而，组是7位而不是8位的）.

VarInts永远不会多余5字节，VarLongs永远不会多于10字节.

读取并写入VarInts和VarLongs的伪代码：

示例VarInts：

示例VarLongs：

== 位置 == === 位置 ===

分隔位三个部分的64位值


 * x：26个最高位
 * z：26个中间位
 * y：12个最低位

如下编码：

((x & 0x3FFFFFF) << 38) | ((z & 0x3FFFFFF) << 12) | (y & 0xFFF)

并如下解码：

val = read_unsigned_long; x = val >> 38; y = val & 0xFFF; z = (val < > 38);

注意：位移的细节由语言决定，上述内容可能在Java中可以工作但可能不会不经修改就能在其他语言中工作. 实际上，你通常会接受到正数，即使实际的坐标是负的. 这可以通过加入如下内容修复：

if x >= 2^25 { x -= 2^26 } if y >= 2^11 { y -= 2^12 } if z >= 2^25 { z -= 2^26 }

== 定点数 == === 定点数 ===

一些字段被存储为定点数，其中一定数量的为用于表示有符号整数部分（小数点左侧的数字），其余表示小数部分（小数点右侧）. 浮点数（float和double），相反，将数字本身（尾数）存储在内存块中，而小数点（指数）的位置存储在其一边.

本质上，虽然定点数有着比浮点数更小的范围，但是对于较大值来说它们的小数精度要更胜一筹. 这使得它们用于表示Minecraft实体的全局坐标非常理想，因为比起将它们精确地定位在一个方块（或米）中，准确地保存它的整数部分要重要得多.

坐标经常被表示为32位整数，其中5个最低位用于小数部分，其余存储整数部分.

Java缺乏对分数整数的直接支持，但是你可以使用整数来表示它们. 要将double转换成这种整数表示方法，使用以下公式： abs_int = (int) (double * 32.0D); 以及反过来：

double = (double) (abs_int / 32.0D);

== 粒子 == === 粒子 ===

{| class="wikitable" |- ! 粒子名称 ! 粒子ID ! 数据 |- |  | 0 | 无 |- |  | 1 | 无 |- |  | 2 | 无 |- |  | 3 | |- |   | 4 | 无 |- |  | 5 | 无 |- |  | 6 | 无 |- |  | 7 | 无 |- |  | 8 | 无 |- |  | 9 | 无 |- |  | 10 | 无 |- |  | 11 | 无 |- |  | 12 | 无 |- |  | 13 | 无 |- |  | 14 |  |- |   | 15 | 无 |- |  | 16 | 无 |- |  | 17 | 无 |- |  | 18 | 无 |- |  | 19 | 无 |- |  | 20 | 无 |- |  | 21 | 无 |- |  | 22 | 无 |- |  | 23 |

|- |  | 24 | 无 |- |  | 25 | 无 |- |  | 26 | 无 |- |  | 27 | 无 |- |  | 28 | 无 |- |  | 29 | 无 |- |  | 30 | 无 |- |  | 31 | 无 |- |  | 32 | |- |   | 33 | 无 |- |  | 34 | 无 |- |  | 35 | 无 |- |  | 36 | 无 |- |  | 37 | 无 |- |  | 38 | 无 |- |  | 39 | 无 |- |  | 40 | 无 |- |  | 41 | 无 |- |  | 42 | 无 |- |  | 43 | 无 |- |  | 44 | 无 |- |  | 45 | 无 |- |  | 46 | 无 |- |  | 47 | 无 |- |  | 48 | 无 |- |  | 49 | 无 |- |  | 50 | 无 |- |  | 51 | 无 |- |  | 52 | 无 |- |  | 53 | 无 |- |  | 54 | 无 |- |  | 55 | 无 |- |  | 56 | 无 |- |  | 57 | 无 |}