<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://mineplugin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mcdarc</id>
	<title>Minecraft插件百科 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://mineplugin.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mcdarc"/>
	<link rel="alternate" type="text/html" href="https://mineplugin.org/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Mcdarc"/>
	<updated>2026-06-15T09:58:24Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mineplugin.org/index.php?title=FastAsyncWorldEdit&amp;diff=13955</id>
		<title>FastAsyncWorldEdit</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=FastAsyncWorldEdit&amp;diff=13955"/>
		<updated>2021-01-25T16:51:23Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​附属插件 =&amp;gt; 替代插件 （https://intellectualsites.github.io/download/fawe.html 处提到 &amp;quot;FAWE is a replacement&amp;quot;）&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;code&amp;gt;FastAsyncWorldEdit&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;FAWE 是 WorldEdit 的一款替代插件，它通过改变大量 WorldEdit 中的核心类，在大幅度提升原插件的性能的同时，也为其大量增添了新功能。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
相关链接：&lt;br /&gt;
* [https://github.com/boy0001/FastAsyncWorldedit/releases 安装]&lt;br /&gt;
* [https://discord.gg/ngZCzbU Discord 聊天频道] | [https://www.spigotmc.org/threads/fast-async-worldedit.100104/ Spigot 论坛]&lt;br /&gt;
* [https://ci.athion.net/job/FastAsyncWorldEdit/ 构建版本]&lt;br /&gt;
* [https://github.com/boy0001/FastAsyncWorldedit/wiki/Commands 命令]&lt;br /&gt;
* [https://github.com/boy0001/FastAsyncWorldedit/wiki/Permissions 权限]&lt;br /&gt;
* [https://github.com/boy0001/FastAsyncWorldedit/issues/new 反馈问题|提供建议]&lt;br /&gt;
&lt;br /&gt;
=== 目前支持的平台 ===&lt;br /&gt;
&lt;br /&gt;
* CraftBukkit&lt;br /&gt;
* Spigot&lt;br /&gt;
* Paper&lt;br /&gt;
* Forge&lt;br /&gt;
* Sponge&lt;br /&gt;
&lt;br /&gt;
目前停止更新的旧平台：&lt;br /&gt;
* Nukkit&lt;br /&gt;
* Thermos&lt;br /&gt;
&lt;br /&gt;
=== 汉化 ===&lt;br /&gt;
&lt;br /&gt;
* Jenkins 上从#1209号构建开始已经内置中文&lt;br /&gt;
* 汉化文件的修改 [https://github.com/boy0001/FastAsyncWorldedit/blob/master/core/src/main/resources/cn/message.yml Github]&lt;br /&gt;
&lt;br /&gt;
=== 区域限制： ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;当前支持下列区域插件：&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* WorldGuard&lt;br /&gt;
* Towny&lt;br /&gt;
* GriefPrevention&lt;br /&gt;
* PreciousStones&lt;br /&gt;
* Factions (mcore, uuid, one)&lt;br /&gt;
* Residence&lt;br /&gt;
* Regios&lt;br /&gt;
* PlotSquared&lt;br /&gt;
* PlotMe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;你可以在配置中禁用本项，也可以使用 &amp;lt;code&amp;gt;/wea&amp;lt;/code&amp;gt; 或者 &amp;lt;code&amp;gt;fawe.bypass&amp;lt;/code&amp;gt; 来跳过检查&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=== 记录与回滚操作 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;请在 &amp;lt;code&amp;gt;config.yml&amp;lt;/code&amp;gt; 中启用 &amp;lt;code&amp;gt;use-disk&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;use-database&amp;lt;/code&amp;gt; 两个选项来开启 FAWE 插件提供的记录与回滚操作。为了实现记录的功能，首先请安装 [https://www.spigotmc.org/resources/blockshub.331/ BlocksHub] 插件，随后你就能使用以下记录插件之一来记录了：&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* CoreProtect&lt;br /&gt;
* LogBlock&lt;br /&gt;
* Prism&lt;br /&gt;
* HawkEye&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;给予普通玩家使用 FAWE 回滚操作的权限并不危险，要想跳过记录请使用 &amp;lt;code&amp;gt;//fast&amp;lt;/code&amp;gt; 命令&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 命令 ==&lt;br /&gt;
=== 总览 ===&lt;br /&gt;
要想在游戏中查看这些命令的话，请使用 &amp;lt;code&amp;gt;//help [类型|命令]&amp;lt;/code&amp;gt; ## 命令的用法&amp;lt;br /&amp;gt;&lt;br /&gt;
- &amp;lt;code&amp;gt;&amp;amp;lt;arg&amp;amp;gt;&amp;lt;/code&amp;gt; - 一个必需参数&amp;lt;br /&amp;gt;&lt;br /&gt;
- &amp;lt;code&amp;gt;[arg]&amp;lt;/code&amp;gt; - 一个可选参数&amp;lt;br /&amp;gt;&lt;br /&gt;
- &amp;lt;code&amp;gt;&amp;amp;lt;arg1|arg2&amp;amp;gt;&amp;lt;/code&amp;gt; - 在这些选项中选择&amp;lt;br /&amp;gt;&lt;br /&gt;
- &amp;lt;code&amp;gt;&amp;amp;lt;arg=value&amp;amp;gt;&amp;lt;/code&amp;gt; - 缺省值&amp;lt;br /&amp;gt;&lt;br /&gt;
- &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; - 一条命令的标记，如 &amp;lt;code&amp;gt;//&amp;amp;lt;command&amp;amp;gt; -a [命令的标记的值]&amp;lt;/code&amp;gt; &lt;br /&gt;
## 详阅 &lt;br /&gt;
* [https://github.com/c7w/FastAsyncWorldedit/wiki/WorldEdit---FAWE-mask-list 蒙版] &lt;br /&gt;
* [https://github.com/c7w/FastAsyncWorldedit/wiki/WorldEdit-and-FAWE-patterns 样式] &lt;br /&gt;
* [https://github.com/c7w/FastAsyncWorldedit/wiki/Transforms 变换式]&lt;br /&gt;
&lt;br /&gt;
* 未分类的命令&lt;br /&gt;
{|&lt;br /&gt;
! 别称&lt;br /&gt;
! 权限&lt;br /&gt;
! 标记&lt;br /&gt;
! 使用方法&lt;br /&gt;
|-&lt;br /&gt;
| //cancel&lt;br /&gt;
| fawe.cancel&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
| 取消你当前正在进行的任务&lt;br /&gt;
|-&lt;br /&gt;
| /plot replaceall&lt;br /&gt;
| plots.replaceall&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
| 替换地皮世界中所有的方块&lt;br /&gt;
|-&lt;br /&gt;
| /plot createfromimage&lt;br /&gt;
| plots.createfromimage&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
| 从一张高度图图片开始世界生成： [https://github.com/c7w/FastAsyncWorldedit/wiki/CreateFromImage 更多信息]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;World Edit 命令&#039;&#039;&#039; ===&lt;br /&gt;
*&amp;lt;code&amp;gt;/we threads&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.threads&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 显示出目前插件使用的所有线程&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/we version&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取当前 WorldEdit / FAWE 插件的版本信息 &lt;br /&gt;
* &amp;lt;code&amp;gt;/we help [&amp;amp;lt;command&amp;amp;gt;]&amp;lt;/code&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.help&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 显示 FAWE 插件的命令帮助信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/we debugpaste&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.debugpaste&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将调试信息上传到 hastebin.com&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/we changelog&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.changelog&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 查看 FAWE 插件的更新日志&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/we reload&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.reload&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 重载插件配置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/we tz [timezone]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设定时区，方便为快照命名&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/we cui&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 完成 CUI 信息交换（内部开发使用）&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Utility 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(一些实用性的命令： [http://wiki.sk89q.com/wiki/WorldEdit/Utilities 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;/remove &amp;amp;lt;type&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.remove&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 移除所有指定类型的实体&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fill &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt; [depth]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.fill&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 填充一块洞&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//help [&amp;amp;lt;command&amp;amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 显示 WorldEdit 插件的帮助命令&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//drain &amp;amp;lt;radius&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.drain&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 移除一片池塘内的水&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//removenear &amp;amp;lt;block&amp;amp;gt; [size]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.removenear&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 移除你附近的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fillr &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt; [depth]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.fill.recursive&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 递归填充周围的洞&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//removeabove [size] [height]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.removeabove&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 移除你头上方的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fixlava &amp;amp;lt;radius&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.fixlava&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 让岩浆静止&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//removebelow [size] [height]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.removebelow&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 移除你脚下方的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fixwater &amp;amp;lt;radius&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.fixwater&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 让水静止&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//green [radius] [-f]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.green&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 绿化半径中的区域&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//replacenear &amp;amp;lt;size&amp;amp;gt; &amp;amp;lt;from-id&amp;amp;gt; &amp;amp;lt;to-id&amp;amp;gt; [-f]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.replacenear&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 替换附近的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//snow [radius]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snow&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 模仿下雪&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/butcher [radius] [-p] [-l] [-a] [-n] [-g] [-b] [-t] [-f] [-r]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.butcher&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 击杀附近的怪物，根据半径，如果没有特别给出半径的话则使用配置文件中的默认半径。&amp;lt;br /&amp;gt;可用的标记：&amp;lt;br /&amp;gt; -p 也击杀宠物&amp;lt;br /&amp;gt; -n 也击杀 NPC&amp;lt;br /&amp;gt; -g 也击杀铁傀儡&amp;lt;br /&amp;gt; -a 也击杀动物。&amp;lt;br /&amp;gt; -b 也击杀中立生物&amp;lt;br /&amp;gt; -t 也击杀带有名字的怪物&amp;lt;br /&amp;gt; -f 相当于这以前所有标记的混合&amp;lt;br /&amp;gt; -r 也击杀盔甲架&amp;lt;br /&amp;gt; -l 目前没有具体作用 &lt;br /&gt;
* &amp;lt;code&amp;gt;//ex [radius]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.extinguish&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 熄灭周围的火 &lt;br /&gt;
* &amp;lt;code&amp;gt;//thaw [radius]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.thaw&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 移除周围的区域中的雪与冰&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//calc &amp;amp;lt;expression&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.calc&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 求一个数学表达式的值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//confirm&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;描述&#039;&#039;&#039;： 确认一条命令&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Region 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(一些对区域起作用的命令： [http://wiki.sk89q.com/wiki/WorldEdit/Region_operations 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;//replace [from-mask] &amp;amp;lt;to-pattern&amp;amp;gt; [-f]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.replace&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 用给定的方块替换选区中所有另一给定的方块 &lt;br /&gt;
* &amp;lt;code&amp;gt;//stack [count] [direction] [-s] [-a] [-m]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.stack&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 堆叠复制选区中的内容&amp;lt;br /&amp;gt;标记：&amp;lt;br /&amp;gt; -s 将选区移动到最后一次被堆叠复制的区域&amp;lt;br /&amp;gt; -a 跳过空气方块 &lt;br /&gt;
* &amp;lt;code&amp;gt;//set [pattern]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.set&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区填充为给定方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fall [replace] [-m]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.fall&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 让选区中的方块自然掉落&amp;lt;br /&amp;gt;-m 标记仅会让方块在垂直方向上下落&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//faces &amp;amp;lt;block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.faces&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 建造出选区的墙壁，天花板和地板 &lt;br /&gt;
* &amp;lt;code&amp;gt;//center &amp;amp;lt;block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.center&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 填充出选区的中心方块 &lt;br /&gt;
* &amp;lt;code&amp;gt;//hollow [&amp;amp;lt;thickness&amp;amp;gt;[ &amp;amp;lt;block&amp;amp;gt;]]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.hollow&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将本区域设置为中空&amp;lt;br /&amp;gt;可以设置“中空”的部分用什么方块来填充&amp;lt;br /&amp;gt;厚度用[[https://baike.baidu.com/item/%E6%9B%BC%E5%93%88%E9%A1%BF%E8%B7%9D%E7%A6%BB/743092?fr=aladdin 曼哈顿距离]]来计算。 &lt;br /&gt;
* &amp;lt;code&amp;gt;//smooth [iterations] [-n]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.smoothsnow&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将区域平滑化&amp;lt;br /&amp;gt;-n 标记仅更改自然生成的方块。&amp;lt;br /&amp;gt;-s 标记只更改雪方块。 &lt;br /&gt;
* &amp;lt;code&amp;gt;//nbtinfo&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.nbtinfo&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 查看一个方块的NBT信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//setskylight&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.light.set&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置一个选区的天空亮度&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//line &amp;amp;lt;block&amp;amp;gt; [thickness] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.line&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 以长方体选择区域的两个对角绘制出一条对角线线段。&amp;lt;br /&amp;gt;仅能够在长方体选区中使用。&amp;lt;br /&amp;gt;可用的标记：&amp;lt;br /&amp;gt; -h 仅会生成外壳&lt;br /&gt;
* &amp;lt;code&amp;gt;//getlighting&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.light.fix&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取某位置的亮度信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//overlay &amp;amp;lt;block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.overlay&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在给定区域的顶层方块上方覆盖给定方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//wea&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;fawe.admin&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 跳过区域的权限检测限制&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//wer&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;fawe.worldeditregion&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将当前你有权限更改的区域设为选区&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fixlighting&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.light.fix&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 修复某位置的光照&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//removelight&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.light.remove&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 移除选区中的光照&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//curve &amp;amp;lt;block&amp;amp;gt; [thickness] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.curve&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 过选择的点画一条曲线。&amp;lt;br /&amp;gt;只能在使用凸多面体选区类型时才能使用。&amp;lt;br /&amp;gt;Flags:&amp;lt;br /&amp;gt; -h 仅会生成外壳&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//naturalize&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.naturalize&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 顶层覆盖3层泥土，下面填充为石头&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//walls &amp;amp;lt;block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.walls&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 围上选区的四边，即将选区用墙围起来&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//setblocklight&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.light.set&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置选区中的方块亮度&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//lay &amp;amp;lt;block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.overlay&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置选区的顶层方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//move [count] [direction] [leave-id] [-s]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.move&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区中的内容移动。.&amp;lt;br /&amp;gt; -s 标记会将选区设定到目标位置。&amp;lt;br /&amp;gt; -b 也会复制生物群系&amp;lt;br /&amp;gt; -e 忽略实体&amp;lt;br /&amp;gt; -a 忽略空气&amp;lt;br /&amp;gt;自动使用 &amp;lt;leave-id&amp;gt; 填充被移动区域。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//forest [type] [density]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.forest&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在区域内生成森林&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//flora [density]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.flora&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在区域内生成植物群 &lt;br /&gt;
* &amp;lt;code&amp;gt;//deform &amp;amp;lt;expression&amp;amp;gt; [-r] [-o]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.region.deform&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用给定的表达式使区域变形&amp;lt;br /&amp;gt;表达式对每个方块都会执行，它可以&amp;lt;br /&amp;gt;将方块的x，y，z修改到新方块的位置&amp;lt;br /&amp;gt;来实现。详阅 tinyurl.com/wesyntax。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//regen [biome] [seed]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.regen&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 重新生成当前选区中的地图。&amp;lt;br /&amp;gt;注意：这条命令会按照区块为单位来执行，&amp;lt;br /&amp;gt;即会自动将选区内的所有区块自动重新生成。&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Selection 命令&#039;&#039;&#039;  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(改变你的选区位置，选区的模式或是查看关于你的选区的信息： [http://wiki.sk89q.com/wiki/WorldEdit/Selection 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;//count &amp;amp;lt;block&amp;amp;gt; [-d]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.analysis.count&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 为当前选区中某种类型的方块计数&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//size  [-c]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.size&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取当前选区的信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//expand &amp;amp;lt;amount&amp;amp;gt; [reverse-amount] &amp;amp;lt;direction&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.expand&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 延展选区区域&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//shift &amp;amp;lt;amount&amp;amp;gt; [direction]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.shift&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 移动选区区域&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//sel [cuboid|extend|poly|ellipsoid|sphere|cyl|convex] [-d]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择选区类型&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//contract &amp;amp;lt;amount&amp;amp;gt; [reverse-amount] [direction]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.contract&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 缩小选区区域&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//pos1 [coordinates]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.pos&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置选取点1&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//pos2 [coordinates]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.pos&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置选取点2&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//chunk [x,z coordinates] [-s] [-c]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.chunk&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选取范围设置为当前你所在的区块。&amp;lt;br /&amp;gt;使用 -s 标记，则你目前选区范围会扩展到包含目前选区范围的全部区块&amp;lt;br /&amp;gt;也可以使用给定的坐标，这会替代你的&amp;lt;br /&amp;gt;当前位置。使用-c来指定区块坐标，&amp;lt;br /&amp;gt;否则将自动使用全局坐标。&amp;lt;br /&amp;gt;（举个例子，全局坐标5,5和 -c 0,0 所指代的位置是相同的） &lt;br /&gt;
* &amp;lt;code&amp;gt;//hpos1&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.hpos&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选取点1设置为看向的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//wand&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.wand&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取魔杖物品&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/toggleeditwand&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.wand.toggle&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 切换编辑魔杖功能的启用与否&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//hpos2&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.hpos&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选取点2设置为看向的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//outset &amp;amp;lt;amount&amp;amp;gt; [-h] [-v]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.outset&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用给定的数值，在所有方向上延展选区。&amp;lt;br /&amp;gt;可用标记：&amp;lt;br /&amp;gt; -h 仅会延展横向&amp;lt;br /&amp;gt; -v 仅会延展纵向&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//distr  [-c] [-d]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.analysis.distr&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获得选区内方块的分布情况。&amp;lt;br /&amp;gt; -c 标记会获得你剪切板内容的分布情况。&amp;lt;br /&amp;gt; -d 标记会将数据值不同的方块分开统计&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//inset &amp;amp;lt;amount&amp;amp;gt; [-h] [-v]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.selection.inset&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用给定的数值，在所有方向上缩小选区。&amp;lt;br /&amp;gt;可用标记：&amp;lt;br /&amp;gt; -h 仅会缩小横向&amp;lt;br /&amp;gt; -v 仅会缩小纵向&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;History 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(能够撤销操作，反撤销操作，清除历史的相关命令： [http://wiki.sk89q.com/wiki/WorldEdit/Features#History 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;//redo [times] [player]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.history.redo&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： （从历史记录中）反撤销上个操作&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//clearhistory&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.history.clear&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 清除你的历史记录&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//undo [times] [player]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.history.undo&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 撤销上个操作&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//frb &amp;amp;lt;user=Empire92&amp;amp;gt; &amp;amp;lt;radius=5&amp;amp;gt; &amp;amp;lt;time=3d4h&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.history.rollback&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 撤销某个给定的操作。 - 时间使用以下单位： s（秒）, m（分钟）, h（小时）, d（天）, y（年）。&amp;lt;br /&amp;gt; - 从硬盘中导入： /frb #import&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Schematic 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(跟 schematic 文件有关的命令)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic load [&amp;amp;lt;format&amp;amp;gt;] &amp;amp;lt;filename&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.load&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.load&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.upload&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.load.other&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将某个schematic文件导入到你的剪切板中&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic delete &amp;amp;lt;filename&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.schematic.delete&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将某个schematic文件从文件列表中移除&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic list [mine|&amp;amp;lt;filter&amp;amp;gt;] [page=1] [-d] [-n] [-p]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.schematic.list&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 列出所有schematic路径下的可用文件&amp;lt;br /&amp;gt; -p &amp;lt;页码数&amp;gt; 能够列出指定页面的文件&amp;lt;br /&amp;gt; -f &amp;lt;format&amp;gt; 启用格式限制&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic save [&amp;amp;lt;format&amp;amp;gt;] &amp;amp;lt;filename&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.save&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.save&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.save.other&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将你的剪切板中的内容储存到schematic文件中&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic remap&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.schematic.remap&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将剪切板在MCPE/PC的格式间进行转换&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic formats&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.schematic.formats&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 列出所有可用的格式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/schematic loadall [&amp;amp;lt;format&amp;amp;gt;] &amp;amp;lt;filename|url&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.load&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.load&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.schematic.upload&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 读取多个剪切板&amp;lt;br /&amp;gt; -r 标记可以启用随机位置旋转&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Clipboard 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(跟复制和粘贴方块有关的命令： [https://goo.gl/z2ScQR 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;//copy  [-e] [-m]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.copy&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区中的内容复制到剪切板中&amp;lt;br /&amp;gt;可用标记：&amp;lt;br /&amp;gt; -e 跳过复制实体&amp;lt;br /&amp;gt; -m 设置资源蒙版，蒙版外的方块会作为空气复制&amp;lt;br /&amp;gt; -b 也会复制生物群系&amp;lt;br /&amp;gt;警告：实体的粘贴不能通过命令撤销！&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//flip [&amp;amp;lt;direction&amp;amp;gt;]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.flip&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 以复制点为基点，对剪切板中的内容进行镜面翻转。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//rotate &amp;amp;lt;y-axis&amp;amp;gt; [&amp;amp;lt;x-axis&amp;amp;gt;] [&amp;amp;lt;z-axis&amp;amp;gt;]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.rotate&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在不产生破坏的情况下，旋转剪切板中的内容。&amp;lt;br /&amp;gt;角度需要输入度数，正数代表进行顺时针旋转。你也可以堆叠进行多次旋转。我们并不接受非90度倍数的值，否则将不会起任何作用，所以输入的度数应该是90的倍数。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//lazycopy  [-e] [-m]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.lazycopy&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区中的内容延迟复制到剪切板中&amp;lt;br /&amp;gt;可用标记：&amp;lt;br /&amp;gt; -e 跳过复制实体&amp;lt;br /&amp;gt; -m 设置资源蒙版，蒙版外的方块会作为空气复制&amp;lt;br /&amp;gt; -b 也会复制生物群系&amp;lt;br /&amp;gt;警告：实体的粘贴不能通过命令撤销！&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//place  [-s] [-a] [-o]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.place&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在不应用任何变化（如旋转）的前提下，直接放置剪切板中的内容。&amp;lt;br /&amp;gt;可用参数：&amp;lt;br /&amp;gt; -a 跳过空气方块&amp;lt;br /&amp;gt; -o 粘贴在原位置&amp;lt;br /&amp;gt; -s 粘贴之后将选区设定在粘贴区域&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//cut [leave-id] [-e] [-m]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.cut&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区剪切到粘贴板之中&amp;lt;br /&amp;gt;可用参数：&amp;lt;br /&amp;gt; -e 跳过复制实体&amp;lt;br /&amp;gt; -m 设置资源蒙版，蒙版外的方块会作为空气复制&amp;lt;br /&amp;gt; -b 也会复制生物群系&amp;lt;br /&amp;gt;警告：实体的粘贴不能通过命令撤销！ &lt;br /&gt;
* &amp;lt;code&amp;gt;/download&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.download&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 通过配置的网页接口下载剪切板的内容&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/asset [category]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.asset&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将你的剪切板的内容保存到网页资源接口中&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//paste  [-s] [-a] [-o]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.paste&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 粘贴剪切板的内容。&amp;lt;br /&amp;gt;可用参数：&amp;lt;br /&amp;gt; -a 跳过空气方块&amp;lt;br /&amp;gt; -b 跳过粘贴生物群系&amp;lt;br /&amp;gt; -e 跳过粘贴实体&amp;lt;br /&amp;gt; -o 粘贴到原位置&amp;lt;br /&amp;gt; -s 在粘贴之后将选区设定在粘贴区域&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//lazycut  [-e] [-m]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.lazycut&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区中的内容延迟剪切到剪切板之中&amp;lt;br /&amp;gt;可用参数：&amp;lt;br /&amp;gt; -e 跳过复制实体&amp;lt;br /&amp;gt; -m 设置资源蒙版，蒙版外的方块会作为空气复制&amp;lt;br /&amp;gt; -b 也会复制生物群系&amp;lt;br /&amp;gt;警告：实体的粘贴不能通过命令撤销！&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/clearclipboard&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.clipboard.clear&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 清除你的剪切板&lt;br /&gt;
=== &#039;&#039;&#039;Generation 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(创建特殊结构或更多有关特性： [https://goo.gl/KuLFRW 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;//image &amp;amp;lt;imgur&amp;amp;gt; [randomize=true] [complexity=100]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.image&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 创建一张图片&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//generate &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;expression&amp;amp;gt; [-h] [-r] [-o] [-c]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.shape&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 根据表达式创建结构，表达式返回的值&amp;lt;br /&amp;gt;应该是正数（返回true，如果选择点在结构内的话）&amp;lt;br /&amp;gt;作为可选项，你可以设置目标方块的类型或数据。&amp;lt;br /&amp;gt;可选参数：&amp;lt;br /&amp;gt; -h 创建凹下去的结构&amp;lt;br /&amp;gt; -r 使用原版Minecraft坐标&amp;lt;br /&amp;gt; -o 与 -r 相似，但使用相对坐标。&amp;lt;br /&amp;gt; -c 与 -r 相似，但相对坐标的中心不同。&amp;lt;br /&amp;gt;如果你既没有没有输入 -r ，也没有输入 -o 的话，选区会自动映射为 -1..1&amp;lt;br /&amp;gt;详见 tinyurl.com/wesyntax。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//cyl &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt;[,&amp;amp;lt;radius&amp;amp;gt;] [height] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.cylinder&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成圆柱体。&amp;lt;br /&amp;gt;通过指定用逗号分隔的两个半径，&amp;lt;br /&amp;gt;你能够创建椭圆体。&amp;lt;br /&amp;gt;第一个参数指定南北距离，第二个参数指定东西距离。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//sphere &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt;[,&amp;amp;lt;radius&amp;amp;gt;,&amp;amp;lt;radius&amp;amp;gt;] [raised?] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.sphere&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成实心球。&amp;lt;br /&amp;gt;通过指定用逗号分隔的三个半径，&amp;lt;br /&amp;gt;你能够创建椭球体。椭球体半径的距离的指定顺序为：&amp;lt;br /&amp;gt;南北，上下，东西。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//ore &amp;amp;lt;mask&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt; &amp;amp;lt;size&amp;amp;gt; &amp;amp;lt;freq&amp;amp;gt; &amp;amp;lt;rarity&amp;amp;gt; &amp;amp;lt;minY&amp;amp;gt; &amp;amp;lt;maxY&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.ore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成矿物&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//caves [size=8] [freq=40] [rarity=7] [minY=8] [maxY=127] [sysFreq=1] [sysRarity=25] [pocketRarity=0] [pocketMin=0] [pocketMax=3]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.caves&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成网状的洞穴结构&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//hcyl &amp;amp;lt;pattern&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt;[,&amp;amp;lt;radius&amp;amp;gt;] [height]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.cylinder&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成中空的圆柱体。&amp;lt;br /&amp;gt;通过指定用逗号分隔的两个半径，&amp;lt;br /&amp;gt;你能够创建椭圆体。&amp;lt;br /&amp;gt;第一个参数指定南北距离，第二个参数指定东西距离。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//ores&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.ore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成矿物&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//hsphere &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;radius&amp;amp;gt;[,&amp;amp;lt;radius&amp;amp;gt;,&amp;amp;lt;radius&amp;amp;gt;] [raised?]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.sphere&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成中空的球体。&amp;lt;br /&amp;gt;通过指定用逗号分隔的三个半径，&amp;lt;br /&amp;gt;你能够创建椭球体。椭球体半径的距离的指定顺序为：&amp;lt;br /&amp;gt;南北，上下，东西。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/forestgen [size] [type] [density]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.forest&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成森林&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//hpyramid &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;size&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.pyramid&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成中空的金字塔&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/pumpkins [size]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.pumpkins&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成南瓜群&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//pyramid &amp;amp;lt;block&amp;amp;gt; &amp;amp;lt;size&amp;amp;gt; [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.pyramid&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成填充过的金字塔&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//generatebiome &amp;amp;lt;biome&amp;amp;gt; &amp;amp;lt;expression&amp;amp;gt; [-h] [-r] [-o] [-c]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.generation.shape&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;worldedit.biome.set&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 根据表达式创建结构，表达式返回的值&amp;lt;br /&amp;gt;应该是正数（返回true，如果选择点在结构内的话）&amp;lt;br /&amp;gt;作为选择项，你可以设置目标方块的类型或数据。&amp;lt;br /&amp;gt;可选参数：&amp;lt;br /&amp;gt; -h 创建凹下去的结构&amp;lt;br /&amp;gt; -r 使用原版Minecraft坐标&amp;lt;br /&amp;gt; -o 与 -r 相似，但使用相对坐标。&amp;lt;br /&amp;gt; -c 与 -r 相似，但相对坐标的中心不同。&amp;lt;br /&amp;gt;如果你既没有没有输入 -r ，也没有输入 -o 的话，选区会自动映射为 -1..1&amp;lt;br /&amp;gt;详见 tinyurl.com/wesyntax。&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Biome 命令&#039;&#039;&#039;  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(更改当前生物群系，或查看当前或所有生物群系)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;//setbiome &amp;amp;lt;biome&amp;amp;gt; [-p]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.biome.set&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置区域的生物群系。&amp;lt;br /&amp;gt;默认来说，我们会将你选区中的所有方块直接设置为对应生物群系。&amp;lt;br /&amp;gt;-p 标记则将选区所在区块设置为对应生物群系。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/biomeinfo  [-p] [-t]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.biome.info&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取当前位置的生物群系。&amp;lt;br /&amp;gt;默认来说，我们会检测你选区中所有的方块，列出所有包含的生物群系。&amp;lt;br /&amp;gt;-t 则检测你目光指向的那个区块。&amp;lt;br /&amp;gt;-p 会检查你当前所在的区块。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/biomelist [page]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.biome.list&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取所有可用的生物群系。&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Anvil 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(操纵大量方块：[https://github.com/c7w/FastAsyncWorldedit/wiki/Anvil-API 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil count &amp;amp;lt;ids&amp;amp;gt; [-d]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.count&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 为选区中的方块计数&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil replace [from-block] &amp;amp;lt;to-block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.replace&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 用一种方块替换选区中的所有另一种方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil replaceall &amp;amp;lt;folder&amp;amp;gt; [from-block] &amp;amp;lt;to-block&amp;amp;gt; [-d] [-f]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.replaceall&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 用另一种方块替换选区中的所有方块&amp;lt;br /&amp;gt; -d 标记会禁用通配符的匹配&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil copy&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.copychunks&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将区块延迟复制到你的anvil剪切板中&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil paste  [-c]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.pastechunks&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 从anvil剪切板将内容粘贴出来。&amp;lt;br /&amp;gt; -c 标记会调整将内容粘贴到区块中。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil distr&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.distr&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 用另一种方块替换选区中的所有方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil trimallplots&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.trimallplots&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 修剪地皮世界中的区块&amp;lt;br /&amp;gt;未认领的区块会被删除&amp;lt;br /&amp;gt;未修改的区块会被删除&amp;lt;br /&amp;gt;使用 -v 来删除没有人去过的区块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil countall &amp;amp;lt;folder&amp;amp;gt; [hasSky] &amp;amp;lt;id&amp;amp;gt; [-d]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.countall&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 为世界中的方块计数&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil clear&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.clear&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 清除选区的区块（不整理磁盘碎片，直接删除）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil removelayers &amp;amp;lt;id&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.removelayer&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 如果某一区块的顶层方块全部都与提供的方块类型匹配成功的话，就移除顶层方块。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil replacepattern [from-mask] &amp;amp;lt;to-pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.replace&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 移除选区内所有匹配对应样式模板的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil remapall &amp;amp;lt;folder&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.remapall&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将世界在MCPE和PC的存档格式之间转换&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil deletealloldregions &amp;amp;lt;folder&amp;amp;gt; &amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.deletealloldregions&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 移除一段时间内没有人进入的区域&amp;lt;br /&amp;gt;你可以使用秒 (s), 分钟 (m), 小时 (h), 天 (d), 周 (w),和 年 (y) 来计算时间&amp;lt;br /&amp;gt;(请注意：月份不是计算时间的单位)&amp;lt;br /&amp;gt;举个例子： 8h5m12s&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil replaceallpattern &amp;amp;lt;folder&amp;amp;gt; [from-block] &amp;amp;lt;to-pattern&amp;amp;gt; [-d] [-m]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.replaceall&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将选区中所有的方块替换成另一种方块样式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/anvil deleteallunvisited &amp;amp;lt;folder&amp;amp;gt; &amp;amp;lt;age-ticks&amp;amp;gt; [file-age=60000]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.anvil.deleteallunvisited&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 会将满足以下条件之一的全部区块移除：&lt;br /&gt;
加载时间没有到指定整数游戏刻的区块(20t = 1s)；&amp;lt;br /&amp;gt;&lt;br /&gt;
在创建后，持续时间 &amp;lt;code&amp;gt;file-duration&amp;lt;/code&amp;gt; (ms) 内没有被玩家访问的；&amp;lt;br /&amp;gt;&lt;br /&gt;
在过去的 &amp;lt;code&amp;gt;chunk-inactivity&amp;lt;/code&amp;gt; (ms)时间中没有被使用的。&lt;br /&gt;
因此，我们推荐的自动保存时间间隔便是 &amp;lt;code&amp;gt;file-duration&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;chunk-inactivity&amp;lt;/code&amp;gt; 的值。&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Super Pickaxe 命令&#039;&#039;&#039;  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(超级镐子相关命令： [https://goo.gl/aBtGHo 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/sp recur &amp;amp;lt;radius&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.superpickaxe.recursive&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 启用递归超级镐子模式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/sp area &amp;amp;lt;radius&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.superpickaxe.area&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 启用区域超级镐子模式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/sp single&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.superpickaxe&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 启用单个方块的超级镐子模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Navigation 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(关于玩家在地图上移动的相关命令： [https://goo.gl/uQTUiT 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/descend [# of floors]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.descend&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 向下降一层&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/ascend [# of levels]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.ascend&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 向上升一层&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/thru&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.thru.command&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 穿过面前的墙壁&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/jumpto [world,x,y,z]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.jumpto.command&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 传送到某一位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/ceil [clearance] [-f] [-g]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.ceiling&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 前往当前的最顶层，即“天花板”上&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/up &amp;amp;lt;block&amp;amp;gt; [-f] [-g]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.up&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 向上移动一段距离，并在脚下生成方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/unstuck&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.navigation.unstuck&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在卡在方块中的情况下逃脱&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Snapshot 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(列出，读取快照以及查看跟快照有关的信息)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/snapshotlist [num]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snapshots.list&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 列出快照列表的对应页数&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/snapshotafter &amp;amp;lt;date&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snapshots.restore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择发布时间在该时间之后，距离时间最近的一个快照&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/snapshotbefore &amp;amp;lt;date&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snapshots.restore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择发布时间在该时间之前，距离时间最近的一个快照&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/snapshotuse &amp;amp;lt;snapshot&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snapshots.restore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择要使用的快照&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/snapshotsel &amp;amp;lt;index&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snapshots.restore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择根据列表ID排序的某一快照&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Snapshot Util 命令&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;([http://wiki.sk89q.com/wiki/WorldEdit/Snapshots 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/restore [snapshot]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.snapshots.restore&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 从某一快照恢复选区&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Scripting 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(执行 CraftScript 脚本 [https://goo.gl/dHDxLG 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/cs &amp;amp;lt;filename&amp;amp;gt; [args...]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.scripting.execute&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 执行一个 CraftScript 脚本&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/.s [args...]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.scripting.execute&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 执行上一个 CraftScript 脚本&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Chunk 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;([旧版使用] 检索区块： [http://wiki.sk89q.com/wiki/WorldEdit/Chunk_tools 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/chunkinfo&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.chunkinfo&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获得你当前所在的区块的有关信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/listchunks&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.listchunks&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 列出你的选区所在的所有区块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/delchunks&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.delchunks&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 已过期，请使用 anvil 命令来执行对应操作&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Options 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(玩家切换设置和物品信息)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;//searchitem &amp;amp;lt;query&amp;amp;gt; [-b] [-i]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 搜索某个物品。&amp;lt;br /&amp;gt;Flags:&amp;lt;br /&amp;gt; -b 仅搜索方块&amp;lt;br /&amp;gt; -i 仅搜索物品&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//gtransform [transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.global-trasnform&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 获取全局变换式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//toggleplace&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在你当前位置和第一个选取点之间切换位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//tips&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 切换FAWE提示是否开启&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//gsmask [mask]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.global-mask&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置应用到你所有编辑的全局资源蒙版，任何作为源资源存储的方块数据均需要经过本蒙版判定（例如：判定方块能否被复制到剪切板中）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//gmask [mask]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.global-mask&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置应用给你所有编辑的全局目标蒙版，与上面一个指令相对的，所有你的目标性更改均需通过本蒙版的判定（例如：判定能否修改世界中的方块）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//fast [on|off]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.fast&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 切换FAWE插件是否进入快速模式，在该模式下你的操作不会记录到相关历史记录中，即无法进行撤销操作&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Brush Options 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(工具命令)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/target [mode]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在不同的目标模式之间切换&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/size [pattern]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.options.size&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置笔刷大小&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;//listbrush [mine|&amp;amp;lt;filter&amp;amp;gt;] [page=1] [-d] [-n] [-p]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.list&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 列出或搜索所有你能使用的笔刷&amp;lt;br /&amp;gt; -p &amp;lt;页码数&amp;gt; 列出指定页面&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/mask [mask]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.options.mask&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置笔刷的目标蒙版&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/range [pattern]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.options.range&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置笔刷的范围&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/transform [transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.options.transform&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置笔刷的变换式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/mat [pattern]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.options.material&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置笔刷的填充方块样式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/patterns [page=1|search|pattern]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 决定被放置的方块样式&amp;lt;br /&amp;gt; &lt;br /&gt;
使用[括号]来输入参数&amp;lt;br /&amp;gt; &lt;br /&gt;
使用 , 来代表 或 的分割&amp;lt;br /&amp;gt;&lt;br /&gt;
例如： #surfacespread[10][#existing],andesite&amp;lt;br /&amp;gt;&lt;br /&gt;
更多信息: https://git.io/vSPmA&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/savebrush [name]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.save&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 保存你当前的笔刷&amp;lt;br /&amp;gt;使用 -g 标记以储存到全局&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/loadbrush [name]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.load&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 读取笔刷&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/transforms [page=1|search|transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 变换方块被放置的方式&amp;lt;br /&amp;gt; &lt;br /&gt;
使用[括号]来输入参数&amp;lt;br /&amp;gt; &lt;br /&gt;
使用 , 来代表 或 的分割&amp;lt;br /&amp;gt; &lt;br /&gt;
使用 &amp;amp;amp; 来表示 和 的分割&amp;lt;br /&amp;gt;&lt;br /&gt;
更多信息: https://git.io/v9KHO&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/primary [brush arguments]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置右键点击激活的笔刷&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;// [on|off]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.superpickaxe&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 切换是否开启超级镐子功能&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/targetmask [mask]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置目标蒙版&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/none&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 从当前物品上解除绑定功能&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/visualize [mode=0]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在不同的预览模式之间进行切换&amp;lt;br /&amp;gt;0 = 没有预览&amp;lt;br /&amp;gt;1 = 预览单个目标方块&amp;lt;br /&amp;gt;2 = 用玻璃预览所有将会改变的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/scroll [none|clipboard|mask|pattern|range|size|visual|target]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在不同的目标模式之间进行切换&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/secondary [brush arguments]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置左键点击激活的笔刷&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/smask [mask]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.options.mask&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置笔刷的资源蒙版&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/masks [page=1|search|mask]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 查看所有用来决定方块能否被放置的蒙版&amp;lt;br /&amp;gt; &lt;br /&gt;
使用[括号]来输入参数&amp;lt;br /&amp;gt;&lt;br /&gt;
使用 , 来代表 或 的分割&amp;lt;br /&amp;gt;&lt;br /&gt;
使用 &amp;amp;amp; 来表示 和 的分割&amp;lt;br /&amp;gt;&lt;br /&gt;
举个例子： &amp;amp;gt;[stone,dirt],#light[0][5],$jungle&amp;lt;br /&amp;gt;&lt;br /&gt;
更多信息: https://git.io/v9r4K&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Tool 命令&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(将某些功能绑定到持有的物品之上： [https://goo.gl/xPnPxj 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool tree [type]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.tree&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 生成树的工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool repl &amp;amp;lt;block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.replacer&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 方块替换工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool info&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.info&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 方块信息工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool lrbuild &amp;amp;lt;leftclick block&amp;amp;gt; &amp;amp;lt;rightclick block&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.lrbuild&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 大范围建筑工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool cycler&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.data-cycler&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 方块数据值循环工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool deltree&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.deltree&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 移除漂浮的树的工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool inspect&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.inspect&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择检查笔刷&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool floodfill &amp;amp;lt;pattern&amp;amp;gt; &amp;amp;lt;range&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.flood-fill&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 池塘填充工具&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/tool farwand&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.tool.farwand&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 远程选区工具&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Brush 命令&#039;&#039;&#039;  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(从远程建筑与涂画的工具。 [https://git.io/vSPYf 更多信息])&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush copypaste [depth=5]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.copy&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 左键点击一个物体的底座来复制。&amp;lt;br /&amp;gt;右键点击来粘贴&amp;lt;br /&amp;gt; -r 标记能够在粘贴时应用随机旋转&amp;lt;br /&amp;gt;注意：能和剪切板滚动一起搭配使用&amp;lt;br /&amp;gt;&lt;br /&gt;
视频： https://www.youtube.com/watch?v=RPZIaTbqoZw&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush command &amp;amp;lt;radius&amp;amp;gt; [cmd1;cmd2...]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.command&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在点击的位置执行一条命令。&amp;lt;br /&amp;gt; &lt;br /&gt;
你的选区会延展到包括该点&amp;lt;br /&amp;gt; &lt;br /&gt;
可用的变量： {x}, {y}, {z}, {world}, {size}&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush populateschematic &amp;amp;lt;mask&amp;amp;gt; &amp;amp;lt;file|folder|url&amp;amp;gt; [radius=30] [points=5] [-r]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.populateschematic&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择分散型schematic笔刷。&amp;lt;br /&amp;gt; -r 标记能够应用随机旋转&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush scmd &amp;amp;lt;scatter-radius&amp;amp;gt; &amp;amp;lt;points&amp;amp;gt; &amp;amp;lt;cmd-radius=1&amp;amp;gt; &amp;amp;lt;cmd1;cmd2...&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.scattercommand&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在表面的随机一点执行命令&amp;lt;br /&amp;gt; &lt;br /&gt;
分散的半径是每个点之间的最小距离&amp;lt;br /&amp;gt; &lt;br /&gt;
你的选区会延展到包括该点&amp;lt;br /&amp;gt; &lt;br /&gt;
可用的变量： {x}, {y}, {z}, {world}, {size}&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush erode [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.erode&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 侵蚀地形&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush pull [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.pull&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将地形朝着你所在的方向隆起&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush blendball [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.blendball&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 平滑化，混合化地形&amp;lt;br /&amp;gt;&lt;br /&gt;
图片： https://i.imgur.com/cNUQUkj.png -&amp;amp;gt; https://i.imgur.com/hFOFsNf.png&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush stencil &amp;amp;lt;pattern&amp;amp;gt; [radius=5] [file|#clipboard|imgur=null] [rotation=360] [yscale=1.0]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.stencil&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用高度图来绘制出地形表面。&amp;lt;br /&amp;gt; -w 标记仅会应用于最大饱和度&amp;lt;br /&amp;gt; -r 标记会应用随机旋转&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush splatter &amp;amp;lt;pattern&amp;amp;gt; [radius=5] [seeds=1] [recursion=5] [solid=true]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.splatter&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置物体表面为随机方块。&amp;lt;br /&amp;gt;图片： https://i.imgur.com/hMD29oO.png&amp;lt;br /&amp;gt;使用示例： /br splatter stone,dirt 30 15&amp;lt;br /&amp;gt;注意：种子决定着会有多少斑点，递归次数决定着其大小，solid决定着模型是按照每个种子应用还是按照每个方块应用。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush cylinder &amp;amp;lt;block&amp;amp;gt; [radius=2] [height=1] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.cylinder&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 创建圆柱体。&amp;lt;br /&amp;gt; -h 标记会创建中空的圆柱体。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush shatter &amp;amp;lt;pattern&amp;amp;gt; [radius=10] [count=10]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.shatter&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 创建将地形分成多个部分的不均匀的线&amp;lt;br /&amp;gt;图片： https://i.imgur.com/2xKsZf2.png&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush circle &amp;amp;lt;pattern&amp;amp;gt; [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.sphere&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 围绕着你看向的方向创建一个圆。&amp;lt;br /&amp;gt;注意：无视笔刷的半径，并且启用预览可以帮助你操作的可能结果&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush smooth [size=2] [iterations=4] [-n]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.smooth&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择地形平滑化笔刷。&amp;lt;br /&amp;gt; -n 标记会只更改自然生成的方块。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush ex [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.ex&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 火焰熄灭笔刷的简写&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush gravity [radius=5] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.gravity&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 这个笔刷会模仿重力的作用。&amp;lt;br /&amp;gt; -h 标记能够让它从世界的最大Y坐标开始计算，而不是点击方块的Y坐标。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush sspl &amp;amp;lt;pattern&amp;amp;gt; [size=0] [tension=0] [bias=0] [continuity=0] [quality=10]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.surfacespline&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在地面上创建一条曲线。&amp;lt;br /&amp;gt;视频： https://www.youtube.com/watch?v=zSN-2jJxXlM&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush spline &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.spline&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 点击一些物体，然后再次点击相同的方块来让你的物体之间进行连接。&amp;lt;br /&amp;gt;笔刷半径设置过小，或是点击位置错误或导致变形。形状必须是简单的线条或者封闭的环形。&amp;lt;br /&amp;gt;图片： http://i.imgur.com/CeRYAoV.jpg -&amp;amp;gt; http://i.imgur.com/jtM0jA4.png&amp;lt;br /&amp;gt;图片2： http://i.imgur.com/bUeyc72.png -&amp;amp;gt; http://i.imgur.com/tg6MkcF.png&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush surface &amp;amp;lt;pattern&amp;amp;gt; [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.surface&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用高度图来画出表面。&amp;lt;br /&amp;gt; -w 标记仅会应用于最大饱和度&amp;lt;br /&amp;gt; -r 标记会应用随机旋转&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush layer &amp;amp;lt;radius&amp;amp;gt; [color|&amp;amp;lt;pattern1&amp;amp;gt; &amp;amp;lt;patern2&amp;amp;gt;...]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.layer&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用覆盖层来替换地形。&amp;lt;br /&amp;gt;示例：/br layer 5 95:1 95:2 35:15 - 会在地面上放置一些覆盖层&amp;lt;br /&amp;gt;图片： https://i.imgur.com/XV0vYoX.png&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush sphere &amp;amp;lt;pattern&amp;amp;gt; [radius=2] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.sphere&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 创建一个球体。&amp;lt;br /&amp;gt; -h 标记能够创建中空的球体。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush clipboard&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.clipboard&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 选择剪切板笔刷。&amp;lt;br /&amp;gt; -a 标记会使其不会粘贴空气方块。&amp;lt;br /&amp;gt;不输入 -p 标记，粘贴后的内容的中心会出现在目标位置。输入该标记后，粘贴内容所在的位置就会根据你在复制内容时所站的位置而定义了。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush recursive &amp;amp;lt;pattern-to&amp;amp;gt; [radius=5]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.recursive&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置所有连接起来的方块。&amp;lt;br /&amp;gt; -d 标记会应用深度优先的顺序&amp;lt;br /&amp;gt;注意：设置蒙版可以递归指定的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush scatter &amp;amp;lt;pattern&amp;amp;gt; [radius=5] [points=5] [distance=1] [-o]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.scatter&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在地面上随机散布方块。&amp;lt;br /&amp;gt; -o 标记会覆盖原方块&amp;lt;br /&amp;gt;视频： https://youtu.be/RPZIaTbqoZw?t=34s&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush line &amp;amp;lt;pattern&amp;amp;gt; [radius=0] [-h] [-s] [-f]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.line&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 创建线段。&amp;lt;br /&amp;gt; -h 标记仅会创建其外壳&amp;lt;br /&amp;gt; -s 标记在创建之后会选择点击的点。&amp;lt;br /&amp;gt; -f 标记会创建平坦的线段。&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush height [radius=5] [file|#clipboard|imgur=null] [rotation=0] [yscale=1.00] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.height&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 这个笔刷可以使地形上升或下降。&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; 标记启用随机坐标旋转&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt; 标记使得该笔刷也会在雪层中工作&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; 标记禁用平滑&amp;lt;br /&amp;gt;注意！注意！如果你要降低地形的话请将yscale的值设置为负数！&amp;lt;br /&amp;gt;在雪层中应用的图片： https://i.imgur.com/Hrzn0I4.png&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush butcher [radius=5] [-p] [-l] [-a] [-n] [-g] [-b] [-t] [-f] [-r]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.butcher&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 击杀在指定的半径内的怪物。&amp;lt;br /&amp;gt;可用的标记：&amp;lt;br /&amp;gt; -p 也击杀宠物&amp;lt;br /&amp;gt; -n 也击杀 NPC&amp;lt;br /&amp;gt; -g 也击杀铁傀儡&amp;lt;br /&amp;gt; -a 也击杀动物。&amp;lt;br /&amp;gt; -b 也击杀中立生物&amp;lt;br /&amp;gt; -t 也击杀带有名字的怪物&amp;lt;br /&amp;gt; -f 相当于这以前所有标记的混合&amp;lt;br /&amp;gt; -r 也击杀盔甲架&amp;lt;br /&amp;gt; -l 目前无任何作用&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush flatten [radius=5] [file|#clipboard|imgur=null] [rotation=0] [yscale=1.00] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.height&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 平坦笔刷，可以使地形平坦&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; 标记启用随机坐标旋转&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt; 标记使得该笔刷也会在雪层中工作&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; 标记禁用平滑&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/brush cliff [radius=5] [file|#clipboard|imgur=null] [rotation=0] [yscale=1.00] [-h]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;权限&#039;&#039;&#039;： &amp;lt;code&amp;gt;worldedit.brush.height&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 这个笔刷可以平坦地形且创建悬崖。&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; 标记启用随机坐标旋转&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt; 标记使得该笔刷也会在雪层中工作&amp;lt;br /&amp;gt; - &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; 标记禁用平滑&lt;br /&gt;
&lt;br /&gt;
== 蒙版 &#039;&#039;&#039;/Masks&#039;&#039;&#039;  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(关于蒙版方面的帮助 [https://git.io/v9r4K 更多信息])&amp;lt;br /&amp;gt;&lt;br /&gt;
蒙版决定了方块能否被放置 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 使用 [brackets] 来输入参数 - 使用 , 来代表 或 的分割 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 使用 &amp;amp;amp; 来代表 与 的分割 &amp;lt;br /&amp;gt;&lt;br /&gt;
例如： &amp;amp;gt;[stone,dirt],#light[0][5],$jungle 更多信息: https://git.io/v9r4K&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;#offset &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; &amp;amp;lt;mask&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使蒙版偏移对应坐标值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;% &amp;amp;lt;chance&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 百分比几率&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#id&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制初始ID&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#data&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制初始数据值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;{ &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制方块与初始方块的距离范围&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#existing&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置限制为非空气方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$ &amp;amp;lt;biome&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制操作在特殊的生物群系中，要想列出所有的生物群系请使用 //biomelist&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#surface&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制操作在表面方块上（任何接触空气的固体方块）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;! &amp;amp;lt;mask&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 取对应蒙版的“非”值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;= &amp;amp;lt;expression&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 表达式蒙版&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#region&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在某个提供的区域内部&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;\ &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为特殊的地形坡度&amp;lt;br /&amp;gt; -o 标记仅仅会覆盖，举个例子： /[0d][45d]&amp;lt;br /&amp;gt;作用解释：能够选出任何坡度在0-45度之间的方块&amp;lt;br /&amp;gt;示例：/[3][20]&amp;lt;br /&amp;gt;作用解释：能够选出任何坡度在3-20度之间的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#dregion&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在玩家的选取之中&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#xaxis&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为特殊的x轴坐标位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#yaxis&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为特殊的y轴坐标位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#opacity &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为指定的不透明度等级&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#light &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为指定的光亮等级&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#blocklight &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为指定的方块亮度等级&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#haslight&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为方块是否拥有光照（天空或环境）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;~ &amp;amp;lt;mask&amp;amp;gt; [min=1] [max=8]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 邻近的其他方块的数量&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#brightness &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制指定的方块光照等级&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#nolight&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制方块需要没有光亮（天空或环境）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#skylight &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制需要指定天空光亮等级&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#simplex &amp;amp;lt;scale=10&amp;amp;gt; &amp;amp;lt;min=0&amp;amp;gt; &amp;amp;lt;max=100&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用噪声算法作为蒙版&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#zaxis&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为特殊的z轴坐标位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;gt; &amp;amp;lt;mask&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制在某一指定方块的上面&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#wall&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制为墙壁（任意方块，东西南北任意一面为空气）&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;| &amp;amp;lt;mask&amp;amp;gt; &amp;amp;lt;min&amp;amp;gt; &amp;amp;lt;max&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制旁边位置拥有指定数量的其他方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#iddata&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制指定的方块ID与数据值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt; &amp;amp;lt;mask&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在某一指定方块之下&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#solid&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 限制仅操作固体方块&lt;br /&gt;
&lt;br /&gt;
== 样式 &#039;&#039;&#039;/Patterns&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(对于某些方块样式信息的帮助。 [https://git.io/vSPmA 更多信息])&amp;lt;br /&amp;gt;&lt;br /&gt;
样式决定放置什么方块 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 使用 [brackets] 输入参数 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 使用 , 来代表 或 的分割 &amp;lt;br /&amp;gt;&lt;br /&gt;
举个例子： #surfacespread[10][#existing],andesite &amp;lt;br /&amp;gt;&lt;br /&gt;
更多信息: https://git.io/vSPmA&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#offset &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使样式偏移对应坐标值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#mask &amp;amp;lt;mask&amp;amp;gt; &amp;amp;lt;pattern-true&amp;amp;gt; &amp;amp;lt;pattern-false&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 根据蒙版应用样式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#id &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 只改变方块ID&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#spread &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 随机扩散方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#buffer &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 只有当样式在使用时才放置方块&amp;lt;br /&amp;gt;如果你不想点击某些地方两次时，用它和笔刷搭配&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#clipboard&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用你剪切板中的方块作为样式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#relative &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将样式偏移到你所点击的位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#data &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 只会改变方块的数据值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#biome &amp;amp;lt;biome&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 设置生物群系&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#existing&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 仅更改已经存在的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;= &amp;amp;lt;expression&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 样式表达式： http://wiki.sk89q.com/wiki/WorldEdit/Expression_syntax&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#simplex &amp;amp;lt;scale=10&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用噪声算法来随机放置方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#averagecolor &amp;amp;lt;color&amp;amp;gt; [randomize=true] [max-complexity=100]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 在已经存在的方块和颜色之间平均化&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#desaturate [percent=100] [randomize=true] [max-complexity=100]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 减小已经存在的方块的饱和度&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#darken [randomize=true] [max-complexity=100]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 减小已经存在的方块的亮度&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#fullcopy [schem|folder|url=#copy] [rotate=false] [flip=false]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 将你完整的剪切板填充到方块上&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#buffer2d &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 只有在一列中的样式被使用时才会放置方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#lighten [randomize=true] [max-complexity=100]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 增大已存在的方块的亮度&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#saturate &amp;amp;lt;color&amp;amp;gt; [randomize=true] [max-complexity=100]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 增加已经存在的方块的饱和度&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#anglecolor [randomize=true] [max-complexity=100]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 根据坡度角的大小，计算出的较正常方块暗的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#iddatamask &amp;amp;lt;bitmask=15&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用样式的ID和目的方块的数据值放置方块&amp;lt;br /&amp;gt; - 用于替换半砖或其他方块数据值需要修改的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#angledata&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 根据坡度角提供方块数据值&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#!x &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 本样式不会提供z轴的信息。&amp;lt;br /&amp;gt;举个例子： #!x[#!z[#~[#l3d[pattern]]]]&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#!y &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 本样式不会提供y轴的信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#linear &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 循环从样式列表中读取并设置方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#!z &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 本样式不会提供z轴的信息&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#surfacespread &amp;amp;lt;distance&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 随机改变地面上一个方块的位置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#linear3d &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用 x,y,z 坐标选定一个来自列表中的方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#solidspread &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; &amp;amp;lt;pattern&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 随机传播固体方块&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#color &amp;amp;lt;color&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用接近于指定颜色的方块&lt;br /&gt;
&lt;br /&gt;
==  变换式 &#039;&#039;&#039;/Transforms&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;(变换式的有关帮助。 [https://git.io/v9KHO 更多信息])&amp;lt;br /&amp;gt;&lt;br /&gt;
变换式会在放置方块之前，对其作出某种变化 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 在 [brackets] 中输入参数 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 使用 , 来代表 或 的分割 &amp;lt;br /&amp;gt;&lt;br /&gt;
- 使用 &amp;amp;amp; 来代表 与 的分割 &amp;lt;br /&amp;gt;&lt;br /&gt;
更多信息: https://git.io/v9KHO&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;#offset &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; [transform]&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 偏移变换式，将方块偏移指定坐标后放置&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#rotate &amp;amp;lt;rotateX&amp;amp;gt; &amp;amp;lt;rotateY&amp;amp;gt; &amp;amp;lt;rotateZ&amp;amp;gt; [transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 所有的变化都会被绕着指定位置旋转&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#scale &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; [transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 所有的变化都会按比例进行缩放&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#pattern &amp;amp;lt;pattern&amp;amp;gt; [transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用给定的方块样式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#spread &amp;amp;lt;dx&amp;amp;gt; &amp;amp;lt;dy&amp;amp;gt; &amp;amp;lt;dz&amp;amp;gt; [transform]&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 随机偏移变换式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#linear &amp;amp;lt;transform&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 从变换式列表中循环选择变换式&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#linear3d &amp;amp;lt;transform&amp;amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;： 使用 x,y,z 坐标选定一个来自列表中的变换式&lt;br /&gt;
&lt;br /&gt;
== 配置 ==&lt;br /&gt;
FAWE 安装后，即使不经过配置，也已经非常高效了，但是在配置或微调操作限制和队列操作的相关设置后，FAWE的效率还会有一定的提升。请参阅下列的内容以及默认配置文件中的注释行。&lt;br /&gt;
&lt;br /&gt;
如果你在修改了配置之后，发现之后插件不正常工作，那么请把你微调的那一项设置改回默认。&lt;br /&gt;
&lt;br /&gt;
要想重置 config.yml 文件的话，请删除它，然后重启服务器或使用 &#039;&#039;&#039;&amp;lt;code&amp;gt;/fawe&amp;lt;/code&amp;gt;&#039;&#039;&#039; 命令重新载入 FAWE 插件。&lt;br /&gt;
&lt;br /&gt;
=== 异步操作 ===&lt;br /&gt;
&lt;br /&gt;
WorldEdit 插件会在放置方块之前，尝试将所有编辑操作全部储存在内存之中。&lt;br /&gt;
&lt;br /&gt;
WorldEdit 也会在内存中储存撤销方块等等历史记录，在大型编辑时这会增加内存的需求，甚至会导致服务器内存溢出崩溃，或导致编辑失败。&lt;br /&gt;
&lt;br /&gt;
FAWE 则对速度有极大的提升，它将每个编辑操作都分割到了异步线程上进行。&lt;br /&gt;
&lt;br /&gt;
本插件会在计算完成之前，部分计算完成之后就开始放置方块。&lt;br /&gt;
&lt;br /&gt;
这让全局编辑的整体速度得到有效提升。&lt;br /&gt;
&lt;br /&gt;
同时，因为方块在有关计算完毕之后就开始放置，它们不会占用内存的空间。&lt;br /&gt;
&lt;br /&gt;
FAWE 也能够通过配置将撤销方块（等有关历史记录）储存在硬盘之上，这可以与其他性能的改善搭配使用，最终使 FAWE 插件能够在极小占用的情况下完成数倍于 Worldedit 插件的编辑内容。&lt;br /&gt;
&lt;br /&gt;
=== 操作限制设置 ===&lt;br /&gt;
&lt;br /&gt;
这些设置能够让你控制某些用户组单次编辑可以放置的方块数目。&lt;br /&gt;
&lt;br /&gt;
“default”（默认）小节就是为非管理组用户和没有权限跳过限制的用户所准备的。&lt;br /&gt;
&lt;br /&gt;
查看 &#039;&#039;&#039;fawe.bypass&#039;&#039;&#039; 和 &#039;&#039;&#039;fawe.admin&#039;&#039;&#039; 权限来获取更多信息。&lt;br /&gt;
&lt;br /&gt;
你也能通过使用权限节点来定义某些特定用户组的限制，请查看下方的默认配置文件中的注释行。&lt;br /&gt;
&lt;br /&gt;
=== 队列设置 ===&lt;br /&gt;
&lt;br /&gt;
这小节中的设置能够让你微调异步队列操作，影响内存的使用情况与编辑速度。&lt;br /&gt;
&lt;br /&gt;
==== 本地队列 ====&lt;br /&gt;
&lt;br /&gt;
FAWE 会将每个编辑命令放在分割的异步线程之中，以此来代替把操作塞进服务器主线程的做法，队列中的方块由每个玩家的本地队列来处理。&lt;br /&gt;
&lt;br /&gt;
在队列中，方块按照区域来排序，这能够让 FAWE 使用更高效的优化算法，最终将方块放置（分配）进世界之中。&lt;br /&gt;
&lt;br /&gt;
举个例子，WorldEdit会使用插件本体来执行光照和物理效果，然后发包，最后改变每一个方块。&lt;br /&gt;
&lt;br /&gt;
但是取而代之的是，FAWE将它队列中的方块按照区块分开检测，使用更高效的优化算法，将方块放置进世界中。&lt;br /&gt;
&lt;br /&gt;
在编辑开始时，本地队列进入未完成阶段。&lt;br /&gt;
&lt;br /&gt;
当需要处理的队列方块为简单的 //set 或者是 //copy 这种类型的命令时，方块已经直接准备好放置了。&lt;br /&gt;
&lt;br /&gt;
当使用其他命令（例如 //smooth 或 //deform）来编辑方块时，方块的变化要依赖于世界中的其他方块，并且编辑所涉及的方块可能要改变好几次。&lt;br /&gt;
&lt;br /&gt;
（一般来说，本地化队列的所有编辑都能够在涉及64个区块内完成）&lt;br /&gt;
&lt;br /&gt;
当编辑全部完成之后，本地队列变化成完成状态。&lt;br /&gt;
&lt;br /&gt;
==== 全局队列 ====&lt;br /&gt;
&lt;br /&gt;
FAWE 使用全局队列来放置当前激活的本地队列中的编辑内容。&lt;br /&gt;
&lt;br /&gt;
全局队列按照编辑的优先级来处理编辑顺序，所以提交时间最长的编辑会首先开始进行。全局队列中的方块放置是在服务器的主线程上工作的。&lt;br /&gt;
&lt;br /&gt;
FAWE 首先会放置完成状态的本地队列中的方块。因此，在放置未完成状态的本地队列中的方块之前，完成状态的本地队列列表必须是空的。&lt;br /&gt;
&lt;br /&gt;
全局队列和本地队列相互连接配合，便实现了编辑的成功进行。&lt;br /&gt;
&lt;br /&gt;
（从内部代码实现的角度来说，我们使用两个队列&amp;lt;queue&amp;gt;来存储相关队列内容，一个是完成状态的本地队列，另一个是未完成状态的）&lt;br /&gt;
&lt;br /&gt;
==== 效率改善 ====&lt;br /&gt;
&lt;br /&gt;
FAWE 也尝试通过“在没有完成状态的本地队列时，放置未完成状态的本地队列中的方块”的方式来改善插件的效率。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;target–size&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
FAWE 使用 &#039;&#039;&#039;target–size&#039;&#039;&#039; 来控制放置未完成队列中的方块数目，同时确保将要被放置的方块将不再因后续的计算而改变。&lt;br /&gt;
&lt;br /&gt;
虽说在大多数情况下，类似于 //smooth 或 //deform 的这些命令，它们涉及的区块数目远小于64个区块，但是，如果在指令仍在计算方块更改时，涉及的方块数目便已经超过了本选项设置的限度，这些指令的最终实现效果便可能不是那么理想。&lt;br /&gt;
&lt;br /&gt;
这是因为，这些命令所涉及的方块改变会参考世界中其他位置方块的情况，并且所涉及的一些方块可能要经历多次改变。&lt;br /&gt;
&lt;br /&gt;
而在这种设置的情况下，在附近的64个区块进入处理队列之后，其他方块被重新计算、修改的可能性便被抹除了。&lt;br /&gt;
&lt;br /&gt;
但是对于简单的操作来说，不会存在这种问题，例如 //copy 和 //set，因为这些命令涉及的方块不会进行多次的改变。&lt;br /&gt;
&lt;br /&gt;
如果队列中不存在完成的本地队列正等待放置方块，且队列中排队的区块数目大于等于target-size选项所设置的值的话，全局队列会直接开始处理仍然在计算中的可放置方块。&lt;br /&gt;
&lt;br /&gt;
调高这项设置能够确保像 //smooth 和 //deform 这样的命令稳定，但调低这项设置也能确保全局队列一直在放置可用的方块，而不是处于闲置状态。&lt;br /&gt;
&lt;br /&gt;
默认的 &#039;&#039;&#039;target–size&#039;&#039;&#039; 的值是64.&lt;br /&gt;
&lt;br /&gt;
如果没有 &#039;&#039;&#039;target–size&#039;&#039;&#039; 选项的话，使用 /fastmode 运行巨大的编辑会导致未完成的队列的填充速度比 &#039;&#039;&#039;max–wait–ms&#039;&#039;&#039; 的清空队列速度更快。&lt;br /&gt;
&lt;br /&gt;
减小 &#039;&#039;&#039;target–size&#039;&#039;&#039; 选项的值，可能会使例如 //smooth 和 //deform 这些命令的成效变差，因为在方块确定被放置之后，将花费在计算重新改变方块上的时间被取消了。&lt;br /&gt;
&lt;br /&gt;
同时，也正因为这些命令会依赖于其他位置的方块，如果 &#039;&#039;&#039;target–size&#039;&#039;&#039; 设置不够大的话，与先经过完全计算，再开始放置方块的模式相比，直接从未完成队列中放置方块这种模式最后所表现出的效果可能有一些差异。&lt;br /&gt;
&lt;br /&gt;
这可能会导致命令的最终效果不正确。&lt;br /&gt;
&lt;br /&gt;
所以请将 &#039;&#039;&#039;target–size&#039;&#039;&#039; 选项的值设定的适当大，来避免这个问题。&lt;br /&gt;
&lt;br /&gt;
将 &#039;&#039;&#039;target–size&#039;&#039;&#039; 的值设置的过大可能收效不大，因为大多数涉及的方块编辑操作都能限制在64个区块之中。&lt;br /&gt;
&lt;br /&gt;
同时如果将它设置的很大的话，就会降低 FAWE 阻止大型编辑使服务器内存溢出的能力。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;max–wait–ms&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
FAWE 对于放置已经完成计算的相关编辑方块来说，也是非常高效的。&lt;br /&gt;
&lt;br /&gt;
但是，等待计算完成既耗费时间，也占用内存。&lt;br /&gt;
&lt;br /&gt;
因此，本设置就是用来避免编辑计算没有完全完成时，部分已经完成计算的方块一直闲置在内存中的问题。&lt;br /&gt;
&lt;br /&gt;
本选项主要用来保持全局队列持续处于放置方块的状态之中。&lt;br /&gt;
&lt;br /&gt;
全局队列会在队列中没有处于完成的本地队列，并且全局队列处于空闲状态时间的比 &#039;&#039;&#039;max–wait–ms&#039;&#039;&#039; 所设置的时间长（单位为毫秒）时，开始放置仍然在处理中的方块。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;max–wait–ms&#039;&#039;&#039; 设置也能解决区块读取连接超时的问题。通常区块的读取速度都是小于一秒的，所以默认的 &#039;&#039;&#039;max–wait–ms&#039;&#039;&#039; 的值是 1000，用于避免编辑冻结或是区块读取错误。&lt;br /&gt;
&lt;br /&gt;
如果区块没有及时加载的话，请尝试将这个数值调大。&lt;br /&gt;
&lt;br /&gt;
=== 默认配置文件 ===&lt;br /&gt;
默认的配置文件如下面的代码所示。&lt;br /&gt;
&lt;br /&gt;
请注意，服务器文件夹内生成的配置文件是不带注释的。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;yml&amp;quot;&amp;gt;# 前六项是不能配置的&lt;br /&gt;
issues: &amp;amp;quot;https://github.com/boy0001/FastAsyncWorldedit/issues&amp;amp;quot;&lt;br /&gt;
wiki: &amp;amp;quot;https://github.com/boy0001/FastAsyncWorldedit/wiki/&amp;amp;quot;&lt;br /&gt;
date: &amp;amp;quot;27 Aug 2017 14:00:00 GMT&amp;amp;quot;&lt;br /&gt;
build: &amp;amp;quot;https://ci.athion.net/job/FastAsyncWorldEdit/&amp;amp;lt;build&amp;amp;gt;&amp;amp;quot;&lt;br /&gt;
commit: &amp;amp;quot;https://github.com/boy0001/FastAsyncWorldedit/commit/&amp;amp;lt;hash&amp;amp;gt;&amp;amp;quot;&lt;br /&gt;
platform: &amp;amp;quot;&amp;amp;lt;platform&amp;amp;gt;&amp;amp;quot;&lt;br /&gt;
# 可用选项：de&lt;br /&gt;
# 请发起pull request来贡献翻译： https://github.com/boy0001/FastAsyncWorldedit/new/master/core/src/main/resources&lt;br /&gt;
language: &#039;&#039;&lt;br /&gt;
# 是否允许插件自动更新&lt;br /&gt;
update: true&lt;br /&gt;
# 是否将插件的使用统计发送到 mcstats.org&lt;br /&gt;
metrics: true&lt;br /&gt;
# FAWE 在没有足够的可用内存时，是否会跳过处理相关区块以防止崩溃&lt;br /&gt;
prevent-crashes: false&lt;br /&gt;
# 设置为 true 来启用支持 WorldEdit 的相关插件对区域的限制。（例如： PlotSquared 或 WorldGuard）&lt;br /&gt;
# 要想在区域中启用 WorldEdit 的话，用户需要相关权限：&lt;br /&gt;
# fawe.&amp;amp;lt;plugin&amp;amp;gt;  权限。查看权限页面来获取所有目前支持的区域插件。&lt;br /&gt;
region-restrictions: true&lt;br /&gt;
# FAWE 在内存占用超过这个百分比时会取消非管理员做出的编辑&lt;br /&gt;
#  - 使用 `/wea` 或 `//fast` 或 `fawe.bypass` 命令跳过检测&lt;br /&gt;
#  - 设置为 100 或 -1 禁用本设置。&lt;br /&gt;
max-memory-percent: 95&lt;br /&gt;
&lt;br /&gt;
clipboard:&lt;br /&gt;
  # 是否将用户剪切板内容储存到硬盘上，而非储存在内存中&lt;br /&gt;
  #  - 执行剪切板操作相关命令的速度将会有一定程度的下降&lt;br /&gt;
  #  - 剪切板中每个方块占用 2 字节的存储空间&lt;br /&gt;
  use-disk: true&lt;br /&gt;
  # 是否将剪切板压缩，以减少文件大小：&lt;br /&gt;
  #  - TODO: 目前还没有实现在硬盘上的压缩随机访问&lt;br /&gt;
  #  - 0 = 不进行压缩&lt;br /&gt;
  #  - 1 = 快速压缩&lt;br /&gt;
  #  - 2-17 = 较慢速度压缩&lt;br /&gt;
  compression-level: 1&lt;br /&gt;
  # 用户剪切板信息在删除之前，储存在硬盘上的时间，单位为天&lt;br /&gt;
  delete-after-days: 1&lt;br /&gt;
&lt;br /&gt;
lighting:&lt;br /&gt;
  # 是否应该在重新计算光照完成后再发包&lt;br /&gt;
  delay-packet-sending: true&lt;br /&gt;
  async: true&lt;br /&gt;
  # 重新计算光照的模式：&lt;br /&gt;
  #  - 0 = 无（不重新计算光照）&lt;br /&gt;
  #  - 1 = 优化（重新计算光源和改变的方块的光照）&lt;br /&gt;
  #  - 2 = 全局（缓慢重新计算每个方块的光照）&lt;br /&gt;
  mode: 1&lt;br /&gt;
&lt;br /&gt;
# 一般的游戏刻限制（对 WorldEdit 来说不必要，但是可以防止滥用）&lt;br /&gt;
tick-limiter:&lt;br /&gt;
  # 是否启用限制&lt;br /&gt;
  enabled: true&lt;br /&gt;
  # 限制间隔，单位游戏刻&lt;br /&gt;
  interval: 20&lt;br /&gt;
  # 在每个间隔间最大的掉落方块数目（每区块）&lt;br /&gt;
  falling: 64&lt;br /&gt;
  # 每个间隔中最大执行的物理效果数目（每区块）&lt;br /&gt;
  physics: 8192&lt;br /&gt;
  # 每间隔最大生成的物品数目（每区块）&lt;br /&gt;
  items: 256&lt;br /&gt;
&lt;br /&gt;
web:&lt;br /&gt;
  # 剪切板的网页接口&lt;br /&gt;
  #  - 所有的剪切板都匿名私有储存&lt;br /&gt;
  #  - 下载可以被用户删除&lt;br /&gt;
  #  - 支持剪切板的上传，下载和保存&lt;br /&gt;
  url: &amp;amp;quot;http://empcraft.com/fawe/&amp;amp;quot;&lt;br /&gt;
  # 资源的网页接口&lt;br /&gt;
  #  - 所有剪切板都是组织好后公开的&lt;br /&gt;
  #  - 资源能够被搜索，选择和下载&lt;br /&gt;
  assets: &amp;amp;quot;http://empcraft.com/assetpack/&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
extent:&lt;br /&gt;
  # 当这些插件拖慢了 WorldEdit 的操作速度时不要提示控制台&lt;br /&gt;
  #  - 如果你需要改变本选项时你会在控制台收到提示信息&lt;br /&gt;
  allowed-plugins: []&lt;br /&gt;
  # 第三方延展插件安装后是否应该显示调试信息&lt;br /&gt;
  debug: true&lt;br /&gt;
&lt;br /&gt;
# 仍在开发实验中的选项，你可以试着用用&lt;br /&gt;
experimental:&lt;br /&gt;
  # [不安全] 直接修改区域文件（已过期——请使用Anvil命令）&lt;br /&gt;
  #  - 使用不当会导致世界错误！&lt;br /&gt;
  anvil-queue-mode: false&lt;br /&gt;
  # [安全] 动态增加渲染的区块的数目&lt;br /&gt;
  #  - 需要 Paper 服务端： ci.destroystokyo.com/job/PaperSpigot/&lt;br /&gt;
  #  - 将你的服务器视距上设置为 1 (spigot.yml, server.properties)&lt;br /&gt;
  #  - 取决于服务器的 tps 和玩家的移动&lt;br /&gt;
  #  - 请给我们提供反馈信息&lt;br /&gt;
  dynamic-chunk-rendering: false&lt;br /&gt;
&lt;br /&gt;
# 队列相关配置，与 FAWE 放置区块的方法相关联&lt;br /&gt;
queue:&lt;br /&gt;
  # 这个数值应该和你处理器拥有的核数相同&lt;br /&gt;
  #  - 如果你需要可信度高的 `/timings` 的话，将此选项设置为1&lt;br /&gt;
  parallel-threads: 8&lt;br /&gt;
  progress:&lt;br /&gt;
    # 显示一位用户的编辑的进度的恒定 title&lt;br /&gt;
    #  - false = 禁用&lt;br /&gt;
    #  - title = 显示进度title&lt;br /&gt;
    #  - chat = 在聊天栏中显示进度&lt;br /&gt;
    display: &amp;amp;quot;false&amp;amp;quot;&lt;br /&gt;
    # 编辑进度多久显示一次&lt;br /&gt;
    interval: 1&lt;br /&gt;
    # 发送进度的延迟，单位毫秒（防止编辑进度刷屏的情况发生）&lt;br /&gt;
    delay: 5000&lt;br /&gt;
  # 在编辑比这数目还多的区块时：&lt;br /&gt;
  #  - FAWE 会在所有运算完成之前直接开始放置方块&lt;br /&gt;
  #  - 大些的值会些微减少CPU的运算时间&lt;br /&gt;
  #  - 小写的值可以减少内存使用&lt;br /&gt;
  #  - 太小的值会导致一些命令执行效果变差（例如 deform）&lt;br /&gt;
  target-size: 64&lt;br /&gt;
  # 不管一项编辑是否计算处理完成，强制 FAWE 开始放置区块&lt;br /&gt;
  #  - 大些的值会在一定程度上减少CPU的运算时间&lt;br /&gt;
  #  - 小些的值可以减少内存使用&lt;br /&gt;
  #  - 太小的值会导致一些操作执行效果变差（例如 deform）&lt;br /&gt;
  max-wait-ms: 1000&lt;br /&gt;
  # 增加或减少队列强度（毫秒） [-50,50]:&lt;br /&gt;
  #     0 = 平衡性能与稳定性&lt;br /&gt;
  #     -10 = 为区块放置少分配 10ms&lt;br /&gt;
  # 值太大的话会造成卡顿（可能你感觉不到）&lt;br /&gt;
  # 值太小的话编辑进度会很慢&lt;br /&gt;
  extra-time-ms: 0&lt;br /&gt;
  # 在提速操作之前读取多少数量的区块&lt;br /&gt;
  #  - 值太小的话会导致FAWE等待主线程的请求&lt;br /&gt;
  #  - 值太大的话会占用更多内存，但并不会感觉变快&lt;br /&gt;
  preload-chunks: 32&lt;br /&gt;
  # 放弃已经闲置了一段时间（ms）的编辑&lt;br /&gt;
  #  - 例如：一款插件创建了 EditSession 但没有使用它做任何事&lt;br /&gt;
  #  - 这只会对不正确使用 WorldEdit 的旧版 API 的插件起作用&lt;br /&gt;
  discard-after-ms: 60000&lt;br /&gt;
&lt;br /&gt;
history:&lt;br /&gt;
  # 历史记录是否应储存在硬盘上：&lt;br /&gt;
  #  - 空闲大量的内存&lt;br /&gt;
  #  - 服务器重启可以存留历史记录&lt;br /&gt;
  #  - 可以无限次撤销&lt;br /&gt;
  #  - 不会影响编辑的性能，依照 `combine-stages`&lt;br /&gt;
  use-disk: true&lt;br /&gt;
  # 使用数据库来储存硬盘储存的概要：&lt;br /&gt;
  #  - 启用检测和回档&lt;br /&gt;
  #  - 不会影响性能&lt;br /&gt;
  use-database: true&lt;br /&gt;
  # 在分配时记录到历史中：&lt;br /&gt;
  #  - 速度更快，因为它避免了重复的方块检查&lt;br /&gt;
  #  - 压缩可能会糟糕一些，因为分配顺序不同&lt;br /&gt;
  combine-stages: true&lt;br /&gt;
  # 大些的压缩等级减少历史记录的大小，但以占用 CPU 使用率为代价&lt;br /&gt;
  # 0 = 不压缩字节数组（最快）&lt;br /&gt;
  # 1 = 1 级快速压缩（默认）&lt;br /&gt;
  # 2 = 2 x 快速&lt;br /&gt;
  # 3 = 3 x 快速&lt;br /&gt;
  # 4 = 1 x 中速, 1 x 快速&lt;br /&gt;
  # 5 = 1 x 中速, 2 x 快速&lt;br /&gt;
  # 6 = 1 x 中速, 3 x 快速&lt;br /&gt;
  # 7 = 1 x 慢速, 1 x 中速, 1 x 快速&lt;br /&gt;
  # 8 = 1 x 慢速, 1 x 中速, 2 x 快速&lt;br /&gt;
  # 9 = 1 x 慢速, 1 x 中速, 3 x 快速 （最佳压缩文件）&lt;br /&gt;
  # 注意：如果你使用硬盘的话，请最好使用压缩，因为较小的文件可以储存的更快&lt;br /&gt;
  compression-level: 3&lt;br /&gt;
  # 压缩的缓冲大小：&lt;br /&gt;
  #  - 较大 = 更好的比率，但是占用更多内存&lt;br /&gt;
  #  - 必须在以下范围中 [64, 33554432]&lt;br /&gt;
  buffer-size: 531441&lt;br /&gt;
  # 编辑时最大等待一个区块加载的时间，单位是毫秒。&lt;br /&gt;
  #  (50ms = 1 游戏刻, 0 = 最快).&lt;br /&gt;
  #  默认值 100 应该对大多数情况来说都是安全的。&lt;br /&gt;
  # &lt;br /&gt;
  # 需要读取区块的操作（例如：复制）在没有及时读取区块时&lt;br /&gt;
  # 会使用上个区块作为过滤器，这会出现大量复制出的方块。&lt;br /&gt;
  # 每个读取区块的操作在读取区块时通常都需要25-50ms，在服务器卡顿时甚至更多。&lt;br /&gt;
  # 所以即使设置100ms的等待时间，如果区块在10ms内加载完毕了的话，也不需要等待100ms。&lt;br /&gt;
  # &lt;br /&gt;
  # 本值也可以作为万一区块无法读取时（不管是什么原因）操作超时的值&lt;br /&gt;
  # 如果操作超时了的话，操作就会使用上个区块作为过滤器，&lt;br /&gt;
  # 然后显示出一条错误信息，在这种情况下，你需要要么将选区调整的更小，&lt;br /&gt;
  # 要么将本项的值设置的大一些。&lt;br /&gt;
  # 如果设置为 0，这个值的处理速度会很快，因为它既不会阻止读取区块，也不会等待。&lt;br /&gt;
  chunk-wait-ms: 1000&lt;br /&gt;
  # 在几天之后删除硬盘上的历史记录&lt;br /&gt;
  delete-after-days: 7&lt;br /&gt;
  # 在玩家登出时是否删除内存中的历史记录（不影响硬盘存储）&lt;br /&gt;
  delete-on-logout: true&lt;br /&gt;
  # 对于一些使用 WorldEdit 的插件来说，历史记录是否默认启用：&lt;br /&gt;
  #  - 禁用本项速度会更快&lt;br /&gt;
  #  - 使用 FAWE API 的插件不会受影响&lt;br /&gt;
  enable-for-console: true&lt;br /&gt;
  # 是否储存反撤销的相关信息：&lt;br /&gt;
  #  - 历史记录文件要大大约 20%&lt;br /&gt;
  #  - 允许使用 /redo 命令&lt;br /&gt;
  store-redo: true&lt;br /&gt;
  # 仅记录所有比 4096x256x256 小的编辑：&lt;br /&gt;
  #  - 减少历史记录文件的大小大概10%&lt;br /&gt;
  small-edits: false&lt;br /&gt;
&lt;br /&gt;
# 一些路径的文件夹名&lt;br /&gt;
paths:&lt;br /&gt;
  # 将任何Minecraft或Mod的Jar文件放在这里来使用方块的材质&lt;br /&gt;
  textures: &amp;amp;quot;textures&amp;amp;quot;&lt;br /&gt;
  heightmap: &amp;amp;quot;heightmap&amp;amp;quot;&lt;br /&gt;
  history: &amp;amp;quot;history&amp;amp;quot;&lt;br /&gt;
  # 群组服务器可以使用相同的剪切板&lt;br /&gt;
  clipboard: &amp;amp;quot;clipboard&amp;amp;quot;&lt;br /&gt;
  # 是否分离每个玩家schematic文件的路径&lt;br /&gt;
  per-player-schematics: true&lt;br /&gt;
# &amp;amp;quot;default&amp;amp;quot; 权限组会影响没有特殊限制权限的用户。&lt;br /&gt;
# 要想给某人不同的权限配置，请复制默认限制组&lt;br /&gt;
# 然后重新给这个权限组命个名（例如：newbie）。然后给予用户限制的&lt;br /&gt;
# 权限节点，使用该限制名（例如： fawe.limit.newbie  ）&lt;br /&gt;
limits:&lt;br /&gt;
  default:&lt;br /&gt;
    # 能够最多同时运行的操作（例如：命令）&lt;br /&gt;
    max-actions: 1&lt;br /&gt;
    # 每次最大改变的方块数量（例如：使用 `//set stone` ）。&lt;br /&gt;
    max-changes: 50000000&lt;br /&gt;
    # 每次最大检测的方块数量（例如：使用 `//count stone` 不会改变方块的命令）&lt;br /&gt;
    max-checks: 50000000&lt;br /&gt;
    # 一次更改失败的最大次数（例如：玩家没有访问该区域的权限）&lt;br /&gt;
    max-fails: 50000000&lt;br /&gt;
    # 最大允许的笔刷递归次数（例如： `//brush smooth` ）&lt;br /&gt;
    max-iterations: 1000&lt;br /&gt;
    # 一次操作最大能够允许的实体数目（例如：牛）&lt;br /&gt;
    max-entities: 1337&lt;br /&gt;
    # 包括 Banner, Beacon, BrewingStand, Chest, CommandBlock, &lt;br /&gt;
    # CreatureSpawner, Dispenser, Dropper, EndGateway, Furnace, Hopper, Jukebox, &lt;br /&gt;
    # NoteBlock, Sign, Skull, Structure 的最大方块状态&lt;br /&gt;
    max-blockstates: 1337&lt;br /&gt;
    # 玩家历史文件的最大尺寸，单位是MB：&lt;br /&gt;
    #  - 超过这个尺寸的历史文件，不管是在硬盘上还是内存中都会被删除&lt;br /&gt;
    max-history-mb: -1&lt;br /&gt;
    # //calc 能够执行的每次操作的最大时间，单位毫秒 &lt;br /&gt;
    max-expression-ms: 50&lt;br /&gt;
    # 动画化方块放置：&lt;br /&gt;
    #  - 为方块放置增加延迟（ms/方块）&lt;br /&gt;
    #  - 使用虚伪的延迟会导致使用更多CPU与内存&lt;br /&gt;
    speed-reduction: 0&lt;br /&gt;
    # 放置区块，而不是单个方块：&lt;br /&gt;
    #  - 禁用本项会大幅度降低性能&lt;br /&gt;
    #  - 只有在与动画化方块放置冲突时才禁用本项&lt;br /&gt;
    fast-placement: true&lt;br /&gt;
    # WorldEdit 应该使用玩家的物品栏放置物品吗？&lt;br /&gt;
    # 0 = 不使用物品栏（创造模式）&lt;br /&gt;
    # 1 = 移除和放置都使用物品栏（免费建筑区）&lt;br /&gt;
    # 2 = 仅放置使用物品栏（生存模式）&lt;br /&gt;
    inventory-mode: 0&lt;br /&gt;
    # 大型的编辑是否需要确认（需要区块数目大于16384）&lt;br /&gt;
    confirm-large: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bukkit API ==&lt;br /&gt;
插件开发相关，暂略&lt;br /&gt;
&lt;br /&gt;
==参考资料==&lt;br /&gt;
* [https://github.com/boy0001/FastAsyncWorldedit/wiki Legacy Wiki(Primary)]&lt;br /&gt;
* [https://wiki.intellectualsites.com/en/FastAsyncWorldEdit New Wiki]&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Bootstrap:Footer&amp;diff=3266</id>
		<title>Bootstrap:Footer</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Bootstrap:Footer&amp;diff=3266"/>
		<updated>2016-08-10T11:58:40Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;大家好, 百科已经被Liuzln我占领了[雾&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Bootstrap:Footer&amp;diff=3265</id>
		<title>Bootstrap:Footer</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Bootstrap:Footer&amp;diff=3265"/>
		<updated>2016-08-10T11:56:42Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​创建页面，内容为“233333333”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;233333333&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=TerrainControl&amp;diff=2974</id>
		<title>TerrainControl</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=TerrainControl&amp;diff=2974"/>
		<updated>2016-03-20T09:32:16Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* variable name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待搬运}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=TerrainControl&lt;br /&gt;
|版本=v2.7.2&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.7.2-1.8.3&lt;br /&gt;
|網址=[https://github.com/MCTCP/TerrainControl/wiki/ WikiOnGithub]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
:对于本页面使用到的译名，请使用[[Minecraftwiki:Minecraft_Wiki:译名标准化#生物群系|Minecraft_Wiki:译名标准化]]的标准&lt;br /&gt;
:[[TerrainControl/en|查看原文]]&lt;br /&gt;
:[https://github.com/MCTCP/TerrainControl/wiki Github Wiki]&lt;br /&gt;
Terrain Control 是一款高级的地形生成器。通过多种配置文件，它使用户可以在不了解Java的情况下，对Minecraft地形生成机制的大多数方面进行控制。它可以运行在Bukkit/Forge服务端或带有Forge的单人游戏上。Terrain Control 继承自旧版的 PhoenixTerrainMod，而其又是基于著名的 BiomeTerrainMod。Terrain Control 由Khoorn维护 (在Github上名为 Wickth )。&lt;br /&gt;
* 控制水平与垂直方向的地形生成噪声函数&lt;br /&gt;
* 控制每个生态群系的地形生成高度以及波动性&lt;br /&gt;
* 由图像生成生态群系图&lt;br /&gt;
* 控制生态群系，岛屿和大陆的规模&lt;br /&gt;
* 自定义生态群系&lt;br /&gt;
* 众多关于洞穴与峡谷的设置项&lt;br /&gt;
* 控制自然结构的生成，诸如天然矿井、要塞和村庄&lt;br /&gt;
* 对矿物、植物、地牢、池塘和其他生成物的完全控制&lt;br /&gt;
* 自定义树木和其他对象（BO2 以及 BO3）&lt;br /&gt;
* 替换方块&lt;br /&gt;
* 支持视觉设置，如设置树叶的颜色（需要客户端也安装TerrainControl）&lt;br /&gt;
&lt;br /&gt;
想了解更多，请继续阅读。&lt;br /&gt;
 &lt;br /&gt;
== 向导 ==&lt;br /&gt;
=== 准备工作 ===&lt;br /&gt;
==== 安装向导 ====&lt;br /&gt;
Terrain Control 插件支持CraftBukkit，Spigot，Cauldron和Forge （甚至单人游戏），jar文件可以在所有这些平台上面运行。&lt;br /&gt;
===== Forge （单人游戏） =====&lt;br /&gt;
首先，下载并且安装Forge，运行一次Minecraft以确保所有文件正常运行。然后通过Terrain Control百科主页面上的下载链接下载插件，确保和Minecraft本体的版本对应。把文件放进.minecraft文件夹下的mods文件夹。&lt;br /&gt;
你现在可以创建一个Terrain Control所定义的世界类型。这个 Mod 只会影响到这一个世界与这个世界的类型。如果你没有更改在 .minecraft/mods/TerrainControl/worlds/YOUR_WORLD_NAME/ 里面的配置文件，这个世界只会成为一个默认的Minecraft世界。每当你改变了配置，你必须删除.minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界，被更改的设置不会影响到已经生成的区块。向导会教给你如何自定义一个世界类型。&lt;br /&gt;
2.1.1.2	CraftBukkit，Spigot 和 Cauldron 服务器 &lt;br /&gt;
只需要把jar文件放入plugins文件夹，就像其他的Bukkit插件一样。此时并不需要在玩家的客户端上安装相应的单人游戏版本的Terrain Control，但是如果安装了可以体验到更多的特性。&lt;br /&gt;
在你安装完成之后，你必须为你新的世界激活这个插件。如果你没有一个类似于Multiverse的多世界管理插件，可以通过如下修改bukkit.yml 来允许插件操作这个世界（请在yml文件里使用空格，不要使用 tabs!）: &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;worlds:&lt;br /&gt;
  你的世界名称:&lt;br /&gt;
    generator: TerrainControl&amp;lt;/code&amp;gt;&lt;br /&gt;
如果你使用了 Multiverse，你可以创建一个Terrain Control 类型的时间通过使用命令：&lt;br /&gt;
 /mv create 世界名称 normal -g TerrainControl &lt;br /&gt;
如果你通过配置多世界插件来使用Terrain Control 更改你的一个默认类型的世界，也需要把Terrain Control 添加到 bukkit.yml （操作如上），Terrain Control 需要这个来正确地为默认世界进行初始化。如果你使用其他的多世界管理插件，请自行查看其介绍文档进行配置。请使用 TerrainControl （在 Terrain 和 Control之间没有空格）作为generator名称(即generator 后面填的)，区分大小写。&lt;br /&gt;
如果你没有更改在 plugins/TerrainControl/worlds/YOUR_WORLD_NAME/ 目录下的配置，这个世界只会成为一个默认的Minecraft世界。每当你改变了配置，你必须删除 .minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界。被更改的设置不会影响到已经生成的区块。向导会教给你如何自定义一个世界类型。&lt;br /&gt;
===== Forge服务器(也就是官服) =====&lt;br /&gt;
确保Forge安装到了服务器。把插件放进mods文件夹。去 server.properties  文件然后设置level-type 到 TerrainControl (没有一个空格在 Terrain 和 Control之间)。删除主世界的 level.dat 来得到一个正确的世界类型。&lt;br /&gt;
如果你没有更改在 .minecraft/mods/TerrainControl/worlds/YOUR_WORLD_NAME/ 里面的配置文件，世界只会成为一个默认的Minecraft世界。每当你改变了配置，你必须删除 .minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界。被更改的设置不会影响到已经生成的区块。下面的向导会教你如何自定义一个世界类型。&lt;br /&gt;
==== 准备工作向导 ====&lt;br /&gt;
欢迎使用Terrain Control。&lt;br /&gt;
在你成功的安装Terrain Control之后，你可以开始创建你的新世界。我们先创建一个种子为”12”的创造模式的世界（TerrainControl作为generator），使用这个特定的种子是为了使你的世界与教程所介绍的相同。如果你需要创建一个不同的世界，只需要跳过这个列表。&lt;br /&gt;
* 如果你是单人游戏，点击创建新的世界按钮，选择创造模式作为游戏模式然后填写一个名称。点击更多世界选项按钮，把种子改成12然后选择 TerrainControl 作为世界类型。确保打开了允许作弊（你需要使用 /tp 命令）。&lt;br /&gt;
* 如果你在 Bukkit 服务器上然后你有 Multiverse 多世界插件,你可以使用 /mv create world_name NORMAL -s 12 -g TerrainControl 来创建世界然后使用 /mv tp world_name 来传送到这个世界。&lt;br /&gt;
* 如果使用的是其他的多世界管理插件且使用的是Bukkit服务器，请查询该多世界插件的帮助文档。创建一个新世界（记得把12作为世界的种子），然后将TerrainControl作为世界类型。&lt;br /&gt;
* 如果你在使用Bukkit服务器，但是没有任何多世界管理插件，请前往 bukkit.yml 增加下列内容：&lt;br /&gt;
worlds: &lt;br /&gt;
 你的世界名称:&lt;br /&gt;
   generator: TerrainControl&lt;br /&gt;
记得把 “你的世界名称” 改为你所习惯的世界名称。而且，在文件里面不要使用tab键，只能使用空格键。前往 server.properties 文件然后将 level-seed 设置为12。之后删除整个世界文件夹来得到一个全新的含有正确地图种子的 level.dat 文件。&lt;br /&gt;
* 如果你使用的是Forge服务器（官服），前往 server.properties ，把 level-type 设置为TerrainControl ， level-seed 设置为12。删除整个世界文件夹来得到一个全新的含有正确的种子的 level.dat 文件。&lt;br /&gt;
此时可以登陆一次你的世界让 Terrain Control 生成新的配置。但你会注意到这个世界和默认的Minecraft世界没有任何区别，因为你还没有更改配置文件。&lt;br /&gt;
找到你的Terrain Control 设置文件夹（如果不知道在哪儿可以参考安装说明）,你应该可以看到一些类似于这样的东西：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-1.png||TerrainControl-1]]&lt;br /&gt;
&lt;br /&gt;
打开 WorldConfig.ini（推荐使用Notepad，但是不要使用含有字体样式的编辑器，比如说Word）&lt;br /&gt;
带有 # 开头的行是注释，是对每一个变量进行的解释。在Wiki的WorldConfig页面上，你还可以找到更多的信息。&lt;br /&gt;
为了验证所有的东西都正常工作，我们来更改一个数值试试。GenerationDepth是一个非常有用的变量，如果你把它设置成9，所有的生物群系大小将减半（仅仅是x和z两个方向，就是说高度还是原来的）。如果你设定为了11，所有的生物群系大小翻倍（同时也只是在x和z两个方向）。如果你设置为12，那么生物群系的大小将会变得和”巨型生物群系”世界类型的生物群系大小一样大。让我们试试把它改成12，然后保存。&lt;br /&gt;
如果此时（重新）打开游戏/服务器，你并不能看到任何变化，必须探索新的区块来查看新的地形，这和其他的编辑器（如WorldEdit）一样。你可以删除region文件夹来重新生成地图，但是如果你删除世界文件夹里面的region文件夹，仅仅是删除了地形，而保存了玩家的位置信息和地图种子。注意！不要在服务器/游戏运行时这么做！ &lt;br /&gt;
在你成功删除了region文件夹之后，打开服务器/游戏来测试你的更改。你应该能看到含有一个大型生物群系的世界。&lt;br /&gt;
现在可以浏览一下WorldBiomes文件夹。再次强调：不要忘记关掉服务器/游戏。你会发现里面有很多代表生物群系配置（BiomesConfig）的 .bc 文件。有些文件看起来难以理解 （比如Sky.bc文件），还有一些根本不是生物群系 （比如沙滩和河流生物群系并不存在），还有一些有非常奇怪的名称 （如Mesa Plateau F M）。然而这些名称都是Mojang确定的。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-2.png||TerrainControl-2]]&lt;br /&gt;
&lt;br /&gt;
你可以先忽略这些奇怪的生物群系名称，打开 Desert.bc 文件。如果你往下翻这个文件，你可以发现BiomeHeight 和 BiomeVolatility变量（就是在Terrain Generator Variables下面的东西）。我们先在沙漠上面加点山丘，设置 BiomeHeight 为 0.2（让地形更高一点，而不是多加点山丘）还有 BiomeVolatility 设置为 0.4 （让这里多加点山丘）。现在保存文件，删除region文件夹。如果你确定使用的是12地图种子，可以使用/tp -19 80 -306来传送到一块沙漠里面。&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-3.png||TerrainControl-3]]&lt;br /&gt;
&lt;br /&gt;
也许悬崖边的石头显得有些突兀，沙石看起来会更棒。请关闭游戏/服务器，然后打开 Desert.bc 然后设置 StoneBlock (在“Block”部分) 为 SANDSTONE。这把所有的石头改成了沙石。关闭游戏/服务器，删除region文件夹然后打开服务器/游戏。&lt;br /&gt;
[[文件:TerrainControl-4.png||TerrainControl-4]]&lt;br /&gt;
&lt;br /&gt;
现在也许你已经体验到了Terrain Control的力量。如果你想知道其他的设置会产生什么效果，可以好好看一下 WorldConfig 和 BiomeConfigs文件里面的设置。如果需要创建自定义的生物群系，你应该继续读下去直到向导结束。在主页面你还可以发现大量其他的向导，示例页面也会对你很有用处。&lt;br /&gt;
&lt;br /&gt;
==== 你的第一个自定义生物群系 ====&lt;br /&gt;
在这个向导里面我们来创建第一个自定义生物群系。在前面的教程中我们把默认的沙漠多加入了一些丘陵，把石头替换为沙石。我们现在将创建一个有很多花和一些树的山地。&lt;br /&gt;
你可以使用之前的世界继续工作。或者，您可以创建一个种子为12的新的世界。请确保GenerationDepth也设置为了 12 (在 WorldConfig.ini 中找到)，使生物群落变得更大。如果你已经这么做了，可以使用本教程中的坐标。如果不是，在给定的坐标里会找到其他的生物群系，必须自己寻找需要的群系。&lt;br /&gt;
我们需要先向生物群系列表添加自定义的生物群系。需要修改的第一个选项是 CustomBiomes。打开 WorldConfig.ini 文件，并搜索该选项。需要如此编辑CustomBiomes的一行: &lt;br /&gt;
CustomBiomes:Flowerfield:40 &lt;br /&gt;
这样Terrain Control的控制器就能读取叫做Flowerfield 的生物群系了。生物群系的ID将设置为40。生物群系ID就像方块ID一样，但是这有专门的列表记录以及最高的生物群系ID只能是254，两个生物群系不能出现相同的ID。&lt;br /&gt;
如果你重启了你的游戏/服务器，你会在 BiomeConfigs 目录下发现一个新文件： FlowerfieldBiomeConfig.ini。然而，你的世界看起来没什么变化。我们需要将我们生物群落系添加到生物群系列表。通过在NormalBiomes（位于WorldConfig.ini）里加入项，我们可以让它成为正常生成的生物群系，就和大多数生物群系一样。下面来把你的生物群系添加到NormalBiomes 列表： &lt;br /&gt;
NormalBiomes:Desert,Forest,Extreme Hills,Swampland,Plains,Taiga,Jungle,Flowerfield &lt;br /&gt;
确保服务器关闭/游戏地图未开启后，删除世界文件夹里的region文件夹然后重新打开服务器/地图。使用/tp -1010 78 -11来传送到这个位置后，你可以看见你自定义的生物群系。虽然它看起来还不令人满意，但别忘记，你还没有改变任何设置呢： &lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-5.png|TerrainControl-5]]&lt;br /&gt;
&lt;br /&gt;
如果你没有使用单人游戏Mod的Terrain Control，颜色会出现一点点差别。&lt;br /&gt;
首先，我们来绿化一下生物群系。打开 FlowerfieldBiomeConfig.ini，向下滚动直到你看见 Visuals 和 weather section（视觉效果&amp;amp;天气部分）。在这里你可以更改生物群系的颜色。但是，如果在客户端上没有TerrainControl的Mod，则不会有任何效果。如果你把地图应用在单人游戏上面，这当然没有任何问题；但是如果你使用在Bukkit服务器上面，你的玩家只能看见Minecraft标准颜色模式。颜色都是十六进制的，为了找到想要的颜色，你可以搜索一下“拾色器（Color picker）”，请注意一下大多数拾色器使用的是带有前缀#的颜色编号，这在网页设计中是常见的。但是，TerrainControl要求使用0x来代替#，这在Java中是常见的。&lt;br /&gt;
在本教程中，我们并不会启用颜色设置。TerrainControl有一个很有用的选项，可以使用别的生物群系的ID来保存我们自己的生物群系。这将会使颜色，天气和生物都和另外一个生物群系相类似。然而，地形的形状和特性仍然看起来一样。我们打算使用蘑菇岛生物群系，因为它有很好看的绿色草地（通常不常见，因为那里覆盖满了菌丝，但试着在那里种一块草你就能发现了）。另外，没有敌对生物会生成在上面。向上滚动找到 ReplaceToBiomeName ，并将其设置为 MushroomIsland。&lt;br /&gt;
请确保服务器关掉/地图没有打开，删除世界文件夹内的region文件夹并重新启动服务器/打开地图。使用命令 /tp-1010 78-11 传送到该位置，您现在可以看到生物群落绿了很多： &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-6.png|TerrainControl-6]]&lt;br /&gt;
&lt;br /&gt;
现在，我们要让生物群落多一点山丘。再次打开 FlowerfieldBiomeConfig.ini，将 BiomeVolatility 设置为 0.5。如果你现在再测试地图，你会看到，在一些地方土地低于海平面。为了解决这个问题，我们需要把生物群系的海拔提高一下，而不是增加山丘的数量。将 BiomeHeight 设置为 0.5，使生物群落高一点。&lt;br /&gt;
关闭服务器/世界，删除region文件夹并重新打开服务器/世界。现在，您应该看到一些小山： &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-7.png|TerrainControl-7]]&lt;br /&gt;
&lt;br /&gt;
现在我们要将一些资源添加到生物群系。TerrainControl拥有强大的资源控制体系，由一长串的列表来控制，资源可以是矿、植物、树或者小湖等。几乎所有资源都有其生成频率选项，该数据选项设置其生成频率是默认的多少倍。几乎所有的资源都有稀有程度设置，来确定资源生成的概率。通常的地形还有另一个限制因素：比如如果没有足够的空间来生成一棵树，它就不会生成，即使概率是100。&lt;br /&gt;
资源系统所使用的函数语法也用于其他地方的一些配置，它是这样使用的： &lt;br /&gt;
NameOfFunction(parameter,parameter,parameter,…) &lt;br /&gt;
函数名(参数,参数,参数,……) &lt;br /&gt;
如果你有 Microsoft Excel 电子表格的使用经验，应该对这种语法熟悉：每个参数所做改变都会影响在资源中的一些东西。&lt;br /&gt;
所有的资源同时摆放在一个列表中，叫做资源队列（Resources queue）。这已经超出了本向导所能够介绍到的范围，然而一些关于我们的植物生物群系的有趣的资源也许会被描述到。&lt;br /&gt;
一方块高的花在Minecraft中是单一的方块资源。在资源队列中，有两个资源设计是为了单一方块。草的工作（即草在TerrainControl的生成时做的运算）比其他植物更容易一些，但它只可以在地形的顶端生成。而植物在会在最小和最大高度之间选择一个随机值，然后检查这个位置是否合适。而草只是简单的把自己生成在最高的方块上面，关于这个你可以查看一下高度图。&lt;br /&gt;
出于某种原因Mojang在Minecraft游戏中使用植物的资源方式来生成花，我们没有理由也这样做，于是将使用草的资源生成方式来生成。草的资源生成方式的语法如下所示： &lt;br /&gt;
Grass(Block,BlockData,Frequency,Rarity,BlockSource[,BlockSource2,BlockSource3.....])&lt;br /&gt;
草(方块,方块数据,生成频率,稀有度,方块源[,方块源2,方块源3…]) &lt;br /&gt;
Block是方块的ID或者方块的名称。BlockData是方块的数据，取值氛围为0到15。Frequency 和 Rarity在之前已经讲解过。BlockSource是可以在此方块上生成的所指定的方块。&lt;br /&gt;
首先，我们删除掉标准的控制花生成的两行代码，因为我们并不打算使用植物的资源生成方式。从资源队列中删除这两行： &lt;br /&gt;
Plant(RED_ROSE,2,100.0,0,128,GRASS,DIRT,SOIL) Plant(YELLOW_FLOWER,2,100.0,0,128,GRASS,DIRT,SOIL) &lt;br /&gt;
然后我们在资源队列的末尾添加如下的草地资源生成方式： &lt;br /&gt;
Grass(RED_ROSE,0,40,100,GRASS) Grass(YELLOW_FLOWER,0,80,100,GRASS) &lt;br /&gt;
这理论上会在每个区块上面多生成40个红玫瑰和80朵黄花（1.7.2后为罂粟和蒲公英）。当然，地形并不总是适合花的生成，所以我们不会看到那么多的花。另外一件事情是每次生成位置的选择是随机的，这意味着它可能替换一朵已经生成了的花！ &lt;br /&gt;
像之前一样，如果你关掉了服务器/游戏，删除region文件夹然后重新打开，你会看到这样的景象： &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-8.png|TerrainControl-8]]&lt;br /&gt;
&lt;br /&gt;
哇！好多好多花啊！让我们再添加一些高大的草来让我们的生物群系更好看一点怎么样哟？这儿已经有关于高大的草在资源队列里面了，所以我们只是更改一下资源生成的概率罢了。把这一行这么改一下：&lt;br /&gt;
&lt;br /&gt;
Grass(LONG_GRASS,1,10,100.0,GRASS,DIRT)&lt;br /&gt;
找到这一行: (注意把10替换成80)&lt;br /&gt;
&lt;br /&gt;
Grass(LONG_GRASS,1,80,100.0,GRASS,DIRT)&lt;br /&gt;
关掉服务器/游戏，删除区块文件夹然后重新打开游戏/服务器。看起来好多了，难道不是么？&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-9.png|TerrainControl-9]]&lt;br /&gt;
&lt;br /&gt;
本教程几乎已经结束了，但是我们还需要添加一些树。如果没有树，那么在这个生物群系中将很难生存下去。树资源的语法如下所示：&lt;br /&gt;
&lt;br /&gt;
Tree(Frequency,TreeType,TreeType_Chance[,Additional_TreeType,Additional_TreeType_Chance.....])&lt;br /&gt;
Tree(生成概率,树的类型,树的类型的概率[,附加的树的类型,附加的树的类型的概率.....])&lt;br /&gt;
&lt;br /&gt;
它有一个很俏皮的语法来生成你想要什么类型的树。每次尝试（有概率的尝试），它首先选择第一个TreeType。如果这个TreeType没有成功的生成，那是因为TreeType_Chance（这一一个控制成功生成的概率）或者因为地形不合适。然后它继续选择下一个 Additional_TreeType。如果那棵树还是不能生成，将会继续，直到列表中的所有树都被处理。 &lt;br /&gt;
&lt;br /&gt;
有些树的名字并不好记，比如说Forest其实是白桦木，而Tree却只是橡树。&lt;br /&gt;
&lt;br /&gt;
把这一行加入到资源队列的末尾:&lt;br /&gt;
&lt;br /&gt;
Tree(1,Forest,4,Tree,4)&lt;br /&gt;
这意味着每个区块中只有一次尝试。这种尝试，只有4%的概率（地形是合适的）能成功生成白桦树。如果白桦树没有成功的生成，只有4%的概率会生成一棵普通的橡树。&lt;br /&gt;
&lt;br /&gt;
关掉服务器/游戏，删除区块文件夹然后重新打开服务器/游戏。我们的生物群系从技术上讲已经完成了：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-10.png|TerrainControl-10]]&lt;br /&gt;
&lt;br /&gt;
然而，如果你在Bukkit服务器上面而且使用了/tc map，生物群系就会显示为方块生物群系。你可以通过改变BiomeColor来改变这个事实。我们将会使用0xb8e65c。关掉服务器/游戏，删除区块文件夹然后重新打开服务器/游戏。执行命令/tc map，你会得到一张像这样的地图：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-11.png|TerrainControl-11]]&lt;br /&gt;
&lt;br /&gt;
如果关于这个世界你有任何问题，你可以在这里下载已经完成的地图版本。&lt;br /&gt;
&lt;br /&gt;
恭喜，你已经完成了你的自定义生物群系！现在你可以创建如你所愿的生物群系啦。你已经知道如何创建山丘、森林、草地、鲜花等等。下面是一些额外的贴士：&lt;br /&gt;
* BiomeTemperature:0 将会导致生物群系被雪覆盖。但是在客户端没有安装本Mod的，将会在地上看到雪，但却下着雨。解决这个问题你可以使用ReplaceToBiomeName:Taiga.&lt;br /&gt;
* 水将会在地形地狱海平面试产生。使用 BiomeVolatility 以及 BiomeHeight 设置你可以更好的控制陆地形状的生成。 &lt;br /&gt;
* 看一下默认的配置文件来寻找如何让你的生物群系取得一定的效果。TC论坛帖子中的下载资源同样也是一份有价值的资源。&lt;br /&gt;
&lt;br /&gt;
祝你好运!&lt;br /&gt;
&lt;br /&gt;
==== 常见问题 ====&lt;br /&gt;
本插件并不一定总能把地形制作的如你所愿。此页面将把初学者经常遇见的一些问题罗列出来。如果你仍然困惑，你可以创建一个[http://dev.bukkit.org/server-mods/terrain-control/forum/ 论坛话题] 来描述你的问题。问题应当描述的尽可能详细，并且把你的日志也发送出来(最好是 pastebin.com 上的这种或者类似的) 或者把你的日志放进ZIP压缩文件当中。&lt;br /&gt;
* 我的world文件夹没有被创建，只有GlobalObjects 存在。&lt;br /&gt;
本插件不会在你安装时接管你的世界。你需要为一个世界打开本插件。同安装说明一模一样的来安装。如果你仍然困惑，发布一个论坛话题并且把启动日志加上是很重要的。&lt;br /&gt;
* 我的设置没有对地形产生任何影响。&lt;br /&gt;
你试过再生地形（即删除区块文件夹）么？如果是，把你的TerrainControl文件夹放到另外一个地方并且重新打开服务器/游戏然后看看本插件是否已经重新生成了配置文件。如果没有，那么本插件甚至没有读取它们。参阅上述有关问题来寻找这个插件的解决方案。如果是，请看看BiomeMode 和 TerrainMode ，确保它们没有设置为默认（Default）（这使得本插件忽略你的配置来使用香草来代替）。&lt;br /&gt;
* 我出生在一片海洋中而没有任何陆地。&lt;br /&gt;
别担心，陆地存在。不停地游泳。或者你可以改变地图的种子（服务器: 你需要新的 level.dat，仅仅改变 server.properies 是不行的）。11号种子将会把你生成在陆地上面。 你也可以禁止或海洋面积（改变WorldConfig中LandRarity 设置）：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-12.png|TerrainControl-12]]&lt;br /&gt;
&lt;br /&gt;
* 特定的设置并不起作用（但是其他的设置正常工作）。&lt;br /&gt;
大多数设置区分大小写和空格的，这是为了使它更加准确。某些设置需要较高的数值来使其具有明显效果。有些设置需要在客户端上面有对应的Mod（见文件/此wiki中的注释）。有些设置并不依赖于其他的设置（同上，见文件/此wiki中的注）。&lt;br /&gt;
&lt;br /&gt;
如果你不熟悉本插件，始终确保SettingsMode 设置为 WriteAll。这会使地形控制重置或删除它一概不听（译者：并不清楚作者到底要表达什么），所以，你会立刻注意到有些不对劲。&lt;br /&gt;
&lt;br /&gt;
=== 中期讲解 ===&lt;br /&gt;
==== 如何从一张图片创建世界 ====&lt;br /&gt;
&#039;&#039;&#039;如果你不能找到你所需要的信息，你可以参考论坛或使用mysource所作的[http://kartwork.de/tutorial/html/map_by_image.html 这个教程]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
创造属于你自己的世界是很困难的，河流，岛屿，也许总是会在错误的地方产生，这应该不是你想要的。也许你的山看起来不够好，当然，你也可以拥有更多生物群系的选项。但是，运用地形控制的功能，从一个图像生成生物群系。你可以完全操控你的世界,或者使用原有生态环境并改变地形来创建一个图片。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki/Creating-a-world-from-an-image#small-map-improvements 做一些小型图片].&lt;br /&gt;
&lt;br /&gt;
===== 优点与缺点 =====&lt;br /&gt;
优点:&lt;br /&gt;
* 完全控制你的生物群落&lt;br /&gt;
* 使其更容易处理&lt;br /&gt;
* 可以用来定制冒险的地图&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
缺点:&lt;br /&gt;
* 图片并不是无限大的，你必须让生物群系控制器生成别的生物群系当你在图片所表示的范围之外时。&lt;br /&gt;
* 没有随机生物群系组合：生物群系布局看起来一样好（或坏），正如你所画的。&lt;br /&gt;
* 有一些怪异的东西，将在下面说明。&lt;br /&gt;
&lt;br /&gt;
===== 创建一个图像 =====&lt;br /&gt;
在每一个[https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs BiomeConfigs] 有一个&#039;&#039;BiomeColor&#039;&#039;变量. 这个变量应该是生物群系的十六进制颜色。它不仅用作 &#039;&#039;/tc map&#039;&#039;  命令输出颜色,而且作为输入图像的颜色。必须使用准确的设置“BiomeColor”，让图片所生成的生物群系更准确。两个生物群系不一定是同样的颜色， 如果是一样的颜色将出现奇怪的问题。每一个自定义生物群系你都应该把 &#039;&#039;BiomeColor&#039;&#039; 从 0x000000 (黑色) 到另一种颜色。&lt;br /&gt;
&lt;br /&gt;
默认生物群系的RGB（红绿蓝）数值和16（0xXXXXXX）进制数值 (本插件使用和 [http://www.minecraftforum.net/topic/626786-amidst/ AMIDST]一样的生物群系颜色):&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-13.png|TerrainControl-13]]&lt;br /&gt;
&lt;br /&gt;
图片上面的每一个像素代表一个4x4的方块。正如上文所讲，图片中的颜色必须同  &#039;&#039;BiomeColor&#039;&#039; 一样。大多数图片编辑器的笔刷工具不管用，因为它们把颜色改成了另外一个。&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-14.png|TerrainControl-14]]&lt;br /&gt;
&lt;br /&gt;
模糊工具(称为抗锯齿)允许对象正确的混合图像但是，本插件并不能正确的识别这些颜色。当本插件发现一种颜色没有在配置文件里面提到时，将会在那里生成海洋。所以还是使用编辑（俗称）铅笔工具更好一点，因为这个并没有使用到抗锯齿。一定要把文件保存为png格式，因为本插件只支持这一种格式，其他的大多数格式会在压缩（保存）时改变颜色。在使用图片生成世界时一定要确保它没有使用抗锯齿或者被压缩。 &lt;br /&gt;
&lt;br /&gt;
另外一种常见错误是在调整图片大时没有禁用抗锯齿：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-15.png|TerrainControl-15]]&lt;br /&gt;
&lt;br /&gt;
当使用草图开始绘画时，可以假定右侧为北方，也可以使用上侧为北方（这是最常用的），在生成时请将图像旋转90度。如果要编辑使用“/tc map”命令得到的地图，请参见下方章节。&lt;br /&gt;
&lt;br /&gt;
===== 让本插件更正确的生成地形 =====&lt;br /&gt;
当你满意你的结果之后（确保大小和角度都调整正确），是时候让本插件来生成啦。把图像放到WorldConfig.ini旁边然后看一下以下设置：&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageMode&#039;&#039;-可以设置为 &#039;&#039;ContinueNormal&#039;&#039; 或 &#039;&#039; FillEmpty &#039;&#039;。 &#039;ContinueNormal&#039; 会告诉地形控制生成随机地形(如 &#039;&#039;BiomeMode:Normal &#039;&#039;，基于它的设置) 在图像所表示的范围之外。 &#039;&#039;FillEmpty&#039;&#039; 将填补图像外区域与 &#039;&#039;ImageFillBiome&#039;&#039; 设置相同，默认海洋生物群落。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageFile&#039;&#039;  - 你要使用的图片的名字，默认为map.png，必须是png格式。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageFillBiome&#039;&#039;  - 生物群落设置&#039;ImageMode&#039; 设置为 FillEmpty 时用于生成图像表示区域之外的地形生成(注意: 在TerrainControl找到一个无法辨识或起冲突的生物群系颜色时，如果这个更改了使用的生物群系，则需要进行测试)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ImageXOffset&#039;&#039;  以及  &#039;&#039;ImageYOffset&#039;&#039;  - 改变图片的坐标位置，常用来改变x：0 y：0坐标相对应的图片位置。使用  &#039;&#039;ContinueNormal&#039;&#039; 来把图片大小减半的时候， 使用FillEmpty 模式把减半的图像大小改为相反的数值。样例： 一个 500x500 大小 map.png文件在&#039;&#039;ContinueNormal&#039;&#039;模式下，X和Y坐标设置为250， 但是FillEmpty模式为 -250 。 &lt;br /&gt;
&lt;br /&gt;
===== 使用/tc map和ContinueNormal来编辑一副随机地图 =====&lt;br /&gt;
本插件使用命令/tc map来到处一副生物群系地图。它所生成的图像有一些额外的功能，可以重新作用为输入图像的  &#039;&#039;FromImage&#039;&#039; 。&lt;br /&gt;
&lt;br /&gt;
当时也/tc map时，本插件将会把图片的右边设置为地图的北边，所以如果你假定顶端为北边，请旋转90度。/tc map命令到处的是1像素相当于1方块但是导入时为1像素等于4x4方块。当图片是你地图的尺寸时你应当把它缩小四分之一来使世界的大小正常。&lt;br /&gt;
&lt;br /&gt;
==== 基本的自定义世界 ====&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;在自定义之前，岛屿生物群系以及边界生物群系仍然要讲一讲。&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
这个教程将会帮助你定义世界的形状。本教程仅仅描述了 BiomeMode:Normal 模式。此教程可以使用于单人游戏以及多人游戏模式，拥有也许没有 [https://github.com/MCTCP/TerrainControl/wiki/Terrain-Control-User-Interface 用户界面]. 你应该已经安装本插件，你也应该知道如何更改设置以及如何重新生成世界。如果并没有，请看[https://github.com/MCTCP/TerrainControl/wiki/Installation-instructions 这里] 来寻求安装帮助以及 [https://github.com/MCTCP/TerrainControl/wiki/Beginners%27-tutorial-without-the-UI 这里] 来查看准备工作教程。&lt;br /&gt;
&lt;br /&gt;
再一次打开一个新的世界。首先，查看[https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig.ini] 文件然后看看在&#039;Biome Generator Variables&#039;下面的设置 (用户界面: World tab -&amp;gt; Biomes tab). 往下滚动一点，你将会看见四个变量：&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NormalBiomes&#039;&#039; ,  &#039;&#039;IceBiomes&#039;&#039; ,  &#039;&#039;IsleBiomes&#039;&#039;  and  &#039;&#039;BorderBiomes&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
理解他们需要了解一些背景信息。游戏中的世界是由各大洲为原型的。在&#039;NormalBiomes &#039; 生成。其余部分则由海洋生物群落区填补。使这更有趣的你可以给生物群落知道边界 (例如，海滩生物群落区是海洋和大多数其他生物群落之间的边界) ，要使用 &#039;BorderBiomes（译为边界生物群系） &#039;。此外可以生成其他生物群落内部的生物群落。他们被称为 &#039; IsleBiomes （译为岛屿生物群系）&#039;。例如，蘑菇岛是岛内海洋生物群落内部的生物群落。一些地区在地图标记为 &#039;frozen（冻土）&#039;。如果冻土区在大陆的上面将会生成一个 &#039;IceBiomes（冰雪生物群系） &#039;  (而不是一个 &#039;NormalBiomes&#039;)。如果它出现在海洋上面将会生成一个 FrozenOcean （上冻的海洋）(然而你可以关掉) 生物群落。&lt;br /&gt;
&lt;br /&gt;
===== Technical biomes(表面生物群系) =====&lt;br /&gt;
也有一些&#039;technical biomes(表面生物群系)&#039;。他们不被视为真正的生物群落区，但他们让地形更加多样化。本节描述其功能的默认设置，并可能激发您原创的灵魂。请记住你可以改变一切: 如果你想要的你甚至可以生成 TaigaHills 生物群落作为丛林和沙漠之间的边界。 &lt;br /&gt;
&lt;br /&gt;
河是表明生物群系之一: 它被称为一条河，但它是只是一个生物群落含有大量的水。世界控制器将会在大陆顶端生成该生物群落（形似一条河），并且当冻土区出现在一条河上面的时候，FrozenRiver（上冻的河流） 生物群落区将会代替它(但是您可以关掉)。您可以编辑 RiverBiomeConfig 里面生成的东西使它生成的根本不像一条河：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S1.jpg|TerrainControl-S1]]&lt;br /&gt;
&lt;br /&gt;
也有一些山生物群落: TaigaHills、 JungleHills、 DesertHills 和 ForestHills。那些将作为 IsleBiome（岛屿生物群系） 和他们生成在针叶林、 丛林、 沙漠和森林之间。当你看到一座大山在这些生物群落之一的里面的时候，可以确保你看到了 HillsBiome。(因为Extreme Hills（极高的山）添加到 &#039;NormalBiomes&#039;并不会产生在其他生物群落内)。河，也就是含有很多水的生物群落，同时也作为了 IsleBiome的一员： 它生成为沼泽里面的小岛。&lt;br /&gt;
&lt;br /&gt;
作为 BorderBiome的 MushroomIsland 与其他所有生物群落 (通常是海洋) 来平滑地过渡，生成 MushroomIslandShore ，极端高的山 (也是 BorderBiome) 为平滑过渡极端高的山和大多数其他生物群落。 &lt;br /&gt;
&lt;br /&gt;
大多数使用本插件的人经常使用表面生物群系来把它们的生物群系做成它们想要的，他们使用它来平滑的过渡两个生物群系，这使得生物群系更加多样化，比如说生成雪山等等。例如， [https://github.com/Burckhart Burckhart(布什)] [http://dev.bukkit.org/server-mods/terrain-control/forum/41337-nested-biomes/#p2 使用了] 一大堆边界生物群系和岛屿生物群系来生成一条山脉。&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-17.jpg|TerrainControl-17]]&lt;br /&gt;
&lt;br /&gt;
===== NormalBiomes(标准生物群系) =====&lt;br /&gt;
说明：文中的香草生物群系指的是已经存在的生物群系，换句话说就是纯净Minecraft中所有的生物群系。&lt;br /&gt;
&lt;br /&gt;
在这里你可以看到地图上只有陆地和海洋。&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-18.png|TerrainControl-18]]&lt;br /&gt;
&lt;br /&gt;
绿色区域是 NormalBiomes （标准生物群系），蓝色区域是海洋生物群落区。&lt;br /&gt;
&lt;br /&gt;
你可以使用 LandRarity 变量来设置海洋和陆地之间的比例：&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-12.png|TerrainControl-12]]&lt;br /&gt;
&lt;br /&gt;
现在是时候来看看如何填充那绿色的土地。我们在设置 LandRarity为100。如果你看看了NormalBiomes 变量，你将看到以下内容：&lt;br /&gt;
&lt;br /&gt;
 NormalBiomes:Desert,Forest,Extreme Hills,Swampland,Plains,Taiga,Jungle &lt;br /&gt;
NormalBiomes:沙漠,森林,高山,沼泽,平原,针叶林,丛林 &lt;br /&gt;
&lt;br /&gt;
其中给出了以下生物群落区地图 (IsleBiomes 和 IceBiomes生物群系被移除了，这使图像看起来更干净):&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-20.png|TerrainControl-20]]&lt;br /&gt;
&lt;br /&gt;
如果你想要一个单调(热)的世界，你可以把 NormalBiomes 中的大多数生物群落移除:&lt;br /&gt;
&lt;br /&gt;
 NormalBiomes:Desert,Jungle &lt;br /&gt;
 NormalBiomes:沙漠,丛林&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-21.png|TerrainControl-21]]&lt;br /&gt;
&lt;br /&gt;
(如果你仍然看到有一些寒冷地区在游戏里面，是因为 IceBiomes的存在。我们一会再管他。) &lt;br /&gt;
&lt;br /&gt;
你可以更改生物群系稀有度在 [https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs BiomeConfigs]里面。如果你想要在你的世界有更少的丛林，去 JungleBiomeConfig.ini 找到BiomeRarity (这是实际上生物群落生成的概率) 设置为 25。&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-22.png|TerrainControl-22]]&lt;br /&gt;
&lt;br /&gt;
现在我们在讨论 NormalBiomes。稍后我们将制作我们自己自定义的生物群落。&lt;br /&gt;
&lt;br /&gt;
===== IsleBiomes(岛屿生物群系) =====&lt;br /&gt;
&#039;&#039;TODO: 我们是在这里只是玩弄一些岛屿生物群落&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
岛屿生物群落是可以生成在其他生物群落之内的生物群落。生物群落需要较小的面积 (所以 BiomeSize 需要更高)才能够在另一生物群落区之内生成。&lt;br /&gt;
&lt;br /&gt;
当生物群落为岛屿生物群落时， BiomeRarity 变量会略有不同。它现在非常敏感: BiomeRarity:100 将使它生成在生物群落区之内的各个位置 (除了在边界（两生物群系区之间位置）-填补这一区域应使用边界生物群落)。 BiomeRarity:99 将使它生成约 50%的区域，25%的区域为 BiomeRarity:98，等等。&lt;br /&gt;
&lt;br /&gt;
Mister_Tesseract 做了有关岛屿生物群落的详细的教程。[https://docs.google.com/document/d/1pVqAE28zkS-VFyxt3HtnLwEkJrGcPShEORhoGxZbOk/edit 在这里阅读它]。&lt;br /&gt;
&lt;br /&gt;
===== BorderBiomes(边界生物群系) =====&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
译者注:这是作者还没有完成,不是译者没有翻译&lt;br /&gt;
&lt;br /&gt;
===== IceBiomes(冰雪生物群系) =====&lt;br /&gt;
一些地区在地图标记为 &#039;frozen（冻土）&#039;。如果冻土区在大陆的上面将会生成一个 &#039;IceBiomes（冰雪生物群系） &#039;  (而不是一个 &#039;NormalBiomes&#039;) (然而你可以关掉：通过设置([https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig]) 中的 FrozenRivers   为 false)。如果它出现在海洋上面将会生成一个 FrozenOcean （上冻的海洋）生物群落(然而你可以关掉：通过设置([https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig]) 中的 FrozenOcean   为 false)。&lt;br /&gt;
&lt;br /&gt;
您可以通过更改 IceRarity 变量更改冻土区域生成的概率。较低的值将生成比较少冻结的区域，较高的值会使地图的绝大部分冻结。&lt;br /&gt;
&lt;br /&gt;
请注意生物群落区的温度并不是取决于将它添加到 IceBiomes 列表，而是更改在 BiomeConfigs 中的 BiomeTemperature 变量。你可以在 NormalBiomes 列表中获取到冰冻的生物群系 (针叶林是在默认配置中的例子)，你可以在 IceBiomes 列表中有炎热的生物群落。这使名称 IceBiomes 出现了小小的误差。&lt;br /&gt;
&lt;br /&gt;
===== CustomBiomes(自定义生物群系) =====&lt;br /&gt;
默认情况下只有香草生物群落在 BiomeConfigs 文件夹中。若要添加您自己生物群落区，您必须先将其添加到 CustomBiomes 列表。这将使本插件生成它的配置文件 (或如果它已经存在，请使用该文件)。然而，它不会控制它们产生在你的世界。就像香草生物群落，你必须将它添加到四个生物群系中的一个或多个物群落区列表。所以您自定义的生物群落是总是在WorldConfig.ini 出现在至少两个地方。 &lt;br /&gt;
&lt;br /&gt;
(但是，您还可以让你的生物群系从一幅图像中生成，你只是将其添加到 CustomBiomes 列表以及图像所对应的生物群落区。欲获取更多信息，请查看 [https://github.com/MCTCP/TerrainControl/wiki/Creating-a-world-from-an-image这里])。&lt;br /&gt;
&lt;br /&gt;
在每个列表中的条目之后，您将看到&amp;quot;:&amp;quot;与它的数量 (如果您自己没有添加它，本插件将替你添加它):&lt;br /&gt;
&lt;br /&gt;
 CustomBiomes:MyBiome:50,MyOtherBiome:51 &lt;br /&gt;
&lt;br /&gt;
这是保存在世界中的生物群落区 id。这个永远不会改变除非你重置了世界!(想象假如你自定义的丛林生物群落与 id 50，现在使用 id 50 是雪生物群落。这会导致所有自定义的丛林被冰冻!)此外，永远不要使用一个已在香草生物群系使用的 id。目前香草生物群系使用 id 0-22，但随着新的生物群落区添加到香草生物群系，将按照顺序使用新的生物群落区 id。所以如果您使用的生物群落区 id 为40 ，你应该可以保留它很长时间。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 基本的自定义生物群系 ====&lt;br /&gt;
此页重点介绍创建和编辑生物群落的基础知识，包括更改地面和水、 矿石、 树/植物的生成以及山/坑的生成。ReplacedBlocks 特性的信息，请使用 CustomHeightControl 等更难一些的功能，比如说瀑布(建设中)。&lt;br /&gt;
&lt;br /&gt;
生物群落区的编辑和设置可以分成四个主要部分: 生物群落区位置、 地形形状、 生物群落区的实体数量和外观。有关更多生物群落的生成位置信息请参阅 [https://github.com/MCTCP/TerrainControl/wiki/Basic-world-customization 本教程]。&lt;br /&gt;
&lt;br /&gt;
===== 地形形状 =====&lt;br /&gt;
地形的形状被一大堆变量所控制。你可以改变它的高度，有多不平坦（即丘陵），多少空气要被填充为水。地形的形状是计算地形之后，地形控制器所要过的第一道关口。&lt;br /&gt;
&lt;br /&gt;
====== 地形高度 ======&lt;br /&gt;
其中确定生物群落高度的第一个和最重要的变量是 BiomeHeight 。这个变量依赖在 worldconfig 中的WorldHeightBits 设置。Minecraft 将它生成的地形高度划分为相等的正负值与以及BiomeHeight设置为 0.0 代表中间。在默认设置 (WorldHeightBits:7) 的地形将生成达 128 的高度，将把 BiomeHeight:0.0 放在 y = 64的位置。如果 WorldHeightBits 更改为 8 ，高度就会成为 256，然后每个关于高度的设置，其效果大致增加一倍。BiomeHeight:0.0 将会成为 y = 128的位置，加大到 0.1 将双倍地对 WorldHeightBits:7 产生影响。把WorldHeightBits提高为8，会使得地形生成最多 256的高度。如果将WorldHeightBits 降低，将会产生相反的效果，每一次降低会使地形生成最大高度减半。WorldHeightBits 为6也不能使地形高64左右。提示：这两个变量不会有效果如果控制器被设置为OldGenerator（此设置在[https://github.com/MCTCP/TerrainControl/wiki/WorldConfig WorldConfig]里面）。&lt;br /&gt;
&lt;br /&gt;
改变 ExtraBiomeHeight 将会以“8乘以它的值”的次数来创建悬崖。改变 ExtraHeightConstrictWaist 可以确定悬崖的生成。保持它的数值在-0.4和1.0之间。大于 1.0 可以导致悬挂和漂浮的地形。负值会导致中部地区 (4 x ExtraBiomeHeight) 扩大。降低到 -0.4 以下可以创建地下的巨大洞穴。&lt;br /&gt;
&lt;br /&gt;
下表可以帮助确定基于WorldHeightBits 为 7 和 8的高度设置。不要使用-2.0 作为 BiomeHeight 的设置，因为这是BUG。此外请注意地形不会生成最大的256 高度，它将停止在 255，如果在此之前没有别的方块。 BiomeHeight 可能会是-10 到 10 之间的任意值，虽然低于/高于-4/4 的任何值没有任何其他的效果了。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! BiomeHeight !! WorldHeightBits:7 !! WorldHeightBits:8&lt;br /&gt;
|-&lt;br /&gt;
| -4 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| -3.5 || 7 || 10&lt;br /&gt;
|-&lt;br /&gt;
| -3 || 16 || 28&lt;br /&gt;
|-&lt;br /&gt;
| -2.5 || 24 || 45&lt;br /&gt;
|-&lt;br /&gt;
| -2 || Error || Error&lt;br /&gt;
|-&lt;br /&gt;
| -1.99 || 32 || 60&lt;br /&gt;
|-&lt;br /&gt;
| -1.5 || 40 || 78&lt;br /&gt;
|-&lt;br /&gt;
| -1 || 48 || 95&lt;br /&gt;
|-&lt;br /&gt;
| -0.5 || 57 || 111&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 67 || 128&lt;br /&gt;
|-&lt;br /&gt;
| 0.5 || 76 || 144&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 85 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 1.5 || 94 || 173&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 102 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 2.5 || 111 || 207&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 119 || 223&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 128 || 240&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 128 || 255&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== 地形波动率 ======&lt;br /&gt;
有很多的设置来调整有多少丘陵（换句话说，就是多么的不平坦）。其中最重要的是 BiomeVolatility。它增加将使地形成为一个多山的地形。0.0 使地形几乎变成超平坦。1.0 会给你小山。2.0 出现了悬崖。就像 BiomeHeight 一样，如果 WorldHeightBits设置为8，它的效果将会翻一番。此设置不能在 TerrainMode:OldGenerator模式下启用。&lt;br /&gt;
&lt;br /&gt;
===== 生物群系的实体(资源)数量 =====&lt;br /&gt;
在地形生成过程中的第二步，我们将生物群落填充资源，如矿石、 草丛、 树、 花、 自定义对象、低于（或高于）海平面的小池塘。这完成后，将根据BiomeTemperature来生成雪地。 你可以在 [https://github.com/MCTCP/TerrainControl/wiki/Resources-queue 资源队列] 中查找所有资源。&lt;br /&gt;
&lt;br /&gt;
===== 外观 =====&lt;br /&gt;
这些设置对地形没有影响，但是，这是你仍然想要改变的东西。例如，你可以编辑生物群系的颜色和天气。可悲的是，普通的单人模式客户端将忽略所有这些设置。但它也将显示自定义 (非普通的) 生物群系的颜色与天气（不过变成了平原生物群系的设置）。玩家将需要安装Forge版本的地形控制来解决此问题。 &lt;br /&gt;
&lt;br /&gt;
这些配置的单独介绍可以在[https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs#wiki-biome-visual-settings 这里]查询。&lt;br /&gt;
&lt;br /&gt;
=== 高级部分 ===&lt;br /&gt;
{{Main|TerrainControl/高级部分}}&lt;br /&gt;
===== 赞助 =====&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki/A-TerrainControl-Analysis#top 回到顶部]&lt;br /&gt;
mysource for the [http://www.kartwork.de/annocraft2165/html/tutorial.html tutorials] that helped me put the first toe in TerrainControl.&lt;br /&gt;
&lt;br /&gt;
== 配置释义 ==&lt;br /&gt;
=== 变量名 ===&lt;br /&gt;
这是一个关于变量名的小提示以便让你更快地理解它.&lt;br /&gt;
&lt;br /&gt;
大多数变量命名为  somethingRARITY  事实上是  somethingPROBABILITY . 数量越多，东西越多.&lt;br /&gt;
&lt;br /&gt;
当他命名为  somethingSIZE 时, 数量越高，东西越少. 他的功能有点像一个分数的分母: &amp;quot;1/65&amp;quot; &amp;quot;1/39&amp;quot; &amp;quot;1/2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
对于大多数变量命名为  somethingHEIGHT  他们更像指数而不是线性的. 如果你把一个数值从4改为5，你将会得到更大的结果相比于从1改为2. 因此在使用他们的时候小心一点.&lt;br /&gt;
&lt;br /&gt;
也请注意：一些变量的互相影响. 这些生物群系生成器的特殊部分. 用这些指令来看看真正的效果[https://github.com/MCTCP/TerrainControl/wiki/Commands-and-Permissions /tc map command] 然后再试着改变他们.&lt;br /&gt;
&lt;br /&gt;
记住，这只是个简短的小提示. 更多关于变量的详细信息见其他配置文件信息页面.&lt;br /&gt;
&lt;br /&gt;
=== WorldConfig ===&lt;br /&gt;
The WorldConfig.ini is the main settings file used by the TerrainControl plugin. It controls most of the biome placement, cave and canyon distribution, structure spawning and some other settings. Settings that are biome specific can be found in the [https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs BiomeConfigs]. On the following page the settings of this file will each be explained in detail.&lt;br /&gt;
&lt;br /&gt;
==== Jump to ====&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#generator-modes Generator modes]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#custom-biomes Custom biomes]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#settings-for-biomemodenormal Settings for BiomeMode:Normal]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#settings-for-biomemodefromimage Settings for BiomeMode:FromImage]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#terrain-height-and-volatility Terrain height and volatility]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#blocks Blocks]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#structures Structures]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#world-visual-settings World visual settings]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#cave-variables Cave variables]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#canyon-variables Canyon variables]&lt;br /&gt;
* [https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#settings-for-biomemodeoldgenerator Settings for BiomeMode:OldGenerator]&lt;br /&gt;
&lt;br /&gt;
==== Generator modes ====&lt;br /&gt;
[https://github.com/MCTCP/TerrainControl/wiki/WorldConfig#top Back to top]&lt;br /&gt;
SettingsMode: WriteAll &lt;br /&gt;
&lt;br /&gt;
Normally, each time Terrain Control reads the config files, it also writes to them. With this setting you can change how Terrain Control writes to the config files. Possible modes:&lt;br /&gt;
* WriteAll - Autoupdate settings from old versions, order them, add comments, reset invalid settings and remove custom comments.&lt;br /&gt;
* WriteWithoutComments - Same as WriteAll, but removes all comments, both the ones of Terrain Control and your own.&lt;br /&gt;
* WriteDisable - Don&#039;t write to the comment files. Errors are not corrected, old settings are read, but they are also not corrected. Custom comments won&#039;t be removed with this mode.&lt;br /&gt;
&lt;br /&gt;
TerrainMode: Normal &lt;br /&gt;
&lt;br /&gt;
These are different generators that can be used to generate your terrain.&lt;br /&gt;
* Normal - This mode uses all the features of the terrain generator. Biomes still look like the ones in vanilla Minecraft.&lt;br /&gt;
* OldGenerator - This generator will generate the terrain in the way the Minecraft Beta 1.7.3 terrain generator created it.&lt;br /&gt;
* TerrainTest - This generator creates terrain normally but adds no resources. Is faster than Normal.&lt;br /&gt;
* NotGenerate - This setting will create empty chunks of terrain.&lt;br /&gt;
* Default - This generator creates default terrain. Except the biomes, all the mod settings are ignored.&lt;br /&gt;
&lt;br /&gt;
BiomeMode: Normal &lt;br /&gt;
&lt;br /&gt;
Here you can define how Biomes are to be generated. The following settings are available:&lt;br /&gt;
* Normal - Uses all features of Terrain Control. Even with the default settings your biomes will be placed diffently than vanilla Minecraft.&lt;br /&gt;
* FromImage - Reads the biomes from an image file. See &#039;Biome Image Generator Variables&#039; below for more information.&lt;br /&gt;
* BeforeGroups - Minecraft 1.0 - 1.6.4 biome generator, only supports the biome groups NormalBiomes and IceBiomes&lt;br /&gt;
* OldGenerator - Generates biomes like in Minecraft Beta 1.7.3.&lt;br /&gt;
* Default - Means the default biome generator of vanilla Minecraft will be used.&lt;br /&gt;
&lt;br /&gt;
==== Custom biomes ====&lt;br /&gt;
(回到顶部请使用“Home”按钮,下同)&lt;br /&gt;
CustomBiomes: &lt;br /&gt;
&lt;br /&gt;
You need to register your custom biomes here. This setting will make Terrain Control generate and read the setting files for them. However, it won&#039;t place them in the world automatically. See the settings for your BiomeMode below on how to add them to the world.&lt;br /&gt;
&lt;br /&gt;
Syntax:  CustomBiomes:BiomeName:id[,AnotherBiomeName:id[,...]] &lt;br /&gt;
&lt;br /&gt;
Example:  CustomBiomes:TestBiome1:30,BiomeTest2:31 &lt;br /&gt;
&lt;br /&gt;
This will add two biomes and generate the BiomeConfigs for them. All changes here need a server restart.&lt;br /&gt;
&lt;br /&gt;
Due to the way Mojang&#039;s loading code works, all biome ids need to be unique on the server. If you don&#039;t do this, the client will display the biomes just fine, but the server can think it is another biome with the same id. This will cause saplings, snowfall and mobs to work as in the other biome.&lt;br /&gt;
&lt;br /&gt;
The available ids range from 0 to 1023, inclusive. Minecraft 1.7 uses most IDs between the ranges of 0-39 and 129-167. Using those IDs is not possible. It is recommend to leave some room around the vanilla IDs in case new biomes are added in the future.&lt;br /&gt;
&lt;br /&gt;
IDs above 255 can not be saved by Minecraft. You will need to add a [https://github.com/MCTCP/TerrainControl/wiki/Biome-Placement#replace-to-biome-name ReplaceToBiomeName] setting to those biomes to make sure that they are saved to the world files using an id below 256.&lt;br /&gt;
&lt;br /&gt;
==== Settings for BiomeMode:Normal ====&lt;br /&gt;
The values in this section only work when  BiomeMode  is set to Normal or  BiomeMode  is FromImage and  ImageMode  is ContinueNormal&lt;br /&gt;
&lt;br /&gt;
GenerationDepth:10 &lt;br /&gt;
&lt;br /&gt;
Main value for generation. Bigger values &#039;zoom in&#039;, so that the biomes get larger: &lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S9.png]]&lt;br /&gt;
&lt;br /&gt;
All sizes ( *Size ) must be smaller than this.&lt;br /&gt;
&lt;br /&gt;
So if you want big objects (biomes/rivers/etc.) you must set size of that objects near 0.&lt;br /&gt;
&lt;br /&gt;
If you want small objects you must set size of the objects near  GenerationDepth .&lt;br /&gt;
&lt;br /&gt;
Also small values (about 1-2) and big values (about 20) may affect generator performance.&lt;br /&gt;
&lt;br /&gt;
A tutorial (by thedeadlytao) about  GenerationDepth ,  LandSize  and  LandRarity  can be found [http://dev.bukkit.org/server-mods/terrain-control/forum/35885-generation-depth-and-land-size-rarity-explained/ here].&lt;br /&gt;
&lt;br /&gt;
BiomeRarityScale:100 &lt;br /&gt;
&lt;br /&gt;
Max biome rarity from 1 to infinity. By default this is 100, but you can raise it for fine-grained control, or to create biomes with a chance of occurring smaller than 1/100.&lt;br /&gt;
&lt;br /&gt;
==== Biome groups ====&lt;br /&gt;
Minecraft groups similar biomes together, so that they spawn next to each other. Most biomes in the world (but not all) spawn as part of a biome group.&lt;br /&gt;
&lt;br /&gt;
Syntax:  BiomeGroup(Name, Size, Rarity, BiomeName[, AnotherName[, ...]])   Name  - just for clarity, choose something descriptive  Size  - layer to generate on, from 0 to GenerationDepth. All biomes in the group must have a BiomeSize larger than or equal to this value.  Rarity  - relative spawn chances.  BiomeName...  - names of the biome that spawn in the group. Case sensitive.&lt;br /&gt;
&lt;br /&gt;
Note: if (and only if) you&#039;re using  BiomeMode: BeforeGroups , only the biomes listed in the groups named  NormalBiomes  and  IceBiomes  and the size and rarity of the group named  IceBiomes  will be used. Other groups are ignored. The size and rarity of the  NormalBiomes  group is ignored as well, use  LandSize  and  LandRarity  instead.&lt;br /&gt;
&lt;br /&gt;
Default biome groups:&lt;br /&gt;
&lt;br /&gt;
 BiomeGroup(NormalBiomes, 0, 97, Forest, Roofed Forest, Extreme Hills, Plains, Birch Forest, Swampland, Flower Forest, Roofed Forest M, Extreme Hills+, Sunflower Plains, Birch Forest M, Swampland M)&lt;br /&gt;
 BiomeGroup(IceBiomes, 3, 90, Ice Plains, Cold Taiga, Ice Plains Spikes, Cold Taiga M)&lt;br /&gt;
 BiomeGroup(HotBiomes, 0, 97, Desert, Savanna, Plains, Desert M, Savanna M, Sunflower Plains)&lt;br /&gt;
 BiomeGroup(ColdBiomes, 0, 97, Forest, Extreme Hills, Taiga, Plains, Flower Forest, Extreme Hills+, Taiga M, Sunflower Plains)&lt;br /&gt;
 BiomeGroup(MesaBiomes, 1, 40, Mesa)&lt;br /&gt;
 BiomeGroup(JungleBiomes, 1, 40, Jungle, Jungle M)&lt;br /&gt;
 BiomeGroup(Mega TaigaBiomes, 1, 40, Mega Taiga, Mega Spruce Taiga)&lt;br /&gt;
&lt;br /&gt;
==== Biome lists ====&lt;br /&gt;
Not all biomes spawn as part of a group. Some biomes spawn as &amp;quot;isles&amp;quot; in other biomes, or as borders on other biomes.&lt;br /&gt;
&lt;br /&gt;
IsleBiomes: Deep Ocean, MushroomIsland, Ice Mountains, DesertHills, ForestHills, Forest, TaigaHills, JungleHills, Cold Taiga Hills, Birch Forest Hills, Extreme Hills+, Mesa Plateau, Mesa Plateau F, Mesa Plateau M, Mesa Plateau F M, Mesa (Bryce), Mega Taiga Hills, Mega Spruce Taiga Hills &lt;br /&gt;
&lt;br /&gt;
Biomes which used as isles. Biome name is case sensitive. Inside the biome config of the biome you can decide in which biome this isle should spawn. Please note that the Hills-biomes are actually &#039;islands&#039; inside a biome. [https://github.com/jebox Jeb_] has done this in Minecraft 1.1 to make the terrain generator more interesting: players were complaining that the biomes were too flat.&lt;br /&gt;
&lt;br /&gt;
BorderBiomes: MushroomIslandShore, Beach, Extreme Hills Edge, Desert, Taiga &lt;br /&gt;
&lt;br /&gt;
Biomes that are used as borders. Biome name is case sensitive. In the biome config of the biome you can specify next to which biome this border should spawn. You can also set there next to which biome this border should &#039;&#039;&#039;not&#039;&#039;&#039; spawn.&lt;br /&gt;
&lt;br /&gt;
==== Landmass settings ====&lt;br /&gt;
LandRarity: 97 &lt;br /&gt;
&lt;br /&gt;
Land rarity from 100 to 1. Higher numbers give more land. Values are quite sensitive, look at the image. Set it to 100 to completely disable oceans.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-12.png]]&lt;br /&gt;
&lt;br /&gt;
As you can see the oceans are completely gone with  LandRarity:100 .&lt;br /&gt;
&lt;br /&gt;
LandSize: 0 &lt;br /&gt;
&lt;br /&gt;
Land size from 0 to  GenerationDepth . Making  LandSize  larger will make the size of the land smaller.&lt;br /&gt;
&lt;br /&gt;
LandFuzzy: 6 &lt;br /&gt;
&lt;br /&gt;
Generates more lakes (=small ocean biomes) at the edge of the continent. As a side effect, the continent will also get a bit larger. Must be from 0 to  GenerationDepth  -  LandSize . Map of the edge of a continent:&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Ice area settings ====&lt;br /&gt;
FrozenOcean:true &lt;br /&gt;
&lt;br /&gt;
Make the water of the oceans near a cold biome frozen. The exact definition of &#039;cold&#039; is controlled by the next setting.&lt;br /&gt;
&lt;br /&gt;
OceanFreezingTemperature: 0.15 &lt;br /&gt;
&lt;br /&gt;
This is the maximum biome temperature when a biome is still considered cold. Water in oceans nearby cold biomes freezes if  FrozenOcean  is set to true. Temperature reference from vanilla Minecraft: &amp;lt; 0.15 for snow, 0.15 - 0.95 for rain, or &amp;gt; 1.0 for dry&lt;br /&gt;
&lt;br /&gt;
FreezeAllBiomesInColdGroup: false &lt;br /&gt;
&lt;br /&gt;
If the average of all biome temperatures in a biome group is less than &amp;quot;OceanFreezingTemperature&amp;quot;, then:&lt;br /&gt;
&lt;br /&gt;
* When this setting is true, all biomes in the group will have frozen oceans&lt;br /&gt;
* When this setting is false, only individual biomes with a temperature below &amp;quot;OceanFreezingTemperature&amp;quot; will have frozen oceans&lt;br /&gt;
&lt;br /&gt;
==== River settings ====&lt;br /&gt;
RiverRarity:4 &lt;br /&gt;
&lt;br /&gt;
River rarity. Must be from 0 to  GenerationDepth .&lt;br /&gt;
&lt;br /&gt;
RiverSize:0 &lt;br /&gt;
&lt;br /&gt;
River size from 0 to  GenerationDepth  -  RiverRarity . Making this larger will make the rivers larger, without affecting how much rivers will spawn.&lt;br /&gt;
&lt;br /&gt;
[[文件:TerrainControl-S11.png]]&lt;br /&gt;
&lt;br /&gt;
RiversEnabled:true &lt;br /&gt;
&lt;br /&gt;
Enable or disable rivers. If you just want rivers in some biomes, set this to true and disable the rivers in the [https://github.com/MCTCP/TerrainControl/wiki/BiomeConfigs BiomeConfigs] instead.&lt;br /&gt;
&lt;br /&gt;
RandomRivers:false &lt;br /&gt;
&lt;br /&gt;
Normally the rivers follow the biome borders most of the time. Set this setting to  true  to disable this behaviour.&lt;br /&gt;
&lt;br /&gt;
ImprovedRivers:false &lt;br /&gt;
&lt;br /&gt;
Normally rivers use technical biomes to generate. In the default settings the biomes  River  and  FrozenRiver  are used.&lt;br /&gt;
&lt;br /&gt;
If you set this setting to true, the technical biomes won&#039;t be used anymore in the world. This causes the rivers to look exactly like the biome they are flowing through: no more sudden changes of grass color. The height settings of the river can now be found in the biome the river is flowing through.&lt;br /&gt;
&lt;br /&gt;
==== Settings for BiomeMode:FromImage ====&lt;br /&gt;
The values in this section only work when  BiomeMode  is set to FromImage.&lt;br /&gt;
&lt;br /&gt;
ImageMode:Repeat &lt;br /&gt;
&lt;br /&gt;
What to do when terrain is generated outside the boundaries of the image:  Repeat ,  ContinueNormal ,  FillEmpty &lt;br /&gt;
&lt;br /&gt;
Repeat  - repeat the image.&lt;br /&gt;
&lt;br /&gt;
Mirror  - mirrors the image.&lt;br /&gt;
&lt;br /&gt;
ContinueNormal  - continue normal generation.&lt;br /&gt;
&lt;br /&gt;
FillEmpty  - fill it with one biome.&lt;br /&gt;
&lt;br /&gt;
ImageFile:map.png &lt;br /&gt;
&lt;br /&gt;
PNG file to read the biomes from. Place it next to the WorldConfig.ini file.&lt;br /&gt;
&lt;br /&gt;
ImageOrientation: East &lt;br /&gt;
&lt;br /&gt;
How the image is oriented:  North ,  South ,  East  or  West . When this is set to  North , the image is placed in the world in the normal way. When it is set to  East , the image is rotated 90 degrees counter-clockwise in memory so, that what is on the east in the image becomes north in the world.&lt;br /&gt;
&lt;br /&gt;
ImageFillBiome:Ocean &lt;br /&gt;
&lt;br /&gt;
When using the  FillEmpty  mode this biome will be used when generating outside the image.&lt;br /&gt;
&lt;br /&gt;
ImageXOffset:0 &lt;br /&gt;
&lt;br /&gt;
ImageZOffset:0 &lt;br /&gt;
&lt;br /&gt;
Translates the map origin. For some reason, this number needs to be multiplied with -1 when using  FillEmpty .&lt;br /&gt;
&lt;br /&gt;
=== BiomeConfigs ===&lt;br /&gt;
=== PluginConfig ===&lt;br /&gt;
=== BO2 Objects ===&lt;br /&gt;
=== BO3 Objects ===&lt;br /&gt;
=== Land Fuzzy ===&lt;br /&gt;
&lt;br /&gt;
== Other pages ==&lt;br /&gt;
=== Examples page ===&lt;br /&gt;
=== Commands and Permissions ===&lt;br /&gt;
=== Compatibility with other mods ===&lt;br /&gt;
=== Compatibility with WorldPainter ===&lt;br /&gt;
== External tutorials ==&lt;br /&gt;
* General tutorial by mysource&lt;br /&gt;
* Effect of the seed on a map and working with higher (y&amp;gt;128) worlds by mysource&lt;br /&gt;
* Achieve certain world styles by mysource&lt;br /&gt;
* Create a map by image by mysource&lt;br /&gt;
* World merging by mysource&lt;br /&gt;
* How Terrain Control&#039;s biome generator works by Khoorn&lt;br /&gt;
* Cave variables explained by thedeadlytao&lt;br /&gt;
* GenerationDepth and LandSize/Rarity Explained by thedeadlytao&lt;br /&gt;
{{Languages|TerrainControl}}&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2907</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2907"/>
		<updated>2016-03-12T15:28:40Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--HEAD--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--PYTHON&amp;amp;DJANGO--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&amp;lt;br /&amp;gt;&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&amp;lt;br /&amp;gt;&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&amp;lt;br /&amp;gt;&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&amp;lt;br /&amp;gt;&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容.&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--MYSQLDB--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&amp;lt;br /&amp;gt;&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&amp;lt;br /&amp;gt;&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&amp;lt;br /&amp;gt;&lt;br /&gt;
同样的，安装这个也只需要输入&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--部署--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;部署 · Deployment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--部署--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                使用开发服务器&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&amp;lt;br /&amp;gt;&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&amp;lt;br/&amp;gt;&lt;br /&gt;
我们可以直接使用开发服务器部署。&amp;lt;br/&amp;gt;&lt;br /&gt;
这是最为简单的部署方法！&amp;lt;br/&amp;gt;&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--screen--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                使用Screen(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&amp;lt;br/&amp;gt;&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&amp;lt;br/&amp;gt;&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&amp;lt;br/&amp;gt;&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2906</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2906"/>
		<updated>2016-03-12T15:27:47Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​添加图像至页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:=A=_2016-03-12_15-28.png|thumbnail|=A=]]&lt;br /&gt;
&lt;br /&gt;
[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--HEAD--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--PYTHON&amp;amp;DJANGO--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&amp;lt;br /&amp;gt;&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&amp;lt;br /&amp;gt;&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&amp;lt;br /&amp;gt;&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&amp;lt;br /&amp;gt;&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容.&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--MYSQLDB--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&amp;lt;br /&amp;gt;&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&amp;lt;br /&amp;gt;&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&amp;lt;br /&amp;gt;&lt;br /&gt;
同样的，安装这个也只需要输入&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--部署--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;部署 · Deployment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--部署--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                使用开发服务器&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&amp;lt;br /&amp;gt;&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&amp;lt;br/&amp;gt;&lt;br /&gt;
我们可以直接使用开发服务器部署。&amp;lt;br/&amp;gt;&lt;br /&gt;
这是最为简单的部署方法！&amp;lt;br/&amp;gt;&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--screen--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                使用Screen(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&amp;lt;br/&amp;gt;&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&amp;lt;br/&amp;gt;&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&amp;lt;br/&amp;gt;&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E6%96%87%E4%BB%B6:%3DA%3D_2016-03-12_15-28.png&amp;diff=2905</id>
		<title>文件:=A= 2016-03-12 15-28.png</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E6%96%87%E4%BB%B6:%3DA%3D_2016-03-12_15-28.png&amp;diff=2905"/>
		<updated>2016-03-12T15:27:46Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​贡献图像自Special:Uploads&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== {{int:filedesc}} ==&lt;br /&gt;
{{Information&lt;br /&gt;
|description==A=&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Mcdarc]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== {{int:license-header}} ==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2904</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2904"/>
		<updated>2016-03-12T15:13:22Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--HEAD--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--PYTHON&amp;amp;DJANGO--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&amp;lt;br /&amp;gt;&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&amp;lt;br /&amp;gt;&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&amp;lt;br /&amp;gt;&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&amp;lt;br /&amp;gt;&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容.&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--MYSQLDB--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&amp;lt;br /&amp;gt;&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&amp;lt;br /&amp;gt;&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&amp;lt;br /&amp;gt;&lt;br /&gt;
同样的，安装这个也只需要输入&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--部署--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;部署 · Deployment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--部署--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                使用开发服务器&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&amp;lt;br /&amp;gt;&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&amp;lt;br/&amp;gt;&lt;br /&gt;
我们可以直接使用开发服务器部署。&amp;lt;br/&amp;gt;&lt;br /&gt;
这是最为简单的部署方法！&amp;lt;br/&amp;gt;&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--screen--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                使用Screen(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&amp;lt;br/&amp;gt;&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&amp;lt;br/&amp;gt;&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&amp;lt;br/&amp;gt;&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2903</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2903"/>
		<updated>2016-03-12T15:07:31Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--插件专题--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--PYTHON&amp;amp;DJANGO--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&amp;lt;br /&amp;gt;&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&amp;lt;br /&amp;gt;&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&amp;lt;br /&amp;gt;&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&amp;lt;br /&amp;gt;&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容.&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--MYSQLDB--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&amp;lt;br /&amp;gt;&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&amp;lt;br /&amp;gt;&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&amp;lt;br /&amp;gt;&lt;br /&gt;
同样的，安装这个也只需要输入&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2902</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2902"/>
		<updated>2016-03-12T15:05:57Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--插件专题--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--PYTHON&amp;amp;DJANGO--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--MYSQLDB--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2901</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2901"/>
		<updated>2016-03-12T15:05:13Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--插件专题--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--PYTHON&amp;amp;DJANGO--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;height: auto;line-height: 20px;min-height: 20px;width: 49%;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5); padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align: center;margin:0; padding:20px;background-color: #3385ff;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);margin:0 0 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;!--间距调整--&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding: 4px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--MYSQLDB--&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);color: #333;font-size: 14px;height: auto;line-height: 20px;margin: 0px 0px 5px;min-height: 20px;width: 49%; padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 20px;text-align:center;padding:20px;background-color: #3385ff;margin:0 0 20px 0;box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-webkit-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);-moz-box-shadow:0 0 30px rgba(51, 133, 255, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:left; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2900</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2900"/>
		<updated>2016-03-12T15:01:21Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--插件专题--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;环境 · Requirment&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--大板块,一分为二(热门条目，最新条目)--&amp;gt;&lt;br /&gt;
    &amp;lt;!--&amp;lt;div id=&amp;quot;container_1&amp;quot; style=&amp;quot;display: table; margin: 0 auto; padding:0;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-documentation&amp;quot; style=&amp;quot;display: table-cell; -webkit-border-image: none;-webkit-box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;background-color: whiteSmoke;border-bottom-color: #E3E3E3;border-bottom-left-radius: 3px;border-bottom-right-radius: 3px;border-bottom-style: solid;border-bottom-width: 1px;border-left-color: #E3E3E3;border-left-style: solid;border-left-width: 1px;border-right-color: #E3E3E3;border-right-style: solid;border-right-width: 1px;border-top-color: #E3E3E3;border-top-left-radius: 3px;border-top-right-radius: 3px;border-top-style: solid;border-top-width: 1px;box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;color: #333;font-size: 14px;height: auto;line-height: 20px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;margin-top: 0px;min-height: 20px;padding-bottom: 0px;padding-left: 9px;padding-right: 9px;padding-top: 9px;width: 50%;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:center; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
                Python &amp;amp; Django&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 3.5px; display: table-cell;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id=&amp;quot;mf-join&amp;quot; style=&amp;quot;display: table-cell;-webkit-border-image: none;-webkit-box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;background-color: whiteSmoke;border-bottom-color: #E3E3E3;border-bottom-left-radius: 3px;border-bottom-right-radius: 3px;border-bottom-style: solid;border-bottom-width: 1px;border-left-color: #E3E3E3;border-left-style: solid;border-left-width: 1px;border-right-color: #E3E3E3;border-right-style: solid;border-right-width: 1px;border-top-color: #E3E3E3;border-top-left-radius: 3px;border-top-right-radius: 3px;border-top-style: solid;border-top-width: 1px;box-shadow: rgba(0, 0, 0, 0.046875) 0px 1px 1px 0px inset;color: #333;font-size: 14px;height: auto;line-height: 20px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;margin-top: 0px;min-height: 20px;padding-bottom: 9px;padding-left: 9px;padding-right: 9px;padding-top: 9px;width: 50%;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;display:block; text-align:center; color: #444; font-size: 12pt;&amp;quot;&amp;gt;&lt;br /&gt;
                MySQLdb(可选)&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2899</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2899"/>
		<updated>2016-03-12T14:56:49Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--插件专题--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;line-height: 20px;margin: 35px 0 0 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 22px;text-align: center;margin:0; padding:16px;background-color: #3385ff;&amp;quot;&amp;gt;介绍 · Introduction&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;padding:10px 20px;&amp;quot;&amp;gt;&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2898</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2898"/>
		<updated>2016-03-12T14:50:22Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
&amp;lt;!--插件专题--&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;color: #333;height: auto;margin: 0 0 35px 0;min-height: 20px;background-color: #f8f8f8;box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-webkit-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);-moz-box-shadow:0 0 10px rgba(193, 193, 193, 0.5);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--标题--&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color:#ffffff;font-size: 26px;text-align: center;margin:0; padding:14px;background-color: #3385ff;&amp;quot;&amp;gt;&lt;br /&gt;
            欢迎来到MadAuth词条&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;float:none;-webkit-border-image: none;height: auto;line-height: 20px;background-color:#74c0ff;display:table;width:100%;color:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!--内容--&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                插件名&amp;lt;br&amp;gt;&#039;&#039;&#039;MadAuth&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                作者&amp;lt;br&amp;gt;&#039;&#039;&#039;Mcdarc&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;border-right:1px solid white;&amp;quot;&amp;gt;&lt;br /&gt;
                版本&amp;lt;br&amp;gt;&#039;&#039;&#039;v3.1&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p style=&amp;quot;float:none;font-size: 16px;text-align: center;padding:10px 0;display:table-cell;&amp;quot;&amp;gt;&lt;br /&gt;
                兼容版本&amp;lt;br&amp;gt;&#039;&#039;&#039;1.5.1-1.9&#039;&#039;&#039;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2897</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2897"/>
		<updated>2016-03-12T14:42:14Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2896</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2896"/>
		<updated>2016-03-12T14:41:13Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=MadAuth&lt;br /&gt;
|版本=v3.1&lt;br /&gt;
|兼容服务端版本=1.5.1-1.9&lt;br /&gt;
|源地址=http://www.mcbbs.net/thread-551914-1-1.html&lt;br /&gt;
}}&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2895</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2895"/>
		<updated>2016-03-12T14:39:34Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​None&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:管理]]&lt;br /&gt;
[[Category:安全]]&lt;br /&gt;
[[Category:修正]]&lt;br /&gt;
[[Category:网页]]&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=MadAuth&lt;br /&gt;
|版本=v3.1&lt;br /&gt;
|兼容服务端版本=1.5.1-1.9&lt;br /&gt;
}}&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2894</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2894"/>
		<updated>2016-03-12T14:35:22Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* 使用开发服务器 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2893</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2893"/>
		<updated>2016-03-12T14:34:09Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;br /&gt;
== 部署 ==&lt;br /&gt;
=== 使用开发服务器 ===&lt;br /&gt;
我相信这里有很多懒癌晚期的患者=A=。&lt;br /&gt;
&lt;br /&gt;
但是值得庆幸的是，&#039;&#039;&#039;Django&#039;&#039;&#039;为我们提供了&#039;&#039;&#039;开发服务器&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
我们可以直接使用开发服务器部署。&lt;br /&gt;
&lt;br /&gt;
这是最为简单的部署方法！&lt;br /&gt;
&lt;br /&gt;
#你先要设置setting.py中的&amp;lt;code&amp;gt;ALLOWED_HOSTS = [你的域名]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
##[]不可去掉，并设置setting.py中的&amp;lt;code&amp;gt;Debug = False&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
##&#039;&#039;&#039;Python&#039;&#039;&#039;区分大小写！&lt;br /&gt;
&lt;br /&gt;
#进入根目录，打开命令行(或者ssh使用cd进入根目录)。&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;python manage.py runserver &amp;lt;你需要的端口&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
##端口那里选填。若不填默认8000。&lt;br /&gt;
&lt;br /&gt;
##不要修改manage.py！&lt;br /&gt;
&lt;br /&gt;
##若出现python未找到请重新安装。&lt;br /&gt;
&lt;br /&gt;
##若出现语法错误请确认python版本为2.7.10&lt;br /&gt;
==== 使用screen ====&lt;br /&gt;
由于&#039;&#039;&#039;&#039;&#039;Linux&#039;&#039;&#039;&#039;&#039;服务器版本一般没有桌面环境。&lt;br /&gt;
&lt;br /&gt;
但是一退出远程连接又会&#039;&#039;&#039;kill&#039;&#039;&#039;掉进程。&lt;br /&gt;
&lt;br /&gt;
所以我们要使用&#039;&#039;&#039;screen&#039;&#039;&#039;来&amp;lt;nowiki&amp;gt;&#039;&#039;保护&#039;&#039;&amp;lt;/nowiki&amp;gt;我们可怜的进程=A=&lt;br /&gt;
&lt;br /&gt;
#使用&amp;lt;code&amp;gt;apt-get install screen&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;yum install screen&amp;lt;/code&amp;gt;即可安装&lt;br /&gt;
&lt;br /&gt;
#然后使用&amp;lt;code&amp;gt;screen -S &amp;lt;选填参数：你的自定义作业名&amp;gt; ./start.sh&amp;lt;/code&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2892</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2892"/>
		<updated>2016-03-12T14:22:25Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;/code&amp;gt;Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2891</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2891"/>
		<updated>2016-03-12T14:21:14Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pip install django&amp;lt;code/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;code/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E8%AE%A8%E8%AE%BA:MadAuth&amp;diff=2890</id>
		<title>讨论:MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E8%AE%A8%E8%AE%BA:MadAuth&amp;diff=2890"/>
		<updated>2016-03-12T14:18:27Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​创建页面，内容为“== FAQ == === 网页系统问题 === === 插件问题 === === 启动器问题 === == 建议 == === 网页建议 === === 插件建议 === === 启动器建议 ===”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FAQ ==&lt;br /&gt;
=== 网页系统问题 ===&lt;br /&gt;
=== 插件问题 ===&lt;br /&gt;
=== 启动器问题 ===&lt;br /&gt;
== 建议 ==&lt;br /&gt;
=== 网页建议 ===&lt;br /&gt;
=== 插件建议 ===&lt;br /&gt;
=== 启动器建议 ===&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2889</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2889"/>
		<updated>2016-03-12T14:15:09Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;的设置教程请看下文&lt;br /&gt;
&lt;br /&gt;
并且如果合理部署的话，可以说是几乎不占用性能的！&lt;br /&gt;
&lt;br /&gt;
== 环境 ==&lt;br /&gt;
=== Python ===&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;目前来说的话，还是一个挺不错的语言。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python&#039;&#039;&#039;最新版本已更新到 3.X 了。然而我们并不需要它=A=&lt;br /&gt;
&lt;br /&gt;
我们需要的是 2.7.10 版本的&#039;&#039;&#039;Python&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
安装时切记要安装&#039;&#039;&#039;pip&#039;&#039;&#039;，否则后面将会很麻烦。&lt;br /&gt;
=== Django ===&lt;br /&gt;
&#039;&#039;&#039;Django&#039;&#039;&#039;是一个非常好的&#039;&#039;&#039;PyThon&#039;&#039;&#039;下的网页框架。&lt;br /&gt;
&lt;br /&gt;
目前最新版本的&#039;&#039;&#039;Django&#039;&#039;&#039;为&#039;&#039;&#039;1.9.2&#039;&#039;&#039;，同时这也是编写本外置登录系统的版本。&lt;br /&gt;
&lt;br /&gt;
使用&amp;lt;code&amp;gt;pip install django&amp;lt;code/&amp;gt;即可。因为Django一般都是向下兼容。&lt;br /&gt;
&lt;br /&gt;
=== MySQLdb(可选) ===&lt;br /&gt;
&#039;&#039;&#039;MySQLdb&#039;&#039;&#039;是一个&#039;&#039;&#039;Python&#039;&#039;&#039;下的&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;操作模块。&lt;br /&gt;
&lt;br /&gt;
他为&#039;&#039;&#039;Django&#039;&#039;&#039;提供&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;支持。&lt;br /&gt;
&lt;br /&gt;
如果你不使用&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;则无需安装。&lt;br /&gt;
&lt;br /&gt;
同样的，安装这个也只需要输入&amp;lt;code&amp;gt;pip install mysqldb&amp;lt;code/&amp;gt;即可&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=MadAuth&amp;diff=2885</id>
		<title>MadAuth</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=MadAuth&amp;diff=2885"/>
		<updated>2016-03-12T14:02:28Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​Create a new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
这是一个逗逼的&#039;&#039;&#039;外置登录&#039;&#039;&#039;！&lt;br /&gt;
&lt;br /&gt;
这个网页验证使用&#039;&#039;&#039;&#039;&#039;SQLite&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Python&#039;&#039;&#039;&#039;&#039; + &#039;&#039;&#039;&#039;&#039;Django&#039;&#039;&#039;&#039;&#039;环境，无需搭建&#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039;环境！&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=2605</id>
		<title>BungeeCord开发教程</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=2605"/>
		<updated>2016-02-26T15:14:16Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* 利用工具 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待完善}}&lt;br /&gt;
{{待更新|url=https://www.spigotmc.org/wiki/bungeecord-plugin-development/}}&lt;br /&gt;
&lt;br /&gt;
== 介绍  ==&lt;br /&gt;
&lt;br /&gt;
BungeeCord是一个转发服务端. 你也可以把它理解为代理服务端. 鉴于国内似乎没有BungeeCord插件, 我觉得写一篇教程会好些.&lt;br /&gt;
&lt;br /&gt;
== 利用工具 ==&lt;br /&gt;
&lt;br /&gt;
官方提供了一个极其好用的工具网页. 它可以让你方便地生成一个新的, 配置好的&#039;&#039;&#039;BungeeCord&#039;&#039;&#039;插件项目.&lt;br /&gt;
&lt;br /&gt;
该页面的地址 [http://utilities.shall.fail/bungeecord/pluginhelper/]&lt;br /&gt;
&lt;br /&gt;
只要简单地输入&#039;&#039;Plugin name&#039;&#039;, &#039;&#039;Plugin package&#039;&#039;, &#039;&#039;Plugin author&#039;&#039;, &#039;&#039;Plugin version&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他就会自动为你生成一个项目, 和一些基础的代码.&lt;br /&gt;
&lt;br /&gt;
如果你是新手, 你大可以勾选&#039;&#039;Include a listener for me, please.&#039;&#039;. 这样他会为你生成一个玩家连接的监听器.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=2604</id>
		<title>BungeeCord开发教程</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=BungeeCord%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=2604"/>
		<updated>2016-02-26T15:09:00Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​233&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待完善}}&lt;br /&gt;
{{待更新|url=https://www.spigotmc.org/wiki/bungeecord-plugin-development/}}&lt;br /&gt;
&lt;br /&gt;
== 介绍  ==&lt;br /&gt;
&lt;br /&gt;
BungeeCord是一个转发服务端. 你也可以把它理解为代理服务端. 鉴于国内似乎没有BungeeCord插件, 我觉得写一篇教程会好些.&lt;br /&gt;
&lt;br /&gt;
== 利用工具 ==&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Event_API_Reference&amp;diff=1969</id>
		<title>Event API Reference</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Event_API_Reference&amp;diff=1969"/>
		<updated>2016-01-09T06:21:31Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Event API Reference/en|点击此处浏览原文]]&lt;br /&gt;
{{待翻译}}&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;事件&#039;&#039;&#039; 是服务端用来告诉你在游戏中发生了什么的方式. &#039;&#039;&#039;Bukkit&#039;&#039;&#039;在许多类别中定义了许多事件; 例如 玩家的互动(玩家登录, 玩家点击了一个方块, 玩家死了,玩家重生...), 方块事件(方块被放置, 方块被破坏, 方块附近的实体被改变(它邻居变了233)...), 实体事件(一个怪物看上了你233, 一个苦力怕帮你收集土方块...), 世界事件 (一个世界被加载或卸载, 一个区块被加载或卸载), 以及许多. 由于MC官方的一些原因，他们的JavaDocs都挂了= =&lt;br /&gt;
&lt;br /&gt;
== 基础 ==&lt;br /&gt;
To keep this section simple, we&#039;re going to only work with PlayerLoginEvent. Lets start with setting up the method&lt;br /&gt;
为了保持简单易懂，这一节只讨论一种事件——PlayerLoginEnvent。让我们从创建一个监听/处理该事件的方法开始吧。&lt;br /&gt;
&lt;br /&gt;
=== 创建方法 ===&lt;br /&gt;
In order for your plugin to handle an event call, you need to create a method for it:&lt;br /&gt;
为了让你的插件能够监听并处理该事件的回调，你需要为它创建一个方法。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;@EventHandler&lt;br /&gt;
public void onLogin(PlayerLoginEvent event) {&lt;br /&gt;
    // 你自己的代码...&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
Before this method can be invoked by Bukkit when the &amp;quot;PlayerLoginEvent&amp;quot; is fired, we need to annotate it. We do this with EventHandlers.&lt;br /&gt;
你还需要向Bukkit声明一下，这样服务器才会在&amp;quot;PlayerLoginEvent&amp;quot;触发时调用该函数。我们需要用到EventHandlers来做到这一点。&lt;br /&gt;
&lt;br /&gt;
=== @EventHandler ===&lt;br /&gt;
The &amp;quot;@EventHandler&amp;quot; class is an Annotation, which goes just above your method. It looks like this:&lt;br /&gt;
“@EventHandler”类是一个Annotation，一般就放在你的方法上面。就像这样：&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;@EventHandler // EventPriority（事件优先级）默认为NORMAL&amp;lt;/source&amp;gt;&lt;br /&gt;
This marks your method as an EventHandler with the EventPriority as NORMAL.&lt;br /&gt;
这样一来，这一方法就标记为了一个EventPriority（事件优先级）为NORMAL的EventHandler（事件监听/处理器）。&lt;br /&gt;
&lt;br /&gt;
The EventHandler can take an EventPriority to specify the priority of the method, like so:&lt;br /&gt;
EventHandler可以通过EventPriority来自定义事件的优先级，例如：&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;@EventHandler(priority = EventPriority.HIGHEST) // 方法优先级设为最高&lt;br /&gt;
@EventHandler(priority = EventPriority.LOW) // 方法优先级设为低&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here&#039;s what it would look like in your class:&lt;br /&gt;
你的回调函数看起来应该和下面这个相类似：&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;@EventHandler&lt;br /&gt;
public void onLogin(PlayerLoginEvent event) {&lt;br /&gt;
    // 你自己的代码...&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 添加监听器 ===&lt;br /&gt;
In order for Bukkit to be able to register your EventHandler&#039;s, the class which contains your event handling methods must implement  the &#039;&#039;Listener&#039;&#039; (org.bukkit.event.Listener) interface, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public final class MyPlayerListener implements Listener {&lt;br /&gt;
    @EventHandler&lt;br /&gt;
    public void onLogin(PlayerLoginEvent event) {&lt;br /&gt;
        // Your code here...&lt;br /&gt;
    }&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The name of the method (&#039;&#039;onLogin&#039;&#039; in the above example) does not matter;  you may call the method anything you like inside your listener.&lt;br /&gt;
&lt;br /&gt;
You may be wondering.. &amp;quot;How does Bukkit know which event to listen to?&amp;quot; It knows that by the event parameter you specify in the method&#039;s signature - in the above example: &amp;lt;code&amp;gt;PlayerLoginEvent&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{warning|You &#039;&#039;must&#039;&#039; specify a single specific event or Bukkit will not be able to register it}}&lt;br /&gt;
&lt;br /&gt;
Your main plugin class (i.e. the class which extends JavaPlugin) can also be an event listener, and this might make sense if your plugin is very small.  E.g.:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MyPlugin extends JavaPlugin implements Listener {&lt;br /&gt;
  @Override&lt;br /&gt;
  public void onEnable() {&lt;br /&gt;
    getServer().getPluginManager().registerEvents(this, this);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  @EventHandler&lt;br /&gt;
  public void onLogin(PlayerLoginEvent event) {&lt;br /&gt;
    getLogger().log(Level.INFO, &amp;quot;Player &amp;quot; + event.getPlayer().getName() + &amp;quot; is logging in!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== EventHandler参数 ===&lt;br /&gt;
The @EventHandler annotation can take parameters to further define how the event handler behaves. At the moment you can specify:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Default&lt;br /&gt;
! Description&lt;br /&gt;
! Values&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| priority&lt;br /&gt;
| EventPriority&lt;br /&gt;
| EventPriority.NORMAL&lt;br /&gt;
| Sets the priority of your method&lt;br /&gt;
|&lt;br /&gt;
* EventPriority.MONITOR&lt;br /&gt;
* EventPriority.HIGHEST&lt;br /&gt;
* EventPriority.HIGH&lt;br /&gt;
* EventPriority.NORMAL&lt;br /&gt;
* EventPriority.LOW&lt;br /&gt;
* EventPriority.LOWEST&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ignoreCancelled&lt;br /&gt;
| boolean&lt;br /&gt;
| false&lt;br /&gt;
| If set to true, your method will not get the event if the event has been cancelled&lt;br /&gt;
| &lt;br /&gt;
* true&lt;br /&gt;
* false&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 事件优先级 ====&lt;br /&gt;
There are six priorities in Bukkit that are called in the following order&lt;br /&gt;
* EventPriority.LOWEST&lt;br /&gt;
* EventPriority.LOW&lt;br /&gt;
* EventPriority.NORMAL&lt;br /&gt;
* EventPriority.HIGH&lt;br /&gt;
* EventPriority.HIGHEST&lt;br /&gt;
* EventPriority.MONITOR&lt;br /&gt;
&lt;br /&gt;
Every plugin gets a say in what happens, and every plugin must get a chance to know the outcome of an event. So, we pass events to plugins even after they&#039;ve been cancelled. A plugin can actually uncancel an event after another plugin cancelled it. This is where priorities become really important.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say a BLOCK_PLACE event is being handled. The lowest priority listener is called to get its say in whether it should be cancelled or not. Then the low priority listener is called to see if it wants to override the lowest, etc. Eventually it hits monitor, and at this point nothing should change the outcome of the event. Monitor should be used to see the outcome of an event, without changing any aspect of it.&lt;br /&gt;
If we have three plugins enabled; one is a basic area protection plugin, one is a fancy plugin using signs, and another is a logging plugin.&lt;br /&gt;
The protection plugin listens on Priority.LOWEST. It says they can&#039;t place blocks in this area, and cancels the event.&lt;br /&gt;
The fancy sign plugin listens on Priority.NORMAL. It says they can place signs here, and uncancels the event.&lt;br /&gt;
The log plugin listens on Priority.MONITOR. It sees that the event was actually allowed, and logs it.&lt;br /&gt;
&lt;br /&gt;
If you want to change the outcome of an event, choose very carefully from LOWEST to HIGHEST. Suggested generalized protection plugins on lowest, more specific plugins on normal, and override plugins on high.&lt;br /&gt;
If you want to act when an event happens, but not change the outcome, use MONITOR. &#039;&#039;&#039;It&#039;s really really important that you use MONITOR, or an event might get cancelled after you&#039;ve acted on it, and it&#039;s even more important that you don&#039;t change the outcome of the event on MONITOR or it&#039;ll break other plugins.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 注册事件 ==&lt;br /&gt;
To register your methods, the class containing the EventHandler(s) must implement the Listener class.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.event.Listener;&lt;br /&gt;
&lt;br /&gt;
public final class LoginListener implements Listener {&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to provide a plugin and a listener to register them in the PluginManager.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;getServer().getPluginManager().registerEvents(Listener, Plugin);&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 监听器示例 ===&lt;br /&gt;
This listener contains two EventHandlers. One listening on HIGH, and one on NORMAL.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.event.Listener;&lt;br /&gt;
import org.bukkit.event.EventHandler;&lt;br /&gt;
import org.bukkit.event.EventPriority;&lt;br /&gt;
import org.bukkit.event.player.PlayerLoginEvent;&lt;br /&gt;
&lt;br /&gt;
public final class LoginListener implements Listener {&lt;br /&gt;
    @EventHandler&lt;br /&gt;
    public void normalLogin(PlayerLoginEvent event) {&lt;br /&gt;
        // Some code here&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @EventHandler(priority = EventPriority.HIGH)&lt;br /&gt;
    public void highLogin(PlayerLoginEvent event) {&lt;br /&gt;
        // Some code here&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 在插件中注册事件 ===&lt;br /&gt;
The registerEvents method requires a listener and a plugin. Luckily, we already have our LoginListener. Now for the LoginPlugin!&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
&lt;br /&gt;
public final class LoginPlugin extends JavaPlugin {&lt;br /&gt;
    public void onEnable() {&lt;br /&gt;
        getServer().getPluginManager().registerEvents(new LoginListener(), this);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 在实现监听器接口的插件中注册事件 ====&lt;br /&gt;
&amp;lt;ref&amp;gt;准确来说是在实现了监听器接口的继承了JavaPlugin的类中注册事件（笑&amp;lt;/ref&amp;gt;&lt;br /&gt;
You could even have the events in the main class, for example:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
import org.bukkit.event.Listener;&lt;br /&gt;
import org.bukkit.event.EventHandler;&lt;br /&gt;
import org.bukkit.event.player.PlayerLoginEvent;&lt;br /&gt;
&lt;br /&gt;
public final class LoginPlugin extends JavaPlugin implements Listener {&lt;br /&gt;
    public void onEnable() {&lt;br /&gt;
        getServer().getPluginManager().registerEvents(this, this);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @EventHandler&lt;br /&gt;
    public void normalLogin(PlayerLoginEvent event) {&lt;br /&gt;
        // Some code here&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 在监听器中注册事件 ===&lt;br /&gt;
There are many ways to register your events. Here&#039;s an example where you register them in your listener class.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.event.Listener;&lt;br /&gt;
import org.bukkit.event.EventHandler;&lt;br /&gt;
import org.bukkit.event.EventPriority;&lt;br /&gt;
import org.bukkit.event.player.PlayerLoginEvent;&lt;br /&gt;
&lt;br /&gt;
public final class LoginListener implements Listener {&lt;br /&gt;
    public LoginListener(LoginPlugin plugin) {&lt;br /&gt;
        plugin.getServer().getPluginManager().registerEvents(this, plugin);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @EventHandler&lt;br /&gt;
    public void normalLogin(PlayerLoginEvent event) {&lt;br /&gt;
        // Some code here&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @EventHandler(priority = EventPriority.HIGH)&lt;br /&gt;
    public void highLogin(PlayerLoginEvent event) {&lt;br /&gt;
        // Some code here&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LoginPlugin would look like this:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
&lt;br /&gt;
public final class LoginPlugin extends JavaPlugin {&lt;br /&gt;
    public void onEnable() {&lt;br /&gt;
        new LoginListener(this);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 在监听器中反注册事件 ==&lt;br /&gt;
You can un-register individual events, entire listener classes or all events registered by your plugin or even by other plugins!&lt;br /&gt;
&lt;br /&gt;
==== 反注册特定的事件 ====&lt;br /&gt;
Each event class has the getHandlerList() static method, call that and then you can use .unregister() method.&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
PlayerInteractEvent.getHandlerList().unregister(plugin);&lt;br /&gt;
// this will unregister all PlayerInteractEvent instances from the plugin&lt;br /&gt;
// you can also specify a listener class instead of plugin.&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Now you know why you&#039;ll need the getHandlerList() in your custom events.&lt;br /&gt;
&lt;br /&gt;
==== 反注册所有事件 ====&lt;br /&gt;
Using the HandlerList class and its unregisterAll() static method you can easily unregister events from listener classes or plugins.&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
HandlerList.unregisterAll(plugin);&lt;br /&gt;
// this will unregister all events from the specified plugin&lt;br /&gt;
// you can also specify a listener class instead of plugin.&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 创建自定义事件 ==&lt;br /&gt;
Creating custom events is very simple, you can use the same system that Bukkit uses without ruining performance.&lt;br /&gt;
&lt;br /&gt;
There are two (2) things to keep in mind when you create a Custom Event. They are &amp;quot;extend Event&amp;quot; and &amp;quot;static handlers.&amp;quot; With static handlers, you must input the following code into your custom event:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;private static final HandlerList handlers = new HandlerList();&lt;br /&gt;
&lt;br /&gt;
public HandlerList getHandlers() {&lt;br /&gt;
    return handlers;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static HandlerList getHandlerList() {&lt;br /&gt;
    return handlers;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
This block of code makes the EventHandlers contained inside your own event, keeping any unrelated events completely separated.&lt;br /&gt;
&lt;br /&gt;
=== 自定义事件示例 ===&lt;br /&gt;
The following example shows how easy it is to create your own &amp;quot;CustomEvent.&amp;quot;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.event.Event;&lt;br /&gt;
import org.bukkit.event.HandlerList;&lt;br /&gt;
&lt;br /&gt;
public final class CustomEvent extends Event {&lt;br /&gt;
    private static final HandlerList handlers = new HandlerList();&lt;br /&gt;
    private String message;&lt;br /&gt;
&lt;br /&gt;
    public CustomEvent(String example) {&lt;br /&gt;
        message = example;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getMessage() {&lt;br /&gt;
        return message;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public HandlerList getHandlers() {&lt;br /&gt;
        return handlers;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static HandlerList getHandlerList() {&lt;br /&gt;
        return handlers;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 调用你的自定义事件 ====&lt;br /&gt;
You are in control of creating and calling your events, where you call it is completely up to you. Here&#039;s an example&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;// Create the event here&lt;br /&gt;
CustomEvent event = new CustomEvent(&amp;quot;Sample Message&amp;quot;);&lt;br /&gt;
// Call the event&lt;br /&gt;
Bukkit.getServer().getPluginManager().callEvent(event);&lt;br /&gt;
// Now you do the event&lt;br /&gt;
Bukkit.getServer().broadcastMessage(event.getMessage());&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember: You are in control of your events. If you don&#039;t call it, and act upon it, it doesn&#039;t happen!&lt;br /&gt;
&lt;br /&gt;
==== 监听一个自定义事件 ====&lt;br /&gt;
How do you listen to a custom event you say? Simple, the same way as listening to a normal event!&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.event.Listener;&lt;br /&gt;
import org.bukkit.event.EventHandler;&lt;br /&gt;
&lt;br /&gt;
public final class CustomListener implements Listener {&lt;br /&gt;
    @EventHandler&lt;br /&gt;
    public void normalLogin(CustomEvent event) {&lt;br /&gt;
        // Some code here&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 使得你的自定义事件具有可撤销性 ====&lt;br /&gt;
If you ever want to make your event cancellable, remember one thing: &amp;quot;implements Cancellable.&amp;quot; Just like you would import Listener. It&#039;s really that simple, let me show you an example!&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;import org.bukkit.event.Event;&lt;br /&gt;
import org.bukkit.event.HandlerList;&lt;br /&gt;
import org.bukkit.event.Cancellable;&lt;br /&gt;
&lt;br /&gt;
public final class CustomEvent extends Event implements Cancellable {&lt;br /&gt;
    private static final HandlerList handlers = new HandlerList();&lt;br /&gt;
    private String message;&lt;br /&gt;
    private boolean cancelled;&lt;br /&gt;
&lt;br /&gt;
    public CustomEvent(String example) {&lt;br /&gt;
        message = example;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getMessage() {&lt;br /&gt;
        return message;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public boolean isCancelled() {&lt;br /&gt;
        return cancelled;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void setCancelled(boolean cancel) {&lt;br /&gt;
        cancelled = cancel;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public HandlerList getHandlers() {&lt;br /&gt;
        return handlers;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static HandlerList getHandlerList() {&lt;br /&gt;
        return handlers;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Afterwards, you would check if a plugin had cancelled the event in your code, before processing normally&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;// Create the event here&lt;br /&gt;
CustomEvent event = new CustomEvent(&amp;quot;Sample Message&amp;quot;);&lt;br /&gt;
// Call the event&lt;br /&gt;
Bukkit.getServer().getPluginManager().callEvent(event);&lt;br /&gt;
// Check if the event is not cancelled&lt;br /&gt;
if (!event.isCancelled()) {&lt;br /&gt;
    // Now you do the event&lt;br /&gt;
    Bukkit.getServer().broadcastMessage(event.getMessage());&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 视频教程 ==&lt;br /&gt;
If you would prefer to watch a video tutorial version of this, please click [http://www.youtube.com/watch?v=PWQNsqwD-AY here].&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1967</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1967"/>
		<updated>2016-01-08T14:23:04Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* 定义 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[http://wiki.vg/Protocol_Encryption Minecraft协议]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人…… 诸如此类的任何东西…&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
Minecraft服务器是基于TCP通讯的。它和客户端使用所谓的 &#039;&#039;数据包&#039;&#039;交流. 一个包被通过字节编码后从TCP连接中发送. 数据包的含义取决于其包标识和连接的当前状态. 每个链接从 &#039;&#039;&#039;[http://wiki.vg/Handshaking 握手]&#039;&#039;&#039;开始, 使用包切换状态 &#039;&#039;&#039;[http://wiki.vg/Handshaking 握手]&#039;&#039;&#039;,( 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== 数据类型 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== 其他定义 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== 包的格式 ==&lt;br /&gt;
&lt;br /&gt;
=== 无压缩 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== 压缩 ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== 握手协议 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== 服务端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 握手协议 ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 传统服务器列表 ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== 开始游戏 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 心跳包 ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 加入游戏 ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== 聊天内容 ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== 时间更新 ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有的物品 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 出生姿势 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 更新生命值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生 ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== 玩家姿势以及看的方向 ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有物品变更 ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 使用床 ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 动画 ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成玩家 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== 拾起物品 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成对象 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成怪物 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生绘图 ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生掉落经验 ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体速率 ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 销毁实体 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向与相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体传送 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体手朝向 ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体状态 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 附加实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体数据值 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 移除实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 设置经验值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体配置 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 区块数据 ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 多个方块改变 ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块改变 ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块功能 ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块破坏动画 ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 地图区块 ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 爆炸 ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 属性 ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 声音特效 ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 粒子效果 ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 改变游戏状态 ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生存全局实体 ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 打开窗户 ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== 关闭窗户 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1966</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1966"/>
		<updated>2016-01-08T14:07:48Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[http://wiki.vg/Protocol_Encryption Minecraft协议]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人…… 诸如此类的任何东西…&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
Minecraft服务器是基于TCP通讯的。它和客户端使用所谓的 &#039;&#039;数据包&#039;&#039;交流. 一个包被通过字节编码后从TCP连接中发送. 数据包的含义取决于其包标识和连接的当前状态. 每个链接从 &#039;&#039;&#039;[http://wiki.vg/Handshaking 握手]&#039;&#039;&#039;开始, and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== 数据类型 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== 其他定义 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== 包的格式 ==&lt;br /&gt;
&lt;br /&gt;
=== 无压缩 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== 压缩 ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== 握手协议 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== 服务端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 握手协议 ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 传统服务器列表 ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== 开始游戏 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 心跳包 ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 加入游戏 ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== 聊天内容 ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== 时间更新 ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有的物品 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 出生姿势 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 更新生命值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生 ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== 玩家姿势以及看的方向 ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有物品变更 ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 使用床 ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 动画 ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成玩家 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== 拾起物品 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成对象 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成怪物 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生绘图 ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生掉落经验 ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体速率 ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 销毁实体 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向与相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体传送 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体手朝向 ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体状态 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 附加实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体数据值 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 移除实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 设置经验值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体配置 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 区块数据 ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 多个方块改变 ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块改变 ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块功能 ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块破坏动画 ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 地图区块 ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 爆炸 ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 属性 ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 声音特效 ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 粒子效果 ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 改变游戏状态 ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生存全局实体 ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 打开窗户 ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== 关闭窗户 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1965</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1965"/>
		<updated>2016-01-08T13:57:10Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[http://wiki.vg/Protocol_Encryption Minecraft协议]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人…… 诸如此类的任何东西…&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
Minecraft服务器是基于TCP通讯的。它和客户端使用所谓的 &#039;&#039;数据包&#039;&#039;交流. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== 数据类型 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== 其他定义 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== 包的格式 ==&lt;br /&gt;
&lt;br /&gt;
=== 无压缩 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== 压缩 ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== 握手协议 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== 服务端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 握手协议 ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 传统服务器列表 ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== 开始游戏 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 心跳包 ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 加入游戏 ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== 聊天内容 ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== 时间更新 ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有的物品 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 出生姿势 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 更新生命值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生 ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== 玩家姿势以及看的方向 ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有物品变更 ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 使用床 ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 动画 ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成玩家 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== 拾起物品 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成对象 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成怪物 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生绘图 ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生掉落经验 ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体速率 ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 销毁实体 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向与相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体传送 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体手朝向 ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体状态 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 附加实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体数据值 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 移除实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 设置经验值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体配置 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 区块数据 ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 多个方块改变 ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块改变 ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块功能 ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块破坏动画 ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 地图区块 ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 爆炸 ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 属性 ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 声音特效 ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 粒子效果 ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 改变游戏状态 ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生存全局实体 ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 打开窗户 ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== 关闭窗户 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1964</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1964"/>
		<updated>2016-01-08T13:50:41Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[https://minecraft.net/ Minecraft] 协议&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人…… 诸如此类的任何东西…&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
Minecraft服务器是基于  and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== 数据类型 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== 其他定义 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== 包的格式 ==&lt;br /&gt;
&lt;br /&gt;
=== 无压缩 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== 压缩 ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== 握手协议 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== 服务端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 握手协议 ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 传统服务器列表 ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== 开始游戏 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 心跳包 ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 加入游戏 ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== 聊天内容 ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== 时间更新 ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有的物品 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 出生姿势 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 更新生命值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生 ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== 玩家姿势以及看的方向 ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有物品变更 ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 使用床 ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 动画 ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成玩家 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== 拾起物品 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成对象 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成怪物 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生绘图 ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生掉落经验 ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体速率 ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 销毁实体 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向与相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体传送 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体手朝向 ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体状态 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 附加实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体数据值 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 移除实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 设置经验值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体配置 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 区块数据 ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 多个方块改变 ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块改变 ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块功能 ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块破坏动画 ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 地图区块 ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 爆炸 ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 属性 ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 声音特效 ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 粒子效果 ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 改变游戏状态 ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生存全局实体 ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 打开窗户 ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== 关闭窗户 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:Mcdarc&amp;diff=1543</id>
		<title>用户:Mcdarc</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:Mcdarc&amp;diff=1543"/>
		<updated>2015-10-16T15:28:47Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==自传==&lt;br /&gt;
===简介===&lt;br /&gt;
我是一个中学生。。。中学生。。。现在初三= -&lt;br /&gt;
&lt;br /&gt;
我数学不好。有关计算问题勿扰。&lt;br /&gt;
&lt;br /&gt;
===特长===&lt;br /&gt;
擅长各种系统(Linux、Unix、Windows)安装与删除&lt;br /&gt;
&lt;br /&gt;
擅长低格、拆卸、装不回去硬盘&lt;br /&gt;
&lt;br /&gt;
擅长Python官方大部分基本模块调用和某些第三方模块的使用&lt;br /&gt;
&lt;br /&gt;
擅长在Wiki官方群内与tdiant一起水  且在官方群内有TerWa称号&lt;br /&gt;
&lt;br /&gt;
擅长安装各种硬件(CPU、Memory、Disk、MotherBoard、GPU)&lt;br /&gt;
&lt;br /&gt;
擅长销毁各种显卡与胡乱焊接各种电阻、电容&lt;br /&gt;
&lt;br /&gt;
===缺点===&lt;br /&gt;
C语言看不下去&lt;br /&gt;
&lt;br /&gt;
易语言看多会产生焦躁不安等症状&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:Mcdarc&amp;diff=1542</id>
		<title>用户:Mcdarc</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=%E7%94%A8%E6%88%B7:Mcdarc&amp;diff=1542"/>
		<updated>2015-10-16T15:28:21Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==自传==&lt;br /&gt;
===简介===&lt;br /&gt;
我是一个中学生。。。中学生。。。现在初三= -&lt;br /&gt;
我数学不好。有关计算问题勿扰。&lt;br /&gt;
&lt;br /&gt;
===特长===&lt;br /&gt;
擅长各种系统(Linux、Unix、Windows)安装与删除&lt;br /&gt;
擅长低格、拆卸、装不回去硬盘&lt;br /&gt;
擅长Python官方大部分基本模块调用和某些第三方模块的使用&lt;br /&gt;
擅长在Wiki官方群内与tdiant一起水  且在官方群内有TerWa称号&lt;br /&gt;
擅长安装各种硬件(CPU、Memory、Disk、MotherBoard、GPU)&lt;br /&gt;
擅长销毁各种显卡与胡乱焊接各种电阻、电容&lt;br /&gt;
&lt;br /&gt;
===缺点===&lt;br /&gt;
C语言看不下去&lt;br /&gt;
易语言看多会产生焦躁不安等症状&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=WorldEdit&amp;diff=1476</id>
		<title>WorldEdit</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=WorldEdit&amp;diff=1476"/>
		<updated>2015-09-30T12:34:08Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|版本=6.1&lt;br /&gt;
|兼容服务端版本=1.8.8&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/worldedit/}}&lt;br /&gt;
[[Category:整地]][[Category:管理]][[Category:创世]][[Category:传送]][[Category:信息]]&lt;br /&gt;
[[文件:WorldEdit Logo.png|缩略图|右|WorldEdit图标]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=安装=&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
# 下载WorldEdit http://dev.bukkit.org/bukkit-plugins/worldedit/files/ &amp;lt;br /&amp;gt;&lt;br /&gt;
# 解压压缩包(如果为压缩文件) &amp;lt;br /&amp;gt;&lt;br /&gt;
# 将jar文件放进plugins文件夹 &amp;lt;br /&amp;gt;&lt;br /&gt;
# 重启服务器 &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=命令=&lt;br /&gt;
===限制===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 参数 !! 介绍&lt;br /&gt;
|-&lt;br /&gt;
| //limit || &amp;lt;限制&amp;gt; || 设置大部分操作方块修改数量的最大上限，只对使用者有效，你可以使用这个命令来避免严重后果的错误，如果在配置文件中设置了最大上限，此命令设置的上限不会覆盖配置文件中设定的的上限&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 命令 !! 参数 !! 介绍&lt;br /&gt;
|-&lt;br /&gt;
| //undo || [步数] || 撤销你的上一个(或几个)操作&lt;br /&gt;
|-&lt;br /&gt;
| //redo || [步数] || 重做你上一个(或几个)被撤销的操作&lt;br /&gt;
|-&lt;br /&gt;
| /clearhistory ||  || 清除你的历史记录&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=权限=&lt;br /&gt;
&lt;br /&gt;
=特性=&lt;br /&gt;
==会话==&lt;br /&gt;
==历史==&lt;br /&gt;
==方块支持==&lt;br /&gt;
==物品支持==&lt;br /&gt;
&lt;br /&gt;
=选区=&lt;br /&gt;
==选择选区==&lt;br /&gt;
==选区操作==&lt;br /&gt;
&lt;br /&gt;
=剪贴板=&lt;br /&gt;
&lt;br /&gt;
=生成=&lt;br /&gt;
&lt;br /&gt;
=工具=&lt;br /&gt;
==编辑工具==&lt;br /&gt;
==区块工具==&lt;br /&gt;
==超级镐子==&lt;br /&gt;
==刷子==&lt;br /&gt;
==传送==&lt;br /&gt;
&lt;br /&gt;
=从快照恢复=&lt;br /&gt;
&lt;br /&gt;
=其他=&lt;br /&gt;
==CraftScript代码==&lt;br /&gt;
==方块数据值==&lt;br /&gt;
==蒙版==&lt;br /&gt;
==树木种类==&lt;br /&gt;
==源码==&lt;br /&gt;
源代码 : https://github.com/sk89q/worldedit&lt;br /&gt;
==WorldEdit MOD==&lt;br /&gt;
点击此处查看： http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1272389-worldedit-in-game-map-editor-testing-tool-for&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=QuickShop&amp;diff=1475</id>
		<title>QuickShop</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=QuickShop&amp;diff=1475"/>
		<updated>2015-09-30T12:30:09Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* 此外 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待完善}}&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|版本=v4.4&lt;br /&gt;
|兼容服务端版本=1.5.2+&lt;br /&gt;
|网址=http://dev.bukkit.org/bukkit-plugins/quickshop/&lt;br /&gt;
}}&lt;br /&gt;
[[Category:经济]]&lt;br /&gt;
[[Category:机械]]&lt;br /&gt;
=简介=&lt;br /&gt;
作者的话：对，我准备好写这个插件了. QuickShop. QuickShop是一个商店插件, 允许玩家通过箱子售卖物品，不需要输入任何命令. 它使得玩家可以很方便地购买任何数量的物品. 事实上, 玩家使用本插件不需要输入任何命令!&lt;br /&gt;
&lt;br /&gt;
=特性=&lt;br /&gt;
 操作简单&lt;br /&gt;
 (可控)在箱子顶部展示物品&lt;br /&gt;
 支持附带(NBT标签, 附魔属性, 工具耐久度损耗)的物品&amp;lt;del&amp;gt;破斧头卖出去还是破斧头(笑)&amp;lt;/del&amp;gt;, 药水和怪物蛋&lt;br /&gt;
 支持无限库存&lt;br /&gt;
 支持黑名单 &amp;amp; 忽视权限&lt;br /&gt;
 支持同时售卖与购买物品&lt;br /&gt;
 兼容[[Herochat]]&lt;br /&gt;
 创建商店之前，自动检测一个玩家能否打开箱子!&amp;lt;del&amp;gt;啥东西？箱子上方是不透明方块，或者这是别人的箱子&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=如何创建一个商店=&lt;br /&gt;
*将一个箱子放在地上&lt;br /&gt;
*手持你要售卖或收购的物品，左击你想用来交易的箱子&lt;br /&gt;
*在聊天栏中输入物品的价格(依照提示)(如果这个步骤成功进行，箱子上会出现一个木牌，显示交易信息)&lt;br /&gt;
如果应出现木牌的地方被阻挡，比如已经存在一个木牌，商店依然能够被建立但不显示木牌&lt;br /&gt;
*将你想要售卖的物品放入箱子中（出售型商店），或者依下面的指示转换商店类型（收购型商店）&lt;br /&gt;
*（可选）转换商店类型，详见下文&lt;br /&gt;
*完成!&lt;br /&gt;
&lt;br /&gt;
=商店类型转换=&lt;br /&gt;
*面对箱子&amp;lt;del&amp;gt;鼠标准星对准箱子就肯定没错了&amp;lt;/del&amp;gt;&lt;br /&gt;
有时你需要左击商店牌子，以选定要转换的商店。这个时候聊天栏会提示商品信息和要求输入购买数量。&lt;br /&gt;
*输入/qs sell或是/qs buy转换商店类型  (可选: 使用/shop替换/qs)&lt;br /&gt;
*有必要的话，补充商店的库存物品，或者移除已满的收购箱子中的物品.&lt;br /&gt;
&lt;br /&gt;
=如何交易=&lt;br /&gt;
*找到商店&lt;br /&gt;
*打一下或是右键商店(箱子)&lt;br /&gt;
*在聊天栏中输入你想交易的物品数量&lt;br /&gt;
 Menu Example: Menu&lt;br /&gt;
&lt;br /&gt;
实例:进入服务器，IP: http://maxgamer.org或是play.maxgamer.org:25571 然后输入/warp market!&amp;lt;del&amp;gt;广告可耻！&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=命令=&lt;br /&gt;
 /qs unlimited - 将鼠标准星所对的商店库存设置为&#039;&#039;&#039;无限&#039;&#039;&#039;.&lt;br /&gt;
 /qs setowner &amp;lt;player&amp;gt; - 将商店的所有人改为&amp;lt;player&amp;gt;.&lt;br /&gt;
 /qs buy - 将鼠标准星所对的商店转变为收购商店&lt;br /&gt;
 /qs sell - 将鼠标准星所对的商店转变为售卖商店&lt;br /&gt;
 /qs price &amp;lt;price&amp;gt; - 将鼠标准星所对的商店的交易价格修改为指定值&lt;br /&gt;
 /qs clean - 将所有库存数量为0的商店移除.&lt;br /&gt;
 /qs find &amp;lt;item&amp;gt; - 找到(最近的)交易&amp;lt;item&amp;gt; 的商店- 例如 &#039;/qs find dia&#039; 将会找到最近的交易钻石的商店.&lt;br /&gt;
 /shop - /qs的指令别名(可选)&lt;br /&gt;
&lt;br /&gt;
=用户权限=&lt;br /&gt;
 quickshop.use - 基本玩家权限创造&#039;&#039;&#039;任何&#039;&#039;&#039;商店时使用&lt;br /&gt;
 quickshop.create.sell - 用于创造基本的售出商店&lt;br /&gt;
 quickshop.create.buy - 用于可以使用/qs buy 命令(把商店类型改变 售出 -&amp;gt;收购 )&lt;br /&gt;
 quickshop.create.double - 用于可以创造双箱商店.&lt;br /&gt;
 quickshop.create.changeprice - 用于可以使用 /qs price命令 (可以改变商店的价格而不去破坏它. 这可能会使得一些店主可以在别人买时快速变价）&lt;br /&gt;
 quickshop.bypass.ItemID - 可以交易黑名单内物品 (比如基岩)&lt;br /&gt;
 quickshop.find - 可以用于使用 /qs find &amp;lt;物品&amp;gt;的命令来找到固定种类商店&lt;br /&gt;
&lt;br /&gt;
=管理权限=&lt;br /&gt;
 quickshop.unlimited - 可以使用 /quickshop unlimited命令&lt;br /&gt;
 quickshop.setowner - 允许使用/qs setowner命令&lt;br /&gt;
 quickshop.other.destroy - 可以破坏别人的快捷商店&lt;br /&gt;
 quickshop.other.open - 可以敲开别人的商店(拿出和放置)&lt;br /&gt;
 quickshop.other.price - 可以改变别人的商店的价格&lt;br /&gt;
 quickshop.refill - 可用命令重新装满别人商店 (基本等于无限物品)&lt;br /&gt;
 quickshop.empty - 可以用命令清空他人商店内的物品。&lt;br /&gt;
 quickshop.clean - 清空所有无货商店.&lt;br /&gt;
&lt;br /&gt;
=此外=&lt;br /&gt;
&lt;br /&gt;
*默认会向所有交易征收3%的税收，并且将这笔钱转移到名为“tax”（意为税收）的玩家账户中。商店中显示的所有价格是已经包含税收的价格，这笔钱在购买者付款时需要全额支付，然而出售者只能获得税后的收入（默认是97%）。你可以在配置文件中设置税收额度和收税账户名称。特别是在服务器中有名为tax的玩家时，这笔钱将默认转移到他的名下。如果服务器的管理者对宏观经济学有所了解，可以定期监测税收账户的金钱变化，以此计算某段时间内的交易总量和货币流通速度，从而据此制定经济政策，消除通货膨胀或紧缩。&lt;br /&gt;
&lt;br /&gt;
源代码: 源代码已经放在GitHub上了&lt;br /&gt;
&lt;br /&gt;
通过这里检查你的配置文件.[http://dev.bukkit.org/bukkit-plugins/quickshop/pages/config/ 1] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
拥有城镇插件(Towny)?&lt;br /&gt;
试试这个插件 http://dev.bukkit.org/server-mods/quickshop-towny-interop/ 去阻止玩家在商店区外创建商店!&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Statistics&amp;diff=1474</id>
		<title>Statistics</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Statistics&amp;diff=1474"/>
		<updated>2015-09-30T12:27:36Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* 高级配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://dev.bukkit.org/bukkit-plugins/statistics/pages/wiki/permissions/ 1] [http://dev.bukkit.org/bukkit-plugins/statistics/pages/wiki/commands/ 2]&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|版本=v.1.2.4&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=CraftBukkit 1.7.2-R0.3&amp;lt;-&amp;gt;1.8.1&lt;br /&gt;
}}&lt;br /&gt;
=概览=&lt;br /&gt;
你是否在寻找一款高端的插件去探寻你的玩家数据? 看看这个插件吧!&lt;br /&gt;
在其他地方也有一些类似的插件, 他们追踪正面的数据, 当然, Statistics 会一步一步深入、完整地历遍来实现追踪式统计, TA可以收集到数量惊人的玩家数据. 命名一个数据点,我们不出意外也可以追踪到其. 这个插件可以被高度地自定义; 你告诉其它应做什么，其便会作甚.&lt;br /&gt;
==功能==&lt;br /&gt;
服务器统计:&lt;br /&gt;
&lt;br /&gt;
*定时启动与关闭&lt;br /&gt;
*即时服务器状态&lt;br /&gt;
*正常运行时间统计&lt;br /&gt;
*总游戏时间&lt;br /&gt;
*在线玩家&lt;br /&gt;
*.... 以及更多!&lt;br /&gt;
世界统计:&lt;br /&gt;
&lt;br /&gt;
*玩家在这个世界运动距离(包括矿车，船，高空落下)&lt;br /&gt;
*PVP(被玩家杀死), PVE(被怪物杀死), 自然死亡&lt;br /&gt;
*方块被放置或被破坏&lt;br /&gt;
*拾起物品, 掉落物品, 使用物品, 吃掉物品, etc.&lt;br /&gt;
*.... 以及更多!&lt;br /&gt;
玩家统计:&lt;br /&gt;
&lt;br /&gt;
*玩家背包&lt;br /&gt;
*生命值, 饥饿度, 经验条&lt;br /&gt;
*武装等级(当玩家穿上盔甲时会增加的那一栏)&lt;br /&gt;
*游戏模式&lt;br /&gt;
*在每个世界的发言, 使用的指令&lt;br /&gt;
*登入与登出的时间&lt;br /&gt;
*呆在服务器多久时间&lt;br /&gt;
*玩家运动距离(同上)&lt;br /&gt;
*击杀与死亡的细节&lt;br /&gt;
*... 以及更多!&lt;br /&gt;
&lt;br /&gt;
插件统计:&lt;br /&gt;
&lt;br /&gt;
*Vault (金钱, 用户组)&lt;br /&gt;
*... 未来将支持更多!&lt;br /&gt;
&lt;br /&gt;
==其它==&lt;br /&gt;
&lt;br /&gt;
*所有统计信息可以被显示在主页上&lt;br /&gt;
*所有统计可以被作为图片在计分板上显示&lt;br /&gt;
*所有统计可以被作为图片在书上显示&lt;br /&gt;
&lt;br /&gt;
==需求==&lt;br /&gt;
&lt;br /&gt;
*PHP 5.3.2 或更高 (具体搭建请自行解决)&lt;br /&gt;
**GD2 拓展库&lt;br /&gt;
**cURL 拓展库&lt;br /&gt;
**fsockopen (谁跟我解释下...你们确定这不是函数)&lt;br /&gt;
*MySQL 5.5 或更高 (具体搭建请自行解决)&lt;br /&gt;
**InnoDB 支持&lt;br /&gt;
**允许被远程连接&lt;br /&gt;
&lt;br /&gt;
=安装=&lt;br /&gt;
在你安装本插件前, 你需要MySQL数据库的绝对访问权限. 其可以为一个现有的数据库, 当然你也可以创建一个新的;当然你最好选择后者, 但并不是必需的. 额外的, 你也需要有一个WEB服务器去托管你的门户.&lt;br /&gt;
&lt;br /&gt;
#上传 Statistics.jar 到你服务器的/plugins/ 目录. 然后重启服务器. 插件会报错(数据库未找到)- 这很正常.&lt;br /&gt;
#打开 /plugins/Statistics/config.yml 和填上数据库详情. 重启或者重载插件.&lt;br /&gt;
#此插件会自动创建和填充表单. 你会看见一个补丁通知 - 请耐心等待, 直到插件设置好数据库.&lt;br /&gt;
#插件安装完成.&lt;br /&gt;
#将网页文件复制到你的网站服务器下. 举个栗子, /home/public_html/stats.&lt;br /&gt;
#做一下高速缓存然后确保目录为可读可写. (chmod 777)(在linux下权限设置.某些时候你会需要用到sudo.)(则命令为sudo chmod 777)&lt;br /&gt;
#进入相应URL然后跟随指示完成环境搭建.(不会译.帮忙)&lt;br /&gt;
#搭建完成.&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
&amp;lt;p&amp;gt;Q: 尽管我把细节都填入完成了, 插件还是无法连接数据库!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A: 确保数据库允许接收远端控制, 连接用用户拥有所有权限. 还有，确保配置文件语法正确.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Q: 网站需要一定时间去加载页面. 超过了20秒! 尽管我只有10个玩家.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A: 确保你把玩家皮肤缓存设定为一个较高的值. 这将会提高页面加载速度!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Q: 我想要升级到更新版本的插件.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A: 下载最新版本插件, 删除安装文件夹还有install.php文件并且覆盖其他文件.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Q: 门户网站只显示了玩家的默认皮肤[就是steve啦].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A: 确保 cache/skins 文件夹可写并检查allow_url_fopen是否启用.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Q: 如何制作好多个门户网站?(我有好多服务器)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A: 首先你需要给每个服务器准备一个独立的数据库. 如果没有，你最起码也要给每个服务器使用不一样的前缀. If this is done and the database are initialized you have to install ONE portal like you would do it with only one server. After that go to the settings menu of the portal at go to the &amp;quot;Multi Portal&amp;quot; Section. Here you can enter informations for the other servers/databases. If there are some entries you will notice a new box on the portal main page.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;... 继续吧&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=配置=&lt;br /&gt;
插件配置文件是自动生成的。当你配置好了配置文件，它应该看起来像这样:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;debug: false             #开启debug模式&lt;br /&gt;
log-prefix: &#039;Stats&#039;      #这是插件日志前缀.不需要更改&lt;br /&gt;
database:                #MySQL 设置&lt;br /&gt;
  host: &#039;localhost&#039;      #MySQL 地址&lt;br /&gt;
  port: 3308             #MySQL 端口&lt;br /&gt;
  name: &#039;pstats&#039;&lt;br /&gt;
  prefix: &#039;stats_&#039;       #数据表前缀. 如果你有多个此插件共用一个数据库.请更改&lt;br /&gt;
  user: &#039;user&#039;           #MySQL 用户名&lt;br /&gt;
  pass: &#039;qwerty&#039;         #MySQL 密码&lt;br /&gt;
  reconnect_interval: 5  #当连接数据库失败后重试间隔&amp;lt;/source&amp;gt;&lt;br /&gt;
不要把引号放在不该放的地方.&lt;br /&gt;
&lt;br /&gt;
==高级配置==&lt;br /&gt;
&lt;br /&gt;
要进行高级配置你可以进入 你的网址?page=admin 在你的浏览器中.&lt;br /&gt;
&lt;br /&gt;
使用你的密码和电子邮箱登录(在安装时您会设置).&lt;br /&gt;
[[Category:信息]][[Category:网页]]&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1473</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1473"/>
		<updated>2015-09-30T12:24:10Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[https://minecraft.net/ Minecraft] 协议&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人, 诸如此类…&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== 数据类型 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== 其他定义 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== 包的格式 ==&lt;br /&gt;
&lt;br /&gt;
=== 无压缩 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== 压缩 ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== 握手协议 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== 服务端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 握手协议 ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 传统服务器列表 ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== 开始游戏 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 心跳包 ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 加入游戏 ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== 聊天内容 ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== 时间更新 ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有的物品 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 出生姿势 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 更新生命值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生 ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== 玩家姿势以及看的方向 ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有物品变更 ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 使用床 ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 动画 ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成玩家 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== 拾起物品 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成对象 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生成怪物 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生绘图 ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生掉落经验 ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体速率 ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 销毁实体 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体朝向与相对移动 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体传送 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体手朝向 ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体状态 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 附加实体 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体数据值 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 移除实体属性 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 设置经验值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 实体配置 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 区块数据 ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 多个方块改变 ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块改变 ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块功能 ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 方块破坏动画 ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 地图区块 ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 爆炸 ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 属性 ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 声音特效 ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 粒子效果 ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 改变游戏状态 ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 生存全局实体 ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 打开窗户 ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== 关闭窗户 ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1472</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1472"/>
		<updated>2015-09-30T12:14:10Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[https://minecraft.net/ Minecraft] 协议&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人, 诸如此类…&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== 数据类型 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== 压缩 ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== 握手协议 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== 服务端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 握手协议 ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 传统服务器列表 ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== 开始游戏 ==&lt;br /&gt;
&lt;br /&gt;
=== 客户端绑定 ===&lt;br /&gt;
&lt;br /&gt;
==== 心跳包 ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 加入游戏 ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== 聊天内容 ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== 时间更新 ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 持有的物品 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 出生姿势 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 更新生命值 ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== 重生 ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1435</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1435"/>
		<updated>2015-09-11T14:58:39Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[https://minecraft.net/ Minecraft] 协议&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有疑问, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意:&#039;&#039;&#039; 你可以不受限制地使用这个页面的内容来创建服务端, 客户端, 机器人, 诸如此类… you still need to provide attribution to #mcdevs if you copy any of the contents of this page for publication elsewhere.&lt;br /&gt;
&lt;br /&gt;
The changes between versions may be viewed at [[Protocol History]].&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== Data types ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== With compression ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== Handshaking ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Handshake ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Legacy Server List Ping ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== Play ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Join Game ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== Time Update ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Equipment ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Position ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Health ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Respawn ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1434</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1434"/>
		<updated>2015-09-11T14:49:48Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的 &#039;&#039;&#039;[https://minecraft.net/ Minecraft] 协议&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
如果你有问题, 请查阅下文或在IRC请求帮助 ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; While you may use the contents of this page without restriction to create servers, clients, bots, etc… you still need to provide attribution to #mcdevs if you copy any of the contents of this page for publication elsewhere.&lt;br /&gt;
&lt;br /&gt;
The changes between versions may be viewed at [[Protocol History]].&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== Data types ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== With compression ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== Handshaking ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Handshake ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Legacy Server List Ping ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== Play ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Join Game ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== Time Update ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Equipment ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Position ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Health ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Respawn ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1433</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1433"/>
		<updated>2015-09-11T14:43:38Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
这里剖析了最近的Minecraft协议&#039;&#039;&#039;[https://minecraft.net/ Minecraft] protocol&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re having trouble, check out the [[Protocol FAQ|FAQ]] or ask for help in the IRC channel ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; While you may use the contents of this page without restriction to create servers, clients, bots, etc… you still need to provide attribution to #mcdevs if you copy any of the contents of this page for publication elsewhere.&lt;br /&gt;
&lt;br /&gt;
The changes between versions may be viewed at [[Protocol History]].&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== Data types ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== With compression ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== Handshaking ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Handshake ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Legacy Server List Ping ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== Play ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Join Game ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== Time Update ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Equipment ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Position ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Health ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Respawn ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1432</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1432"/>
		<updated>2015-09-11T14:40:41Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
&lt;br /&gt;
This page presents a dissection of the current &#039;&#039;&#039;[https://minecraft.net/ Minecraft] protocol&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re having trouble, check out the [[Protocol FAQ|FAQ]] or ask for help in the IRC channel ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; While you may use the contents of this page without restriction to create servers, clients, bots, etc… you still need to provide attribution to #mcdevs if you copy any of the contents of this page for publication elsewhere.&lt;br /&gt;
&lt;br /&gt;
The changes between versions may be viewed at [[Protocol History]].&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== Data types ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== With compression ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== Handshaking ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Handshake ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Legacy Server List Ping ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== Play ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Join Game ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== Time Update ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Equipment ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Position ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Health ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Respawn ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1431</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1431"/>
		<updated>2015-09-11T14:39:53Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page presents a dissection of the current &#039;&#039;&#039;[https://minecraft.net/ Minecraft] protocol&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re having trouble, check out the [[Protocol FAQ|FAQ]] or ask for help in the IRC channel ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; While you may use the contents of this page without restriction to create servers, clients, bots, etc… you still need to provide attribution to #mcdevs if you copy any of the contents of this page for publication elsewhere.&lt;br /&gt;
&lt;br /&gt;
The changes between versions may be viewed at [[Protocol History]].&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== Data types ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== With compression ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== Handshaking ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Handshake ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Legacy Server List Ping ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== Play ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Join Game ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== Time Update ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Equipment ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Position ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Health ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Respawn ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Protocol&amp;diff=1430</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Protocol&amp;diff=1430"/>
		<updated>2015-09-11T14:30:19Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​创建页面，内容为“{{Box   |BORDER = #9999FF   |BACKGROUND = #99CCFF   |WIDTH = 100%   |ICON =    |HEADING = Heads up!   |CONTENT = This article is about the protocol for the latest &amp;#039;&amp;#039;...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Box&lt;br /&gt;
  |BORDER = #9999FF&lt;br /&gt;
  |BACKGROUND = #99CCFF&lt;br /&gt;
  |WIDTH = 100%&lt;br /&gt;
  |ICON = &lt;br /&gt;
  |HEADING = Heads up!&lt;br /&gt;
  |CONTENT = This article is about the protocol for the latest &#039;&#039;&#039;stable&#039;&#039;&#039; release of Minecraft &#039;&#039;&#039;computer edition&#039;&#039;&#039;. For the computer edition pre-releases, see [[Pre-release protocol]]. For Pocket Edition, see [[Pocket Minecraft Protocol]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This page presents a dissection of the current &#039;&#039;&#039;[https://minecraft.net/ Minecraft] protocol&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re having trouble, check out the [[Protocol FAQ|FAQ]] or ask for help in the IRC channel ([irc://irc.freenode.net/mcdevs #mcdevs on irc.freenode.net]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; While you may use the contents of this page without restriction to create servers, clients, bots, etc… you still need to provide attribution to #mcdevs if you copy any of the contents of this page for publication elsewhere.&lt;br /&gt;
&lt;br /&gt;
The changes between versions may be viewed at [[Protocol History]].&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft server accepts connections from TCP clients and communicates with them using &#039;&#039;packets&#039;&#039;. A packet is a sequence of bytes sent over the TCP connection. The meaning of a packet depends both on its packet ID and the current state of the connection. The initial state of each connection is [[#Handshaking|Handshaking]], and state is switched using the packets [[#Handshake|Handshake]] ([[#Handshaking|Handshaking]], 0x00, serverbound) and [[#Login Success|Login Success]] ([[#Login|Login]], 0x02, clientbound).&lt;br /&gt;
&lt;br /&gt;
=== Data types ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transcluded contents of Data Types article in here - go to that page if you want to edit it --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Data Types}}&lt;br /&gt;
&lt;br /&gt;
=== Other definitions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Term&lt;br /&gt;
 ! Definition&lt;br /&gt;
 |-&lt;br /&gt;
 | Player&lt;br /&gt;
 | When used in the singular, Player always refers to the client connected to the server.&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity&lt;br /&gt;
 | Entity refers to any item, player, mob, minecart or boat etc. See {{Minecraft Wiki|Entity|the Minecraft Wiki article}} for a full list.&lt;br /&gt;
 |-&lt;br /&gt;
 | EID&lt;br /&gt;
 | An EID — or Entity ID — is a 4-byte sequence used to identify a specific entity. An entity&#039;s EID is unique on the entire server.&lt;br /&gt;
 |-&lt;br /&gt;
 | XYZ&lt;br /&gt;
 | In this document, the axis names are the same as those shown in the debug screen (F3). Y points upwards, X points East, and Z points South.&lt;br /&gt;
 |-&lt;br /&gt;
 | Meter&lt;br /&gt;
 | The meter is Minecraft&#039;s base unit of length, equal to the length of a vertex of a solid block. The term “block” may be used to mean “meter” or “cubic meter”.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Packet format ==&lt;br /&gt;
&lt;br /&gt;
=== Without compression ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of packet data + length of the packet ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Depends on the connection state and packet ID, see the sections below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== With compression ===&lt;br /&gt;
&lt;br /&gt;
Once a [[#Set Compression|Set Compression]] packet is sent, [[wikipedia:Zlib|zlib]] compression is enabled for all following packets. The format of a packet changes slighty to include the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
 ! Compressed?&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Packet Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of Data Length + compressed length of (Packet ID + Data)&lt;br /&gt;
 |-&lt;br /&gt;
 | No&lt;br /&gt;
 | Data Length&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Length of uncompressed (Packet ID + Data) or 0&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Yes&lt;br /&gt;
 | Packet ID&lt;br /&gt;
 | Varint&lt;br /&gt;
 | zlib compressed packet ID (see the sections below)&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | zlib compressed packet data (see the sections below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The length given by the Packet Length field is the number of bytes that remain in that packet, including the Data Length field.&lt;br /&gt;
&lt;br /&gt;
If Data Length is set to zero, then the packet is uncompressed; otherwise it is the size of the uncompressed packet.&lt;br /&gt;
&lt;br /&gt;
If compressed, the uncompressed length of (Packet ID + Data) must be equal to or over the threshold set in the [[#Set Compression|Set Compression]] packet, otherwise the client/server will disconnect.&lt;br /&gt;
&lt;br /&gt;
Compression can be disabled by sending a [[#Set Compression|Set Compression]] packet with a Threshold of -1.&lt;br /&gt;
&lt;br /&gt;
== Handshaking ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Handshake ====&lt;br /&gt;
&lt;br /&gt;
This causes the server to switch into the target state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Handshaking&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | Protocol Version&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See [[protocol version numbers]] (currently 47)&lt;br /&gt;
 |-&lt;br /&gt;
 | Server Address&lt;br /&gt;
 | String&lt;br /&gt;
 | hostname or IP, e.g. localhost or 127.0.0.1&amp;lt;!-- does this support IPv6? --&amp;gt;&lt;br /&gt;
 |- &lt;br /&gt;
 | Server Port&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | default is 25565&lt;br /&gt;
 |-&lt;br /&gt;
 | Next State&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 1 for [[#Status|status]], 2 for [[#Login|login]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Legacy Server List Ping ====&lt;br /&gt;
&lt;br /&gt;
While not technically part of the current protocol, legacy clients may send this packet to initiate [[Server List Ping]], and modern servers should handle it correctly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0xFE&lt;br /&gt;
 | Handshaking&lt;br /&gt;
 | Server&lt;br /&gt;
 | Payload&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | always 1 (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Server List Ping#1.6]] for the details of the protocol that follows this packet.&lt;br /&gt;
&lt;br /&gt;
== Play ==&lt;br /&gt;
&lt;br /&gt;
=== Clientbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet. If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a &amp;quot;Timed out&amp;quot; exception.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Join Game ====&lt;br /&gt;
&lt;br /&gt;
See [[Protocol Encryption]] for information on logging in.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The player&#039;s Entity ID (EID)&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator. Bit 3 (0x8) is the hardcore flag.&lt;br /&gt;
 |-&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Byte&lt;br /&gt;
 | -1: Nether, 0: Overworld, 1: End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Max Players&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Used by the client to draw the player list&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | default, flat, largeBiomes, amplified, default_1_1&lt;br /&gt;
 |-&lt;br /&gt;
 | Reduced Debug Info&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, a Notchian client shows reduced information on the {{Minecraft Wiki|debug screen}}.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ==== &lt;br /&gt;
&lt;br /&gt;
Identifying the difference between Chat/System Message is important as it helps respect the user&#039;s chat visibility options. While Position 2 accepts json formatting it will not display, old style formatting works&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | JSON Data&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Limited to 32767 bytes&lt;br /&gt;
 |-&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0: chat (chat box), 1: system message (chat box), 2: above action bar&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Malformed JSON will disconnect the client}}&lt;br /&gt;
&lt;br /&gt;
==== Time Update ====&lt;br /&gt;
&lt;br /&gt;
Time is based on ticks, where 20 ticks happen every second. There are 24000 ticks in a day, making Minecraft days exactly 20 minutes long.&lt;br /&gt;
&lt;br /&gt;
The time of day is based on the timestamp modulo 24000. 0 is sunrise, 6000 is noon, 12000 is sunset, and 18000 is midnight.&lt;br /&gt;
&lt;br /&gt;
The default SMP server increments the time by &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; every second.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | World Age&lt;br /&gt;
 | Long&lt;br /&gt;
 | In ticks; not changed by server commands&lt;br /&gt;
 |-&lt;br /&gt;
 | Time of day&lt;br /&gt;
 | Long&lt;br /&gt;
 | The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Equipment ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | Equipment slot. 0: held, 1–4: armor slot (1: boots, 2: leggings, 3: chestplate, 4: helmet)&lt;br /&gt;
 |-&lt;br /&gt;
 | Item&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | Item in slot format&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Position ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server after login to specify the coordinates of the spawn point (the point at which players spawn at, and which the compass points to). It can be sent at any time to update the point compasses point at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x05&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Spawn location&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Health ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server to update/set the health of the player it is sent to.&lt;br /&gt;
&lt;br /&gt;
Food {{Minecraft Wiki|Food#Hunger vs. Saturation|saturation}} acts as a food “overcharge”. Food values will not decrease while the saturation is over zero. Players logging in automatically get a saturation of 5.0. Eating food increases the saturation as well as the food bar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x06&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Health&lt;br /&gt;
 | Float&lt;br /&gt;
 | 0 or less = dead, 20 = full HP&lt;br /&gt;
 |-&lt;br /&gt;
 | Food&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0–20&lt;br /&gt;
 |- &lt;br /&gt;
 | Food Saturation&lt;br /&gt;
 | Float&lt;br /&gt;
 | Seems to vary from 0.0 to 5.0 in integer increments&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Respawn ====&lt;br /&gt;
&lt;br /&gt;
To change the player&#039;s dimension (overworld/nether/end), send them a respawn packet with the appropriate dimension, followed by prechunks/chunks for the new dimension, and finally a position and look packet. You do not need to unload chunks, the client will do it automatically.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x07&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Dimension&lt;br /&gt;
 | Int&lt;br /&gt;
 | -1: The Nether, 0: The Overworld, 1: The End&lt;br /&gt;
 |-&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: Peaceful, 1: Easy, 2: Normal, 3: Hard&lt;br /&gt;
 |-&lt;br /&gt;
 | Gamemode&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: survival, 1: creative, 2: adventure. The hardcore flag is not included&lt;br /&gt;
 |-&lt;br /&gt;
 | Level Type&lt;br /&gt;
 | String&lt;br /&gt;
 | Same as [[#Join Game|Join Game]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|If the Dimension isn&#039;t valid then the client will crash}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Avoid changing player&#039;s dimension to same dimension they were already in, weird bugs can occur i.e. such player will be unable to attack other players in new world (fixes after their death and respawn)}}&lt;br /&gt;
&lt;br /&gt;
==== Player Position And Look ==== &lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 meters, the client will be kicked for “You moved too quickly :( (Hacking?)”.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than &amp;lt;code&amp;gt;3.2E7D&amp;lt;/code&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules. The unit circle of yaw on the XZ-plane starts at (0, 1) and turns counterclockwise, with 90 at (-1, 0), 180 at (0, -1) and 270 at (1, 0). Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360.&lt;br /&gt;
&lt;br /&gt;
Pitch is measured in degrees, where 0 is looking straight ahead, -90 is looking straight up, and 90 is looking straight down.&lt;br /&gt;
&lt;br /&gt;
The yaw in degrees of a player standing at point (x0, z0) and looking towards point (x, z) can be calculated with:&lt;br /&gt;
&lt;br /&gt;
 l = x-x0&lt;br /&gt;
 w = z-z0&lt;br /&gt;
 c = sqrt( l*l + w*w )&lt;br /&gt;
 alpha1 = -arcsin(l/c)/PI*180&lt;br /&gt;
 alpha2 =  arccos(w/c)/PI*180&lt;br /&gt;
 if alpha2 &amp;gt; 90 then&lt;br /&gt;
     yaw = 180 - alpha1&lt;br /&gt;
 else&lt;br /&gt;
     yaw = alpha1&lt;br /&gt;
&lt;br /&gt;
You can get a unit vector from a given yaw/pitch via:&lt;br /&gt;
&lt;br /&gt;
 x = -cos(pitch) * sin(yaw)&lt;br /&gt;
 y = -sin(pitch)&lt;br /&gt;
 z =  cos(pitch) * cos(yaw)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x08&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute or relative position, depending on Flags&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the X Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Float&lt;br /&gt;
 | Absolute or relative rotation on the Y Axis, in degrees&lt;br /&gt;
 |-&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit field, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
About the Flags field:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Dinnerbone&amp;gt; It&#039;s a bitfield, X/Y/Z/Y_ROT/X_ROT. If X is set, the x value is relative and not absolute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field&lt;br /&gt;
 ! Bit&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | 0x01&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | 0x02&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | 0x04&lt;br /&gt;
 |-&lt;br /&gt;
 | Y_ROT&lt;br /&gt;
 | 0x08&lt;br /&gt;
 |-&lt;br /&gt;
 | X_ROT&lt;br /&gt;
 | 0x10&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Held Item Change ====&lt;br /&gt;
&lt;br /&gt;
Sent to change the player&#039;s slot selection.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x09&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The slot which the player has selected (0–8)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Bed ==== &lt;br /&gt;
&lt;br /&gt;
This packet tells that a player goes to bed.&lt;br /&gt;
&lt;br /&gt;
The client with the matching Entity ID will go into bed mode.&lt;br /&gt;
&lt;br /&gt;
This Packet is sent to all nearby players including the one sent to bed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Sleeping player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block location of the head part of the bed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Animation ====&lt;br /&gt;
&lt;br /&gt;
Sent whenever an entity should change animation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Animation&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Animation ID (see below)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Animation can be one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Swing arm&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Take damage&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Leave bed&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Eat food&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Critical effect&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Magic critical effect&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when a player comes into visible range, &#039;&#039;not&#039;&#039; when a player joins.&lt;br /&gt;
&lt;br /&gt;
This packet must be sent after the [[#Player List Item|Player List Item]] ([[#Play|Play]], 0x38, clientbound) packet that adds the player data for the client to use when spawning a player. If the tab list entry for the UUID included in this packet is not present when this packet arrives, the entity will not be spawned. The tab includes skin/cape data.&lt;br /&gt;
&lt;br /&gt;
Servers can, however, safely spawn player entities for players not in visible range. The client appears to handle it correctly.&lt;br /&gt;
&lt;br /&gt;
When in online-mode the UUIDs must be valid and have valid skin blobs, in offline-mode UUID v3 is used.&lt;br /&gt;
&lt;br /&gt;
For NPCs UUID v2 should be used. Note:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;+Grum&amp;gt; i will never confirm this as a feature you know that :)&lt;br /&gt;
&lt;br /&gt;
In an example UUID, &amp;lt;code&amp;gt;xxxxxxxx-xxxx-Yxxx-xxxx-xxxxxxxxxxxx&amp;lt;/code&amp;gt;, the UUID version is specified by &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. So, for UUID v3, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, and for UUID v2, &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; will always be &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x0C&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Player&#039;s EID&lt;br /&gt;
 |-&lt;br /&gt;
 | Player UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player X as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Y as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Player Z as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Current Item&lt;br /&gt;
 | Short&lt;br /&gt;
 | The item the player is currently holding. Note that this should be 0 for “no item”, unlike -1 used in other packets.&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{{Warning|A negative Current Item crashes clients}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|The client will crash if no Metadata is sent}}&lt;br /&gt;
&lt;br /&gt;
==== Collect Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when someone picks up an item lying on the ground — its sole purpose appears to be the animation of the item flying towards you. It doesn&#039;t destroy the entity in the client memory, and it doesn&#039;t add it to your inventory. The server only checks for items to be picked up after each [[#Player Position|Player Position]] (and [[#Player Position And Look|Player Position And Look]]) packet sent by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x0D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Collected Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Collector Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Object ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an Object/Vehicle is created.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 0x0E&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| Client&lt;br /&gt;
 | Entity ID &lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID of the object&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The type of object (See [[Entities#Objects|Objects]])&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[Object Data]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Mob ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a Mob Entity is Spawned&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x0F&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of mob. See [[Entities#Mobs|Mobs]]&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]] &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Same units as [[#Entity Velocity|Entity Velocity]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Painting ====&lt;br /&gt;
&lt;br /&gt;
This packet shows location, name, and type of painting.&lt;br /&gt;
&lt;br /&gt;
Calculating the center of an image: given a (width x height) grid of cells, with (0, 0) being the top left corner, the center is (max(0, width / 2 - 1), height / 2). E.g.&lt;br /&gt;
&lt;br /&gt;
 2x1 (1, 0)&lt;br /&gt;
 4x4 (1, 2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x10&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Title&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the painting. Max length 13&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Center coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Direction&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Direction the painting faces. 0: north (-z), 1: west (-x), 2: south (+z), 3: east (+x)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Experience Orb ====&lt;br /&gt;
&lt;br /&gt;
Spawns one or more experience orbs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x11&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Entity&#039;s ID&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | The amount of experience this orb will reward once collected&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Velocity ====&lt;br /&gt;
&lt;br /&gt;
Velocity is believed to be in units of 1/8000 of a block per server tick (50ms); for example, -1343 would move (-1343 / 8000) = −0.167875 blocks per tick (or −3,3575 blocks per second).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x12&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity X&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the X axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Y&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Y axis&lt;br /&gt;
 |-&lt;br /&gt;
 | Velocity Z&lt;br /&gt;
 | Short&lt;br /&gt;
 | Velocity on the Z axis&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Destroy Entities ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when a list of entities is to be destroyed on the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x13&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity IDs&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | The list of entities of destroy&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet may be used to initialize an entity.&lt;br /&gt;
&lt;br /&gt;
For player entities, either this packet or any move/look packet is sent every game tick. So the meaning of this packet is basically that the entity did not move/look since the last such packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x14&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves less then 4 blocks; if an entity moves more than 4 blocks [[#Entity Teleport|Entity Teleport]] should be sent instead.&lt;br /&gt;
&lt;br /&gt;
This packet allows at most four blocks movement in any direction, because byte range is from -128 to 127.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x15&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x16&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Look And Relative Move ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity rotates and moves. Since a byte range is limited from -128 to 127, and movement is offset of fixed-point numbers, this packet allows at most four blocks movement in any direction. (-128/32 == -4)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x17&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Delta X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Y&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Delta Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Change in Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Teleport ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent by the server when an entity moves more than 4 blocks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x18&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | X position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Y position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Z position as a [[Data Types#Fixed-point numbers|Fixed-Point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Head Look ====&lt;br /&gt;
&lt;br /&gt;
Changes the direction an entity&#039;s head is facing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x19&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Head Yaw&lt;br /&gt;
 | Angle&lt;br /&gt;
 | New angle, not a delta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Status ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Entity Status&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Entity Status&lt;br /&gt;
 ! Meaning&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | Sent when resetting a mob spawn minecart&#039;s timer - appears to be unused by the client&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Living Entity hurt &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Living Entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Iron Golem throwing up arms&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | Wolf/Ocelot/Horse taming — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Wolf/Ocelot/Horse tamed — Spawn “smoke” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Wolf shaking water — Trigger the shaking animation&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | (of self) Eating accepted by server&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Sheep eating grass&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play TNT ignite sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 11&lt;br /&gt;
 | Iron Golem handing over a rose&lt;br /&gt;
 |-&lt;br /&gt;
 | 12&lt;br /&gt;
 | Villager mating — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 13&lt;br /&gt;
 | Spawn particles indicating that a villager is angry and seeking revenge&lt;br /&gt;
 |-&lt;br /&gt;
 | 14&lt;br /&gt;
 | Spawn happy particles near a villager&lt;br /&gt;
 |-&lt;br /&gt;
 | 15&lt;br /&gt;
 | Witch animation — Spawn “magic” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 16&lt;br /&gt;
 | Play zombie converting into a villager sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 17&lt;br /&gt;
 | Firework exploding&lt;br /&gt;
 |-&lt;br /&gt;
 | 18&lt;br /&gt;
 | Animal in love (ready to mate) — Spawn “heart” particles&lt;br /&gt;
 |-&lt;br /&gt;
 | 19&lt;br /&gt;
 | Reset squid rotation&lt;br /&gt;
 |-&lt;br /&gt;
 | 20&lt;br /&gt;
 | Spawn explosion particle — works for some living entities&lt;br /&gt;
 |-&lt;br /&gt;
 | 21&lt;br /&gt;
 | Play guardian sound — works for every entity&lt;br /&gt;
 |-&lt;br /&gt;
 | 22&lt;br /&gt;
 | Enables reduced debug for players&lt;br /&gt;
 |-&lt;br /&gt;
 | 23&lt;br /&gt;
 | Disables reduced debug for players&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Attach Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent when a player has been attached to an entity (e.g. Minecart).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1B&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Attached entity&#039;s EID. Set to -1 to detach.&lt;br /&gt;
 |-&lt;br /&gt;
 | Vehicle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | Vechicle&#039;s Entity ID&lt;br /&gt;
 |-&lt;br /&gt;
 | Leash&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true leashes the entity to the vehicle&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Metadata ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1C&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Metadata&lt;br /&gt;
 | [[Entities#Entity Metadata Format|Metadata]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x1D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |-&lt;br /&gt;
 | Amplifier&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Notchian client displays effect level as Amplifier + 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Seconds&lt;br /&gt;
 |-&lt;br /&gt;
 | Hide Particles&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Remove Entity Effect ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x1E&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | See {{Minecraft Wiki|Status effect#List of effects|this table}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Experience ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when the client should change experience levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x1F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Experience bar&lt;br /&gt;
 | Float&lt;br /&gt;
 | Between 0 and 1&lt;br /&gt;
 |-&lt;br /&gt;
 | Level&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Total Experience&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | See {{Minecraft Wiki|Experience#Leveling up}} on the Minecraft Wiki for Total Experience to Level conversion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x20&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Entity ID&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Key&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Double&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Modifiers&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Modifiers&lt;br /&gt;
 | Array of Modifier Data&lt;br /&gt;
 | See {{Minecraft Wiki|Attribute#Modifiers}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Known Key values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Key&lt;br /&gt;
 ! Default&lt;br /&gt;
 ! Min&lt;br /&gt;
 ! Max&lt;br /&gt;
 ! Label&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.maxHealth&lt;br /&gt;
 | 20.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Max Health&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.followRange&lt;br /&gt;
 | 32.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2048.0&lt;br /&gt;
 | Follow Range&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.knockbackResistance&lt;br /&gt;
 | 0.0 &lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Knockback Resistance&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.movementSpeed&lt;br /&gt;
 | 0.699999988079071&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | Movement Speed&lt;br /&gt;
 |-&lt;br /&gt;
 | generic.attackDamage&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | Double.MaxValue&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | horse.jumpStrength&lt;br /&gt;
 | 0.7&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 2.0&lt;br /&gt;
 | Jump Strength&lt;br /&gt;
 |-&lt;br /&gt;
 | zombie.spawnReinforcements&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 0.0&lt;br /&gt;
 | 1.0&lt;br /&gt;
 | Spawn Reinforcements Chance&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Modifier Data&#039;&#039; structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | UUID&lt;br /&gt;
 | UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Amount&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Operation&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chunk Data ====&lt;br /&gt;
&lt;br /&gt;
Chunks are not unloaded by the client automatically. To unload chunks, send this packet with Ground-Up Continuous=true and no 16^3 chunks (eg. Primary Bit Mask=0). The server does not send skylight information for nether-chunks, it&#039;s up to the client to know if the player is currently in the nether. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent.&lt;br /&gt;
&lt;br /&gt;
See also: [[SMP Map Format]]&lt;br /&gt;
&lt;br /&gt;
Changes in 1.8:&lt;br /&gt;
&lt;br /&gt;
* Data value section removed&lt;br /&gt;
* Extended id section removed&lt;br /&gt;
* Block id section is now a unsigned short (little endian) per a block&lt;br /&gt;
* The block id is equal to &amp;lt;code&amp;gt;(id &amp;lt;&amp;lt; 4) | data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x21&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 | Ground-Up Continuous&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | This is true if the packet represents all sections in this vertical column, where the Primary Bit Mask specifies exactly which sections are included, and which are air&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | Bitmask with 1 for every 16x16x16 section whose data follows in the compressed data&lt;br /&gt;
 |- &lt;br /&gt;
 | Size&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Size of Data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Multi Block Change ====&lt;br /&gt;
Fired whenever 2 or more blocks are changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x22&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk X coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Int&lt;br /&gt;
 | Chunk Z coordinate&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Record Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array, a.k.a. the number of blocks affected&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Record&lt;br /&gt;
 | Horizontal Position&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The 4 most significant bits (&amp;lt;code&amp;gt;0xF0&amp;lt;/code&amp;gt;) encode the X coordinate, relative to the chunk. The 4 least significant bits (&amp;lt;code&amp;gt;0x0F&amp;lt;/code&amp;gt;) encode the Z coordinate, relative to the chunk.&lt;br /&gt;
 |-&lt;br /&gt;
 | Y Coordinate&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Change ====&lt;br /&gt;
Fired whenever a block is changed within the render distance.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x23&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Block ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The new block ID for the block. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;id &amp;amp;lt;&amp;amp;lt; 4 | data&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Action ====&lt;br /&gt;
&lt;br /&gt;
This packet is used for a number of things:&lt;br /&gt;
&lt;br /&gt;
* Chests opening and closing&lt;br /&gt;
* Pistons pushing and pulling&lt;br /&gt;
* Note blocks playing&lt;br /&gt;
* Updating beacons&lt;br /&gt;
&lt;br /&gt;
See Also: [[Block Actions]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x24&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Coordinates&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Varies depending on block — see [[Block Actions]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Block Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The block type for the block&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Block Break Animation ====&lt;br /&gt;
&lt;br /&gt;
0–9 are the displayable destroy stages and each other number means that there is no animation on this coordinate.&lt;br /&gt;
&lt;br /&gt;
You can also set an animation to air! The animation will still be visible.&lt;br /&gt;
&lt;br /&gt;
If you need to display several break animations at the same time you have to give each of them a unique Entity ID.&lt;br /&gt;
&lt;br /&gt;
Also if you set the coordinates to a special block like water etc. it won&#039;t show the actual break animation but some other interesting effects. (Water will lose it&#039;s transparency)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x25&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | EID for the animation&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | Block Position&lt;br /&gt;
 |-&lt;br /&gt;
 | Destroy Stage&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0–9 to set it, any other value to remove it&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map Chunk Bulk ====&lt;br /&gt;
&lt;br /&gt;
1.8 changes at [[#Chunk Data|Chunk Data]]&lt;br /&gt;
&lt;br /&gt;
To reduce the number of bytes, this packet is used to send chunks together for better compression results.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| 0x26&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Sky Light Sent&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | Whether or not Chunk Data contains light nibble arrays. This is true in the Overworld, false in the End + Nether&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Column Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in each of the following arrays&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Chunk Meta&lt;br /&gt;
 | Chunk X&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Int&lt;br /&gt;
 | The X coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Chunk Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | The Z coordinate of the chunk&lt;br /&gt;
 |-&lt;br /&gt;
 | Primary Bit Mask&lt;br /&gt;
 | Unsigned Short&lt;br /&gt;
 | A bit mask which specifies which sections are not empty in this chunk&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Chunk Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Array of [[SMP Map Format#Data|Chunk]]&lt;br /&gt;
 | Each chunk in this array corresponds to the data at the same position in Chunk Meta&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Explosion ====&lt;br /&gt;
&lt;br /&gt;
Sent when an explosion occurs (creepers, TNT, and ghast fireballs).&lt;br /&gt;
&lt;br /&gt;
Each block in Records is set to air. Coordinates for each axis in record is int(X) + record.x&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x27&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Float&lt;br /&gt;
 | Currently unused in the client&lt;br /&gt;
 |-&lt;br /&gt;
 | Record Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Records&lt;br /&gt;
 | Array of (Byte, Byte, Byte)&lt;br /&gt;
 | Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y velocity of the player being pushed by the explosion&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Motion Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z velocity of the player being pushed by the explosion&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Effect ====&lt;br /&gt;
&lt;br /&gt;
Sent when a client is to play a sound or particle effect.&lt;br /&gt;
&lt;br /&gt;
By default, the Minecraft client adjusts the volume of sound effects based on distance. The final boolean field is used to disable this, and instead the effect is played from 2 blocks away in the correct direction. Currently this is only used for effect 1013 (mob.wither.spawn), and is ignored for any other value by the client.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x28&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Effect ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | The ID of the effect, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | The location of the effect&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Int&lt;br /&gt;
 | Extra data for certain effects, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Disable Relative Volume&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | See above&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Effect IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Data&lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Sound&lt;br /&gt;
 |-&lt;br /&gt;
 | 1000&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1001&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.click&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1002&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.bow&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1003&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.door_open&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;random.door_close&amp;lt;/code&amp;gt; (50/50 chance)&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1004&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.fizz&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1005&lt;br /&gt;
 | Play a music disc.&lt;br /&gt;
 | {{Minecraft Wiki|Music Discs|Record ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1006&lt;br /&gt;
 | &#039;&#039;not assigned&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1007&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.charge&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1008&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1009&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.ghast.fireball&amp;lt;/code&amp;gt;, but with a lower volume&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1010&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.wood&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1011&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.metal&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1012&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.woodbreak&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1013&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1014&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.wither.shoot&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1015&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.bat.takeoff&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1016&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.infect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1017&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.zombie.unfect&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1018&lt;br /&gt;
 | &amp;lt;code&amp;gt;mob.enderdragon.end&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1020&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_break&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1021&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_use&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1022&lt;br /&gt;
 | &amp;lt;code&amp;gt;random.anvil_land&amp;lt;/code&amp;gt;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Particle&lt;br /&gt;
 |-&lt;br /&gt;
 | 2000&lt;br /&gt;
 | Spawns 10 smoke particles, e.g. from a fire&lt;br /&gt;
 | Direction, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | 2001&lt;br /&gt;
 | Block break&lt;br /&gt;
 | {{Minecraft Wiki|Data values|Block ID}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 2002&lt;br /&gt;
 | Splash potion. Particle effect + glass break sound.&lt;br /&gt;
 | [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]&lt;br /&gt;
 |-&lt;br /&gt;
 | 2003&lt;br /&gt;
 | Eye of Ender entity break animation — particles and sound&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2004&lt;br /&gt;
 | Mob spawn particle effect: smoke + flames&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2005&lt;br /&gt;
 | Spawn “happy villager” effect (green crosses), used for bonemealing vegetation&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Smoke directions:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! ID&lt;br /&gt;
 ! Direction&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | South-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | South&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | South-West&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | East&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | (Up or middle ?)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | West&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | North-East&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | North&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | North-West&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Sound Effect ====&lt;br /&gt;
&lt;br /&gt;
Used to play a sound effect on the client.&lt;br /&gt;
&lt;br /&gt;
Custom sounds may be added by resource packs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x29&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Sound name&lt;br /&gt;
 | String&lt;br /&gt;
 | All known sound effect names can be seen [https://github.com/SirCmpwn/Craft.Net/blob/master/source/Craft.Net.Common/SoundEffect.cs here]&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect X multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Y multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Effect position Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Effect Z multiplied by 8&lt;br /&gt;
 |-&lt;br /&gt;
 | Volume&lt;br /&gt;
 | Float&lt;br /&gt;
 | 1 is 100%, can be more&lt;br /&gt;
 |-&lt;br /&gt;
 | Pitch&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 63 is 100%, can be more&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Particle ====&lt;br /&gt;
&lt;br /&gt;
Displays the named particle&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| 0x2A&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;11&amp;quot;| Client&lt;br /&gt;
 | Particle ID&lt;br /&gt;
 | Int&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Long Distance&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | If true, particle distance increases from 256 to 65536&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Float&lt;br /&gt;
 | X position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | Y position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | Z position of the particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset X&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the X position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Y&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Y position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Offset Z&lt;br /&gt;
 | Float&lt;br /&gt;
 | This is added to the Z position after being multiplied by random.nextGaussian()&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Data&lt;br /&gt;
 | Float&lt;br /&gt;
 | The data of each particle&lt;br /&gt;
 |-&lt;br /&gt;
 | Particle Count&lt;br /&gt;
 | Int&lt;br /&gt;
 | The number of particles to create&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Array of VarInt&lt;br /&gt;
 | Length depends on particle. &amp;quot;iconcrack&amp;quot; has length of 2, &amp;quot;blockcrack&amp;quot;, and &amp;quot;blockdust&amp;quot; have lengths of 1, the rest have 0.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Particle IDs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Particle Name&lt;br /&gt;
 ! Particle ID&lt;br /&gt;
 |-&lt;br /&gt;
 | explode&lt;br /&gt;
 | 0&lt;br /&gt;
 |-&lt;br /&gt;
 | largeexplosion&lt;br /&gt;
 | 1&lt;br /&gt;
 |-&lt;br /&gt;
 | hugeexplosion&lt;br /&gt;
 | 2&lt;br /&gt;
 |-&lt;br /&gt;
 | fireworksSpark&lt;br /&gt;
 | 3&lt;br /&gt;
 |-&lt;br /&gt;
 | bubble&lt;br /&gt;
 | 4&lt;br /&gt;
 |-&lt;br /&gt;
 | splash&lt;br /&gt;
 | 5&lt;br /&gt;
 |-&lt;br /&gt;
 | wake&lt;br /&gt;
 | 6&lt;br /&gt;
 |-&lt;br /&gt;
 | suspended&lt;br /&gt;
 | 7&lt;br /&gt;
 |-&lt;br /&gt;
 | depthsuspend&lt;br /&gt;
 | 8&lt;br /&gt;
 |-&lt;br /&gt;
 | crit&lt;br /&gt;
 | 9&lt;br /&gt;
 |-&lt;br /&gt;
 | magicCrit&lt;br /&gt;
 | 10&lt;br /&gt;
 |-&lt;br /&gt;
 | smoke&lt;br /&gt;
 | 11&lt;br /&gt;
 |-&lt;br /&gt;
 | largesmoke&lt;br /&gt;
 | 12&lt;br /&gt;
 |-&lt;br /&gt;
 | spell&lt;br /&gt;
 | 13&lt;br /&gt;
 |-&lt;br /&gt;
 | instantSpell&lt;br /&gt;
 | 14&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpell&lt;br /&gt;
 | 15&lt;br /&gt;
 |-&lt;br /&gt;
 | mobSpellAmbient&lt;br /&gt;
 | 16&lt;br /&gt;
 |-&lt;br /&gt;
 | witchMagic&lt;br /&gt;
 | 17&lt;br /&gt;
 |-&lt;br /&gt;
 | dripWater&lt;br /&gt;
 | 18&lt;br /&gt;
 |-&lt;br /&gt;
 | dripLava&lt;br /&gt;
 | 19&lt;br /&gt;
 |-&lt;br /&gt;
 | angryVillager&lt;br /&gt;
 | 20&lt;br /&gt;
 |-&lt;br /&gt;
 | happyVillager&lt;br /&gt;
 | 21&lt;br /&gt;
 |-&lt;br /&gt;
 | townaura&lt;br /&gt;
 | 22&lt;br /&gt;
 |-&lt;br /&gt;
 | note&lt;br /&gt;
 | 23&lt;br /&gt;
 |-&lt;br /&gt;
 | portal&lt;br /&gt;
 | 24&lt;br /&gt;
 |-&lt;br /&gt;
 | enchantmenttable&lt;br /&gt;
 | 25&lt;br /&gt;
 |-&lt;br /&gt;
 | flame&lt;br /&gt;
 | 26&lt;br /&gt;
 |-&lt;br /&gt;
 | lava&lt;br /&gt;
 | 27&lt;br /&gt;
 |-&lt;br /&gt;
 | footstep&lt;br /&gt;
 | 28&lt;br /&gt;
 |-&lt;br /&gt;
 | cloud&lt;br /&gt;
 | 29&lt;br /&gt;
 |-&lt;br /&gt;
 | reddust&lt;br /&gt;
 | 30&lt;br /&gt;
 |-&lt;br /&gt;
 | snowballpoof&lt;br /&gt;
 | 31&lt;br /&gt;
 |-&lt;br /&gt;
 | snowshovel&lt;br /&gt;
 | 32&lt;br /&gt;
 |-&lt;br /&gt;
 | slime&lt;br /&gt;
 | 33&lt;br /&gt;
 |-&lt;br /&gt;
 | heart&lt;br /&gt;
 | 34&lt;br /&gt;
 |-&lt;br /&gt;
 | barrier&lt;br /&gt;
 | 35&lt;br /&gt;
 |-&lt;br /&gt;
 | iconcrack_(id)_(data)&lt;br /&gt;
 | 36&lt;br /&gt;
 |-&lt;br /&gt;
 | blockcrack_(id+(data&amp;lt;&amp;lt;12))&lt;br /&gt;
 | 37&lt;br /&gt;
 |-&lt;br /&gt;
 | blockdust_(id)&lt;br /&gt;
 | 38&lt;br /&gt;
 |-&lt;br /&gt;
 | droplet&lt;br /&gt;
 | 39&lt;br /&gt;
 |-&lt;br /&gt;
 | take&lt;br /&gt;
 | 40&lt;br /&gt;
 |-&lt;br /&gt;
 | mobappearance&lt;br /&gt;
 | 41&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Change Game State ====&lt;br /&gt;
&lt;br /&gt;
It appears when a bed can&#039;t be used as a spawn point and when the rain state changes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x2B&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | See below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Float&lt;br /&gt;
 | Depends on Reason&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reason codes&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Reason&lt;br /&gt;
 ! Effect&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 | 0&lt;br /&gt;
 | Invalid Bed&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1&lt;br /&gt;
 | End raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | Begin raining&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | Change game mode&lt;br /&gt;
 | 0: Survival, 1: Creative, 2: Adventure, 3: Spectator&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | Enter credits&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | Demo message&lt;br /&gt;
 | 0: Show welcome to demo screen, 101: Tell movement controls, 102: Tell jump control, 103: Tell inventory control&lt;br /&gt;
 |- &lt;br /&gt;
 | 6&lt;br /&gt;
 | Arrow hitting player&lt;br /&gt;
 | Appears to be played when an arrow strikes another player in Multiplayer&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | Fade value&lt;br /&gt;
 | The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | Fade time&lt;br /&gt;
 | Time in ticks for the sky to fade&lt;br /&gt;
 |-&lt;br /&gt;
 | 10&lt;br /&gt;
 | Play mob appearance (effect and sound)&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Spawn Global Entity ====&lt;br /&gt;
&lt;br /&gt;
With this packet, the server notifies the client of thunderbolts striking within a 512 block radius around the player. The coordinates specify where exactly the thunderbolt strikes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2C&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The EID of the thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The global entity type, currently always 1 for thunderbolt&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt X, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Y&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Y, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Int&lt;br /&gt;
 | Thunderbolt Z, a [[Data Types#Fixed-point numbers|fixed-point number]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Open Window ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x2D&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Type&lt;br /&gt;
 | String&lt;br /&gt;
 | The window type to use for display. See [[Inventory]] for a list.&lt;br /&gt;
 |-&lt;br /&gt;
 | Window Title&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | The title of the window&lt;br /&gt;
 |-&lt;br /&gt;
 | Number Of Slots&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | Number of slots in the window (excluding the number of slots in the player inventory)&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | EntityHorse&#039;s EID. Only sent when Window Type is “EntityHorse”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory]] for further information.&lt;br /&gt;
&lt;br /&gt;
==== Close Window ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the client when a window is forcibly closed, such as when a chest is destroyed while it&#039;s open.&lt;br /&gt;
&lt;br /&gt;
Note, notchian clients send a close window packet with Window ID 0 to close their inventory even though there is never an [[#Open Window|Open Window]] packet for inventory. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x2E&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | This is the ID of the window that was closed. 0 for inventory.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Set Slot ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server when an item in a slot (in a window) is added/removed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x2F&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The window which is being updated. 0 for player inventory. Note that all known window types include the player inventory. This packet will only be sent for the currently opened window while the player is performing actions, even if it affects the player inventory. After the window is closed, a number of these packets are sent to update the player&#039;s inventory window (0).&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot&lt;br /&gt;
 | Short&lt;br /&gt;
 | The slot that should be updated&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Window Items ====&lt;br /&gt;
&lt;br /&gt;
[[File:Inventory-slots.png|thumb|The inventory slots]]&lt;br /&gt;
&lt;br /&gt;
Sent by the server when items in multiple slots (in a window) are added/removed. This includes the main inventory, equipped armour and crafting slots.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x30&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The ID of window which items are being sent for. 0 for player inventory.&lt;br /&gt;
 |-&lt;br /&gt;
 | Count&lt;br /&gt;
 | Short&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Slot Data&lt;br /&gt;
 | Array of [[Slot Data|Slot]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
See [[Inventory#Windows|inventory windows]] for further information about how slots are indexed.&lt;br /&gt;
&lt;br /&gt;
==== Window Property ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to inform the client that part of a GUI window should be updated.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x31&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Property&lt;br /&gt;
 | Short&lt;br /&gt;
 | The property to be updated, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Short&lt;br /&gt;
 | The new value for the property, see below&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The meaning of the Property field depends on the type of the window. The following table shows the known combinations of window type and property, and how the value is to be interpreted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 ! Window type&lt;br /&gt;
 ! Property&lt;br /&gt;
 ! Value&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Furnace&lt;br /&gt;
 | 0: Progress arrow&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Fire icon (fuel)&lt;br /&gt;
 | 0–200 (presumably in in-game ticks)&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;7&amp;quot;| Enchantment Table&lt;br /&gt;
 | 0: Level requirement for top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| The enchantment&#039;s xp level requirement&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: Level requirement for middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Level requirement for bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: The seed for generating the enchantments view for the client&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: tooltip shown on mouse hover over top enchantment slot&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Unknown (set to -1 to hide it)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5: tooltip shown on mouse hover over middle enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 | 6: tooltip shown on mouse hover over bottom enchantment slot&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Beacon&lt;br /&gt;
 | 0: Power level&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: First potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | 2: Second potion effect&lt;br /&gt;
 | Unknown&lt;br /&gt;
 |-&lt;br /&gt;
 | Anvil&lt;br /&gt;
 | 0: Repair cost&lt;br /&gt;
 | The repair&#039;s cost in xp levels&lt;br /&gt;
 |-&lt;br /&gt;
 | Brewing Stand&lt;br /&gt;
 | 0: Brew time&lt;br /&gt;
 | 0–400, with 400 making the arrow empty, and 0 making the arrow full&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Confirm Transaction ====&lt;br /&gt;
&lt;br /&gt;
A packet from the server indicating whether a request from the client was accepted, or whether there was a conflict (due to lag).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x32&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Window ID&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The ID of the window that the action occurred in&lt;br /&gt;
 |-&lt;br /&gt;
 | Action Number&lt;br /&gt;
 | Short&lt;br /&gt;
 | Every action that is to be accepted has a unique number. This field corresponds to that number.&lt;br /&gt;
 |-&lt;br /&gt;
 | Accepted&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | Whether the action was accepted&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Sign ====&lt;br /&gt;
&lt;br /&gt;
This message is sent from the server to the client whenever a sign is discovered or created. This message is NOT sent when a sign is destroyed or unloaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x33&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Line 1&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | First line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 2&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Second line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 3&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Third line of text in the sign&lt;br /&gt;
 |-&lt;br /&gt;
 | Line 4&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Fourth line of text in the sign&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Map ====&lt;br /&gt;
&lt;br /&gt;
Updates a rectangular area on a map.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| 0x34&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;12&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Item Damage&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | The damage value (map ID) of the map being modified&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Scale&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Icon Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Icon&lt;br /&gt;
 | Direction And Type&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Array&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0xF0 = Direction, 0x0F = Type&lt;br /&gt;
 |-&lt;br /&gt;
 | X&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Byte&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Columns&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Byte&lt;br /&gt;
 | Number of columns updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Rows&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; number of rows updated&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| X&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; x offset of the westernmost column&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Z&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Byte&lt;br /&gt;
 | Only if Columns is more than 0; z offset of the northernmost row&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Length&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional VarInt&lt;br /&gt;
 | Only if Columns is more than 0; length of the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Data&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional Array of Unsigned Byte&lt;br /&gt;
 | Only if Columns is more than 0; see {{Minecraft Wiki|Map item format}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Block Entity ====&lt;br /&gt;
&lt;br /&gt;
Essentially a block update on a block entity.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x35&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | The type of update to perform, see below&lt;br /&gt;
 |-&lt;br /&gt;
 | NBT Data&lt;br /&gt;
 | Optional [[NBT|NBT Tag]]&lt;br /&gt;
 | If not present then it&#039;s a TAG_END (0)&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Action&#039;&#039; field:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Set SpawnPotentials of a mob spawner&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Set command block text (command and last execution status)&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Set the level, primary, and secondary powers of a beacon&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Set rotation and skin of mob head&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: Set type of flower in flower pot&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: Set base color and patterns on a banner&lt;br /&gt;
&lt;br /&gt;
==== Open Sign Editor ====&lt;br /&gt;
&lt;br /&gt;
Sent on placement of sign.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x36&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Location&lt;br /&gt;
 | Position&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Statistics ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To &lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x37&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Count&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Statistic&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | [https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0 https://gist.github.com/thinkofdeath/a1842c21a0cf2e1fb5e0]&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | The amount to set it to&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Item ====&lt;br /&gt;
&lt;br /&gt;
Sent by the notchian server to update the user list (&amp;lt;tab&amp;gt; in the client).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;4&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;3&amp;quot;| Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| 0x38&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;19&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Action&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Determines the rest of the Player format after the UUID&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;4&amp;quot;| Number Of Players&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Player&lt;br /&gt;
 |colspan=&amp;quot;3&amp;quot;| UUID&lt;br /&gt;
 |rowspan=&amp;quot;17&amp;quot;| Array&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| UUID&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0: add player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Number Of Properties&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Property&lt;br /&gt;
 | Name&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Array&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | String&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | Is Signed&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Signature&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Is Signed is true&lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 1: update gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Gamemode&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |- &lt;br /&gt;
 | 2: update latency&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Ping&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 3: update display name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Has Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Boolean&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Display Name&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Optional [[Chat]]&lt;br /&gt;
 | Only send if Has Display Name is true&lt;br /&gt;
 |-&lt;br /&gt;
 | 4: remove player&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Abilities ====&lt;br /&gt;
&lt;br /&gt;
The latter 2 floats are used to indicate the walking and flying speeds respectively, while the first byte is used to determine the value of 4 booleans.&lt;br /&gt;
&lt;br /&gt;
The flags are whether damage is disabled (god mode, 8, bit 3), whether the player can fly (4, bit 2), whether the player is flying (2, bit 1), and whether the player is in creative mode (1, bit 0).&lt;br /&gt;
&lt;br /&gt;
To get the values of these booleans, simply AND (&amp;amp;) the byte with 1,2,4 and 8 respectively, to get the 0 or 1 bitwise value. To set them OR (|) them with their repspective masks.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 0x39&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| Client&lt;br /&gt;
 | Flags&lt;br /&gt;
 | Byte&lt;br /&gt;
 | Bit mask, see above&lt;br /&gt;
 |-&lt;br /&gt;
 | Flying Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Walking Speed&lt;br /&gt;
 | Float&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Tab-Complete ====&lt;br /&gt;
&lt;br /&gt;
The server responds with a list of auto-completions of the last word sent to it. In the case of regular chat, this is a player username. Command names and parameters are also supported.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3A&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Count&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Number of elements in the following array&lt;br /&gt;
 |-&lt;br /&gt;
 | Matches&lt;br /&gt;
 | Array of String&lt;br /&gt;
 | One eligible command, note that each command is sent separately instead of in a single string, hence the need for Count&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Scoreboard Objective ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should create a new {{Minecraft Wiki|scoreboard}} objective or remove one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3B&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | An unique name for the objective&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create the scoreboard. 1 to remove the scoreboard. 2 to update the display text. &lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Value&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. The text to be displayed for the score&lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if mode is 0 or 2. “integer” or “hearts”&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Score ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should update a scoreboard item. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x3C&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Client&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the score to be updated or removed&lt;br /&gt;
 |-&lt;br /&gt;
 | Action&lt;br /&gt;
 | Byte&lt;br /&gt;
 | 0 to create/update an item. 1 to remove an item.&lt;br /&gt;
 |-&lt;br /&gt;
 | Objective Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The name of the objective the score belongs to&lt;br /&gt;
 |-&lt;br /&gt;
 | Value&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | The score to be displayed next to the entry. Only sent when Action does not equal 1.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Display Scoreboard ====&lt;br /&gt;
&lt;br /&gt;
This is sent to the client when it should display a scoreboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3D&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Position&lt;br /&gt;
 | Byte&lt;br /&gt;
 | The position of the scoreboard. 0: list, 1: sidebar, 2: below name.&lt;br /&gt;
 |-&lt;br /&gt;
 | Score Name&lt;br /&gt;
 | String&lt;br /&gt;
 | The unique name for the scoreboard to be displayed.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Teams ====&lt;br /&gt;
&lt;br /&gt;
Creates and updates teams.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| 0x3E&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;10&amp;quot;| Client&lt;br /&gt;
 | Team Name&lt;br /&gt;
 | String&lt;br /&gt;
 | A unique name for the team. (Shared with scoreboard).&lt;br /&gt;
 |-&lt;br /&gt;
 | Mode&lt;br /&gt;
 | Byte&lt;br /&gt;
 | If 0 then the team is created.&lt;br /&gt;
&lt;br /&gt;
If 1 then the team is removed. &lt;br /&gt;
&lt;br /&gt;
If 2 the team team information is updated. &lt;br /&gt;
&lt;br /&gt;
If 3 then new players are added to the team. &lt;br /&gt;
&lt;br /&gt;
If 4 then players are removed from the team.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Display Name&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2.&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Prefix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed before the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Team Suffix&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. Displayed after the players&#039; name that are part of this team&lt;br /&gt;
 |-&lt;br /&gt;
 | Friendly Fire&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. 0 for off, 1 for on, 3 for seeing friendly invisibles&lt;br /&gt;
 |-&lt;br /&gt;
 | Name Tag Visibility&lt;br /&gt;
 | Optional String&lt;br /&gt;
 | Only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam, never&lt;br /&gt;
 |-&lt;br /&gt;
 | Color&lt;br /&gt;
 | Optional Byte&lt;br /&gt;
 | Only if Mode = 0 or 2. Same as [[Chat]] colors&lt;br /&gt;
 |-&lt;br /&gt;
 | Player Count&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Number of players in the array&lt;br /&gt;
 |-&lt;br /&gt;
 | Players&lt;br /&gt;
 | Optional Array of String&lt;br /&gt;
 | Only if Mode = 0 or 3 or 4. Players to be added/remove from the team. Max 40 characters so may be uuid&#039;s later&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Plugin Message ====&lt;br /&gt;
&lt;br /&gt;
Mods and plugins can use this to send their data. Minecraft itself uses a number of [[plugin channel]]s. These internal channels are prefixed with &amp;lt;code&amp;gt;MC|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More documentation on this: [http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x3F&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Channel&lt;br /&gt;
 | String&lt;br /&gt;
 | Name of the [[plugin channel]] used to send the data&lt;br /&gt;
 |-&lt;br /&gt;
 | Data&lt;br /&gt;
 | Byte Array&lt;br /&gt;
 | Any data, depending on the channel. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MC|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels are documented [[plugin channel|here]].&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Disconnect ====&lt;br /&gt;
&lt;br /&gt;
Sent by the server before it disconnects a client. The server assumes that the sender has already closed the connection by the time the packet arrives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 0x40&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Reason&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | Displayed to the client when the connection terminates.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Server Difficulty ====&lt;br /&gt;
&lt;br /&gt;
Changes the difficulty setting in the client&#039;s option menu&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x41&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Difficulty&lt;br /&gt;
 | Unsigned Byte&lt;br /&gt;
 | 0: peaceful, 1: easy, 2: normal, 3: hard&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Combat Event ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| 0x42&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;6&amp;quot;| Client&lt;br /&gt;
 | Event&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: enter combat, 1: end combat, 2: entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Duration&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for end combat&lt;br /&gt;
 |-&lt;br /&gt;
 | Player ID&lt;br /&gt;
 | Optional VarInt&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | Optional Int&lt;br /&gt;
 | Only for end combat and entity dead&lt;br /&gt;
 |-&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | Only for entity dead&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Camera ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x43&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Camera ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== World Border ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| 0x44&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;18&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Determines the format of the rest of the packet&lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set size&lt;br /&gt;
 | Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 1: lerp size&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | meters&lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | number of real-time ticks/seconds (?) until New Radius is reached. From experiments, it appears that Notchian server does not sync world border speed to game ticks, so it gets out of sync with server lag&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 2: set center&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;8&amp;quot;| 3: initialize&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Old Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | New Radius&lt;br /&gt;
 | Double&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Speed&lt;br /&gt;
 | VarLong&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Portal Teleport Boundary&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Resulting coordinates from a portal teleport are limited to +-value. Usually 29999984.&lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 4: set warning time&lt;br /&gt;
 | Warning Time&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | unit?&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 5: set warning blocks&lt;br /&gt;
 | Warning Blocks&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Title ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 !colspan=&amp;quot;2&amp;quot;| Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| 0x45&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;9&amp;quot;| Client&lt;br /&gt;
 |colspan=&amp;quot;2&amp;quot;| Action&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 ! Action&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! &lt;br /&gt;
 ! &lt;br /&gt;
 |-&lt;br /&gt;
 | 0: set title&lt;br /&gt;
 | Title Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 1: set subtitle&lt;br /&gt;
 | Subtitle Text&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;3&amp;quot;| 2: set times and display&lt;br /&gt;
 | Fade In&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Stay&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | Fade Out&lt;br /&gt;
 | Int&lt;br /&gt;
 | ticks&lt;br /&gt;
 |-&lt;br /&gt;
 | 3: hide&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | 4: reset&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &#039;&#039;no fields&#039;&#039;&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
“Hide” makes the title disappear, but if you run times again the same title will appear. “Reset” erases the text.&lt;br /&gt;
&lt;br /&gt;
==== Set Compression ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x46&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Client&lt;br /&gt;
 | Threshold&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | Packets of this size or higher may be compressed&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player List Header And Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x47&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Header&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Footer&lt;br /&gt;
 | [[Chat]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Resource Pack Send ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x48&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | URL&lt;br /&gt;
 | String&lt;br /&gt;
 | The URL to the resource pack.&lt;br /&gt;
 |-&lt;br /&gt;
 | Hash&lt;br /&gt;
 | String&lt;br /&gt;
 | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file. (must be lower case in order to work)&amp;lt;br /&amp;gt;If it&#039;s not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Update Entity NBT ==== &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| 0x49&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;2&amp;quot;| Client&lt;br /&gt;
 | Entity ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Tag&lt;br /&gt;
 | [[NBT|NBT Tag]]&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Serverbound ===&lt;br /&gt;
&lt;br /&gt;
==== Keep Alive ====&lt;br /&gt;
&lt;br /&gt;
The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same packet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x00&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Keep Alive ID&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Chat Message ====&lt;br /&gt;
&lt;br /&gt;
The default server will check the message to see if it begins with a &#039;/&#039;. If it doesn&#039;t, the username of the sender is prepended and sent to all other clients (including the original sender). If it does, the server assumes it to be a command and attempts to process it. A message longer than 100 characters will cause the server to kick the client. This change was initially done by allowing the client to not slice the message up to 119 (the previous limit), without changes to the server. For this reason, the vanilla server kept the code to cut messages at 119, but this isn&#039;t a protocol limitation and can be ignored.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x01&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | Message&lt;br /&gt;
 | String&lt;br /&gt;
 | The client sends the raw input, not [[Chat]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Use Entity ====&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the client to the server when the client attacks or right-clicks another entity (a player, minecart, etc).&lt;br /&gt;
&lt;br /&gt;
A Notchian server only accepts this packet if the entity being attacked/used is visible without obstruction and within a 4-unit radius of the player&#039;s position.&lt;br /&gt;
&lt;br /&gt;
Note that middle-click in creative mode is interpreted by the client and sent as a [[#Creative Inventory Action|Creative Inventory Action]] packet instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| 0x02&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;5&amp;quot;| Server&lt;br /&gt;
 | Target&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | &lt;br /&gt;
 |-&lt;br /&gt;
 | Type&lt;br /&gt;
 | VarInt&lt;br /&gt;
 | 0: interact, 1: attack, 2: interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target X&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Y&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |-&lt;br /&gt;
 | Target Z&lt;br /&gt;
 | Optional Float&lt;br /&gt;
 | Only if Type is interact at&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player ====&lt;br /&gt;
&lt;br /&gt;
This packet is used to indicate whether the player is on ground (walking/swimming), or airborne (jumping/falling).&lt;br /&gt;
&lt;br /&gt;
When dropping from sufficient height, fall damage is applied when this state goes from false to true. The amount of damage applied is based on the point where it last changed from true to false. Note that there are several movement related packets containing this state.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| 0x03&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;1&amp;quot;| Server&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Position ====&lt;br /&gt;
&lt;br /&gt;
Updates the player&#039;s XYZ position on the server.&lt;br /&gt;
&lt;br /&gt;
If the distance between the last known position of the player on the server and the new position set by this packet is greater than 100 units, this will result in the client being kicked for “You moved too quickly :( (Hacking?)”&lt;br /&gt;
&lt;br /&gt;
If the distance is greater than 10 units, the server will log the warning message &amp;quot;&amp;lt;name&amp;gt; moved too quickly!&amp;quot;, followed by two coordinate triples (maybe movement delta?), but will not kick the client.&lt;br /&gt;
&lt;br /&gt;
Also if the fixed-point number of X or Z is set greater than 3.2×10&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; the client will be kicked for “Illegal position”.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Packet ID&lt;br /&gt;
 ! State&lt;br /&gt;
 ! Bound To&lt;br /&gt;
 ! Field Name&lt;br /&gt;
 ! Field Type&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| 0x04&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Play&lt;br /&gt;
 |rowspan=&amp;quot;4&amp;quot;| Server&lt;br /&gt;
 | X&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | Feet Y&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position, normally Head Y - 1.62&lt;br /&gt;
 |-&lt;br /&gt;
 | Z&lt;br /&gt;
 | Double&lt;br /&gt;
 | Absolute position&lt;br /&gt;
 |-&lt;br /&gt;
 | On Ground&lt;br /&gt;
 | Boolean&lt;br /&gt;
 | True if the client is on the ground, false otherwise&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==== Player Look ====&lt;br /&gt;
[[File:Minecraft-trig-yaw.png|thumb|The unit circle for yaw]]&lt;br /&gt;
[[File:Yaw.png|thumb|The unit circle of yaw, redrawn]]&lt;br /&gt;
&lt;br /&gt;
Updates the direction the player is looking in.&lt;br /&gt;
&lt;br /&gt;
Yaw is measured in degrees, and does not follow classical trigonometry rules.&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Bukkit/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=1415</id>
		<title>Bukkit/插件开发教程</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Bukkit/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=1415"/>
		<updated>2015-09-03T12:32:44Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* 计划任务与后台任务 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:待翻译}}&lt;br /&gt;
{{模板:待完善}}&lt;br /&gt;
本页面英文原文内容来源 [http://wiki.bukkit.org/Plugin_Tutorial]&lt;br /&gt;
== 介绍  ==&lt;br /&gt;
&lt;br /&gt;
这篇内容丰富的教程旨在帮助你学会如何开发Bukkit插件.这一篇教程不可能完全涉及到Bukkit中所有的可能性,而是最基本的一般概述. 前提是你懂得Java这门语言,并在IDE中设置好你的工作区,此教程介绍了大多数Bukkit插件所必需的语法结构.&lt;br /&gt;
&lt;br /&gt;
== 学习Java  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;理解这些教程需要具备Java这门编程语言的基本知识.&#039;&#039;&#039;如果你刚开始学习Java或者需要重温一下相关知识，下面有一个并不完整的网站列表可供参考.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[http://docs.oracle.com/javase/tutorial/ Oracle&#039;s Java Tutorials]&amp;lt;/big&amp;gt; - 官方教程&lt;br /&gt;
*[http://www.java2s.com/Tutorial/Java/CatalogJava.htm Java2s.com] - 教程&lt;br /&gt;
*[http://www.javacoffeebreak.com/java101/java101.html Java 101] - 教程&lt;br /&gt;
*[http://math.hws.edu/javanotes/ JavaNotes] - 免费的在线教科书&lt;br /&gt;
*[http://thenewboston.org/list.php?cat=31 TheNewBoston] - 视频教程.&lt;br /&gt;
&lt;br /&gt;
== 开发环境  ==&lt;br /&gt;
&lt;br /&gt;
在编写一个插件前 (或学习Java前) 你需要配置一个开发者环境，这个包括但不限于安装IDE (Integrated Development Environment，集成开发环境)。接下来的教程中有关于Eclipse上IDE的操作指南。&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;更多信息，请参见 [[Bukkit/插件开发教程-建立工作区|建立工作区]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
你&#039;&#039;&#039;必须&#039;&#039;&#039;下载&#039;&#039;&#039;Java&#039;&#039;&#039;开发者使用的Eclipse构建版本, &#039;&#039;&#039;不是&#039;&#039;&#039; &#039;&#039;&#039;Java EE&#039;&#039;&#039;开发者的版本。 Java EE 开发者的版本不包含此教程需要的Maven支持。&lt;br /&gt;
&lt;br /&gt;
== 新建插件开发项目  ==&lt;br /&gt;
=== 创建一个新的项目 ===&lt;br /&gt;
&lt;br /&gt;
在开始工作之前，你需要先在Eclipse中配置好工作区和文件. 打开Eclipse,然后依次点击&#039;&#039;File -&amp;gt; New -&amp;gt; Project:&#039;&#039;来创建一个新的项目.&lt;br /&gt;
&lt;br /&gt;
[[Image:Newproject.png]] &lt;br /&gt;
&lt;br /&gt;
现在,打开&#039;&#039;Maven&#039;&#039;文件夹, 然后选择&#039;&#039;Maven Project&#039;&#039;.点击next,之后在下一个菜单中选择&#039;&#039;Create a simple project&#039;&#039;, 再次点击&#039;&#039;Next&#039;&#039;:&lt;br /&gt;
如果你看不到&#039;&#039;Maven&#039;&#039;文件夹, 那么你需要[http://eclipse.org/m2e/download/ 下载m2eclipse]&lt;br /&gt;
&lt;br /&gt;
[[Image:Newproject2.png]] &lt;br /&gt;
&lt;br /&gt;
现在，你需要给你的组用户命名，就像下面这样:&lt;br /&gt;
* 如果你拥有一个域名，package则填写逆转的域名地址. &lt;br /&gt;
** 例如: i-am-a-bukkit-developer.com 你的package地址即是com.i_am_a_bukkit_developer [http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html source]&lt;br /&gt;
** 避免使用一个不属于你自己的域名.&lt;br /&gt;
* 没有域名? 这里有几种方法可供选择。&lt;br /&gt;
*# 在资源管理站点创建一个用户，比如GitHub或是sourceforge&lt;br /&gt;
*#* 对于使用GitHub的用户, 请参照[http://pages.github.com/ 这里的说明] 之后你将获得一个子域名,所以你的package地址是io.github.&amp;lt;username&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
*# 使用你的邮箱.  例如: &amp;lt;username&amp;gt;@gmail.com格式的邮箱应输入com.gmail.&amp;lt;username&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
*# 最不济的方法.：  使用独特的组名命名方式，这应当是你最后的解决方法。&lt;br /&gt;
&lt;br /&gt;
以下几个地址不能作为package中的地址前缀:&lt;br /&gt;
* org.bukkit&lt;br /&gt;
* net.bukkit&lt;br /&gt;
* com.bukkit&lt;br /&gt;
* net.minecraft&lt;br /&gt;
&lt;br /&gt;
完成基础的组名以后，你需要在最后加上插件的名称. 在这里用 GitHub页面作为讲解的实例.  如果你创建了一个名为 &#039;&#039;TestPlugin&#039;&#039;的插件，那么完整的组名是&#039;&#039;io.github.&amp;lt;username&amp;gt;&#039;&#039;, 你的工程名也是 &#039;&#039;TestPlugin&#039;&#039;. 至于版本，默认即可，稍后可以修改。&lt;br /&gt;
完成向导:&lt;br /&gt;
&lt;br /&gt;
[[Image:Newproject3.png]] &lt;br /&gt;
&lt;br /&gt;
如果这是你首次使用Eclipse, 点击右上角的&amp;quot;X&amp;quot; 来关闭Welcome提示页面. 现在，你的窗口视图看起来就像下面的图片这样:&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipsemain.png]] &lt;br /&gt;
&lt;br /&gt;
点击工程名称右边的箭头来进行下一步，现在我们正式开始。&lt;br /&gt;
=== 添加Bukkit API ===&lt;br /&gt;
&lt;br /&gt;
在开发插件之前，你需要添加 Bukkit API库文件到你的项目，作为一个dependency, 你也可以添加其他你想实用的API.&lt;br /&gt;
&lt;br /&gt;
找到项目文件夹中部的&#039;&#039;pom.xml&#039;&#039;并双击进行编辑. 点击&#039;&#039;pom.xml&#039;&#039;中部的 tab,你将会看到下图所示内容:&lt;br /&gt;
&lt;br /&gt;
[[Image:Pomeditor.png]]&lt;br /&gt;
&lt;br /&gt;
如果你想使用Java 6以上版本的语言特性,你需要指定搭建项目的Java版本.复制并粘贴以下内容(设定项目只能使用Java 7及以下的版本)到 &#039;&#039;&amp;lt;/project&amp;gt;&#039;&#039;之前: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;build&amp;gt;&lt;br /&gt;
       &amp;lt;plugins&amp;gt;&lt;br /&gt;
           &amp;lt;plugin&amp;gt;&lt;br /&gt;
               &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;
               &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
               &amp;lt;configuration&amp;gt;&lt;br /&gt;
                   &amp;lt;nowiki&amp;gt;&amp;amp;lt;&amp;lt;/nowiki&amp;gt;source&amp;gt;1.7&amp;lt;/source&amp;gt;&lt;br /&gt;
                   &amp;lt;target&amp;gt;1.7&amp;lt;/target&amp;gt;&lt;br /&gt;
               &amp;lt;/configuration&amp;gt;&lt;br /&gt;
           &amp;lt;/plugin&amp;gt;&lt;br /&gt;
       &amp;lt;/plugins&amp;gt;&lt;br /&gt;
    &amp;lt;/build&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
你或许想使用其他版本,例如 &amp;lt;code&amp;gt;1.8&amp;lt;/code&amp;gt; 使用Java 8. 请注意 [http://mcstats.org/global/ 根据MCStats数据统计], 大多数服主选择了Java 7, 所以使用Java 8会使许多服务器无法运行你的插件. 如果你使用Java 1.7的特性, Eclipse将会在报错代码&amp;quot;error&amp;quot;中建议你更改语言版本.同意即可.&lt;br /&gt;
&lt;br /&gt;
在位于代码中段的&#039;&#039;&amp;lt;/project&amp;gt;&#039;&#039;之前粘贴以下内容(这段代码告诉Eclipse关于Bukkit&#039;s repository的地址): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;repositories&amp;gt;&lt;br /&gt;
        &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;bukkit-repo&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;http://repo.bukkit.org/content/groups/public/&amp;lt;/url&amp;gt;&lt;br /&gt;
        &amp;lt;/repository&amp;gt;&lt;br /&gt;
    &amp;lt;/repositories&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后继续在 &#039;&#039;&amp;lt;/project&amp;gt;&#039;&#039;前粘贴以下内容 (这段代码告诉Eclipse搭建插件的Bukkit版本): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;dependencies&amp;gt;&lt;br /&gt;
        &amp;lt;dependency&amp;gt;&lt;br /&gt;
            &amp;lt;groupId&amp;gt;org.bukkit&amp;lt;/groupId&amp;gt;&lt;br /&gt;
            &amp;lt;artifactId&amp;gt;bukkit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
            &amp;lt;version&amp;gt;1.7.2-R0.3&amp;lt;/version&amp;gt;&lt;br /&gt;
            &amp;lt;type&amp;gt;jar&amp;lt;/type&amp;gt;&lt;br /&gt;
            &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;
        &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
你也可以修改这里的Bukkit版本.你可以在[http://repo.bukkit.org/content/groups/public/org/bukkit/bukkit/ here]这里通过查看 maven-metadata.xml文件下的版本列表来获取可用的服务端版本号.&lt;br /&gt;
&lt;br /&gt;
当你完成上述步骤后,&#039;&#039;pom.xml&#039;&#039;中的内容应该是这样:&lt;br /&gt;
&lt;br /&gt;
[[Image:Finishedpom.png]]&lt;br /&gt;
&lt;br /&gt;
通过菜单 &#039;&#039;File -&amp;gt; Save&#039;&#039;或者按住 &amp;lt;code&amp;gt;Ctrl + S&amp;lt;/code&amp;gt; 来保存&#039;&#039;pom.xml&#039;&#039;文件 .  之后, 右键项目标题，然后依次选择 &#039;&#039;Maven -&amp;gt; Update Project&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Bukkit Java文档 ===&lt;br /&gt;
&lt;br /&gt;
 如果你曾经使用过Eclipse和Java，你会知道当你将鼠标准心移至class或者 method中的代码部分时，一个含有相关文档内容的黄色小框会弹出来. 这就是（Java的）Java文档。&lt;br /&gt;
 &lt;br /&gt;
 你可以[http://download.oracle.com/javase/6/docs/api/ Oracle website 在线获取]它.。Bukkit同样拥有文档，这些文档内容包含了关于API中method和class的有用描述。&lt;br /&gt;
 &lt;br /&gt;
 你可以在[http://jd.bukkit.org/ 这]找到它 (Beta版的Java文档在[http://jd.bukkit.org/ 这]找, 新开发出来的Java文档在  &lt;br /&gt;
 &lt;br /&gt;
 [http://jd.bukkit.org/ 这]) 。为了在Eclipse里使用Java文档,这样的话当你的鼠标停留在Bukkit的class和method上时，&lt;br /&gt;
 &lt;br /&gt;
 （Bukkit的）Java文档就会冒出来。  &lt;br /&gt;
JavaDoc in spigot [https://hub.spigotmc.org/javadocs/bukkit/ Click Here]&lt;br /&gt;
&lt;br /&gt;
 首先右键在侧边栏里的&amp;quot;Maven Dependencies&amp;quot;下面的Bukkit jar,选择&amp;quot;Properties&amp;quot;.选中窗口左边的&#039;&#039;Javadoc Location&#039;&#039;, 并粘贴如下网址 &lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;http://jd.bukkit.org/&#039;&#039;&#039; (或者上面的测试版/最新版 Java文档链接也好) 到&amp;quot;Javadoc URL&amp;quot;下面的输入框内. 就像这样: &lt;br /&gt;
&lt;br /&gt;
[[Image:Bukkitjavadocs.png]] &lt;br /&gt;
&lt;br /&gt;
 点击 &amp;quot;Validate&amp;quot;,然后再点击&amp;quot;OK&amp;quot;就完成了.现在Bukkit Javadocs已经连接到Bukkit提供的资源,同时你也可以通过Eclipse来获得帮助类文档信息了.&lt;br /&gt;
&lt;br /&gt;
=== 创建一个包 ===&lt;br /&gt;
&lt;br /&gt;
 现在你需要创建一个包，它将储存所有我们需要使用的Java类文件. 右键展开&#039;&#039;src/main/java&#039;&#039;折叠并选择 &#039;&#039;New &amp;amp;gt; Package&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
[[Image:Newpackage.png]] &lt;br /&gt;
&lt;br /&gt;
 包名的话，先写上你的组名，然后加个点，再写上你的小写Artifact ID。举例, 如果你的组名是&#039;&#039;io.github.name&#039;&#039;，你的artifact名是 &#039;&#039;TestPlugin&#039;&#039;。&lt;br /&gt;
 &lt;br /&gt;
 你的包名就应该是&#039;&#039;io.github.name.testplugin&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 创建插件的类文件 ===&lt;br /&gt;
&lt;br /&gt;
既然我们已经建立好了我们的项目，我们接下来可以开始添加类文件以及制作插件了. 插件的主类指的是拓展(extends)JavaPlugin的类文件. 在你的插件中只能有一个类文件拓展JavaPlugin，无论直接还是间接. 先创建你的主类文件并保持名称与插件名一致是个很好的习惯.右键你之前新建的包,并选择&amp;amp;nbsp; &#039;&#039;New &amp;amp;gt; Class&#039;&#039;.你将会创建一个新的类文件，就像下面这样&lt;br /&gt;
&lt;br /&gt;
 package {$GroupName}.{$ArtifactName};&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
 &lt;br /&gt;
 public final class {$ArtifactName} extends JavaPlugin {&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
警告： 插件绝对不应该调用自己的构造函数并实例化&lt;br /&gt;
&lt;br /&gt;
=== 创建plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
你已经创建了项目和主类，如果你想要Bukkit能够加载你的插件，你还必须创建 &#039;&#039;&#039;[[Plugin YAML|plugin.yml]]&#039;&#039;&#039; 文件. 这个文件包含有基础的插件信息，如果缺失这个文件，你的插件也将会失效. 此时你需要右键&#039;&#039;src/main/resources&#039;&#039;. 选择&#039;&#039;New &amp;amp;gt; File&#039;&#039;. 命名为&amp;quot;&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;&amp;quot; 并右键完成新文件的创建.Eclipse会打开默认的文本编辑窗口来显示&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;文件中空白的内容并提供编辑. &#039;&#039;(Hint:&amp;amp;nbsp;如果你想要使得你的工作空间更加规整，关闭文本编辑器并将&#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件拖到主工作空间(拖到文件目录的右边) 之后你就可以在eclipse中编辑文件了.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
有三个基础的内容需要在plugin.yml写明. &lt;br /&gt;
: name:  插件名称. &lt;br /&gt;
: main: [http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.7 插件主类的完整，合法名称] . &lt;br /&gt;
: version: 插件当前版本号. &lt;br /&gt;
&lt;br /&gt;
最简单的 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件内就像这样&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 name: {插件名称}&lt;br /&gt;
 main: {包名}.{主类}&lt;br /&gt;
 version: {版本号}&lt;br /&gt;
&lt;br /&gt;
 PS:插件的包名经常会包括插件的名称，所以看到这个的时候不要感到惊讶。&lt;br /&gt;
    你的主类是否是你的插件名取决于你之前的命名方式，时刻记住这一点很重要。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;更多例子&#039;&#039;&#039;, 请看[[#Example_Files_and_Templates]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
此时你的插件已经可以被Bukkit加载了,同时服务端日志也会开始记录你的插件. 不过它现在什么用都没有!&lt;br /&gt;
&lt;br /&gt;
== onEnable()和onDisable()方法  ==&lt;br /&gt;
&lt;br /&gt;
这些方法将在插件启用与卸载时生效. 默认情况下，你的插件在被加载时会调用这些方法，所以你可以在这里注册你需要用到的事件和提供一些调试信息. &amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt; 方法会在插件启用时被调用, 需要包含初始化插件的逻辑语句. &amp;lt;code&amp;gt;onDisable()&amp;lt;/code&amp;gt; 方法会在插件卸载时被调用，需要包含清理(clean up)插件的逻辑语句和连接声明(associated state)。此外，插件可以重写 &amp;lt;code&amp;gt;onLoad()&amp;lt;/code&amp;gt; 方法来在插件载入时执行附加的逻辑语句。&lt;br /&gt;
&lt;br /&gt;
=== onEnable()和onDisable()方法介绍  ===&lt;br /&gt;
&lt;br /&gt;
在前面的章节中，我们在主类创建了&amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;onDisable()&amp;lt;/code&amp;gt; 方法. 此时，这些代码看起来就像下面这样&lt;br /&gt;
&lt;br /&gt;
 package {$TopLevelDomain}.{$Domain}.{$PluginName};&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
 &lt;br /&gt;
 public final class {$PluginName} extends JavaPlugin {&lt;br /&gt;
     @Override&lt;br /&gt;
     public void onEnable() {&lt;br /&gt;
         // 插件载入时要执行的代码（略）&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     @Override&lt;br /&gt;
     public void onDisable() {&lt;br /&gt;
         // 插件卸载时要执行的代码（略）&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
这些方法已经创建，但目前它们还没有任何作用.&lt;br /&gt;
注意: 不需要添加代码来实现输出信息&amp;quot;{$PluginName} has been enabled!&amp;quot; ，因为bukkit会自动输出此类信息&lt;br /&gt;
有关更多事件的信息请查看 [[Event_API_Reference|这里]].&lt;br /&gt;
&lt;br /&gt;
=== 发送提示信息 ===&lt;br /&gt;
&lt;br /&gt;
 插件能够输出信息至控制台与服务器日志。这是通过调用插件记录器里正确的方法来实现的。首先我们必须调用 &amp;lt;code&amp;gt;getLogger()&amp;lt;/code&amp;gt; 方法来检索该插件的记录器，&lt;br /&gt;
 &lt;br /&gt;
 然后我们就可以开始记录信息了。&lt;br /&gt;
&lt;br /&gt;
我们通过调用&amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt;方法可以实现输出信息。 我们需要在&amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt;方法下面插入如下代码：&lt;br /&gt;
&lt;br /&gt;
 getLogger().info(&amp;quot;onEnable has been invoked!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
在 &amp;lt;code&amp;gt;&#039;&#039;&#039;onDisable()&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法里面，你也可以做类似的事情，不过要改改输出信息。&lt;br /&gt;
&lt;br /&gt;
此时你的主类文件就像这样: &lt;br /&gt;
&lt;br /&gt;
 package {$TopLevelDomain}.{$Domain}.{$PluginName};&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
 &lt;br /&gt;
 public final class {$PluginName} extends JavaPlugin {&lt;br /&gt;
         @Override&lt;br /&gt;
         public void onEnable() {&lt;br /&gt;
             getLogger().info(&amp;quot;onEnable has been invoked!&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         @Override&lt;br /&gt;
         public void onDisable() {&lt;br /&gt;
         getLogger().info(&amp;quot;onDisable has been invoked!&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 防止重载后插件失效 ===&lt;br /&gt;
&lt;br /&gt;
你需要知道的是，插件并不只会伴随服务器关闭、启动而重载，你的插件也可能会被其他插件启用、关闭，或是在服务器运行时使用/reload命令. &lt;br /&gt;
假设服务器启动之后一会儿后，你的插件才被启用，这时便是危险的,因为服务器中可能已经有玩家在线、额外的世界被加载以及很多预想不到的不同之处(与&amp;quot;插件同服务器同时加载&amp;quot;的情况相比较). &lt;br /&gt;
&lt;br /&gt;
举个例子来说:&lt;br /&gt;
* 你有一个用来储存HashMap中的玩家登入信息的插件&lt;br /&gt;
* 你希望该信息对所有玩家都可见&lt;br /&gt;
* 一名管理员使用/reload命令&lt;br /&gt;
* 你的插件被卸载，所有储存的数据都丢失了&lt;br /&gt;
* 你的插件被再次启用时，一些玩家已经在线&lt;br /&gt;
* 这些玩家在HashMap并没有储存的信息&lt;br /&gt;
* 你试图重新获得他们的信息，但是失败了!&lt;br /&gt;
&lt;br /&gt;
为了插件重载以后能够正常工作, 你需要在插件启用时加载所有已经在线的玩家的信息并将之储存在HashMap中.&lt;br /&gt;
&lt;br /&gt;
 for (Player player : Bukkit.getServer().getOnlinePlayers()) {&lt;br /&gt;
     playerList.put(player.getName(), playerData(player));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 监听器  ==&lt;br /&gt;
监听器是一种方法被调用来对事件作出反应的类.所有的监听器使用 org.bukkit.event.Listener接口.更多有关监听器创建的细节,&lt;br /&gt;
:: &#039;&#039; 请查看: [[Event API Reference]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 指令  ==&lt;br /&gt;
&lt;br /&gt;
=== onCommand() 方法  ===&lt;br /&gt;
&lt;br /&gt;
 现在你已经知道如何注册一个事件并做出响应,但是如果你只是想要在命令输入之后做出响应呢? 你可以使用 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法.&lt;br /&gt;
 &lt;br /&gt;
 这个代码的作用是当玩家输入“/”时，监听该操作并执行相关语句&amp;quot;/&amp;quot; . 举个例子来说.输入 &amp;quot;/do something&amp;quot; 将会执行 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法.&lt;br /&gt;
 &lt;br /&gt;
 此种情况下，因为没有特定的行为被编程，所以并不会发生任何事情。&lt;br /&gt;
&lt;br /&gt;
 请避免使用和bukkit所提供的指令重名的指令, 然后深思你的指令名的唯一性。 &lt;br /&gt;
 &lt;br /&gt;
 例如.指令&amp;quot;give&amp;quot;已经被好几个插件使用了, 如果你执行了另外一个&amp;quot;give&amp;quot;指令, 你的插件将会和这些插件冲突。&lt;br /&gt;
&lt;br /&gt;
 你必须在插件的&amp;quot;plugins.yml&amp;quot;注册你的指令 否则这个方法将不会被触发。&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法必须返回一个布尔值（true或false）。 &lt;br /&gt;
 &lt;br /&gt;
 如果返回值是true，你不会看到什么明显的事情发生。 &lt;br /&gt;
 &lt;br /&gt;
 但如果返回值是false，则会返回你的plugin.yml里的&#039;usage:property&#039;然后发送给命令使用者. &lt;br /&gt;
&lt;br /&gt;
当使用 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法时, 你需要填写4个参数. &lt;br /&gt;
&lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender sender&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 发送命令的对象&lt;br /&gt;
 &lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;Command cmd&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 被执行的指令&lt;br /&gt;
 &lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;String commandLabel&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 被执行指令的别名&lt;br /&gt;
 &lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;String[] args&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 该指令的自变量数组。&lt;br /&gt;
 &lt;br /&gt;
例如.指令 &#039;&#039;/hello abc def&#039;&#039; 中， &#039;&#039;abc&#039;&#039; 会被存放进args[0]中, &#039;&#039;def&#039;&#039; 被存放进args[1]中。&lt;br /&gt;
&lt;br /&gt;
==== 设置命令  ====&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;basic&amp;quot;)) { // 如果玩家输入了/basic则执行如下内容...&lt;br /&gt;
     // 所需要执行的事（此处略）&lt;br /&gt;
         return true;&lt;br /&gt;
     } //如果以上内容成功执行，则返回true &lt;br /&gt;
     // 如果执行失败，则返回false.&lt;br /&gt;
     return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 每当使用&amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法时， 在每个方法后面都加上一个 return false; 是一个惯例。 &lt;br /&gt;
 &lt;br /&gt;
 返回false会显示在plugin.yml里设置的usage信息 (看下面). 用这种方法的话，一旦执行出错便会显示usage信息。&lt;br /&gt;
&lt;br /&gt;
 每当方法return一个值的时候，这个方法就会退出，所以return true的时候，在它下面的代码就会被跳过, &lt;br /&gt;
 &lt;br /&gt;
 除非return语句在一个if的嵌套中，或者类似的嵌套情况。 &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;&#039;.equalsIgnoreCase(&amp;quot;basic&amp;quot;)&#039;&#039;&#039;&amp;lt;/code&amp;gt;代表忽略英文大小写. 在这种情况下,字符串&amp;quot;BAsIc&amp;quot; 和 &amp;quot;BasiC&amp;quot;和 basic相同，代码会被照常执行。&lt;br /&gt;
&lt;br /&gt;
和以前一样，加两行import在你的java文件头&lt;br /&gt;
&lt;br /&gt;
 import org.bukkit.command.Command;&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.command.CommandSender;&lt;br /&gt;
&lt;br /&gt;
=== 在Plugin.yml中添加你的指令  ===&lt;br /&gt;
&lt;br /&gt;
你需要添加你的指令到 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件里. 如下是指令/basic添加到 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039;的例子（请在plugins.yml的末尾添加如下代码）: &lt;br /&gt;
&lt;br /&gt;
commands:&lt;br /&gt;
   basic:&lt;br /&gt;
      description: This is a demo command.&lt;br /&gt;
      usage: /&amp;lt;command&amp;gt; [player]&lt;br /&gt;
      permission: &amp;lt;plugin name&amp;gt;.basic&lt;br /&gt;
      permission-message: You don&#039;t have &amp;lt;permission&amp;gt;&amp;lt;/source&amp;gt; &amp;lt;/code&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;basic&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 指令名称&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;description&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 指令描述&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;usage&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 在oncommand方法return false后显示的用法提示。尽量简洁, 使别人能够理解指令是什么以及如何使用它。&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;permission&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 被一些显示帮助信息的插件使用，用来决定向玩家显示哪个指令（完全不对劲吧！）。&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;permission-message&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 当玩家使用了这个指令而没有权限时输出的信息。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PS:yml文件使用两个空格作为制表符,使用tab键输入制表符会导致错误。&lt;br /&gt;
&lt;br /&gt;
===控制台指令vs玩家指令===&lt;br /&gt;
&lt;br /&gt;
 你可能注意到了上文的&amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender sender&#039;&#039;&#039;&amp;lt;/code&amp;gt;参数. &amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender&#039;&#039;&#039;&amp;lt;/code&amp;gt; 是个Bukkit接口，&lt;br /&gt;
 &lt;br /&gt;
 它有两个（对插件编写者）有用的子类：&amp;lt;code&amp;gt;&#039;&#039;&#039;Player&#039;&#039;&#039;&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;&#039;&#039;&#039;ConsoleCommandSender&#039;&#039;&#039;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 所以当你编写插件的时候, 确定这个指令从控制台发出后能完全正常工作是十分必要的,&lt;br /&gt;
 &lt;br /&gt;
 那些只能由在线玩家执行的指令 &#039;&#039;只能&#039;&#039; 由一个在线玩家执行。&lt;br /&gt;
 &lt;br /&gt;
 有的插件在判断命令执 行对象不是玩家时仅仅用return进行处理 (比如当有人从控制台发出指令), &lt;br /&gt;
 &lt;br /&gt;
 即便这些指令能够在控制台完美运行（比如改变天气的指令）。&lt;br /&gt;
&lt;br /&gt;
一个判断sender的方法: &lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         if (cmd.getName().equalsIgnoreCase(&amp;quot;basic&amp;quot;)) { //如果玩家输入了/basic则执行如下内容...&lt;br /&gt;
             // 所需要执行的事（此处略）&lt;br /&gt;
             return true;&lt;br /&gt;
         } else if (cmd.getName().equalsIgnoreCase(&amp;quot;basic2&amp;quot;)) {&lt;br /&gt;
             if (!(sender instanceof Player)) { //如果sender与Player类不匹配&lt;br /&gt;
                 sender.sendMessage(&amp;quot;This command can only be run by a player.&amp;quot;);&lt;br /&gt;
             } else {&lt;br /&gt;
                 Player player = (Player) sender;&lt;br /&gt;
                    // 所需要执行的事（此处略）&lt;br /&gt;
             }&lt;br /&gt;
                 return true;&lt;br /&gt;
         }&lt;br /&gt;
         return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 在这个例子里，指令&#039;&#039;&#039;basic&#039;&#039;&#039;能由任何人发出 - 一个在线的玩家, 或者服务器后台的op. &lt;br /&gt;
 &lt;br /&gt;
 但是指令&#039;&#039;&#039;basic2&#039;&#039;&#039;只能由一个在线的玩家发出. &lt;br /&gt;
&lt;br /&gt;
 大体上说,你应该允许尽可能多的指令在控制台和玩家聊天框里都正常执行. &lt;br /&gt;
 &lt;br /&gt;
 需要在线玩家执行的指令可以使用以上例子中的机制来检测&amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender&#039;&#039;&#039;&amp;lt;/code&amp;gt;是一个玩家. &lt;br /&gt;
 &lt;br /&gt;
 很多指令广泛依靠于一些玩家的属性（例如可以被tp或被给予物品等等）。&lt;br /&gt;
&lt;br /&gt;
 如果你想更进一步, 你可以对你的指令的自变量做一些额外的检测， 例如传送指令在提供玩家ID的情况下（也只有在这种情况下）可以在控制台被执行。&lt;br /&gt;
&lt;br /&gt;
=== 使用独立的 CommandExecutor class  ===&lt;br /&gt;
&lt;br /&gt;
 以上的例子必须把 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand()&#039;&#039;&#039;&amp;lt;/code&amp;gt; 方法放在插件的主类里。&lt;br /&gt;
 &lt;br /&gt;
 对于小插件来说，这是极好的,但如果你要写一个大点的插件,把你的 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand()&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法放在独立的类里将会很有意义。&lt;br /&gt;
 &lt;br /&gt;
 幸运的是，这并不难: &lt;br /&gt;
&lt;br /&gt;
*在你的包里创建一个新类. 命名为&#039;&#039;&#039;MyPluginCommandExecutor&#039;&#039;&#039;之类的 (当然，要把&#039;&#039;&#039;MyPlugin&#039;&#039;&#039;替换成你制作的插件的名字)。 这个类 &#039;&#039;&#039;必须&#039;&#039;&#039; 继承Bukkit 的&#039;&#039;&#039;CommandExecutor&#039;&#039;&#039;接口。&lt;br /&gt;
&lt;br /&gt;
*在你的插件的&amp;lt;code&amp;gt;&#039;&#039;&#039;onEnable()&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法中,你需要实例化你创建的命令执行类(CommandExecutor class), 然后做一个像下面一样的调用：&amp;lt;code&amp;gt;getCommand(&amp;quot;basic&amp;quot;).setExecutor(myExecutor);&amp;lt;/code&amp;gt;&lt;br /&gt;
 其中&amp;quot;basic&amp;quot;是我们需要操控的指令, &amp;lt;code&amp;gt;myExecutor&amp;lt;/code&amp;gt; 是我们创建的实例.&lt;br /&gt;
&lt;br /&gt;
废话少说直接吔我例子: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MyPlugin.java&#039;&#039;&#039; (插件的主类): &lt;br /&gt;
 @Override&lt;br /&gt;
 public void onEnable() {&lt;br /&gt;
         // 如果你没有在plugins.yml注册过指令的话，此处会抛出空指针异常！&lt;br /&gt;
         this.getCommand(&amp;quot;basic&amp;quot;).setExecutor(new MyPluginCommandExecutor(this));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;MyPluginCommandExecutor.java&#039;&#039;&#039;（独立CommandExecutor类）: &lt;br /&gt;
 public class MyPluginCommandExecutor implements CommandExecutor {&lt;br /&gt;
         private final MyPlugin plugin;&lt;br /&gt;
 &lt;br /&gt;
         public MyPluginCommandExecutor(MyPlugin plugin) {&lt;br /&gt;
             this.plugin = plugin; // Store the plugin in situations where you need it.&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         @Override&lt;br /&gt;
         public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
             // 和以前一样执行就好…&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 请注意我们是如何把主类里的对象指向&#039;&#039;&#039;MyPluginCommandExecutor&#039;&#039;&#039;的. 这允许我们轻易的使用主类对象的方法（如果我们需要的话）。&lt;br /&gt;
&lt;br /&gt;
 这么做的话, 我们便能更好的组织代码 - 如果 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand()&#039;&#039;&#039;&amp;lt;/code&amp;gt; 方法又大又复杂, 它就能被划分为子类，从而不使插件的主类显得凌乱。&lt;br /&gt;
&lt;br /&gt;
 PS：如果你的插件含有多个指令的话, 你需要为每一个指令单独设立一个commandexecutor.&lt;br /&gt;
&lt;br /&gt;
=== 写一个安全的指令 ===&lt;br /&gt;
 当写一个指令的时候,别进行任何假设（很重要）, 例如假设执行者一定是个玩家. 请牢记以下原则:&lt;br /&gt;
&lt;br /&gt;
==== 在命令执行前确定发出者是玩家 ====&lt;br /&gt;
&lt;br /&gt;
使用简单的例子来进行检测:&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         if (sender instanceof Player) {&lt;br /&gt;
             Player player = (Player) sender;&lt;br /&gt;
             // do something&lt;br /&gt;
         } else {&lt;br /&gt;
             sender.sendMessage(&amp;quot;You must be a player!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
             // do something&lt;br /&gt;
         return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== 检测自变量个数 ====&lt;br /&gt;
&lt;br /&gt;
 别老是认为玩家都能打对正确数量的自变量. &lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         if (args.length &amp;gt; 4) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Too many arguments!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         } &lt;br /&gt;
         if (args.length &amp;lt; 2) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Not enough arguments!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== 在获取玩家之前先检测他们是否在线 ====&lt;br /&gt;
&lt;br /&gt;
 有时你想通过命令发出者打出的ID来获取其他玩家，请确保他们在线再说！&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         Player target = (Bukkit.getServer().getPlayer(args[0]));&lt;br /&gt;
         if (target == null) {&lt;br /&gt;
             sender.sendMessage(args[0] + &amp;quot; is not online!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
         return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 如果你想对离线玩家进行操作，&amp;lt;code&amp;gt;&#039;&#039;&#039;OfflinePlayer&#039;&#039;&#039;&amp;lt;/code&amp;gt;类提供了基础操作的方法.&lt;br /&gt;
&lt;br /&gt;
== 插件的配置/设置  ==&lt;br /&gt;
Bukkit API 为插件提供了一种简便的方法，用来管理用户自定义的设置。同时，通过这种方法也可以储存数据。&lt;br /&gt;
:: &#039;&#039;详情请查看: [[Configuration API Reference]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 权限  ==&lt;br /&gt;
&lt;br /&gt;
利用新的Bukkit API来设置权限是再容易不过的事情. 检测玩家是否拥有权限，可以使用以下代码: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;if (player.hasPermission(&amp;quot;some.pointless.permission&amp;quot;)) {&lt;br /&gt;
   //执行此段代码(有权限)&lt;br /&gt;
} else {&lt;br /&gt;
   //执行此段代码(无权限)&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
你也可以检测一个权限节点是否被定义过，(等效于 Java 语言中的&#039;&#039;&#039;null&#039;&#039;&#039;)，使用下面的方法: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;boolean isPermissionSet(String name)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
你或许对此抱有疑惑:为什么这段代码中没有任何用户群的信息？因为它们并不是必需的. 之前这段代码想要实现的主要功能之一就是根据用户群格式化聊天信息. 但其实使用权限就可以很容易地完成这项工作.你可以在聊天插件的配置文件中定义权限与前缀的对应关系. 举例来说，&amp;quot;someChat.prefix.admin&amp;quot; 权限可以对应前缀[Admin].当拥有此权限的玩家发出聊天信息时 ，聊天前缀便是[Admin]. &lt;br /&gt;
&lt;br /&gt;
另一个想要实现的主要功能则是给所有拥有权限的在线用户发一条信息.你可以这样做: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;for (Player player: Bukkit.getServer().getOnlinePlayers()) {&lt;br /&gt;
    if (player.hasPermission(&amp;quot;send.receive.message&amp;quot;)) {&lt;br /&gt;
        player.sendMessage(&amp;quot;You were sent a message&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
看到这里你可能会问，若是没有权限组我该如何配置玩家的 [[权限]] ？既然 [[Bukkit]] API 本身并没有提供用户组的预设, 你必须通过安装一款权限组插件，像 [[permissionsBukkit]]  这样的插件来帮助你配置用户群. &#039;&#039;&#039;API 只是提供接口而不是提供已实现的类.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== 配置权限 ===&lt;br /&gt;
{{Hide|标题=译者注 |内容= 其一，以下代码中部分内容将以&#039;&#039;//文字&#039;&#039;翻译，使用时请不要加入其中内容，仅做教程中的翻译参考；&lt;br /&gt;
其二，default:true在下面翻译为全员默认拥有该权限，default:false则翻译为全员默认没有该权限，请注意理解。 }}&lt;br /&gt;
如果你想要更多地控制你的权限，例如设置权限的默认值或是子权限节点，不如将权限节点加入你的 &#039;&#039;[[plugin.yml]]&#039;&#039;文件.这并不是必须的，但我们推荐你这样做. 下面是一个实例，显示了当你将权限添加在&#039;&#039;plugin.yml&#039;&#039;文件末尾时的样子: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;permissions:&lt;br /&gt;
    doorman.*:&lt;br /&gt;
        description: Gives access to all doorman commands //给予使用doorman所有命令的权限&lt;br /&gt;
        children:  //子权限节点&lt;br /&gt;
            doorman.kick: true&lt;br /&gt;
            doorman.ban: true&lt;br /&gt;
            doorman.knock: true&lt;br /&gt;
            doorman.denied: false&lt;br /&gt;
    doorman.kick:&lt;br /&gt;
        description: Allows you to kick a user  //允许你踢出一名用户&lt;br /&gt;
        default: op  //OP默认拥有该权限&lt;br /&gt;
    doorman.ban:&lt;br /&gt;
        description: Allows you to ban a user  //允许你封禁一名用户&lt;br /&gt;
        default: op //OP默认拥有该权限&lt;br /&gt;
    doorman.knock:&lt;br /&gt;
        description: Knocks on the door! //敲门&lt;br /&gt;
        default: true //全员默认拥有该权限&lt;br /&gt;
    doorman.denied:&lt;br /&gt;
        description: Prevents this user from entering the door  //禁止拥有该权限节点的用户进入门内&amp;lt;/source&amp;gt; &amp;lt;/code&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
值得注意的是,你的插件使用的每个权限都被定义为 &#039;&#039;permissions&#039;&#039; 这个节点的子权限节点. 每个权限都能够拥有一个描述，默认值以及子权限节点。&lt;br /&gt;
==== 默认值  ====&lt;br /&gt;
&lt;br /&gt;
当一个权限没有明确是否为玩家所拥有&amp;amp;nbsp;，&#039;&#039;hasPermission&#039;&#039;&amp;lt;ref&amp;gt;这是一个检测玩家是否拥有指定权限节点的方法&amp;lt;/ref&amp;gt;&amp;amp;nbsp;将返回false&amp;lt;ref&amp;gt;该方法返回的boolean值&amp;lt;/ref&amp;gt;. 在你的[[plugin.yml]] you can change this by setting the default node to be one of four values: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;true&#039;&#039;&#039; - 全员默认拥有该权限. &lt;br /&gt;
*&#039;&#039;&#039;false&#039;&#039;&#039; - 全员默认没有该权限. &lt;br /&gt;
*&#039;&#039;&#039;op&#039;&#039;&#039; - 如果玩家是一名OP&amp;lt;ref&amp;gt;Operator，服务器管理员&amp;lt;/ref&amp;gt;，那么他将拥有该权限. &lt;br /&gt;
*&#039;&#039;&#039;not op&#039;&#039;&#039; - 如果玩家不是一名OP，那么他将拥有该权限.&lt;br /&gt;
&lt;br /&gt;
==== 子权限  ====&lt;br /&gt;
&lt;br /&gt;
在这之前你可能已经习惯了通过权限节点自动分配所有的子权限&amp;lt;ref&amp;gt;原句:Before now you will probably be used to the * permission to automatically assign all sub permissions.此处的sub permissions应是同上文“你的插件使用的每个权限都被定义为 permissions 这个节点的子权限节点.”相照应&amp;lt;/ref&amp;gt;. 现在这种方法已经随着bukkit API&amp;lt;ref&amp;gt;应用程序编程接口(Application Programming Interface)&amp;lt;/ref&amp;gt;的更新而改变，现在你可以自己定义子权限了. 这将使得插件具有更多的灵活性. 下面是一个例子: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;permissions:&lt;br /&gt;
    doorman.*:&lt;br /&gt;
        description: Gives access to all doorman commands  //翻译见上&lt;br /&gt;
        children:&lt;br /&gt;
            doorman.kick: true&lt;br /&gt;
            doorman.ban: true&lt;br /&gt;
            doorman.knock: true&lt;br /&gt;
            doorman.denied: false&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
在这里，&#039;&#039;doorman.*&#039;&#039; 权限拥有几个子权限并分配在其下. 子权限工作的方式就是当&#039;&#039;doorman.*&#039;&#039; 权限节点被设置为true时,子权限也会随之设置为 &#039;&#039;plugin.yml&#039;&#039;中的默认值. 然而当&#039;&#039;doorman.*&#039;&#039; 被设置为false时，所有子权限都会设置为与默认值相反的值（true-&amp;gt;false,false-&amp;gt;true）.&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 设置你自己的权限  ===&lt;br /&gt;
&lt;br /&gt;
如果你希望想知道更多有关开发你自己的权限插件的事情(即是设置权限的管理类插件) ，那么请前往查看教程&amp;amp;nbsp;[[Developing a permissions plugin]].&lt;br /&gt;
&lt;br /&gt;
== 计划任务与后台任务  ==&lt;br /&gt;
&lt;br /&gt;
目前, Minecraft服务器都使用一个线程进行所有逻辑操作, 所以每个发生在游戏中的逻辑运算必须要很短. 如果处理不好的话, 复杂的代码可能会导致你的服务器逻辑运算有极大的延迟和滞后. &lt;br /&gt;
&lt;br /&gt;
幸运的是, Bukkit正在帮助你安排你的插件源代码. 你可以提交一个在未来能够运行一次的可运行任务, 或者一个基础的循环, 或者你可以拆分出一个新的与游戏逻辑并行的线程, 用来执行过于冗长的任务.&lt;br /&gt;
&lt;br /&gt;
这里 [[Scheduler Programming]] 单独写出了计划程序的教程, 并给出了更多你可以用来安排同步任务的信息, 还有启动Bukkit的异步进程.&lt;br /&gt;
&lt;br /&gt;
== 方块操控&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
这是一个很容易的方法创建、获取或修改一个方块, 例如当你想要修改往你头上数第五格的方块时, 首先你需要做的是获取你当前的坐标点, 然后往你当前的坐标点的Y轴加上五, 获取目标方块后我们便能够很容易地修改它了, 例子如下:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@EventHandler&lt;br /&gt;
public void onPlayerMove(PlayerMoveEvent event) {&lt;br /&gt;
    // 得到玩家当前的坐标.&lt;br /&gt;
    Location loc = event.getPlayer().getLocation();&lt;br /&gt;
    // 设置目标坐标为玩家头顶 5 格处.&lt;br /&gt;
    loc.setY(loc.getY() + 5);&lt;br /&gt;
    // 得到目标坐标的方块&lt;br /&gt;
    Block b = loc.getBlock();&lt;br /&gt;
    // 将目标坐标的方块更改为石头 (stone).&lt;br /&gt;
    b.setType(Material.STONE);&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
上面的代码获取了玩家的所在位置，获取头上的第五个方块，并且放上一个石头（stone）。 Note that once you have a &amp;lt;code&amp;gt;Block&amp;lt;/code&amp;gt;, there are other things you can do besides set its type. 你可以查阅JavaDoc获取更多的东西。&lt;br /&gt;
&lt;br /&gt;
你可以用这样相似的观念去生成一些建筑，并且还可以用编程的方式通过算法生成一些独特的方块（这里指由很多个方块拼在一起的四四方方的方块）。比如，去生成一个实心的方块建筑，你可能在生成建筑的时候还需要用到&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;循环，去一遍遍循环来生成这些建筑，填满这些建筑等。&lt;br /&gt;
下面，是一个在指定坐标生成一个实心的方块建筑的实例方法：&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void generateCube(Location loc, int length) {&lt;br /&gt;
    // 放置这个方块最中间的方块并且获取这个方块的坐标。&lt;br /&gt;
    // Uses getBlockN() instead of getN() to avoid casting to an int later.&lt;br /&gt;
    int x1 = loc.getBlockX(); &lt;br /&gt;
    int y1 = loc.getBlockY();&lt;br /&gt;
    int z1 = loc.getBlockZ();&lt;br /&gt;
&lt;br /&gt;
    // Figure out the opposite corner of the cube by taking the corner and adding length to all coordinates.&lt;br /&gt;
    int x2 = x1 + length;&lt;br /&gt;
    int y2 = y1 + length;&lt;br /&gt;
    int z2 = z1 + length;&lt;br /&gt;
&lt;br /&gt;
    World world = loc.getWorld();&lt;br /&gt;
&lt;br /&gt;
    // Loop over the cube in the x dimension.&lt;br /&gt;
    for (int xPoint = x1; xPoint &amp;lt;= x2; xPoint++) { &lt;br /&gt;
        // Loop over the cube in the y dimension.&lt;br /&gt;
        for (int yPoint = y1; yPoint &amp;lt;= y2; yPoint++) {&lt;br /&gt;
            // Loop over the cube in the z dimension.&lt;br /&gt;
            for (int zPoint = z1; zPoint &amp;lt;= z2; zPoint++) {&lt;br /&gt;
                // Get the block that we are currently looping over.&lt;br /&gt;
                Block currentBlock = world.getBlockAt(xPoint, yPoint, zPoint);&lt;br /&gt;
                // 设置方块ID为57号(钻石块!)&lt;br /&gt;
                currentBlock.setType(Material.DIAMOND_BLOCK); //这里下面会提到&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
这个方法将会在程序给予这个方法高度和起始坐标（最中间的方块的坐标）时，构建一个3D的方块建筑。简单的删除方块也可以使用这个方法的思路实现，但是，但是设置方块的时候，记得把上面标注会提到的那行，设置为物品ID为0的方块(空气方块)。&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (玩家)修改背包  ==&lt;br /&gt;
&lt;br /&gt;
这个部分大部分讲的是修改玩家的背包。但是在某些情况下，修改箱子里的内容与此相同，当然得在你能找到获取箱子里内容的方法才可以。&amp;amp;nbsp;:P. 这是一个修改玩家背包的一个例子: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public void onPlayerJoin(PlayerJoinEvent evt) {&lt;br /&gt;
    Player player = evt.getPlayer(); // 当玩家加入游戏&lt;br /&gt;
    PlayerInventory inventory = player.getInventory(); // 获取玩家背包列表&lt;br /&gt;
    ItemStack itemstack = new ItemStack(Material.DIAMOND, 64); // 生成一组钻石&lt;br /&gt;
        &lt;br /&gt;
    if (inventory.contains(itemstack)) {&lt;br /&gt;
        inventory.addItem(itemstack); // 将一组钻石放到玩家的背包里&lt;br /&gt;
        player.sendMessage(&amp;quot;Wow！你看上去很土豪啊！&amp;quot;); //向玩家发送消息(&amp;quot;Wow！你看上去很土豪啊！&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
所以，上面代码里面的 onPlayerJoin 方法中，我们首先构建了一些变量，让我们的工作变得更容易一些。变量分别是： player, inventory and itemstack。 inventory 变量是玩家的背包内容，itemstack是那64个钻石的物品栈。然后我们判断了玩家是不是有一组钻石。如果有，我们就用inventory.addItem(itemstack)方法再给玩家一组钻石，并且给他发送一个消息“Wow！你看上去很土豪啊！”。 所以修改背包并不像我们想象的那么难，如果我们想实现让玩家进入游戏，检测到一组钻石后删掉这组钻石，只需要把代码里的inventory.addItem(itemstack)替换成inventory.remove(itemstack)。或许你还需要把“Wow！你看上去很土豪啊！”改成“Wow！你看上去好穷啊！”2333333。&lt;br /&gt;
&lt;br /&gt;
== 控制物品 ==&lt;br /&gt;
&lt;br /&gt;
当你需要写一个对物品们做出行为的代码时，你要使用ItemStack类来查阅有关那个栈的所有设置信息。&lt;br /&gt;
&lt;br /&gt;
=== 附魔属性 ===&lt;br /&gt;
&lt;br /&gt;
你想给一个物品附魔，你首先需要了解[http://www.minecraftwiki.net/wiki/Data_values Item Code]和[http://www.minecraftwiki.net/wiki/Talk:Enchanting#Effect_IDs Effect ID].  Enchantments他们自己不能例示(new Enchantment() won&#039;t work) 因为他们是抽象的。所以你必须要用一个EnchantmentWrapper。如果你想去附魔物品，还不想在默认的SMP里附魔，可以使用addEnchantment()里面的addUnsafeEnchantment()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
int itemCode = 280;  //use the item code you want here&lt;br /&gt;
int effectId = 20;  //use the enchantment code you want here&lt;br /&gt;
int enchantmentLevel = 100;&lt;br /&gt;
&lt;br /&gt;
ItemStack myItem = new ItemStack(itemCode);  //new item of item code&lt;br /&gt;
Enchantment myEnchantment = new EnchantmentWrapper(effectId);  //new enchantment of effect id&lt;br /&gt;
myItem.addEnchantment(myEnchantment, enchantmentLevel);  //给物品附魔&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ItemMeta ===&lt;br /&gt;
You can set the display name of an item by doing this.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
String myDisplayName = &amp;quot;Awesome Sword&amp;quot;; //这里是保存了你想要显示的名字&lt;br /&gt;
 &lt;br /&gt;
ItemStack myItem = new ItemStack(Material.DIAMOND_SWORD);  //你要更改的方块&lt;br /&gt;
ItemMeta im = myItem.getItemMeta(); //得到方块的元数据&lt;br /&gt;
im.setDisplayName(myDisplayName); //设置它显示的名字&lt;br /&gt;
myItem.setItemMeta(im); //保存更改&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
You can also set the lores of an item. The lores are the small annotations on an item, like &amp;quot;+5 attack damage&amp;quot; on a stone sword.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
List&amp;lt;String&amp;gt; lores = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
lores.add(&amp;quot;Example lore&amp;quot;, &amp;quot;this one comes on line 2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
ItemStack myItem = new ItemStack(Material.DIAMOND_SWORD);  //your item&lt;br /&gt;
ItemMeta im = myItem.getItemMeta(); //get the itemmeta of the item again&lt;br /&gt;
im.setLore(lores); //add the lores of course&lt;br /&gt;
myItem.setItemMeta(im); //give the item the new itemmeta&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maps, and Sets, and Lists, Oh My! &amp;lt;ref&amp;gt;标题中Map,Set,List均为Java类集中的接口，故不翻译&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
除了Map类和HashMap类，Java中还提供了其它的数据结构类集。 &lt;br /&gt;
&lt;br /&gt;
他们提供这些不同的类，是因为有些时候，使用Map类并不合适。&amp;lt;nowiki&amp;gt;[[Java data structure classes]]&amp;lt;/nowiki&amp;gt;在这个条目中，有对Java数据框架类集更深入的讲述。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;=== HashMaps概览以及如何使用此接口  ===&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;big&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;Keep in mind to never use a player in a hashmap!&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;下面有讲解。&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
应在HashMap中使用字符串.，使用 &amp;quot;p.getName()&amp;quot; 来添加，移除或是检查列表中是否含有某个玩家.&lt;br /&gt;
&lt;br /&gt;
将玩家当作object储存在HashMap中会造成大量内存泄漏.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When making a plugin you will get to a point where just using single variables to state an event has happened or a condition has been met will be insufficient, due to more than one player performing that action/event. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This was the problem I had with one of my old plugins, Zones, now improved and re-named to Regions. I was getting most of these errors because I didn&#039;t consider how the plugin would behave on an actual server with more than one on at any given time. I was using a single boolean variable to check whether players were in the region or not and obviously this wouldn&#039;t work as the values for each individual player need to be separate. So if one player was in a region and one was out the variable would constantly be changing which could/would/did cause numerous errors. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A HashMap is an excellent way of doing this. A HashMap is a way of mapping/assigning a value to a key. You could set up the HashMap so that the key is a player and the value could be anything you want, however the useful things with HashMaps is that one key can only contain one value and there can be no duplicate keys. So say for example I put &amp;quot;adam&amp;quot; as the key and assigned a value of &amp;quot;a&amp;quot; to it. That would work as intended, but then say afterwards I wanted to assign the value of &amp;quot;b&amp;quot; to key &amp;quot;adam&amp;quot; I would be able to and would get no errors but the value of &amp;quot;a&amp;quot; assigned to key &amp;quot;adam&amp;quot; in the HashMap would be overwritten because HashMaps cannot contain duplicate values. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==== Defining a HashMap  ====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public Map&amp;lt;KeyType, DataType&amp;gt; HashMapName = new HashMap&amp;lt;&amp;gt;(); //Example syntax&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Example Declaration&lt;br /&gt;
&lt;br /&gt;
public Map&amp;lt;String, Boolean&amp;gt; pluginEnabled = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
public Map&amp;lt;String, Boolean&amp;gt; isGodMode = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Keep that code in mind because we will be using it for the rest of the tutorial on HashMaps. So, for example lets create a simple function which will toggle whether the plugin has been enabled or not. Firstly, inside your on command function which I explained earlier you will need to create a function to send the player name to the function and adjust the players state accordingly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So inside on command you&#039;ll need this, the function name can be different but for the sake of simplicity it&#039;s best if you keep it the same. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;Player player = (Player) sender;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
togglePluginState(player);&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This code above will cast the value of sender to player and pass that argument to the function togglePluginState(). But now we need to create our togglePluginState() function. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public void togglePluginState(Player player) {&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    // Notice how we use the player name as the key here,&lt;br /&gt;
&lt;br /&gt;
    // not the player object&lt;br /&gt;
&lt;br /&gt;
    String playerName = player.getName();&lt;br /&gt;
&lt;br /&gt;
    if (pluginEnabled.containsKey(playerName)) {&lt;br /&gt;
&lt;br /&gt;
        if (pluginEnabled.get(playerName)) {&lt;br /&gt;
&lt;br /&gt;
            pluginEnabled.put(playerName, false);&lt;br /&gt;
&lt;br /&gt;
            player.sendMessage(&amp;quot;Plugin disabled&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        } else {&lt;br /&gt;
&lt;br /&gt;
            pluginEnabled.put(playerName, true);&lt;br /&gt;
&lt;br /&gt;
            player.sendMessage(&amp;quot;Plugin enabled&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
        pluginEnabled.put(playerName, true); //If you want plugin disabled by default change this value to false.&lt;br /&gt;
&lt;br /&gt;
        player.sendMessage(&amp;quot;Plugin enabled&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now, what this code is doing is checking if the HashMap first contains the key player, so if it has been put into the HashMap, if it is then we check the value of the HashMap key by get(player); if this is true then set value to false and send the player a message, else if the value is false then do the opposite, set the value to true and send a message again. But if the HashMap does not contain the key player then we can assume that this is their first run/use so we change the default value and add the player to the HashMap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==== More Ideas for HashMaps  ====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A HashMap (or really any kind of Map in Java) is an association. It allows quick and efficient lookup of some sort of &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;value&#039;&#039;&#039;, given a unique &#039;&#039;&#039;key&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;. Anywhere this happens in your code, a Map may be your solution. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a few other ideas which are ideally suited to using Maps. As you will see, it doesn&#039;t have to be data that you store per player, but can be any kind of data that needs to be &amp;quot;translated&amp;quot; from one form to another. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===== Data Value Lookups  =====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public Map&amp;lt;String, Integer&amp;gt; wool_colors = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Run this on plugin startup (ideally reading from a file instead of copied out row by row):&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;orange&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;magenta&amp;quot;, 2);&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;light blue&amp;quot;, 3);&lt;br /&gt;
&lt;br /&gt;
   ..&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;black&amp;quot;, 15);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Run this in response to user commands - turn &amp;quot;green&amp;quot; into 13&lt;br /&gt;
&lt;br /&gt;
int datavalue = 0;&lt;br /&gt;
&lt;br /&gt;
if (wool_colors.containsKey(argument)) {&lt;br /&gt;
&lt;br /&gt;
    datavalue = wool_colors.get(argument);&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
&lt;br /&gt;
    try { datavalue = Integer.parseInt(argument); }&lt;br /&gt;
&lt;br /&gt;
    catch (Exception e) {}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==== Saving/Loading a HashMap  ====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you know how to work with HashMaps, you probably want to know how to save and load the HashMap data. Saving and loading HashMap data is appropriate if &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;you don&#039;t want an administrator to edit the data manually&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;you need to save data in binary format (too complex to organize for YAML)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;you want to avoid parsing block names and/or other objects from freeform text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is very simple way how to save any HashMap. You can replace HashMap&amp;amp;amp;lt;String, Integer&amp;amp;amp;gt; with any type of HashMap you want. Let&#039;s take an example HashMap with code to save it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        HashMap&amp;lt;String, Integer&amp;gt; mapToSave = new HashMap&amp;lt;String,Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        public void save(HashMap&amp;lt;String, Integer&amp;gt; map, String path) {&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
&lt;br /&gt;
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));&lt;br /&gt;
&lt;br /&gt;
oos.writeObject(map);&lt;br /&gt;
&lt;br /&gt;
oos.flush();&lt;br /&gt;
&lt;br /&gt;
oos.close();&lt;br /&gt;
&lt;br /&gt;
//Handle I/O exceptions&lt;br /&gt;
&lt;br /&gt;
} catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
save(mapToSave, getDataFolder() + File.separator + &amp;quot;example.bin&amp;quot;);&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can see it&#039;s really easy. Loading works very very similar but we use ObjectInputStream instead of ObjectOutputStream ,FileInputStream instead of FileOutputStream,readObject() instead of writeObject() and we return the HashMap. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public HashMap&amp;lt;String, Integer&amp;gt; load(String path) {&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
&lt;br /&gt;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));&lt;br /&gt;
&lt;br /&gt;
Object result = ois.readObject();&lt;br /&gt;
&lt;br /&gt;
//you can feel free to cast result to HashMap&amp;lt;String, Integer&amp;gt; if you know there&#039;s that HashMap in the file&lt;br /&gt;
&lt;br /&gt;
return (HashMap&amp;lt;String, Integer&amp;gt;)result;&lt;br /&gt;
&lt;br /&gt;
} catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HashMap&amp;lt;Integer, String&amp;gt; loadedMap;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
String path = getDataFolder() + File.separator + &amp;quot;example.bin&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
File file = new File(path);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (file.exists()) { // check if file exists before loading to avoid errors!&lt;br /&gt;
&lt;br /&gt;
loadedMap  = load(path);&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You can use this &amp;quot;API&amp;quot; for saving/loading HashMaps, ArrayLists, and all Objects which implement Serializable or Externalizable interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;/** SLAPI = Saving/Loading API&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 * API for Saving and Loading Objects.&lt;br /&gt;
&lt;br /&gt;
 * Everyone has permission to include this code in their plugins as they wish :)&lt;br /&gt;
&lt;br /&gt;
 * @author Tomsik68&amp;lt;tomsik68@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class SLAPI&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
public static &amp;lt;T extends Object&amp;gt; void save(T obj,String path) throws Exception&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));&lt;br /&gt;
&lt;br /&gt;
oos.writeObject(obj);&lt;br /&gt;
&lt;br /&gt;
oos.flush();&lt;br /&gt;
&lt;br /&gt;
oos.close();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static &amp;lt;T extends Object&amp;gt; T load(String path) throws Exception&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));&lt;br /&gt;
&lt;br /&gt;
T result = (T)ois.readObject();&lt;br /&gt;
&lt;br /&gt;
ois.close();&lt;br /&gt;
&lt;br /&gt;
return result;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Example implementation of this API: &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;I&#039;m skipping some part of code in this source&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public class Example extends JavaPlugin {&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
private ArrayList&amp;lt;Object&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@Override&lt;br /&gt;
&lt;br /&gt;
public void onEnable() {&lt;br /&gt;
&lt;br /&gt;
            try {&lt;br /&gt;
&lt;br /&gt;
list = SLAPI.load(&amp;quot;example.bin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            } catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
                //handle the exception&lt;br /&gt;
&lt;br /&gt;
                e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@Override&lt;br /&gt;
&lt;br /&gt;
public void onDisable()	{&lt;br /&gt;
&lt;br /&gt;
            try {&lt;br /&gt;
&lt;br /&gt;
SLAPI.save(list,&amp;quot;example.bin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            } catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
                 e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note #1: This will work un-modified with almost all well-known Java types like Integer, String, HashMap. It will also work for some Bukkit types as well. If you&#039;re writing your own data object classes, and you may want to save their state using this technique, you should read about Java&#039;s Serializable or Externalizable interface. The only difference between Externalizable and Serializable is, that Serializable automatically takes all of class&#039;s fields and tries to serialize them, while Externalizable allows you to define method for reading and writing the Object. It&#039;s easy to add to your code, and it will make your data persistent with very little work required. No more parsing!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note #2: This API doesn&#039;t support changes. Once you change something in the class, data files saved with older version of your plugin won&#039;t load correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===== Tips &amp;amp; Examples =====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.) Simplify your save structure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Try to use as much simple types as possible. E.g. if you want to save player, save their UUID instead. If you want to save world, save its UUID. If you want to save location, save x,y,z world UUID. DO NOT DIRECTLY SAVE BUKKIT TYPES!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.) Save version number along with data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should always remember, that you don&#039;t know what you&#039;ll be saving in the same file tomorrow. Will you ever migrate this file because of newer version of your plugin, bukkit, or minecraft? You don&#039;t know!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.) Migrate older files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your plugin finds older version of some file, it should update the file accordingly and change version number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 元数据  ==&lt;br /&gt;
&lt;br /&gt;
Bukkit正在尝试尽可能的让制作插件变得更简单，所以带有一个键值例如Player, Entity, World，甚至是一个block的HashMaps都可以用元数据取缔掉。元数据是一些替代HashMap的方式。他可以允许你去自定义&amp;quot;fields&amp;quot;给Players, Entities, Worlds and Blocks.这些东西都是元数据类的一个成员(详见[http://jd.bukkit.org/doxygen/de/d59/interfaceorg_1_1bukkit_1_1metadata_1_1MetadataValue.html#ab49975fe013a0626dd29d3b85c63a82f])It works very simply. Everything that is Metadatable holds its own HashMap of Metadata which you have access to. That means, for example, if you&#039;re creating an economy plugin, you would need a HashMap of Player and Float or Double. 如果用了元数据，你不必去做! You just attach to player new metadata 值, and that&#039;s it!&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== 为何要去使用元数据  ===&lt;br /&gt;
&lt;br /&gt;
* Metadata is all handled by Bukkit, which makes it a very good alternative to HashMaps. &lt;br /&gt;
* 元数据可以用来跟其他插件分享信息与数据。&lt;br /&gt;
&lt;br /&gt;
=== 为什么不去使用元数据&amp;lt;br&amp;gt;  ===&lt;br /&gt;
&lt;br /&gt;
* Slightly more difficult to get the value.&lt;br /&gt;
* It is not saved on shutdown (but then again, neither are any Maps that you create).&lt;br /&gt;
&lt;br /&gt;
=== 获取 &amp;amp;amp; 设置元数据  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void setMetadata(Metadatable object, String key, Object value, Plugin plugin) {&lt;br /&gt;
  object.setMetadata(key, new FixedMetadataValue(plugin,value));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Object getMetadata(Metadatable object, String key, Plugin plugin) {&lt;br /&gt;
  List&amp;lt;MetadataValue&amp;gt; values = object.getMetadata(key);  &lt;br /&gt;
  for (MetadataValue value : values) {&lt;br /&gt;
     // Plugins are singleton objects, so using == is safe here&lt;br /&gt;
     if (value.getOwningPlugin() == plugin) {&lt;br /&gt;
        return value.value();&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
  return null;&lt;br /&gt;
}&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note: If you&#039;re manipulating with numbers, booleans or strings, use convenient method to get the result. For example, you can use asInt(), asString() or asBoolean() instead of value to find out the value.&lt;br /&gt;
&lt;br /&gt;
== Databases  ==&lt;br /&gt;
&lt;br /&gt;
Sometimes flat files aren&#039;t enough for what your looking to do, this is where databases come in. The most common database engines available on Linux/Mac/Windows machines typically run on some flavor of SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
Software offering SQL allow you to create databases with columns and header to identify to contents of each cell. Think of it as a spreadsheet on steroids, where every column you set up in your database can enforce rules to ensure integrity. Apart from being more organised than a simple custom data file, SQL provides faster access and better searching than flat files. &lt;br /&gt;
&lt;br /&gt;
The SQL standard helps applications like Bukkit implement database storage for their data in a consistent way. Unfortunately, there&#039;s more than one SQL-ready database engine, and each has minor differences in how to configure and use it. Which one you choose may depend on your particular needs. (Some plugins even offer configurable options to connect to multiple database engines!) &lt;br /&gt;
&lt;br /&gt;
=== SQLite  ===&lt;br /&gt;
&lt;br /&gt;
Alta189 has written a [http://forums.bukkit.org/threads/lib-tut-mysql-sqlite-bukkit-drivers.33849/ fantastic SQLite tutorial] which I suggest you watch if you&#039;re interested in using SQL in your plugins, included with the tutorials is a handy library you can download and import to make using SQL easier. Once you have watched these video tutorials I would suggest you go and learn some SQL syntax, it&#039;s very straightforward and shouldn&#039;t take you long to pick up. SQL Tutorials [http://www.w3schools.com/sql/default.asp @W3Schools] and [http://www.1keydata.com/sql/sql.html @1Keydata]. &lt;br /&gt;
&lt;br /&gt;
SQLite is great for very simple databases, because there&#039;s no server concerns to set up. Just make a few calls to create a new database and table. It&#039;s easy to back up: just copy the whole database file in one go. SQLite is a little bit weaker at data integrity, flexibility in data types, and it may not be something you would want to trust for huge databases of millions of rows. But for a new plugin in development, it&#039;s often easiest and fastest to get the SQL basics squared away with SQLite, even if you &amp;quot;graduate&amp;quot; to a more server-class database engine later.&lt;br /&gt;
&lt;br /&gt;
=== MySQL  ===&lt;br /&gt;
&lt;br /&gt;
Another popular SQL database engine is called MySQL. It is closer to server-grade than SQLite, where many popular companies or websites depend on it for millions of webpage hits every day. With that security comes a little bit steeper learning-curve, because MySQL has more tunable parameters and capabilities. &lt;br /&gt;
&lt;br /&gt;
The coding for plugins accessing MySQL is mostly the same as tiny SQLite or mega-sized Oracle, with only small differences in syntax here or there. But the administration has room to grow. You may want to set up accounts and privileges inside your MySQL setup. You may want to set up SQL scripts that organize your backups and rollback to previous states. &lt;br /&gt;
&lt;br /&gt;
== 部署你的插件  ==&lt;br /&gt;
&lt;br /&gt;
 总之你写好的你的插件,如何把它变成一个可安装在服务端的jar文件呢?&lt;br /&gt;
 &lt;br /&gt;
 首先我们需要建立一个水桶服务器。 [http://wiki.bukkit.org/Setting_up_a_server 在这里] 能找到开服相关信息.接下来你需要把插件导出为一个.jar文件，&lt;br /&gt;
 &lt;br /&gt;
 这样你就能在你的服务器里运行它。 在Eclipse里, 右键工程，点击&#039;&#039;Run as &amp;gt; Maven install&#039;&#039;即可:&lt;br /&gt;
&lt;br /&gt;
[[Image:Maveninstall.png]]&lt;br /&gt;
&lt;br /&gt;
 将来呢, 当你对插件进行了改动后,在做上述操作之前，如果你想删除之前的.jar文件，你可以右键工程，点击 &#039;&#039;Run as &amp;gt; Maven clean&#039;&#039; 。 &lt;br /&gt;
 &lt;br /&gt;
 如果你在编译插件时遇到了问题,  请检查你的JDK是否正确安装， 并浏览[[建立工作区]]条目。&lt;br /&gt;
 &lt;br /&gt;
 如果你在Eclipse控制台看到了和JDK有关的错误，你可能需要手动调整JDK,因为Eclipse的检测可能发生了错误。 &lt;br /&gt;
 &lt;br /&gt;
 点击&#039;&#039;Window -&amp;gt; Preferences&#039;&#039;, 然后是&#039;&#039;Java -&amp;gt; Installed JREs&#039;&#039;。选中你最近安装的JDK作为Java运行环境（JRE）并添加, 并取消掉原来那个报错的JDK:&lt;br /&gt;
&lt;br /&gt;
[[Image:Jrelocation.png]]&lt;br /&gt;
&lt;br /&gt;
 如果你的工程成功被编译,JAR文件会生产在 &#039;&#039;target&#039;&#039; 目录下，具体在Eclipse的工作空间里名字为工程名的文件夹中。&lt;br /&gt;
 &lt;br /&gt;
 这个JAR文件就是一个能正常工作的Bukkit插件了。当然前提是你的plugin.yml里没出差错。&lt;br /&gt;
 &lt;br /&gt;
 你可以把这个jar文件丢到服务器的plugins文件夹里,重载或重启服务器,就可以测试你的新插件啦。&lt;br /&gt;
 &lt;br /&gt;
 为了连接上使用你自己的电脑开的服务器 ,在多人游戏的ip里填上你的本地ip即可。&lt;br /&gt;
 &lt;br /&gt;
 如果出现了错误而你又不能解决的话, 试试这里[http://forums.bukkit.org/forums/plugin-development.5/ plugin development forum], &lt;br /&gt;
 &lt;br /&gt;
 在这里提问[http://wiki.bukkit.org/IRC bukkitdev IRC channel],或者重新阅读wiki。&lt;br /&gt;
 &lt;br /&gt;
 当你做完了一个实用的插件,可以考虑把它发表在这里[http://dev.bukkit.org/ dev.bukkit]（为了Bukkit社区的访问量）。&lt;br /&gt;
 &lt;br /&gt;
 以上可知,JAR格式是默认压缩生成的(JAR文件基于ZIP文件的格式)。这么说来，在上传插件到Bukkit上时把JAR文件压缩成ZIP只会增加文件体积罢了。&lt;br /&gt;
 &lt;br /&gt;
 而且呢, 放在JAR中的config文件可以在检测不到插件目录（插件自动生成的文件夹，名字与插件名相同，里面是该插件的配置）下的config文件时自动生成。&lt;br /&gt;
 &lt;br /&gt;
 所以我们一般不把jar文件转换成其他格式。&lt;br /&gt;
&lt;br /&gt;
== 导入其它插件 ==&lt;br /&gt;
你可能会希望编辑其它那些有源代码的插件. 如果插件在它的目录下有&#039;&#039;pom.xml&#039;&#039;(大多数知名插件,例如WorldEdit和Essentials都有),你可以通过点击&#039;&#039;File -&amp;gt; Import&#039;&#039;来把它作为一个工程导入, 然后打开&#039;&#039;Maven&#039;&#039;项并选择&#039;&#039;Existing Maven Projects&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Importmaven.png]]&lt;br /&gt;
&lt;br /&gt;
然后选择&#039;&#039;pom.xml&#039;&#039;所在的目录,这个工程就应该出现在你的侧边栏里了。就像平常一样编辑并编译它吧。&lt;br /&gt;
&lt;br /&gt;
== 小贴士  ==&lt;br /&gt;
&lt;br /&gt;
=== 使玩家着火 ===&lt;br /&gt;
&lt;br /&gt;
 Bukkit API有很多碉堡的功能。以下是实现一些功能的代码片段。 &lt;br /&gt;
&lt;br /&gt;
下面的代码运行一个玩家使另一个玩家着火。通过类似于&#039;&#039;&#039;/ignite Notch&#039;&#039;&#039;这样的指令，这个指令会让 Notch 着火。&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     // 使用 equalsIgnoreCase() 来忽视大小写&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;ignite&amp;quot;)) {&lt;br /&gt;
         // 确保玩家只输入了一个自变量(要被点着的玩家名).&lt;br /&gt;
         if (args.length != 1) {&lt;br /&gt;
             // 当return false时，该指令的使用信息会显示出来。&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         // 确保命令发出者是个玩家.&lt;br /&gt;
         if (!(sender instanceof Player)) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Only players can set other players on fire.&amp;quot;);&lt;br /&gt;
             sender.sendMessage(&amp;quot;This is an arbitrary requirement for demonstration purposes only.&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         // 获取那个要被点着的玩家. 请注意下标起始是0，不是1.&lt;br /&gt;
         Player target = Bukkit.getServer().getPlayer(args[0]);&lt;br /&gt;
 &lt;br /&gt;
         // 确保这个玩家在线。&lt;br /&gt;
         if (target == null) {&lt;br /&gt;
             sender.sendMessage(args[0] + &amp;quot; is not currently online.&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         // 让这个玩家着火1000 ticks (一秒钟大概有20ticks,所以总共是50秒).&lt;br /&gt;
         target.setFireTicks(1000);&lt;br /&gt;
         return true;&lt;br /&gt;
     }&lt;br /&gt;
     return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 干掉玩家  ===&lt;br /&gt;
&lt;br /&gt;
 和标题一样.这里是要干掉某个玩家。 &lt;br /&gt;
&lt;br /&gt;
在你的onCommand方法里使用这个: &lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;KillPlayer&amp;quot;)) {&lt;br /&gt;
         Player target = sender.getServer().getPlayer(args[0]);&lt;br /&gt;
          // 确保玩家在线.&lt;br /&gt;
         if (target == null) {&lt;br /&gt;
             sender.sendMessage(args[0] + &amp;quot; is not currently online.&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
         target.setHealth(0); &lt;br /&gt;
     }&lt;br /&gt;
     return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
这里有个小扩展,会使用一个爆炸来杀死玩家: &lt;br /&gt;
&lt;br /&gt;
 float explosionPower = 4F; //爆炸等级 - TNT的爆炸等级默认是4F&lt;br /&gt;
 Player target = sender.getWorld().getPlayer(args[0]);&lt;br /&gt;
 target.getWorld().createExplosion(target.getLocation(), explosionPower);&lt;br /&gt;
 target.setHealth(0);&lt;br /&gt;
&lt;br /&gt;
=== 创造一个假爆炸  ===&lt;br /&gt;
&lt;br /&gt;
这段代码会生产一个看起来和听起来与TNT/苦力怕产生的爆炸一样的效果。但是不会对实体和方块产生破坏。 在保留爆炸的艺术的同时又削弱了爆炸的威力，真是太有用了（&lt;br /&gt;
 @EventHandler&lt;br /&gt;
 public void onExplosionPrime(ExplosionPrimeEvent event) {	&lt;br /&gt;
     Entity entity = event.getEntity();&lt;br /&gt;
 &lt;br /&gt;
     // 如果事件和点燃的TNT有关,执行一些代码（又略）&lt;br /&gt;
     if (entity instanceof TNTPrimed) {&lt;br /&gt;
         entity.getWorld().createExplosion(entity.getLocation(), 0);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 使一个玩家对另外一个玩家隐形  ===&lt;br /&gt;
&lt;br /&gt;
 通过输入指令，能让指令执行者对特定的玩家隐形。 然而其他人仍然能看到指令执行者。&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;HideMe&amp;quot;) &amp;amp;&amp;amp; args.length == 1) {&lt;br /&gt;
         if (!(sender instanceof Player)) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Only players can use this command!&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
         // 检测指令执行者是玩家后，我们便可以安全的进行强制转换类操作。&lt;br /&gt;
        Player s = (Player) sender;&lt;br /&gt;
 &lt;br /&gt;
        // 获取命令执行者指定的玩家&lt;br /&gt;
        Player target = Bukkit.getServer().getPlayer(args[0]);&lt;br /&gt;
        if (target == null) {&lt;br /&gt;
            sender.sendMessage(&amp;quot;Player &amp;quot; + args[0] + &amp;quot; is not online.&amp;quot;);&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        // 将 s 从 target 的视野中隐藏起来.&lt;br /&gt;
        target.hidePlayer(s);&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 在玩家准星所指处生产闪电 ===&lt;br /&gt;
&lt;br /&gt;
如下代码运行手持鱼竿的玩家通过点击来生成闪电 (当然要用准星瞄准)。 真是个简单好玩的恶作剧（。&lt;br /&gt;
&lt;br /&gt;
 @EventHandler&lt;br /&gt;
 public void onPlayerInteractBlock(PlayerInteractEvent event) {&lt;br /&gt;
     Player player = event.getPlayer();&lt;br /&gt;
     if (player.getItemInHand().getType() == Material.FISHING_ROD) {&lt;br /&gt;
         // 在给定坐标中生成一道闪电. 在本例中, 这个坐标是玩家准星瞄准的地方.&lt;br /&gt;
         // 只能指向200格以内的坐标.&lt;br /&gt;
         player.getWorld().strikeLightning(player.getTargetBlock(null, 200).getLocation());&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 自动格式 ===&lt;br /&gt;
&lt;br /&gt;
 Eclipse提供了将你的代码自动转成Oracle规定的格式, 修正了不符合常规的缩进, 空格等等。 在侧边栏选中你的项目,然后选择&#039;&#039;Source -&amp;gt; Format&#039;&#039;即可对其进行更改。&lt;br /&gt;
&lt;br /&gt;
== 插件需求专区  ==&lt;br /&gt;
&lt;br /&gt;
http://forums.bukkit.org/forums/plugin-requests.13/&lt;br /&gt;
&lt;br /&gt;
== 范例文件和样板  ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/Bukkit/SamplePlugin/ Bukkit/SamplePlugin on GitHub]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/wpeTPx7N Example.Java]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/MTwaAVCT ExamplePlayerListener.Java]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/6FLixfH3 ExampleBlockListener.Java]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/8UZ6pkWC ExampleEntityListener.Java]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have any more questions on this matter, don&#039;t hesitate to visit the BukkitDev [[IRC]] channel and ask!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:开发教程]]&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Bukkit/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=1414</id>
		<title>Bukkit/插件开发教程</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Bukkit/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B&amp;diff=1414"/>
		<updated>2015-09-03T12:26:21Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* Scheduling Tasks and Background Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{模板:待翻译}}&lt;br /&gt;
{{模板:待完善}}&lt;br /&gt;
本页面英文原文内容来源 [http://wiki.bukkit.org/Plugin_Tutorial]&lt;br /&gt;
== 介绍  ==&lt;br /&gt;
&lt;br /&gt;
这篇内容丰富的教程旨在帮助你学会如何开发Bukkit插件.这一篇教程不可能完全涉及到Bukkit中所有的可能性,而是最基本的一般概述. 前提是你懂得Java这门语言,并在IDE中设置好你的工作区,此教程介绍了大多数Bukkit插件所必需的语法结构.&lt;br /&gt;
&lt;br /&gt;
== 学习Java  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;理解这些教程需要具备Java这门编程语言的基本知识.&#039;&#039;&#039;如果你刚开始学习Java或者需要重温一下相关知识，下面有一个并不完整的网站列表可供参考.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[http://docs.oracle.com/javase/tutorial/ Oracle&#039;s Java Tutorials]&amp;lt;/big&amp;gt; - 官方教程&lt;br /&gt;
*[http://www.java2s.com/Tutorial/Java/CatalogJava.htm Java2s.com] - 教程&lt;br /&gt;
*[http://www.javacoffeebreak.com/java101/java101.html Java 101] - 教程&lt;br /&gt;
*[http://math.hws.edu/javanotes/ JavaNotes] - 免费的在线教科书&lt;br /&gt;
*[http://thenewboston.org/list.php?cat=31 TheNewBoston] - 视频教程.&lt;br /&gt;
&lt;br /&gt;
== 开发环境  ==&lt;br /&gt;
&lt;br /&gt;
在编写一个插件前 (或学习Java前) 你需要配置一个开发者环境，这个包括但不限于安装IDE (Integrated Development Environment，集成开发环境)。接下来的教程中有关于Eclipse上IDE的操作指南。&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;更多信息，请参见 [[Bukkit/插件开发教程-建立工作区|建立工作区]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
你&#039;&#039;&#039;必须&#039;&#039;&#039;下载&#039;&#039;&#039;Java&#039;&#039;&#039;开发者使用的Eclipse构建版本, &#039;&#039;&#039;不是&#039;&#039;&#039; &#039;&#039;&#039;Java EE&#039;&#039;&#039;开发者的版本。 Java EE 开发者的版本不包含此教程需要的Maven支持。&lt;br /&gt;
&lt;br /&gt;
== 新建插件开发项目  ==&lt;br /&gt;
=== 创建一个新的项目 ===&lt;br /&gt;
&lt;br /&gt;
在开始工作之前，你需要先在Eclipse中配置好工作区和文件. 打开Eclipse,然后依次点击&#039;&#039;File -&amp;gt; New -&amp;gt; Project:&#039;&#039;来创建一个新的项目.&lt;br /&gt;
&lt;br /&gt;
[[Image:Newproject.png]] &lt;br /&gt;
&lt;br /&gt;
现在,打开&#039;&#039;Maven&#039;&#039;文件夹, 然后选择&#039;&#039;Maven Project&#039;&#039;.点击next,之后在下一个菜单中选择&#039;&#039;Create a simple project&#039;&#039;, 再次点击&#039;&#039;Next&#039;&#039;:&lt;br /&gt;
如果你看不到&#039;&#039;Maven&#039;&#039;文件夹, 那么你需要[http://eclipse.org/m2e/download/ 下载m2eclipse]&lt;br /&gt;
&lt;br /&gt;
[[Image:Newproject2.png]] &lt;br /&gt;
&lt;br /&gt;
现在，你需要给你的组用户命名，就像下面这样:&lt;br /&gt;
* 如果你拥有一个域名，package则填写逆转的域名地址. &lt;br /&gt;
** 例如: i-am-a-bukkit-developer.com 你的package地址即是com.i_am_a_bukkit_developer [http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html source]&lt;br /&gt;
** 避免使用一个不属于你自己的域名.&lt;br /&gt;
* 没有域名? 这里有几种方法可供选择。&lt;br /&gt;
*# 在资源管理站点创建一个用户，比如GitHub或是sourceforge&lt;br /&gt;
*#* 对于使用GitHub的用户, 请参照[http://pages.github.com/ 这里的说明] 之后你将获得一个子域名,所以你的package地址是io.github.&amp;lt;username&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
*# 使用你的邮箱.  例如: &amp;lt;username&amp;gt;@gmail.com格式的邮箱应输入com.gmail.&amp;lt;username&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
*# 最不济的方法.：  使用独特的组名命名方式，这应当是你最后的解决方法。&lt;br /&gt;
&lt;br /&gt;
以下几个地址不能作为package中的地址前缀:&lt;br /&gt;
* org.bukkit&lt;br /&gt;
* net.bukkit&lt;br /&gt;
* com.bukkit&lt;br /&gt;
* net.minecraft&lt;br /&gt;
&lt;br /&gt;
完成基础的组名以后，你需要在最后加上插件的名称. 在这里用 GitHub页面作为讲解的实例.  如果你创建了一个名为 &#039;&#039;TestPlugin&#039;&#039;的插件，那么完整的组名是&#039;&#039;io.github.&amp;lt;username&amp;gt;&#039;&#039;, 你的工程名也是 &#039;&#039;TestPlugin&#039;&#039;. 至于版本，默认即可，稍后可以修改。&lt;br /&gt;
完成向导:&lt;br /&gt;
&lt;br /&gt;
[[Image:Newproject3.png]] &lt;br /&gt;
&lt;br /&gt;
如果这是你首次使用Eclipse, 点击右上角的&amp;quot;X&amp;quot; 来关闭Welcome提示页面. 现在，你的窗口视图看起来就像下面的图片这样:&lt;br /&gt;
&lt;br /&gt;
[[Image:Eclipsemain.png]] &lt;br /&gt;
&lt;br /&gt;
点击工程名称右边的箭头来进行下一步，现在我们正式开始。&lt;br /&gt;
=== 添加Bukkit API ===&lt;br /&gt;
&lt;br /&gt;
在开发插件之前，你需要添加 Bukkit API库文件到你的项目，作为一个dependency, 你也可以添加其他你想实用的API.&lt;br /&gt;
&lt;br /&gt;
找到项目文件夹中部的&#039;&#039;pom.xml&#039;&#039;并双击进行编辑. 点击&#039;&#039;pom.xml&#039;&#039;中部的 tab,你将会看到下图所示内容:&lt;br /&gt;
&lt;br /&gt;
[[Image:Pomeditor.png]]&lt;br /&gt;
&lt;br /&gt;
如果你想使用Java 6以上版本的语言特性,你需要指定搭建项目的Java版本.复制并粘贴以下内容(设定项目只能使用Java 7及以下的版本)到 &#039;&#039;&amp;lt;/project&amp;gt;&#039;&#039;之前: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;build&amp;gt;&lt;br /&gt;
       &amp;lt;plugins&amp;gt;&lt;br /&gt;
           &amp;lt;plugin&amp;gt;&lt;br /&gt;
               &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;
               &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
               &amp;lt;configuration&amp;gt;&lt;br /&gt;
                   &amp;lt;nowiki&amp;gt;&amp;amp;lt;&amp;lt;/nowiki&amp;gt;source&amp;gt;1.7&amp;lt;/source&amp;gt;&lt;br /&gt;
                   &amp;lt;target&amp;gt;1.7&amp;lt;/target&amp;gt;&lt;br /&gt;
               &amp;lt;/configuration&amp;gt;&lt;br /&gt;
           &amp;lt;/plugin&amp;gt;&lt;br /&gt;
       &amp;lt;/plugins&amp;gt;&lt;br /&gt;
    &amp;lt;/build&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
你或许想使用其他版本,例如 &amp;lt;code&amp;gt;1.8&amp;lt;/code&amp;gt; 使用Java 8. 请注意 [http://mcstats.org/global/ 根据MCStats数据统计], 大多数服主选择了Java 7, 所以使用Java 8会使许多服务器无法运行你的插件. 如果你使用Java 1.7的特性, Eclipse将会在报错代码&amp;quot;error&amp;quot;中建议你更改语言版本.同意即可.&lt;br /&gt;
&lt;br /&gt;
在位于代码中段的&#039;&#039;&amp;lt;/project&amp;gt;&#039;&#039;之前粘贴以下内容(这段代码告诉Eclipse关于Bukkit&#039;s repository的地址): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;repositories&amp;gt;&lt;br /&gt;
        &amp;lt;repository&amp;gt;&lt;br /&gt;
            &amp;lt;id&amp;gt;bukkit-repo&amp;lt;/id&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;http://repo.bukkit.org/content/groups/public/&amp;lt;/url&amp;gt;&lt;br /&gt;
        &amp;lt;/repository&amp;gt;&lt;br /&gt;
    &amp;lt;/repositories&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后继续在 &#039;&#039;&amp;lt;/project&amp;gt;&#039;&#039;前粘贴以下内容 (这段代码告诉Eclipse搭建插件的Bukkit版本): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;dependencies&amp;gt;&lt;br /&gt;
        &amp;lt;dependency&amp;gt;&lt;br /&gt;
            &amp;lt;groupId&amp;gt;org.bukkit&amp;lt;/groupId&amp;gt;&lt;br /&gt;
            &amp;lt;artifactId&amp;gt;bukkit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
            &amp;lt;version&amp;gt;1.7.2-R0.3&amp;lt;/version&amp;gt;&lt;br /&gt;
            &amp;lt;type&amp;gt;jar&amp;lt;/type&amp;gt;&lt;br /&gt;
            &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;br /&gt;
        &amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
你也可以修改这里的Bukkit版本.你可以在[http://repo.bukkit.org/content/groups/public/org/bukkit/bukkit/ here]这里通过查看 maven-metadata.xml文件下的版本列表来获取可用的服务端版本号.&lt;br /&gt;
&lt;br /&gt;
当你完成上述步骤后,&#039;&#039;pom.xml&#039;&#039;中的内容应该是这样:&lt;br /&gt;
&lt;br /&gt;
[[Image:Finishedpom.png]]&lt;br /&gt;
&lt;br /&gt;
通过菜单 &#039;&#039;File -&amp;gt; Save&#039;&#039;或者按住 &amp;lt;code&amp;gt;Ctrl + S&amp;lt;/code&amp;gt; 来保存&#039;&#039;pom.xml&#039;&#039;文件 .  之后, 右键项目标题，然后依次选择 &#039;&#039;Maven -&amp;gt; Update Project&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Bukkit Java文档 ===&lt;br /&gt;
&lt;br /&gt;
 如果你曾经使用过Eclipse和Java，你会知道当你将鼠标准心移至class或者 method中的代码部分时，一个含有相关文档内容的黄色小框会弹出来. 这就是（Java的）Java文档。&lt;br /&gt;
 &lt;br /&gt;
 你可以[http://download.oracle.com/javase/6/docs/api/ Oracle website 在线获取]它.。Bukkit同样拥有文档，这些文档内容包含了关于API中method和class的有用描述。&lt;br /&gt;
 &lt;br /&gt;
 你可以在[http://jd.bukkit.org/ 这]找到它 (Beta版的Java文档在[http://jd.bukkit.org/ 这]找, 新开发出来的Java文档在  &lt;br /&gt;
 &lt;br /&gt;
 [http://jd.bukkit.org/ 这]) 。为了在Eclipse里使用Java文档,这样的话当你的鼠标停留在Bukkit的class和method上时，&lt;br /&gt;
 &lt;br /&gt;
 （Bukkit的）Java文档就会冒出来。  &lt;br /&gt;
JavaDoc in spigot [https://hub.spigotmc.org/javadocs/bukkit/ Click Here]&lt;br /&gt;
&lt;br /&gt;
 首先右键在侧边栏里的&amp;quot;Maven Dependencies&amp;quot;下面的Bukkit jar,选择&amp;quot;Properties&amp;quot;.选中窗口左边的&#039;&#039;Javadoc Location&#039;&#039;, 并粘贴如下网址 &lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;http://jd.bukkit.org/&#039;&#039;&#039; (或者上面的测试版/最新版 Java文档链接也好) 到&amp;quot;Javadoc URL&amp;quot;下面的输入框内. 就像这样: &lt;br /&gt;
&lt;br /&gt;
[[Image:Bukkitjavadocs.png]] &lt;br /&gt;
&lt;br /&gt;
 点击 &amp;quot;Validate&amp;quot;,然后再点击&amp;quot;OK&amp;quot;就完成了.现在Bukkit Javadocs已经连接到Bukkit提供的资源,同时你也可以通过Eclipse来获得帮助类文档信息了.&lt;br /&gt;
&lt;br /&gt;
=== 创建一个包 ===&lt;br /&gt;
&lt;br /&gt;
 现在你需要创建一个包，它将储存所有我们需要使用的Java类文件. 右键展开&#039;&#039;src/main/java&#039;&#039;折叠并选择 &#039;&#039;New &amp;amp;gt; Package&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
[[Image:Newpackage.png]] &lt;br /&gt;
&lt;br /&gt;
 包名的话，先写上你的组名，然后加个点，再写上你的小写Artifact ID。举例, 如果你的组名是&#039;&#039;io.github.name&#039;&#039;，你的artifact名是 &#039;&#039;TestPlugin&#039;&#039;。&lt;br /&gt;
 &lt;br /&gt;
 你的包名就应该是&#039;&#039;io.github.name.testplugin&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 创建插件的类文件 ===&lt;br /&gt;
&lt;br /&gt;
既然我们已经建立好了我们的项目，我们接下来可以开始添加类文件以及制作插件了. 插件的主类指的是拓展(extends)JavaPlugin的类文件. 在你的插件中只能有一个类文件拓展JavaPlugin，无论直接还是间接. 先创建你的主类文件并保持名称与插件名一致是个很好的习惯.右键你之前新建的包,并选择&amp;amp;nbsp; &#039;&#039;New &amp;amp;gt; Class&#039;&#039;.你将会创建一个新的类文件，就像下面这样&lt;br /&gt;
&lt;br /&gt;
 package {$GroupName}.{$ArtifactName};&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
 &lt;br /&gt;
 public final class {$ArtifactName} extends JavaPlugin {&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
警告： 插件绝对不应该调用自己的构造函数并实例化&lt;br /&gt;
&lt;br /&gt;
=== 创建plugin.yml ===&lt;br /&gt;
&lt;br /&gt;
你已经创建了项目和主类，如果你想要Bukkit能够加载你的插件，你还必须创建 &#039;&#039;&#039;[[Plugin YAML|plugin.yml]]&#039;&#039;&#039; 文件. 这个文件包含有基础的插件信息，如果缺失这个文件，你的插件也将会失效. 此时你需要右键&#039;&#039;src/main/resources&#039;&#039;. 选择&#039;&#039;New &amp;amp;gt; File&#039;&#039;. 命名为&amp;quot;&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;&amp;quot; 并右键完成新文件的创建.Eclipse会打开默认的文本编辑窗口来显示&#039;&#039;&#039;plugin.yml&#039;&#039;&#039;文件中空白的内容并提供编辑. &#039;&#039;(Hint:&amp;amp;nbsp;如果你想要使得你的工作空间更加规整，关闭文本编辑器并将&#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件拖到主工作空间(拖到文件目录的右边) 之后你就可以在eclipse中编辑文件了.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
有三个基础的内容需要在plugin.yml写明. &lt;br /&gt;
: name:  插件名称. &lt;br /&gt;
: main: [http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.7 插件主类的完整，合法名称] . &lt;br /&gt;
: version: 插件当前版本号. &lt;br /&gt;
&lt;br /&gt;
最简单的 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件内就像这样&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
 name: {插件名称}&lt;br /&gt;
 main: {包名}.{主类}&lt;br /&gt;
 version: {版本号}&lt;br /&gt;
&lt;br /&gt;
 PS:插件的包名经常会包括插件的名称，所以看到这个的时候不要感到惊讶。&lt;br /&gt;
    你的主类是否是你的插件名取决于你之前的命名方式，时刻记住这一点很重要。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;更多例子&#039;&#039;&#039;, 请看[[#Example_Files_and_Templates]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
此时你的插件已经可以被Bukkit加载了,同时服务端日志也会开始记录你的插件. 不过它现在什么用都没有!&lt;br /&gt;
&lt;br /&gt;
== onEnable()和onDisable()方法  ==&lt;br /&gt;
&lt;br /&gt;
这些方法将在插件启用与卸载时生效. 默认情况下，你的插件在被加载时会调用这些方法，所以你可以在这里注册你需要用到的事件和提供一些调试信息. &amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt; 方法会在插件启用时被调用, 需要包含初始化插件的逻辑语句. &amp;lt;code&amp;gt;onDisable()&amp;lt;/code&amp;gt; 方法会在插件卸载时被调用，需要包含清理(clean up)插件的逻辑语句和连接声明(associated state)。此外，插件可以重写 &amp;lt;code&amp;gt;onLoad()&amp;lt;/code&amp;gt; 方法来在插件载入时执行附加的逻辑语句。&lt;br /&gt;
&lt;br /&gt;
=== onEnable()和onDisable()方法介绍  ===&lt;br /&gt;
&lt;br /&gt;
在前面的章节中，我们在主类创建了&amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;onDisable()&amp;lt;/code&amp;gt; 方法. 此时，这些代码看起来就像下面这样&lt;br /&gt;
&lt;br /&gt;
 package {$TopLevelDomain}.{$Domain}.{$PluginName};&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
 &lt;br /&gt;
 public final class {$PluginName} extends JavaPlugin {&lt;br /&gt;
     @Override&lt;br /&gt;
     public void onEnable() {&lt;br /&gt;
         // 插件载入时要执行的代码（略）&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     @Override&lt;br /&gt;
     public void onDisable() {&lt;br /&gt;
         // 插件卸载时要执行的代码（略）&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
这些方法已经创建，但目前它们还没有任何作用.&lt;br /&gt;
注意: 不需要添加代码来实现输出信息&amp;quot;{$PluginName} has been enabled!&amp;quot; ，因为bukkit会自动输出此类信息&lt;br /&gt;
有关更多事件的信息请查看 [[Event_API_Reference|这里]].&lt;br /&gt;
&lt;br /&gt;
=== 发送提示信息 ===&lt;br /&gt;
&lt;br /&gt;
 插件能够输出信息至控制台与服务器日志。这是通过调用插件记录器里正确的方法来实现的。首先我们必须调用 &amp;lt;code&amp;gt;getLogger()&amp;lt;/code&amp;gt; 方法来检索该插件的记录器，&lt;br /&gt;
 &lt;br /&gt;
 然后我们就可以开始记录信息了。&lt;br /&gt;
&lt;br /&gt;
我们通过调用&amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt;方法可以实现输出信息。 我们需要在&amp;lt;code&amp;gt;onEnable()&amp;lt;/code&amp;gt;方法下面插入如下代码：&lt;br /&gt;
&lt;br /&gt;
 getLogger().info(&amp;quot;onEnable has been invoked!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
在 &amp;lt;code&amp;gt;&#039;&#039;&#039;onDisable()&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法里面，你也可以做类似的事情，不过要改改输出信息。&lt;br /&gt;
&lt;br /&gt;
此时你的主类文件就像这样: &lt;br /&gt;
&lt;br /&gt;
 package {$TopLevelDomain}.{$Domain}.{$PluginName};&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.plugin.java.JavaPlugin;&lt;br /&gt;
 &lt;br /&gt;
 public final class {$PluginName} extends JavaPlugin {&lt;br /&gt;
         @Override&lt;br /&gt;
         public void onEnable() {&lt;br /&gt;
             getLogger().info(&amp;quot;onEnable has been invoked!&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         @Override&lt;br /&gt;
         public void onDisable() {&lt;br /&gt;
         getLogger().info(&amp;quot;onDisable has been invoked!&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 防止重载后插件失效 ===&lt;br /&gt;
&lt;br /&gt;
你需要知道的是，插件并不只会伴随服务器关闭、启动而重载，你的插件也可能会被其他插件启用、关闭，或是在服务器运行时使用/reload命令. &lt;br /&gt;
假设服务器启动之后一会儿后，你的插件才被启用，这时便是危险的,因为服务器中可能已经有玩家在线、额外的世界被加载以及很多预想不到的不同之处(与&amp;quot;插件同服务器同时加载&amp;quot;的情况相比较). &lt;br /&gt;
&lt;br /&gt;
举个例子来说:&lt;br /&gt;
* 你有一个用来储存HashMap中的玩家登入信息的插件&lt;br /&gt;
* 你希望该信息对所有玩家都可见&lt;br /&gt;
* 一名管理员使用/reload命令&lt;br /&gt;
* 你的插件被卸载，所有储存的数据都丢失了&lt;br /&gt;
* 你的插件被再次启用时，一些玩家已经在线&lt;br /&gt;
* 这些玩家在HashMap并没有储存的信息&lt;br /&gt;
* 你试图重新获得他们的信息，但是失败了!&lt;br /&gt;
&lt;br /&gt;
为了插件重载以后能够正常工作, 你需要在插件启用时加载所有已经在线的玩家的信息并将之储存在HashMap中.&lt;br /&gt;
&lt;br /&gt;
 for (Player player : Bukkit.getServer().getOnlinePlayers()) {&lt;br /&gt;
     playerList.put(player.getName(), playerData(player));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 监听器  ==&lt;br /&gt;
监听器是一种方法被调用来对事件作出反应的类.所有的监听器使用 org.bukkit.event.Listener接口.更多有关监听器创建的细节,&lt;br /&gt;
:: &#039;&#039; 请查看: [[Event API Reference]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 指令  ==&lt;br /&gt;
&lt;br /&gt;
=== onCommand() 方法  ===&lt;br /&gt;
&lt;br /&gt;
 现在你已经知道如何注册一个事件并做出响应,但是如果你只是想要在命令输入之后做出响应呢? 你可以使用 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法.&lt;br /&gt;
 &lt;br /&gt;
 这个代码的作用是当玩家输入“/”时，监听该操作并执行相关语句&amp;quot;/&amp;quot; . 举个例子来说.输入 &amp;quot;/do something&amp;quot; 将会执行 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法.&lt;br /&gt;
 &lt;br /&gt;
 此种情况下，因为没有特定的行为被编程，所以并不会发生任何事情。&lt;br /&gt;
&lt;br /&gt;
 请避免使用和bukkit所提供的指令重名的指令, 然后深思你的指令名的唯一性。 &lt;br /&gt;
 &lt;br /&gt;
 例如.指令&amp;quot;give&amp;quot;已经被好几个插件使用了, 如果你执行了另外一个&amp;quot;give&amp;quot;指令, 你的插件将会和这些插件冲突。&lt;br /&gt;
&lt;br /&gt;
 你必须在插件的&amp;quot;plugins.yml&amp;quot;注册你的指令 否则这个方法将不会被触发。&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法必须返回一个布尔值（true或false）。 &lt;br /&gt;
 &lt;br /&gt;
 如果返回值是true，你不会看到什么明显的事情发生。 &lt;br /&gt;
 &lt;br /&gt;
 但如果返回值是false，则会返回你的plugin.yml里的&#039;usage:property&#039;然后发送给命令使用者. &lt;br /&gt;
&lt;br /&gt;
当使用 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法时, 你需要填写4个参数. &lt;br /&gt;
&lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender sender&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 发送命令的对象&lt;br /&gt;
 &lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;Command cmd&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 被执行的指令&lt;br /&gt;
 &lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;String commandLabel&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 被执行指令的别名&lt;br /&gt;
 &lt;br /&gt;
 *&amp;lt;code&amp;gt;&#039;&#039;&#039;String[] args&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 该指令的自变量数组。&lt;br /&gt;
 &lt;br /&gt;
例如.指令 &#039;&#039;/hello abc def&#039;&#039; 中， &#039;&#039;abc&#039;&#039; 会被存放进args[0]中, &#039;&#039;def&#039;&#039; 被存放进args[1]中。&lt;br /&gt;
&lt;br /&gt;
==== 设置命令  ====&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;basic&amp;quot;)) { // 如果玩家输入了/basic则执行如下内容...&lt;br /&gt;
     // 所需要执行的事（此处略）&lt;br /&gt;
         return true;&lt;br /&gt;
     } //如果以上内容成功执行，则返回true &lt;br /&gt;
     // 如果执行失败，则返回false.&lt;br /&gt;
     return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 每当使用&amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法时， 在每个方法后面都加上一个 return false; 是一个惯例。 &lt;br /&gt;
 &lt;br /&gt;
 返回false会显示在plugin.yml里设置的usage信息 (看下面). 用这种方法的话，一旦执行出错便会显示usage信息。&lt;br /&gt;
&lt;br /&gt;
 每当方法return一个值的时候，这个方法就会退出，所以return true的时候，在它下面的代码就会被跳过, &lt;br /&gt;
 &lt;br /&gt;
 除非return语句在一个if的嵌套中，或者类似的嵌套情况。 &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;&#039;.equalsIgnoreCase(&amp;quot;basic&amp;quot;)&#039;&#039;&#039;&amp;lt;/code&amp;gt;代表忽略英文大小写. 在这种情况下,字符串&amp;quot;BAsIc&amp;quot; 和 &amp;quot;BasiC&amp;quot;和 basic相同，代码会被照常执行。&lt;br /&gt;
&lt;br /&gt;
和以前一样，加两行import在你的java文件头&lt;br /&gt;
&lt;br /&gt;
 import org.bukkit.command.Command;&lt;br /&gt;
 &lt;br /&gt;
 import org.bukkit.command.CommandSender;&lt;br /&gt;
&lt;br /&gt;
=== 在Plugin.yml中添加你的指令  ===&lt;br /&gt;
&lt;br /&gt;
你需要添加你的指令到 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039; 文件里. 如下是指令/basic添加到 &#039;&#039;&#039;plugin.yml&#039;&#039;&#039;的例子（请在plugins.yml的末尾添加如下代码）: &lt;br /&gt;
&lt;br /&gt;
commands:&lt;br /&gt;
   basic:&lt;br /&gt;
      description: This is a demo command.&lt;br /&gt;
      usage: /&amp;lt;command&amp;gt; [player]&lt;br /&gt;
      permission: &amp;lt;plugin name&amp;gt;.basic&lt;br /&gt;
      permission-message: You don&#039;t have &amp;lt;permission&amp;gt;&amp;lt;/source&amp;gt; &amp;lt;/code&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;basic&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 指令名称&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;description&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 指令描述&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;usage&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 在oncommand方法return false后显示的用法提示。尽量简洁, 使别人能够理解指令是什么以及如何使用它。&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;permission&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 被一些显示帮助信息的插件使用，用来决定向玩家显示哪个指令（完全不对劲吧！）。&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;&#039;&#039;&#039;permission-message&#039;&#039;&#039;&amp;lt;/code&amp;gt; - 当玩家使用了这个指令而没有权限时输出的信息。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 PS:yml文件使用两个空格作为制表符,使用tab键输入制表符会导致错误。&lt;br /&gt;
&lt;br /&gt;
===控制台指令vs玩家指令===&lt;br /&gt;
&lt;br /&gt;
 你可能注意到了上文的&amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender sender&#039;&#039;&#039;&amp;lt;/code&amp;gt;参数. &amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender&#039;&#039;&#039;&amp;lt;/code&amp;gt; 是个Bukkit接口，&lt;br /&gt;
 &lt;br /&gt;
 它有两个（对插件编写者）有用的子类：&amp;lt;code&amp;gt;&#039;&#039;&#039;Player&#039;&#039;&#039;&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;&#039;&#039;&#039;ConsoleCommandSender&#039;&#039;&#039;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
 所以当你编写插件的时候, 确定这个指令从控制台发出后能完全正常工作是十分必要的,&lt;br /&gt;
 &lt;br /&gt;
 那些只能由在线玩家执行的指令 &#039;&#039;只能&#039;&#039; 由一个在线玩家执行。&lt;br /&gt;
 &lt;br /&gt;
 有的插件在判断命令执 行对象不是玩家时仅仅用return进行处理 (比如当有人从控制台发出指令), &lt;br /&gt;
 &lt;br /&gt;
 即便这些指令能够在控制台完美运行（比如改变天气的指令）。&lt;br /&gt;
&lt;br /&gt;
一个判断sender的方法: &lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         if (cmd.getName().equalsIgnoreCase(&amp;quot;basic&amp;quot;)) { //如果玩家输入了/basic则执行如下内容...&lt;br /&gt;
             // 所需要执行的事（此处略）&lt;br /&gt;
             return true;&lt;br /&gt;
         } else if (cmd.getName().equalsIgnoreCase(&amp;quot;basic2&amp;quot;)) {&lt;br /&gt;
             if (!(sender instanceof Player)) { //如果sender与Player类不匹配&lt;br /&gt;
                 sender.sendMessage(&amp;quot;This command can only be run by a player.&amp;quot;);&lt;br /&gt;
             } else {&lt;br /&gt;
                 Player player = (Player) sender;&lt;br /&gt;
                    // 所需要执行的事（此处略）&lt;br /&gt;
             }&lt;br /&gt;
                 return true;&lt;br /&gt;
         }&lt;br /&gt;
         return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 在这个例子里，指令&#039;&#039;&#039;basic&#039;&#039;&#039;能由任何人发出 - 一个在线的玩家, 或者服务器后台的op. &lt;br /&gt;
 &lt;br /&gt;
 但是指令&#039;&#039;&#039;basic2&#039;&#039;&#039;只能由一个在线的玩家发出. &lt;br /&gt;
&lt;br /&gt;
 大体上说,你应该允许尽可能多的指令在控制台和玩家聊天框里都正常执行. &lt;br /&gt;
 &lt;br /&gt;
 需要在线玩家执行的指令可以使用以上例子中的机制来检测&amp;lt;code&amp;gt;&#039;&#039;&#039;CommandSender&#039;&#039;&#039;&amp;lt;/code&amp;gt;是一个玩家. &lt;br /&gt;
 &lt;br /&gt;
 很多指令广泛依靠于一些玩家的属性（例如可以被tp或被给予物品等等）。&lt;br /&gt;
&lt;br /&gt;
 如果你想更进一步, 你可以对你的指令的自变量做一些额外的检测， 例如传送指令在提供玩家ID的情况下（也只有在这种情况下）可以在控制台被执行。&lt;br /&gt;
&lt;br /&gt;
=== 使用独立的 CommandExecutor class  ===&lt;br /&gt;
&lt;br /&gt;
 以上的例子必须把 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand()&#039;&#039;&#039;&amp;lt;/code&amp;gt; 方法放在插件的主类里。&lt;br /&gt;
 &lt;br /&gt;
 对于小插件来说，这是极好的,但如果你要写一个大点的插件,把你的 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand()&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法放在独立的类里将会很有意义。&lt;br /&gt;
 &lt;br /&gt;
 幸运的是，这并不难: &lt;br /&gt;
&lt;br /&gt;
*在你的包里创建一个新类. 命名为&#039;&#039;&#039;MyPluginCommandExecutor&#039;&#039;&#039;之类的 (当然，要把&#039;&#039;&#039;MyPlugin&#039;&#039;&#039;替换成你制作的插件的名字)。 这个类 &#039;&#039;&#039;必须&#039;&#039;&#039; 继承Bukkit 的&#039;&#039;&#039;CommandExecutor&#039;&#039;&#039;接口。&lt;br /&gt;
&lt;br /&gt;
*在你的插件的&amp;lt;code&amp;gt;&#039;&#039;&#039;onEnable()&#039;&#039;&#039;&amp;lt;/code&amp;gt;方法中,你需要实例化你创建的命令执行类(CommandExecutor class), 然后做一个像下面一样的调用：&amp;lt;code&amp;gt;getCommand(&amp;quot;basic&amp;quot;).setExecutor(myExecutor);&amp;lt;/code&amp;gt;&lt;br /&gt;
 其中&amp;quot;basic&amp;quot;是我们需要操控的指令, &amp;lt;code&amp;gt;myExecutor&amp;lt;/code&amp;gt; 是我们创建的实例.&lt;br /&gt;
&lt;br /&gt;
废话少说直接吔我例子: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MyPlugin.java&#039;&#039;&#039; (插件的主类): &lt;br /&gt;
 @Override&lt;br /&gt;
 public void onEnable() {&lt;br /&gt;
         // 如果你没有在plugins.yml注册过指令的话，此处会抛出空指针异常！&lt;br /&gt;
         this.getCommand(&amp;quot;basic&amp;quot;).setExecutor(new MyPluginCommandExecutor(this));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;MyPluginCommandExecutor.java&#039;&#039;&#039;（独立CommandExecutor类）: &lt;br /&gt;
 public class MyPluginCommandExecutor implements CommandExecutor {&lt;br /&gt;
         private final MyPlugin plugin;&lt;br /&gt;
 &lt;br /&gt;
         public MyPluginCommandExecutor(MyPlugin plugin) {&lt;br /&gt;
             this.plugin = plugin; // Store the plugin in situations where you need it.&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         @Override&lt;br /&gt;
         public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
             // 和以前一样执行就好…&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 请注意我们是如何把主类里的对象指向&#039;&#039;&#039;MyPluginCommandExecutor&#039;&#039;&#039;的. 这允许我们轻易的使用主类对象的方法（如果我们需要的话）。&lt;br /&gt;
&lt;br /&gt;
 这么做的话, 我们便能更好的组织代码 - 如果 &amp;lt;code&amp;gt;&#039;&#039;&#039;onCommand()&#039;&#039;&#039;&amp;lt;/code&amp;gt; 方法又大又复杂, 它就能被划分为子类，从而不使插件的主类显得凌乱。&lt;br /&gt;
&lt;br /&gt;
 PS：如果你的插件含有多个指令的话, 你需要为每一个指令单独设立一个commandexecutor.&lt;br /&gt;
&lt;br /&gt;
=== 写一个安全的指令 ===&lt;br /&gt;
 当写一个指令的时候,别进行任何假设（很重要）, 例如假设执行者一定是个玩家. 请牢记以下原则:&lt;br /&gt;
&lt;br /&gt;
==== 在命令执行前确定发出者是玩家 ====&lt;br /&gt;
&lt;br /&gt;
使用简单的例子来进行检测:&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         if (sender instanceof Player) {&lt;br /&gt;
             Player player = (Player) sender;&lt;br /&gt;
             // do something&lt;br /&gt;
         } else {&lt;br /&gt;
             sender.sendMessage(&amp;quot;You must be a player!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
             // do something&lt;br /&gt;
         return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== 检测自变量个数 ====&lt;br /&gt;
&lt;br /&gt;
 别老是认为玩家都能打对正确数量的自变量. &lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         if (args.length &amp;gt; 4) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Too many arguments!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         } &lt;br /&gt;
         if (args.length &amp;lt; 2) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Not enough arguments!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== 在获取玩家之前先检测他们是否在线 ====&lt;br /&gt;
&lt;br /&gt;
 有时你想通过命令发出者打出的ID来获取其他玩家，请确保他们在线再说！&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
         Player target = (Bukkit.getServer().getPlayer(args[0]));&lt;br /&gt;
         if (target == null) {&lt;br /&gt;
             sender.sendMessage(args[0] + &amp;quot; is not online!&amp;quot;);&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
         return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 如果你想对离线玩家进行操作，&amp;lt;code&amp;gt;&#039;&#039;&#039;OfflinePlayer&#039;&#039;&#039;&amp;lt;/code&amp;gt;类提供了基础操作的方法.&lt;br /&gt;
&lt;br /&gt;
== 插件的配置/设置  ==&lt;br /&gt;
Bukkit API 为插件提供了一种简便的方法，用来管理用户自定义的设置。同时，通过这种方法也可以储存数据。&lt;br /&gt;
:: &#039;&#039;详情请查看: [[Configuration API Reference]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 权限  ==&lt;br /&gt;
&lt;br /&gt;
利用新的Bukkit API来设置权限是再容易不过的事情. 检测玩家是否拥有权限，可以使用以下代码: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;if (player.hasPermission(&amp;quot;some.pointless.permission&amp;quot;)) {&lt;br /&gt;
   //执行此段代码(有权限)&lt;br /&gt;
} else {&lt;br /&gt;
   //执行此段代码(无权限)&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
你也可以检测一个权限节点是否被定义过，(等效于 Java 语言中的&#039;&#039;&#039;null&#039;&#039;&#039;)，使用下面的方法: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;boolean isPermissionSet(String name)&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
你或许对此抱有疑惑:为什么这段代码中没有任何用户群的信息？因为它们并不是必需的. 之前这段代码想要实现的主要功能之一就是根据用户群格式化聊天信息. 但其实使用权限就可以很容易地完成这项工作.你可以在聊天插件的配置文件中定义权限与前缀的对应关系. 举例来说，&amp;quot;someChat.prefix.admin&amp;quot; 权限可以对应前缀[Admin].当拥有此权限的玩家发出聊天信息时 ，聊天前缀便是[Admin]. &lt;br /&gt;
&lt;br /&gt;
另一个想要实现的主要功能则是给所有拥有权限的在线用户发一条信息.你可以这样做: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;for (Player player: Bukkit.getServer().getOnlinePlayers()) {&lt;br /&gt;
    if (player.hasPermission(&amp;quot;send.receive.message&amp;quot;)) {&lt;br /&gt;
        player.sendMessage(&amp;quot;You were sent a message&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
看到这里你可能会问，若是没有权限组我该如何配置玩家的 [[权限]] ？既然 [[Bukkit]] API 本身并没有提供用户组的预设, 你必须通过安装一款权限组插件，像 [[permissionsBukkit]]  这样的插件来帮助你配置用户群. &#039;&#039;&#039;API 只是提供接口而不是提供已实现的类.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== 配置权限 ===&lt;br /&gt;
{{Hide|标题=译者注 |内容= 其一，以下代码中部分内容将以&#039;&#039;//文字&#039;&#039;翻译，使用时请不要加入其中内容，仅做教程中的翻译参考；&lt;br /&gt;
其二，default:true在下面翻译为全员默认拥有该权限，default:false则翻译为全员默认没有该权限，请注意理解。 }}&lt;br /&gt;
如果你想要更多地控制你的权限，例如设置权限的默认值或是子权限节点，不如将权限节点加入你的 &#039;&#039;[[plugin.yml]]&#039;&#039;文件.这并不是必须的，但我们推荐你这样做. 下面是一个实例，显示了当你将权限添加在&#039;&#039;plugin.yml&#039;&#039;文件末尾时的样子: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;permissions:&lt;br /&gt;
    doorman.*:&lt;br /&gt;
        description: Gives access to all doorman commands //给予使用doorman所有命令的权限&lt;br /&gt;
        children:  //子权限节点&lt;br /&gt;
            doorman.kick: true&lt;br /&gt;
            doorman.ban: true&lt;br /&gt;
            doorman.knock: true&lt;br /&gt;
            doorman.denied: false&lt;br /&gt;
    doorman.kick:&lt;br /&gt;
        description: Allows you to kick a user  //允许你踢出一名用户&lt;br /&gt;
        default: op  //OP默认拥有该权限&lt;br /&gt;
    doorman.ban:&lt;br /&gt;
        description: Allows you to ban a user  //允许你封禁一名用户&lt;br /&gt;
        default: op //OP默认拥有该权限&lt;br /&gt;
    doorman.knock:&lt;br /&gt;
        description: Knocks on the door! //敲门&lt;br /&gt;
        default: true //全员默认拥有该权限&lt;br /&gt;
    doorman.denied:&lt;br /&gt;
        description: Prevents this user from entering the door  //禁止拥有该权限节点的用户进入门内&amp;lt;/source&amp;gt; &amp;lt;/code&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
值得注意的是,你的插件使用的每个权限都被定义为 &#039;&#039;permissions&#039;&#039; 这个节点的子权限节点. 每个权限都能够拥有一个描述，默认值以及子权限节点。&lt;br /&gt;
==== 默认值  ====&lt;br /&gt;
&lt;br /&gt;
当一个权限没有明确是否为玩家所拥有&amp;amp;nbsp;，&#039;&#039;hasPermission&#039;&#039;&amp;lt;ref&amp;gt;这是一个检测玩家是否拥有指定权限节点的方法&amp;lt;/ref&amp;gt;&amp;amp;nbsp;将返回false&amp;lt;ref&amp;gt;该方法返回的boolean值&amp;lt;/ref&amp;gt;. 在你的[[plugin.yml]] you can change this by setting the default node to be one of four values: &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;true&#039;&#039;&#039; - 全员默认拥有该权限. &lt;br /&gt;
*&#039;&#039;&#039;false&#039;&#039;&#039; - 全员默认没有该权限. &lt;br /&gt;
*&#039;&#039;&#039;op&#039;&#039;&#039; - 如果玩家是一名OP&amp;lt;ref&amp;gt;Operator，服务器管理员&amp;lt;/ref&amp;gt;，那么他将拥有该权限. &lt;br /&gt;
*&#039;&#039;&#039;not op&#039;&#039;&#039; - 如果玩家不是一名OP，那么他将拥有该权限.&lt;br /&gt;
&lt;br /&gt;
==== 子权限  ====&lt;br /&gt;
&lt;br /&gt;
在这之前你可能已经习惯了通过权限节点自动分配所有的子权限&amp;lt;ref&amp;gt;原句:Before now you will probably be used to the * permission to automatically assign all sub permissions.此处的sub permissions应是同上文“你的插件使用的每个权限都被定义为 permissions 这个节点的子权限节点.”相照应&amp;lt;/ref&amp;gt;. 现在这种方法已经随着bukkit API&amp;lt;ref&amp;gt;应用程序编程接口(Application Programming Interface)&amp;lt;/ref&amp;gt;的更新而改变，现在你可以自己定义子权限了. 这将使得插件具有更多的灵活性. 下面是一个例子: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;permissions:&lt;br /&gt;
    doorman.*:&lt;br /&gt;
        description: Gives access to all doorman commands  //翻译见上&lt;br /&gt;
        children:&lt;br /&gt;
            doorman.kick: true&lt;br /&gt;
            doorman.ban: true&lt;br /&gt;
            doorman.knock: true&lt;br /&gt;
            doorman.denied: false&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
在这里，&#039;&#039;doorman.*&#039;&#039; 权限拥有几个子权限并分配在其下. 子权限工作的方式就是当&#039;&#039;doorman.*&#039;&#039; 权限节点被设置为true时,子权限也会随之设置为 &#039;&#039;plugin.yml&#039;&#039;中的默认值. 然而当&#039;&#039;doorman.*&#039;&#039; 被设置为false时，所有子权限都会设置为与默认值相反的值（true-&amp;gt;false,false-&amp;gt;true）.&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 设置你自己的权限  ===&lt;br /&gt;
&lt;br /&gt;
如果你希望想知道更多有关开发你自己的权限插件的事情(即是设置权限的管理类插件) ，那么请前往查看教程&amp;amp;nbsp;[[Developing a permissions plugin]].&lt;br /&gt;
&lt;br /&gt;
== 计划任务与后台任务  ==&lt;br /&gt;
&lt;br /&gt;
目前, Minecraft服务器都使用一个线程进行所有逻辑操作, 所以每个发生在游戏中的逻辑运算必须要很短. 如果处理不好的话, 复杂的代码可能会导致你的服务器逻辑运算有极大的延迟和滞后. &lt;br /&gt;
&lt;br /&gt;
幸运的是, Bukkit has support for scheduling code in your plugin. You can submit a Runnable task to occur once in the future, or on a recurring basis, or you can spin off a whole new independent thread that can perform lengthy tasks in parallel with the game logic. &lt;br /&gt;
&lt;br /&gt;
There is a separate [[Scheduler Programming]] tutorial which introduces the Scheduler, and gives more information on using it to schedule synchronous tasks, and on kicking off asynchronous tasks in Bukkit.&lt;br /&gt;
&lt;br /&gt;
== 方块操控&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
这是一个很容易的方法创建、获取或修改一个方块, 例如当你想要修改往你头上数第五格的方块时, 首先你需要做的是获取你当前的坐标点, 然后往你当前的坐标点的Y轴加上五, 获取目标方块后我们便能够很容易地修改它了, 例子如下:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
@EventHandler&lt;br /&gt;
public void onPlayerMove(PlayerMoveEvent event) {&lt;br /&gt;
    // 得到玩家当前的坐标.&lt;br /&gt;
    Location loc = event.getPlayer().getLocation();&lt;br /&gt;
    // 设置目标坐标为玩家头顶 5 格处.&lt;br /&gt;
    loc.setY(loc.getY() + 5);&lt;br /&gt;
    // 得到目标坐标的方块&lt;br /&gt;
    Block b = loc.getBlock();&lt;br /&gt;
    // 将目标坐标的方块更改为石头 (stone).&lt;br /&gt;
    b.setType(Material.STONE);&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
上面的代码获取了玩家的所在位置，获取头上的第五个方块，并且放上一个石头（stone）。 Note that once you have a &amp;lt;code&amp;gt;Block&amp;lt;/code&amp;gt;, there are other things you can do besides set its type. 你可以查阅JavaDoc获取更多的东西。&lt;br /&gt;
&lt;br /&gt;
你可以用这样相似的观念去生成一些建筑，并且还可以用编程的方式通过算法生成一些独特的方块（这里指由很多个方块拼在一起的四四方方的方块）。比如，去生成一个实心的方块建筑，你可能在生成建筑的时候还需要用到&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;循环，去一遍遍循环来生成这些建筑，填满这些建筑等。&lt;br /&gt;
下面，是一个在指定坐标生成一个实心的方块建筑的实例方法：&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void generateCube(Location loc, int length) {&lt;br /&gt;
    // 放置这个方块最中间的方块并且获取这个方块的坐标。&lt;br /&gt;
    // Uses getBlockN() instead of getN() to avoid casting to an int later.&lt;br /&gt;
    int x1 = loc.getBlockX(); &lt;br /&gt;
    int y1 = loc.getBlockY();&lt;br /&gt;
    int z1 = loc.getBlockZ();&lt;br /&gt;
&lt;br /&gt;
    // Figure out the opposite corner of the cube by taking the corner and adding length to all coordinates.&lt;br /&gt;
    int x2 = x1 + length;&lt;br /&gt;
    int y2 = y1 + length;&lt;br /&gt;
    int z2 = z1 + length;&lt;br /&gt;
&lt;br /&gt;
    World world = loc.getWorld();&lt;br /&gt;
&lt;br /&gt;
    // Loop over the cube in the x dimension.&lt;br /&gt;
    for (int xPoint = x1; xPoint &amp;lt;= x2; xPoint++) { &lt;br /&gt;
        // Loop over the cube in the y dimension.&lt;br /&gt;
        for (int yPoint = y1; yPoint &amp;lt;= y2; yPoint++) {&lt;br /&gt;
            // Loop over the cube in the z dimension.&lt;br /&gt;
            for (int zPoint = z1; zPoint &amp;lt;= z2; zPoint++) {&lt;br /&gt;
                // Get the block that we are currently looping over.&lt;br /&gt;
                Block currentBlock = world.getBlockAt(xPoint, yPoint, zPoint);&lt;br /&gt;
                // 设置方块ID为57号(钻石块!)&lt;br /&gt;
                currentBlock.setType(Material.DIAMOND_BLOCK); //这里下面会提到&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
这个方法将会在程序给予这个方法高度和起始坐标（最中间的方块的坐标）时，构建一个3D的方块建筑。简单的删除方块也可以使用这个方法的思路实现，但是，但是设置方块的时候，记得把上面标注会提到的那行，设置为物品ID为0的方块(空气方块)。&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (玩家)修改背包  ==&lt;br /&gt;
&lt;br /&gt;
这个部分大部分讲的是修改玩家的背包。但是在某些情况下，修改箱子里的内容与此相同，当然得在你能找到获取箱子里内容的方法才可以。&amp;amp;nbsp;:P. 这是一个修改玩家背包的一个例子: &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public void onPlayerJoin(PlayerJoinEvent evt) {&lt;br /&gt;
    Player player = evt.getPlayer(); // 当玩家加入游戏&lt;br /&gt;
    PlayerInventory inventory = player.getInventory(); // 获取玩家背包列表&lt;br /&gt;
    ItemStack itemstack = new ItemStack(Material.DIAMOND, 64); // 生成一组钻石&lt;br /&gt;
        &lt;br /&gt;
    if (inventory.contains(itemstack)) {&lt;br /&gt;
        inventory.addItem(itemstack); // 将一组钻石放到玩家的背包里&lt;br /&gt;
        player.sendMessage(&amp;quot;Wow！你看上去很土豪啊！&amp;quot;); //向玩家发送消息(&amp;quot;Wow！你看上去很土豪啊！&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt; &amp;lt;/blockquote&amp;gt; &lt;br /&gt;
所以，上面代码里面的 onPlayerJoin 方法中，我们首先构建了一些变量，让我们的工作变得更容易一些。变量分别是： player, inventory and itemstack。 inventory 变量是玩家的背包内容，itemstack是那64个钻石的物品栈。然后我们判断了玩家是不是有一组钻石。如果有，我们就用inventory.addItem(itemstack)方法再给玩家一组钻石，并且给他发送一个消息“Wow！你看上去很土豪啊！”。 所以修改背包并不像我们想象的那么难，如果我们想实现让玩家进入游戏，检测到一组钻石后删掉这组钻石，只需要把代码里的inventory.addItem(itemstack)替换成inventory.remove(itemstack)。或许你还需要把“Wow！你看上去很土豪啊！”改成“Wow！你看上去好穷啊！”2333333。&lt;br /&gt;
&lt;br /&gt;
== 控制物品 ==&lt;br /&gt;
&lt;br /&gt;
当你需要写一个对物品们做出行为的代码时，你要使用ItemStack类来查阅有关那个栈的所有设置信息。&lt;br /&gt;
&lt;br /&gt;
=== 附魔属性 ===&lt;br /&gt;
&lt;br /&gt;
你想给一个物品附魔，你首先需要了解[http://www.minecraftwiki.net/wiki/Data_values Item Code]和[http://www.minecraftwiki.net/wiki/Talk:Enchanting#Effect_IDs Effect ID].  Enchantments他们自己不能例示(new Enchantment() won&#039;t work) 因为他们是抽象的。所以你必须要用一个EnchantmentWrapper。如果你想去附魔物品，还不想在默认的SMP里附魔，可以使用addEnchantment()里面的addUnsafeEnchantment()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
int itemCode = 280;  //use the item code you want here&lt;br /&gt;
int effectId = 20;  //use the enchantment code you want here&lt;br /&gt;
int enchantmentLevel = 100;&lt;br /&gt;
&lt;br /&gt;
ItemStack myItem = new ItemStack(itemCode);  //new item of item code&lt;br /&gt;
Enchantment myEnchantment = new EnchantmentWrapper(effectId);  //new enchantment of effect id&lt;br /&gt;
myItem.addEnchantment(myEnchantment, enchantmentLevel);  //给物品附魔&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ItemMeta ===&lt;br /&gt;
You can set the display name of an item by doing this.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
String myDisplayName = &amp;quot;Awesome Sword&amp;quot;; //这里是保存了你想要显示的名字&lt;br /&gt;
 &lt;br /&gt;
ItemStack myItem = new ItemStack(Material.DIAMOND_SWORD);  //你要更改的方块&lt;br /&gt;
ItemMeta im = myItem.getItemMeta(); //得到方块的元数据&lt;br /&gt;
im.setDisplayName(myDisplayName); //设置它显示的名字&lt;br /&gt;
myItem.setItemMeta(im); //保存更改&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
You can also set the lores of an item. The lores are the small annotations on an item, like &amp;quot;+5 attack damage&amp;quot; on a stone sword.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
List&amp;lt;String&amp;gt; lores = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
lores.add(&amp;quot;Example lore&amp;quot;, &amp;quot;this one comes on line 2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
ItemStack myItem = new ItemStack(Material.DIAMOND_SWORD);  //your item&lt;br /&gt;
ItemMeta im = myItem.getItemMeta(); //get the itemmeta of the item again&lt;br /&gt;
im.setLore(lores); //add the lores of course&lt;br /&gt;
myItem.setItemMeta(im); //give the item the new itemmeta&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maps, and Sets, and Lists, Oh My! &amp;lt;ref&amp;gt;标题中Map,Set,List均为Java类集中的接口，故不翻译&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
除了Map类和HashMap类，Java中还提供了其它的数据结构类集。 &lt;br /&gt;
&lt;br /&gt;
他们提供这些不同的类，是因为有些时候，使用Map类并不合适。&amp;lt;nowiki&amp;gt;[[Java data structure classes]]&amp;lt;/nowiki&amp;gt;在这个条目中，有对Java数据框架类集更深入的讲述。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;=== HashMaps概览以及如何使用此接口  ===&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;big&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;Keep in mind to never use a player in a hashmap!&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;下面有讲解。&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
应在HashMap中使用字符串.，使用 &amp;quot;p.getName()&amp;quot; 来添加，移除或是检查列表中是否含有某个玩家.&lt;br /&gt;
&lt;br /&gt;
将玩家当作object储存在HashMap中会造成大量内存泄漏.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When making a plugin you will get to a point where just using single variables to state an event has happened or a condition has been met will be insufficient, due to more than one player performing that action/event. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This was the problem I had with one of my old plugins, Zones, now improved and re-named to Regions. I was getting most of these errors because I didn&#039;t consider how the plugin would behave on an actual server with more than one on at any given time. I was using a single boolean variable to check whether players were in the region or not and obviously this wouldn&#039;t work as the values for each individual player need to be separate. So if one player was in a region and one was out the variable would constantly be changing which could/would/did cause numerous errors. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A HashMap is an excellent way of doing this. A HashMap is a way of mapping/assigning a value to a key. You could set up the HashMap so that the key is a player and the value could be anything you want, however the useful things with HashMaps is that one key can only contain one value and there can be no duplicate keys. So say for example I put &amp;quot;adam&amp;quot; as the key and assigned a value of &amp;quot;a&amp;quot; to it. That would work as intended, but then say afterwards I wanted to assign the value of &amp;quot;b&amp;quot; to key &amp;quot;adam&amp;quot; I would be able to and would get no errors but the value of &amp;quot;a&amp;quot; assigned to key &amp;quot;adam&amp;quot; in the HashMap would be overwritten because HashMaps cannot contain duplicate values. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==== Defining a HashMap  ====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public Map&amp;lt;KeyType, DataType&amp;gt; HashMapName = new HashMap&amp;lt;&amp;gt;(); //Example syntax&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Example Declaration&lt;br /&gt;
&lt;br /&gt;
public Map&amp;lt;String, Boolean&amp;gt; pluginEnabled = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
public Map&amp;lt;String, Boolean&amp;gt; isGodMode = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Keep that code in mind because we will be using it for the rest of the tutorial on HashMaps. So, for example lets create a simple function which will toggle whether the plugin has been enabled or not. Firstly, inside your on command function which I explained earlier you will need to create a function to send the player name to the function and adjust the players state accordingly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So inside on command you&#039;ll need this, the function name can be different but for the sake of simplicity it&#039;s best if you keep it the same. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;Player player = (Player) sender;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
togglePluginState(player);&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This code above will cast the value of sender to player and pass that argument to the function togglePluginState(). But now we need to create our togglePluginState() function. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public void togglePluginState(Player player) {&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    // Notice how we use the player name as the key here,&lt;br /&gt;
&lt;br /&gt;
    // not the player object&lt;br /&gt;
&lt;br /&gt;
    String playerName = player.getName();&lt;br /&gt;
&lt;br /&gt;
    if (pluginEnabled.containsKey(playerName)) {&lt;br /&gt;
&lt;br /&gt;
        if (pluginEnabled.get(playerName)) {&lt;br /&gt;
&lt;br /&gt;
            pluginEnabled.put(playerName, false);&lt;br /&gt;
&lt;br /&gt;
            player.sendMessage(&amp;quot;Plugin disabled&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        } else {&lt;br /&gt;
&lt;br /&gt;
            pluginEnabled.put(playerName, true);&lt;br /&gt;
&lt;br /&gt;
            player.sendMessage(&amp;quot;Plugin enabled&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
        pluginEnabled.put(playerName, true); //If you want plugin disabled by default change this value to false.&lt;br /&gt;
&lt;br /&gt;
        player.sendMessage(&amp;quot;Plugin enabled&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now, what this code is doing is checking if the HashMap first contains the key player, so if it has been put into the HashMap, if it is then we check the value of the HashMap key by get(player); if this is true then set value to false and send the player a message, else if the value is false then do the opposite, set the value to true and send a message again. But if the HashMap does not contain the key player then we can assume that this is their first run/use so we change the default value and add the player to the HashMap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==== More Ideas for HashMaps  ====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A HashMap (or really any kind of Map in Java) is an association. It allows quick and efficient lookup of some sort of &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;value&#039;&#039;&#039;, given a unique &#039;&#039;&#039;key&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;. Anywhere this happens in your code, a Map may be your solution. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a few other ideas which are ideally suited to using Maps. As you will see, it doesn&#039;t have to be data that you store per player, but can be any kind of data that needs to be &amp;quot;translated&amp;quot; from one form to another. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===== Data Value Lookups  =====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public Map&amp;lt;String, Integer&amp;gt; wool_colors = new HashMap&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Run this on plugin startup (ideally reading from a file instead of copied out row by row):&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;orange&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;magenta&amp;quot;, 2);&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;light blue&amp;quot;, 3);&lt;br /&gt;
&lt;br /&gt;
   ..&lt;br /&gt;
&lt;br /&gt;
wool_colors.put(&amp;quot;black&amp;quot;, 15);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Run this in response to user commands - turn &amp;quot;green&amp;quot; into 13&lt;br /&gt;
&lt;br /&gt;
int datavalue = 0;&lt;br /&gt;
&lt;br /&gt;
if (wool_colors.containsKey(argument)) {&lt;br /&gt;
&lt;br /&gt;
    datavalue = wool_colors.get(argument);&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
&lt;br /&gt;
    try { datavalue = Integer.parseInt(argument); }&lt;br /&gt;
&lt;br /&gt;
    catch (Exception e) {}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;==== Saving/Loading a HashMap  ====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you know how to work with HashMaps, you probably want to know how to save and load the HashMap data. Saving and loading HashMap data is appropriate if &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;you don&#039;t want an administrator to edit the data manually&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;you need to save data in binary format (too complex to organize for YAML)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;you want to avoid parsing block names and/or other objects from freeform text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is very simple way how to save any HashMap. You can replace HashMap&amp;amp;amp;lt;String, Integer&amp;amp;amp;gt; with any type of HashMap you want. Let&#039;s take an example HashMap with code to save it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        HashMap&amp;lt;String, Integer&amp;gt; mapToSave = new HashMap&amp;lt;String,Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        public void save(HashMap&amp;lt;String, Integer&amp;gt; map, String path) {&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
&lt;br /&gt;
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));&lt;br /&gt;
&lt;br /&gt;
oos.writeObject(map);&lt;br /&gt;
&lt;br /&gt;
oos.flush();&lt;br /&gt;
&lt;br /&gt;
oos.close();&lt;br /&gt;
&lt;br /&gt;
//Handle I/O exceptions&lt;br /&gt;
&lt;br /&gt;
} catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
save(mapToSave, getDataFolder() + File.separator + &amp;quot;example.bin&amp;quot;);&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can see it&#039;s really easy. Loading works very very similar but we use ObjectInputStream instead of ObjectOutputStream ,FileInputStream instead of FileOutputStream,readObject() instead of writeObject() and we return the HashMap. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public HashMap&amp;lt;String, Integer&amp;gt; load(String path) {&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
&lt;br /&gt;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));&lt;br /&gt;
&lt;br /&gt;
Object result = ois.readObject();&lt;br /&gt;
&lt;br /&gt;
//you can feel free to cast result to HashMap&amp;lt;String, Integer&amp;gt; if you know there&#039;s that HashMap in the file&lt;br /&gt;
&lt;br /&gt;
return (HashMap&amp;lt;String, Integer&amp;gt;)result;&lt;br /&gt;
&lt;br /&gt;
} catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HashMap&amp;lt;Integer, String&amp;gt; loadedMap;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
String path = getDataFolder() + File.separator + &amp;quot;example.bin&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
File file = new File(path);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (file.exists()) { // check if file exists before loading to avoid errors!&lt;br /&gt;
&lt;br /&gt;
loadedMap  = load(path);&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You can use this &amp;quot;API&amp;quot; for saving/loading HashMaps, ArrayLists, and all Objects which implement Serializable or Externalizable interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;/** SLAPI = Saving/Loading API&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 * API for Saving and Loading Objects.&lt;br /&gt;
&lt;br /&gt;
 * Everyone has permission to include this code in their plugins as they wish :)&lt;br /&gt;
&lt;br /&gt;
 * @author Tomsik68&amp;lt;tomsik68@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class SLAPI&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
public static &amp;lt;T extends Object&amp;gt; void save(T obj,String path) throws Exception&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));&lt;br /&gt;
&lt;br /&gt;
oos.writeObject(obj);&lt;br /&gt;
&lt;br /&gt;
oos.flush();&lt;br /&gt;
&lt;br /&gt;
oos.close();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static &amp;lt;T extends Object&amp;gt; T load(String path) throws Exception&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));&lt;br /&gt;
&lt;br /&gt;
T result = (T)ois.readObject();&lt;br /&gt;
&lt;br /&gt;
ois.close();&lt;br /&gt;
&lt;br /&gt;
return result;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Example implementation of this API: &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;I&#039;m skipping some part of code in this source&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;public class Example extends JavaPlugin {&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
private ArrayList&amp;lt;Object&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@Override&lt;br /&gt;
&lt;br /&gt;
public void onEnable() {&lt;br /&gt;
&lt;br /&gt;
            try {&lt;br /&gt;
&lt;br /&gt;
list = SLAPI.load(&amp;quot;example.bin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            } catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
                //handle the exception&lt;br /&gt;
&lt;br /&gt;
                e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@Override&lt;br /&gt;
&lt;br /&gt;
public void onDisable()	{&lt;br /&gt;
&lt;br /&gt;
            try {&lt;br /&gt;
&lt;br /&gt;
SLAPI.save(list,&amp;quot;example.bin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            } catch(Exception e) {&lt;br /&gt;
&lt;br /&gt;
                 e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note #1: This will work un-modified with almost all well-known Java types like Integer, String, HashMap. It will also work for some Bukkit types as well. If you&#039;re writing your own data object classes, and you may want to save their state using this technique, you should read about Java&#039;s Serializable or Externalizable interface. The only difference between Externalizable and Serializable is, that Serializable automatically takes all of class&#039;s fields and tries to serialize them, while Externalizable allows you to define method for reading and writing the Object. It&#039;s easy to add to your code, and it will make your data persistent with very little work required. No more parsing!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note #2: This API doesn&#039;t support changes. Once you change something in the class, data files saved with older version of your plugin won&#039;t load correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===== Tips &amp;amp; Examples =====&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.) Simplify your save structure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Try to use as much simple types as possible. E.g. if you want to save player, save their UUID instead. If you want to save world, save its UUID. If you want to save location, save x,y,z world UUID. DO NOT DIRECTLY SAVE BUKKIT TYPES!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.) Save version number along with data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should always remember, that you don&#039;t know what you&#039;ll be saving in the same file tomorrow. Will you ever migrate this file because of newer version of your plugin, bukkit, or minecraft? You don&#039;t know!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.) Migrate older files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your plugin finds older version of some file, it should update the file accordingly and change version number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 元数据  ==&lt;br /&gt;
&lt;br /&gt;
Bukkit正在尝试尽可能的让制作插件变得更简单，所以带有一个键值例如Player, Entity, World，甚至是一个block的HashMaps都可以用元数据取缔掉。元数据是一些替代HashMap的方式。他可以允许你去自定义&amp;quot;fields&amp;quot;给Players, Entities, Worlds and Blocks.这些东西都是元数据类的一个成员(详见[http://jd.bukkit.org/doxygen/de/d59/interfaceorg_1_1bukkit_1_1metadata_1_1MetadataValue.html#ab49975fe013a0626dd29d3b85c63a82f])It works very simply. Everything that is Metadatable holds its own HashMap of Metadata which you have access to. That means, for example, if you&#039;re creating an economy plugin, you would need a HashMap of Player and Float or Double. 如果用了元数据，你不必去做! You just attach to player new metadata 值, and that&#039;s it!&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== 为何要去使用元数据  ===&lt;br /&gt;
&lt;br /&gt;
* Metadata is all handled by Bukkit, which makes it a very good alternative to HashMaps. &lt;br /&gt;
* 元数据可以用来跟其他插件分享信息与数据。&lt;br /&gt;
&lt;br /&gt;
=== 为什么不去使用元数据&amp;lt;br&amp;gt;  ===&lt;br /&gt;
&lt;br /&gt;
* Slightly more difficult to get the value.&lt;br /&gt;
* It is not saved on shutdown (but then again, neither are any Maps that you create).&lt;br /&gt;
&lt;br /&gt;
=== 获取 &amp;amp;amp; 设置元数据  ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public void setMetadata(Metadatable object, String key, Object value, Plugin plugin) {&lt;br /&gt;
  object.setMetadata(key, new FixedMetadataValue(plugin,value));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Object getMetadata(Metadatable object, String key, Plugin plugin) {&lt;br /&gt;
  List&amp;lt;MetadataValue&amp;gt; values = object.getMetadata(key);  &lt;br /&gt;
  for (MetadataValue value : values) {&lt;br /&gt;
     // Plugins are singleton objects, so using == is safe here&lt;br /&gt;
     if (value.getOwningPlugin() == plugin) {&lt;br /&gt;
        return value.value();&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
  return null;&lt;br /&gt;
}&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note: If you&#039;re manipulating with numbers, booleans or strings, use convenient method to get the result. For example, you can use asInt(), asString() or asBoolean() instead of value to find out the value.&lt;br /&gt;
&lt;br /&gt;
== Databases  ==&lt;br /&gt;
&lt;br /&gt;
Sometimes flat files aren&#039;t enough for what your looking to do, this is where databases come in. The most common database engines available on Linux/Mac/Windows machines typically run on some flavor of SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
Software offering SQL allow you to create databases with columns and header to identify to contents of each cell. Think of it as a spreadsheet on steroids, where every column you set up in your database can enforce rules to ensure integrity. Apart from being more organised than a simple custom data file, SQL provides faster access and better searching than flat files. &lt;br /&gt;
&lt;br /&gt;
The SQL standard helps applications like Bukkit implement database storage for their data in a consistent way. Unfortunately, there&#039;s more than one SQL-ready database engine, and each has minor differences in how to configure and use it. Which one you choose may depend on your particular needs. (Some plugins even offer configurable options to connect to multiple database engines!) &lt;br /&gt;
&lt;br /&gt;
=== SQLite  ===&lt;br /&gt;
&lt;br /&gt;
Alta189 has written a [http://forums.bukkit.org/threads/lib-tut-mysql-sqlite-bukkit-drivers.33849/ fantastic SQLite tutorial] which I suggest you watch if you&#039;re interested in using SQL in your plugins, included with the tutorials is a handy library you can download and import to make using SQL easier. Once you have watched these video tutorials I would suggest you go and learn some SQL syntax, it&#039;s very straightforward and shouldn&#039;t take you long to pick up. SQL Tutorials [http://www.w3schools.com/sql/default.asp @W3Schools] and [http://www.1keydata.com/sql/sql.html @1Keydata]. &lt;br /&gt;
&lt;br /&gt;
SQLite is great for very simple databases, because there&#039;s no server concerns to set up. Just make a few calls to create a new database and table. It&#039;s easy to back up: just copy the whole database file in one go. SQLite is a little bit weaker at data integrity, flexibility in data types, and it may not be something you would want to trust for huge databases of millions of rows. But for a new plugin in development, it&#039;s often easiest and fastest to get the SQL basics squared away with SQLite, even if you &amp;quot;graduate&amp;quot; to a more server-class database engine later.&lt;br /&gt;
&lt;br /&gt;
=== MySQL  ===&lt;br /&gt;
&lt;br /&gt;
Another popular SQL database engine is called MySQL. It is closer to server-grade than SQLite, where many popular companies or websites depend on it for millions of webpage hits every day. With that security comes a little bit steeper learning-curve, because MySQL has more tunable parameters and capabilities. &lt;br /&gt;
&lt;br /&gt;
The coding for plugins accessing MySQL is mostly the same as tiny SQLite or mega-sized Oracle, with only small differences in syntax here or there. But the administration has room to grow. You may want to set up accounts and privileges inside your MySQL setup. You may want to set up SQL scripts that organize your backups and rollback to previous states. &lt;br /&gt;
&lt;br /&gt;
== 部署你的插件  ==&lt;br /&gt;
&lt;br /&gt;
 总之你写好的你的插件,如何把它变成一个可安装在服务端的jar文件呢?&lt;br /&gt;
 &lt;br /&gt;
 首先我们需要建立一个水桶服务器。 [http://wiki.bukkit.org/Setting_up_a_server 在这里] 能找到开服相关信息.接下来你需要把插件导出为一个.jar文件，&lt;br /&gt;
 &lt;br /&gt;
 这样你就能在你的服务器里运行它。 在Eclipse里, 右键工程，点击&#039;&#039;Run as &amp;gt; Maven install&#039;&#039;即可:&lt;br /&gt;
&lt;br /&gt;
[[Image:Maveninstall.png]]&lt;br /&gt;
&lt;br /&gt;
 将来呢, 当你对插件进行了改动后,在做上述操作之前，如果你想删除之前的.jar文件，你可以右键工程，点击 &#039;&#039;Run as &amp;gt; Maven clean&#039;&#039; 。 &lt;br /&gt;
 &lt;br /&gt;
 如果你在编译插件时遇到了问题,  请检查你的JDK是否正确安装， 并浏览[[建立工作区]]条目。&lt;br /&gt;
 &lt;br /&gt;
 如果你在Eclipse控制台看到了和JDK有关的错误，你可能需要手动调整JDK,因为Eclipse的检测可能发生了错误。 &lt;br /&gt;
 &lt;br /&gt;
 点击&#039;&#039;Window -&amp;gt; Preferences&#039;&#039;, 然后是&#039;&#039;Java -&amp;gt; Installed JREs&#039;&#039;。选中你最近安装的JDK作为Java运行环境（JRE）并添加, 并取消掉原来那个报错的JDK:&lt;br /&gt;
&lt;br /&gt;
[[Image:Jrelocation.png]]&lt;br /&gt;
&lt;br /&gt;
 如果你的工程成功被编译,JAR文件会生产在 &#039;&#039;target&#039;&#039; 目录下，具体在Eclipse的工作空间里名字为工程名的文件夹中。&lt;br /&gt;
 &lt;br /&gt;
 这个JAR文件就是一个能正常工作的Bukkit插件了。当然前提是你的plugin.yml里没出差错。&lt;br /&gt;
 &lt;br /&gt;
 你可以把这个jar文件丢到服务器的plugins文件夹里,重载或重启服务器,就可以测试你的新插件啦。&lt;br /&gt;
 &lt;br /&gt;
 为了连接上使用你自己的电脑开的服务器 ,在多人游戏的ip里填上你的本地ip即可。&lt;br /&gt;
 &lt;br /&gt;
 如果出现了错误而你又不能解决的话, 试试这里[http://forums.bukkit.org/forums/plugin-development.5/ plugin development forum], &lt;br /&gt;
 &lt;br /&gt;
 在这里提问[http://wiki.bukkit.org/IRC bukkitdev IRC channel],或者重新阅读wiki。&lt;br /&gt;
 &lt;br /&gt;
 当你做完了一个实用的插件,可以考虑把它发表在这里[http://dev.bukkit.org/ dev.bukkit]（为了Bukkit社区的访问量）。&lt;br /&gt;
 &lt;br /&gt;
 以上可知,JAR格式是默认压缩生成的(JAR文件基于ZIP文件的格式)。这么说来，在上传插件到Bukkit上时把JAR文件压缩成ZIP只会增加文件体积罢了。&lt;br /&gt;
 &lt;br /&gt;
 而且呢, 放在JAR中的config文件可以在检测不到插件目录（插件自动生成的文件夹，名字与插件名相同，里面是该插件的配置）下的config文件时自动生成。&lt;br /&gt;
 &lt;br /&gt;
 所以我们一般不把jar文件转换成其他格式。&lt;br /&gt;
&lt;br /&gt;
== 导入其它插件 ==&lt;br /&gt;
你可能会希望编辑其它那些有源代码的插件. 如果插件在它的目录下有&#039;&#039;pom.xml&#039;&#039;(大多数知名插件,例如WorldEdit和Essentials都有),你可以通过点击&#039;&#039;File -&amp;gt; Import&#039;&#039;来把它作为一个工程导入, 然后打开&#039;&#039;Maven&#039;&#039;项并选择&#039;&#039;Existing Maven Projects&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Importmaven.png]]&lt;br /&gt;
&lt;br /&gt;
然后选择&#039;&#039;pom.xml&#039;&#039;所在的目录,这个工程就应该出现在你的侧边栏里了。就像平常一样编辑并编译它吧。&lt;br /&gt;
&lt;br /&gt;
== 小贴士  ==&lt;br /&gt;
&lt;br /&gt;
=== 使玩家着火 ===&lt;br /&gt;
&lt;br /&gt;
 Bukkit API有很多碉堡的功能。以下是实现一些功能的代码片段。 &lt;br /&gt;
&lt;br /&gt;
下面的代码运行一个玩家使另一个玩家着火。通过类似于&#039;&#039;&#039;/ignite Notch&#039;&#039;&#039;这样的指令，这个指令会让 Notch 着火。&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     // 使用 equalsIgnoreCase() 来忽视大小写&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;ignite&amp;quot;)) {&lt;br /&gt;
         // 确保玩家只输入了一个自变量(要被点着的玩家名).&lt;br /&gt;
         if (args.length != 1) {&lt;br /&gt;
             // 当return false时，该指令的使用信息会显示出来。&lt;br /&gt;
             return false;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         // 确保命令发出者是个玩家.&lt;br /&gt;
         if (!(sender instanceof Player)) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Only players can set other players on fire.&amp;quot;);&lt;br /&gt;
             sender.sendMessage(&amp;quot;This is an arbitrary requirement for demonstration purposes only.&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         // 获取那个要被点着的玩家. 请注意下标起始是0，不是1.&lt;br /&gt;
         Player target = Bukkit.getServer().getPlayer(args[0]);&lt;br /&gt;
 &lt;br /&gt;
         // 确保这个玩家在线。&lt;br /&gt;
         if (target == null) {&lt;br /&gt;
             sender.sendMessage(args[0] + &amp;quot; is not currently online.&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         // 让这个玩家着火1000 ticks (一秒钟大概有20ticks,所以总共是50秒).&lt;br /&gt;
         target.setFireTicks(1000);&lt;br /&gt;
         return true;&lt;br /&gt;
     }&lt;br /&gt;
     return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 干掉玩家  ===&lt;br /&gt;
&lt;br /&gt;
 和标题一样.这里是要干掉某个玩家。 &lt;br /&gt;
&lt;br /&gt;
在你的onCommand方法里使用这个: &lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;KillPlayer&amp;quot;)) {&lt;br /&gt;
         Player target = sender.getServer().getPlayer(args[0]);&lt;br /&gt;
          // 确保玩家在线.&lt;br /&gt;
         if (target == null) {&lt;br /&gt;
             sender.sendMessage(args[0] + &amp;quot; is not currently online.&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
         target.setHealth(0); &lt;br /&gt;
     }&lt;br /&gt;
     return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
这里有个小扩展,会使用一个爆炸来杀死玩家: &lt;br /&gt;
&lt;br /&gt;
 float explosionPower = 4F; //爆炸等级 - TNT的爆炸等级默认是4F&lt;br /&gt;
 Player target = sender.getWorld().getPlayer(args[0]);&lt;br /&gt;
 target.getWorld().createExplosion(target.getLocation(), explosionPower);&lt;br /&gt;
 target.setHealth(0);&lt;br /&gt;
&lt;br /&gt;
=== 创造一个假爆炸  ===&lt;br /&gt;
&lt;br /&gt;
这段代码会生产一个看起来和听起来与TNT/苦力怕产生的爆炸一样的效果。但是不会对实体和方块产生破坏。 在保留爆炸的艺术的同时又削弱了爆炸的威力，真是太有用了（&lt;br /&gt;
 @EventHandler&lt;br /&gt;
 public void onExplosionPrime(ExplosionPrimeEvent event) {	&lt;br /&gt;
     Entity entity = event.getEntity();&lt;br /&gt;
 &lt;br /&gt;
     // 如果事件和点燃的TNT有关,执行一些代码（又略）&lt;br /&gt;
     if (entity instanceof TNTPrimed) {&lt;br /&gt;
         entity.getWorld().createExplosion(entity.getLocation(), 0);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 使一个玩家对另外一个玩家隐形  ===&lt;br /&gt;
&lt;br /&gt;
 通过输入指令，能让指令执行者对特定的玩家隐形。 然而其他人仍然能看到指令执行者。&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {&lt;br /&gt;
     if (cmd.getName().equalsIgnoreCase(&amp;quot;HideMe&amp;quot;) &amp;amp;&amp;amp; args.length == 1) {&lt;br /&gt;
         if (!(sender instanceof Player)) {&lt;br /&gt;
             sender.sendMessage(&amp;quot;Only players can use this command!&amp;quot;);&lt;br /&gt;
             return true;&lt;br /&gt;
         }&lt;br /&gt;
         // 检测指令执行者是玩家后，我们便可以安全的进行强制转换类操作。&lt;br /&gt;
        Player s = (Player) sender;&lt;br /&gt;
 &lt;br /&gt;
        // 获取命令执行者指定的玩家&lt;br /&gt;
        Player target = Bukkit.getServer().getPlayer(args[0]);&lt;br /&gt;
        if (target == null) {&lt;br /&gt;
            sender.sendMessage(&amp;quot;Player &amp;quot; + args[0] + &amp;quot; is not online.&amp;quot;);&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        // 将 s 从 target 的视野中隐藏起来.&lt;br /&gt;
        target.hidePlayer(s);&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 在玩家准星所指处生产闪电 ===&lt;br /&gt;
&lt;br /&gt;
如下代码运行手持鱼竿的玩家通过点击来生成闪电 (当然要用准星瞄准)。 真是个简单好玩的恶作剧（。&lt;br /&gt;
&lt;br /&gt;
 @EventHandler&lt;br /&gt;
 public void onPlayerInteractBlock(PlayerInteractEvent event) {&lt;br /&gt;
     Player player = event.getPlayer();&lt;br /&gt;
     if (player.getItemInHand().getType() == Material.FISHING_ROD) {&lt;br /&gt;
         // 在给定坐标中生成一道闪电. 在本例中, 这个坐标是玩家准星瞄准的地方.&lt;br /&gt;
         // 只能指向200格以内的坐标.&lt;br /&gt;
         player.getWorld().strikeLightning(player.getTargetBlock(null, 200).getLocation());&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== 自动格式 ===&lt;br /&gt;
&lt;br /&gt;
 Eclipse提供了将你的代码自动转成Oracle规定的格式, 修正了不符合常规的缩进, 空格等等。 在侧边栏选中你的项目,然后选择&#039;&#039;Source -&amp;gt; Format&#039;&#039;即可对其进行更改。&lt;br /&gt;
&lt;br /&gt;
== 插件需求专区  ==&lt;br /&gt;
&lt;br /&gt;
http://forums.bukkit.org/forums/plugin-requests.13/&lt;br /&gt;
&lt;br /&gt;
== 范例文件和样板  ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/Bukkit/SamplePlugin/ Bukkit/SamplePlugin on GitHub]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/wpeTPx7N Example.Java]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/MTwaAVCT ExamplePlayerListener.Java]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/6FLixfH3 ExampleBlockListener.Java]&lt;br /&gt;
&lt;br /&gt;
*[http://pastebin.com/8UZ6pkWC ExampleEntityListener.Java]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have any more questions on this matter, don&#039;t hesitate to visit the BukkitDev [[IRC]] channel and ask!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:开发教程]]&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=NoCheatPlus&amp;diff=1262</id>
		<title>NoCheatPlus</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=NoCheatPlus&amp;diff=1262"/>
		<updated>2015-08-11T13:37:33Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=NoCheatPlus&lt;br /&gt;
|版本=3.12.0-BETA2-sASO-b813&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.8.1&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/nocheatplus/&lt;br /&gt;
}}&lt;br /&gt;
{{待翻译}}&lt;br /&gt;
&#039;&#039;&#039;Detect and fight the exploitation of various flaws/bugs in Minecraft!&#039;&#039;&#039;&lt;br /&gt;
[[Category:管理]] [[Category:修正]] [[Category:安全]] &lt;br /&gt;
=介绍=&lt;br /&gt;
&lt;br /&gt;
NoCheatPlus试图通过禁止作弊客户端利用Minecraft或是它自身数据传递协议的漏洞, 来使得你的服务器更加安全可靠. 检测范围很广，包括飞行，加速，战斗 hacks, 快速破坏方块和 nukers, 背包 hacks, 聊天 spam and other types of malicious behaviour. For a more complete list have a look at the [https://github.com/asofold/NCPDocs/blob/master/Features.creole Features Page]（内容已搬至本页面，查看最新内容请点击链接）.&lt;br /&gt;
&lt;br /&gt;
NoCheatPlus puts emphasis on configurability and allows you to customize actions that are carried out when a player fails a check (e.g. silent cancelling, executing commands, just logging). Bypass permissions allow to control what check to apply for which players, all checks can be deactivated in the configuration, also having the option for world-specific configuration files. Many checks allow more detailed configuration to adjust sensitivity.&lt;br /&gt;
&lt;br /&gt;
Certainly NoCheatPlus is not a magical bullet, it uses a lot of heuristics and even guessing, so you will encounter false positives here and there and also not catch every single violation. [http://www.youtube.com/watch?v=H8BSpXfrtzI Example video] of how NoCheatPlus blocks cheats (outdated plugin version).&lt;br /&gt;
&lt;br /&gt;
NoCheatPlus was introduced by [http://dev.bukkit.org/profiles/NeatMonster/ NeatMonster], building on the code base of [http://dev.bukkit.org/server-mods/nocheat/ NoCheat] by [http://dev.bukkit.org/profiles/Evenprime85/ Evenprime].&lt;br /&gt;
==功能==&lt;br /&gt;
* 玩家行动:&lt;br /&gt;
** 禁止飞行(生存/冒险模式下) 或是限制飞行速度(创造模式下)&lt;br /&gt;
** Enforce the original movement speeds for walking, sprinting, sneaking, swimming, blocking&lt;br /&gt;
** 禁止玩家无视掉落伤害&lt;br /&gt;
** 禁止玩家进入方块 (穿墙模式)&lt;br /&gt;
** 禁止玩家改变服务器时间&lt;br /&gt;
** Prevent players from using the &amp;quot;safe-respawn&amp;quot; exploit&lt;br /&gt;
** 禁止在水和岩浆顶部行走 [modern hacks just keep jumping, though]&lt;br /&gt;
** 禁止玩家通过非法移动使服务器崩溃 (CraftBukkit 自身并不包含检测模块,但有时这些移动数据会影响到插件.)&lt;br /&gt;
** Prevent players from faking BedLeave packets&lt;br /&gt;
** 禁止玩家悬浮在半空中&lt;br /&gt;
** 禁止玩家利用 &amp;quot;block jumping&amp;quot;来跳过高墙&lt;br /&gt;
** Prevent players from V-Clipping or teleporting&lt;br /&gt;
** 禁止玩家滥用钓竿来绕开飞行检测 (这只是一个玩笑...) [未测试! 默认关闭!]&lt;br /&gt;
** Prevent players from using their glide cheat 新!&lt;br /&gt;
** 禁止玩家滥用末影珍珠穿越墙，屋顶和地板 新!&lt;br /&gt;
* 方块交互:&lt;br /&gt;
** 禁止玩家操作正常接触范围之外的方块&lt;br /&gt;
** 强制玩家看着想要操作的方块&lt;br /&gt;
** 禁止玩家透过墙对方块进行操作&lt;br /&gt;
** Prevent players from spamming interaction on blocks (note-blocks, doors, stone, wood, ...)&lt;br /&gt;
* 方块破坏:&lt;br /&gt;
** Prevent players from using &amp;quot;Survival Nuker&amp;quot;, &amp;quot;Smasher&amp;quot;, &amp;quot;Click Nuker&amp;quot; and &amp;quot;Creative Nuker&amp;quot;&lt;br /&gt;
** Prevent breaking blocks faster than vanilla Minecraft allows, prevent breaking too many blocks too fast in total.&lt;br /&gt;
** 限制玩家可破坏方块的距离&lt;br /&gt;
** 强制玩家看着方块(破坏方块时，鼠标准星需对准方块)&lt;br /&gt;
** Prevents &amp;quot;noswing&amp;quot; hacks (the player breaks blocks without showing the arm animation)&lt;br /&gt;
** 禁止玩家同时破坏两个及以上的方块&lt;br /&gt;
** 禁止创造模式下的玩家破坏水或岩浆&lt;br /&gt;
* 方块放置:&lt;br /&gt;
** Prevent players from using &amp;quot;FastPlace&amp;quot; and &amp;quot;Build&amp;quot; cheats&lt;br /&gt;
** 限制玩家可放置方块的距离&lt;br /&gt;
** 强制对准方块&lt;br /&gt;
** 禁止玩家过快地投掷物品&lt;br /&gt;
** 禁止玩家在除了水和岩浆上的地方放置船只&lt;br /&gt;
** Prevent players from using the AutoSign feature of their client&lt;br /&gt;
** 禁止玩家在半空中放置方块. &lt;br /&gt;
** 禁止玩家在流体上放置方块&lt;br /&gt;
* 玩家聊天:&lt;br /&gt;
** 部分功能受Evenprime的插件启发.&lt;br /&gt;
** Fast spam check + tool-box for slower paced annoyances (can take into account a players chat history and global chat history).&lt;br /&gt;
** Limit the number of players allowed to join within a specific time frame&lt;br /&gt;
** 禁止过快地重新登陆.&lt;br /&gt;
** Filter colors from player messages&lt;br /&gt;
** Supports text and command spam blocking&lt;br /&gt;
* 背包:&lt;br /&gt;
** Prevent players from dropping too many items within a short time frame and therefore lagging the server&lt;br /&gt;
** 禁止玩家过快地填充，发射弓箭&lt;br /&gt;
** 禁止玩家过快地进食&lt;br /&gt;
** Prevents players from managing there items to fast (inventory, enchantment table, beacon, ...)&lt;br /&gt;
** Prevents players from binding illegal enchantments on books (fixed in Minecraft 1.4.3 and higher)&lt;br /&gt;
* 战斗:&lt;br /&gt;
** 禁止玩家同时攻击过多实体(玩家和怪物都算做实体) &lt;br /&gt;
** Prevent attacking of enemies that aren&#039;t in the line of sight of the player&lt;br /&gt;
** Prevent attacking without first swinging your arm&lt;br /&gt;
** 禁止一秒内攻击过多次&lt;br /&gt;
** Prevent attacking of targets that are too far away&lt;br /&gt;
** Prevent players becoming invulnerable by exploitation of a design flaw of Minecraft&lt;br /&gt;
** Prevent players from knocking back other players when it&#039;s not technically possible&lt;br /&gt;
** Prevent players from exploiting extremely low jumps to get a pseudo criticals cheat going NEW!&lt;br /&gt;
** Prevent players from giving critical hits to other players when it&#039;s not technically possible&lt;br /&gt;
** Prevent players from hit other players while blocking with their sword&lt;br /&gt;
** Penalize players that change their direction by a lot (against force fields)&lt;br /&gt;
** Prevent players from doing self hits to fly by using the knockback of those&lt;br /&gt;
** Feed combined check to find players that try to execute 2 or more cheats at the same time&lt;br /&gt;
** Prevent players from regenerating health too fast&lt;br /&gt;
* Miscellaneous:&lt;br /&gt;
** Disable Zombe&#039;s mod (fly, noclip, cheat)&lt;br /&gt;
** Disable CJB&#039;s mod (fly, xray, radar)&lt;br /&gt;
** Disable Rei&#039;s Minimap (cave, radar)&lt;br /&gt;
** Disable Minecraft AutoMap (ores, cave, radar)&lt;br /&gt;
** Disable Smart Moving (climbing, swimming, crawling, sliding, jumping, flying)&lt;br /&gt;
** Restrict the OP management commands to a console usage only (disabled by default)&lt;br /&gt;
** Adapts to server sided lag for less false positives on heavy server load&lt;br /&gt;
** Provides a API that allows making other plugins compatible with NoCheatPlus&lt;br /&gt;
** Use of BukkitAPI only if the used CraftBukkit version is not supported&lt;br /&gt;
&lt;br /&gt;
==配置==&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
==General notes on .yml configuration files==&lt;br /&gt;
* Use spaces for indentation.&lt;br /&gt;
* Keep the indentation level: Never change the amount of white-spaces in front of options in the config file &amp;quot;config.yml&amp;quot;.&lt;br /&gt;
* Don&#039;t insert special characters such as tabs for indentation. If you plan on complicated text entries, wrap them like &#039;...&#039; or &amp;quot;...&amp;quot;.&lt;br /&gt;
* Refer to the default config file for reference.&lt;br /&gt;
* Use a [[http://yaml-online-parser.appspot.com/|YAML parser]] to make sure your configuration file is formatted properly.&lt;br /&gt;
* Inserting unsupported characters or changing indentation levels can break the configuration.&lt;br /&gt;
* For those that use Notepad++ to edit their YAML files we recommend to enable &amp;quot;Replace by space&amp;quot; in Settings -&amp;gt; Preferences -&amp;gt; Tab Settings \\&lt;br /&gt;
[[https://github.com/asofold/NCPDocs/blob/master/wiki/resources/Configuration/cResources.creole#notepad++|Screenshot of Notepad++ preferences]]&lt;br /&gt;
&lt;br /&gt;
==特定世界的配置==&lt;br /&gt;
怎样创建一个特定世界的配置文件呢?（不同世界不同管理）:&lt;br /&gt;
#首先创建一个空的yml文件根据你的服务器世界的名称。例如：world_config.yml（_是必需的！一切都是很敏感的！）&lt;br /&gt;
# 在你的服务器安装NocheatPlus或运行 /重新安装NocheatPlus /如果已经在你的服务器运行 请重载&lt;br /&gt;
# NoCheatPlus should now write every setting available for world specific configuration in that/those empty yaml files&lt;br /&gt;
# If you rather prefer to use some settings of your global config.yml then set &amp;quot;savebackconfig&amp;quot; to false and remove them from your world specific configuration file&lt;br /&gt;
&lt;br /&gt;
* End result in your [[https://github.com/asofold/NCPDocs/blob/master/wiki/resources/Configuration/cResources.creole#world-specific-configuration|explorer window]] after successfully creating some world specific config.yml files&lt;br /&gt;
* Other examples: WorldName_config.yml, world_nether_config.yml, world_the_end_config.yml, HungerGames_config.yml or BackupWorld_config.yml&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* The world name is case sensitive (MiningWorld, theWorld etc.).&lt;br /&gt;
* You can set savebackconfig to false, in order to not have NoCheatPlus add default values to a config file. Thus you can override just the values you are interested in and keep a minimal world-specific configuration file.&lt;br /&gt;
* WorldName_config.yml has always higher priority then config.yml. So NoCheatPlus will first apply all settings from config.yml and then override them for a specific world using WorldName_config.yml&lt;br /&gt;
* Some settings can only be used in the global config.yml and aren&#039;t multiworld compatible (Please don&#039;t just copy config.yml and rename it to WorldName_config.yml or similar.) &lt;br /&gt;
* World specific files can be created, changed or removed while your server and NoCheatPlus are running. Just use the /ncp reload or /nocheatplus reload command to let NoCheatPlus reread your configuration file.&lt;br /&gt;
* If a world gets unloaded, deleted or renamed then NoCheatPlus will automaticly ignore your world specific configuration files you made for it&lt;br /&gt;
&lt;br /&gt;
==Configversion==&lt;br /&gt;
Set {{{notify}}} to false to suppress the messages about outdated configurations. Only the main configuration file is checked at present.&lt;br /&gt;
\\The other entries are not meant to be changed by hand, they indicate with which version the config was created and last saved back.&lt;br /&gt;
&lt;br /&gt;
==Logging==&lt;br /&gt;
&lt;br /&gt;
Disable all logging with setting {{{active}}} to false.&lt;br /&gt;
&lt;br /&gt;
Individual logging targets can be configured in the sub sections within {{{backends}}}:&lt;br /&gt;
* Set {{{active}}} to false to disable the individual backend. &lt;br /&gt;
* The {{{prefix}}} parameter allows to create a custom appearance for the log messages.&lt;br /&gt;
* File logging allows specifying a file name.&lt;br /&gt;
* For {{{ingamechat}}} you can force NoCheatPlus to check permissions subscriptions, if you use plugins that apply this technique to log to IRC and other for instance.&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous==&lt;br /&gt;
* Set {{{opinconsoleonly}}} to true to prevent op and deop commands from in-game chat. [Will be changed to a list of commands.]&lt;br /&gt;
* Set {{{managelisteners}}} to true to help us testing :) - this feature lets NCP register all its listeners inside of a ListenerManager that allows more intricate registration order than Bukkit. This is a &amp;quot;future feature&amp;quot; and is not needed, not even sure it improves performance.&lt;br /&gt;
* Set {{{reporttometrics}}} to false in order to disable reporting usage-stats to [[http://mcstats.org/plugin/NoCheatPlus|mcstats.org]] (PluginMetrics). Setting this to falss also prevents NoCheatplus from creating the PluginMetrics folder, however other plugins or Spigot could still create that folder. &lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
The data section allows you to specify an expiration duration for players data in minutes. If set to something greater than 0, this will periodically remove players data if the players have been logged out for longer than the specified amount of minutes. At present this would also delete set-back locations and current violation levels, if activated, so it should not be set to a too short duration.&lt;br /&gt;
&lt;br /&gt;
**expiration**&lt;br /&gt;
|**Config**|**Description**|**Default**|&lt;br /&gt;
|**duration**|Duration in minutes after logout, after which data gets erased.|0|&lt;br /&gt;
|**history**|Should the players violation history also be deleted?|false|&lt;br /&gt;
&lt;br /&gt;
**consistencychecks**&lt;br /&gt;
You can suppress consistency check warnings here and alter intervals for periodic checking (usually not needed).&lt;br /&gt;
&lt;br /&gt;
==Protection==&lt;br /&gt;
===Plugins===&lt;br /&gt;
Features for this and other plugins.&lt;br /&gt;
====Hide====&lt;br /&gt;
This section contains configuration for hiding (some of) your plugins better. You can prevent help-contents display and command usage by setting permissions with a permissions plugin, if the command has a default permission set, but NoCheatPlus allows to set the permission message of some commands, which would otherwise reveal the presence of the command/plugin. So the permission message for some commands can be changed to the &amp;quot;Unknown command&amp;quot; message to hide the presence. You do need to also set the aliases of the commands, use lower case rather.&lt;br /&gt;
\\This feature allows to change command permissions to not be given by default or add a generic filter permission nocheatplus.filter.command.//(commandname)// to a command that does not have one set yet, the following settings allow configuring lists of commands and the message:&lt;br /&gt;
\\**&amp;quot;nopermission&amp;quot;:**\\&lt;br /&gt;
Display the &amp;quot;no permission&amp;quot; message, default to &amp;quot;plugins&amp;quot; and &amp;quot;version&amp;quot; commands, useful for instance if a plugin does not set a permission for a command.&lt;br /&gt;
\\**&amp;quot;unknowncommand&amp;quot;:**\\&lt;br /&gt;
Display the &amp;quot;unknown command&amp;quot; message, empty by default. This can be used to hide a command from users that don&#039;t have the default permission (or the filter permission added by NCP if none was set).&lt;br /&gt;
&lt;br /&gt;
\\TODO: Link docs on how to configure help topics and other.&lt;br /&gt;
===Clients===&lt;br /&gt;
Features that concern client mods.&lt;br /&gt;
Set the {{{active}}} flag to false in the {{{motd}}} section to prevent NoCheatPlus sending any &amp;quot;blank lines&amp;quot; messages to clients on login. Otherwise blank lines can result disregarding if all clients are allowed or not, because some clients use a message to enable features, some need a message to disable features.&lt;br /&gt;
\\Note that it is 100% up to the client to decide on enabling or disabling features, a modified version of any client may ignore any sent messages, without that being detectable.&lt;br /&gt;
&lt;br /&gt;
==Configuration of checks==&lt;br /&gt;
The checks section contains configuration mostly for checks related to players actions, most can generate violation log messages (few exceptions).&lt;br /&gt;
&lt;br /&gt;
===Checks overview===&lt;br /&gt;
&lt;br /&gt;
See: [[checks/checks.creole|Checks Overview]]&lt;br /&gt;
&lt;br /&gt;
Shortcut links:&lt;br /&gt;
\\| &lt;br /&gt;
[[checks/blockbreak/blockbreak.creole|blockbreak]] | &lt;br /&gt;
[[checks/blockinteract/blockinteract.creole|blockinteract]] | &lt;br /&gt;
[[checks/blockplace/blockplace.creole|blockplace]] | &lt;br /&gt;
[[checks/chat/chat.creole|chat]] | &lt;br /&gt;
[[checks/combined/combined.creole|combined]] | &lt;br /&gt;
[[checks/fight/fight.creole|fight]] | &lt;br /&gt;
[[checks/inventory/inventory.creole|inventory]] | &lt;br /&gt;
[[checks/moving/moving.creole|moving]] | &lt;br /&gt;
&lt;br /&gt;
==Strings section==&lt;br /&gt;
This is the section that defines various strings for &amp;quot;log&amp;quot; or &amp;quot;cmd&amp;quot; actions. Each has a name (the part in front of &amp;quot;:&amp;quot;) and a definition (the part behind the &amp;quot;:&amp;quot;). Whenever you use a &amp;quot;log&amp;quot; or &amp;quot;cmd&amp;quot; action in one of the &amp;quot;actions: &amp;quot; options of this config file, the string will be taken from this section. Arbitrary many additional strings may be defined here, or existing strings may be changed.&lt;br /&gt;
\\ \\&lt;br /&gt;
Most messages/commands use place-holders in [ ], which will be replaced at runtime with relevant information. Some of these may only be available in certain circumstances, only &amp;quot;[player]&amp;quot; can be used everywhere, especially in &amp;quot;cmd&amp;quot; actions.|&lt;br /&gt;
\\&lt;br /&gt;
&lt;br /&gt;
==Compatibility section==&lt;br /&gt;
This section allows to configure details for the case of compatibility issues, for instance with other server mods or custom blocks.&lt;br /&gt;
&lt;br /&gt;
[[compatibility/compatibility.creole|compatibility page]]&lt;br /&gt;
&lt;br /&gt;
==Bleeding Edge: Development builds==&lt;br /&gt;
To allow you to keep track with the configuration and permission changes in the latest development versions, we have a simple page set up: **[[../development/dev-pinboard.creole|Development Pinboard]]**&lt;br /&gt;
\\&lt;br /&gt;
For quick overview over recent builds, see: [[../development/build-infos.creole|Important Changes By Build Number]]&lt;br /&gt;
==命令==&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NoCheatPlus integrates a lightweight command system. It allows you to quickly exempt players from checks or to access and manage check data about a player. &lt;br /&gt;
&lt;br /&gt;
All commands support tab completion and some even allow shortcuts. The root command is named &amp;quot;nocheatplus&amp;quot;, however the alias &amp;quot;ncp&amp;quot; should also work and is used for reference here.&lt;br /&gt;
&lt;br /&gt;
NoCheatPlus also supports aliases from Bukkit [[http://wiki.bukkit.org/Bukkit.yml#aliases|BukkitAliases]] if you wish to have another alias command aside form &amp;quot;nocheatplus&amp;quot; and &amp;quot;ncp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Permissions==&lt;br /&gt;
Root node for commands:&lt;br /&gt;
* **NoCheatPlus 3.10.2** and above: {{{nocheatplus.commands}}}&lt;br /&gt;
* //NoCheatPlus 3.10.1// and below: {{{nocheatplus.admin}}}&lt;br /&gt;
&lt;br /&gt;
You can give a player access to a specific command by giving them the sub-node with the commands default name, like {{{nocheatplus.admin.info}}}.&lt;br /&gt;
For further information about permissions in NoCheatPlus, we recommend looking at the [[../permissions/permissions.creole|Permissions docs]]. &lt;br /&gt;
&lt;br /&gt;
==Administrative commands==&lt;br /&gt;
Those commands are used to basically manage NoCheatPlus on your server.&lt;br /&gt;
**Arguments in () are needed, while arguments in [] are optional.**&lt;br /&gt;
|=Commands|=Explanation|&lt;br /&gt;
|/ncp reload| Reloads, generates and regenerates the configuration file of NoCheatPlus. Run this in-case you changed something on your configuration file while your server was running.|&lt;br /&gt;
|/ncp notify on/off| Toggle all in-game notifications/alerts generated by NoCheatPlus.|&lt;br /&gt;
|/ncp info (player)| Display the violation levels of a given player.|&lt;br /&gt;
|/ncp lag| Show info about server sided latency. The average lag shows the percentage of the server running too slow (0% = 20 tps, 10% = 18 tps) for the last 1 second, 3.33 and 270 seconds, roughly. Also lag spikes are displayed, tracked over at most 1 hour with a resolution of 20 minutes buckets (i.e. not exact) for spikes &amp;gt; 150 ms (3x to 20x) and spikes &amp;gt; 1000 ms (20x +). Be aware that this information is needed to make most NoCheatPlus checks adapt to server sided lag.|&lt;br /&gt;
|/ncp removeplayer (player) [check_type]| Remove all the data collected by NoCheatPlus so far for a given player. You can use the [check_type] option to make NoCheatPlus only remove data from a specific check (Default will clean all data of all checks!). To list all check names execute a command such as this: /ncp removeplayer (PlayerName) list. &amp;quot;*&amp;quot; is supported here.&lt;br /&gt;
|/ncp exempt (player) [check_type]| Exempt a player from being checked by NoCheatPlus or by a specific check.|&lt;br /&gt;
|/ncp unexempt (player) [check_type]| Remove any exemption you given to a specified player. &amp;quot;*&amp;quot; Is supported here.|&lt;br /&gt;
|/ncp exemptions (player)| Gives back a list of all check that a specific player has been exempted from.|&lt;br /&gt;
|/ncp commands| List all commands, more than shown here. The other commands are mainly for use with actions, such as delaying other commands, kicking with a message, telling players messages in colour, deny login for a players, allow it again and other.|&lt;br /&gt;
|/ncp version| Show version information about the server, plugin, compatibility modules and registered hooks.|&lt;br /&gt;
&lt;br /&gt;
==Auxiliary commands==&lt;br /&gt;
Those commands are mainly used by NoCheatPlut itself to execute strings or commands over actions on violating players but you can also make use of them if you wish to do so. Most of them have no difference compared to the vanilla commands apart from the delay otion.&lt;br /&gt;
**Arguments in () are needed, while arguments in [] are optional.**&lt;br /&gt;
|=Commands|=Explanation|&lt;br /&gt;
|/ncp ban [delay=(ticks)] (player) [reason]|Ban a player from your server (banned-players.txt).|&lt;br /&gt;
|/ncp kick [delay=(ticks)] (player) [reason]|Kicks a player from your server|&lt;br /&gt;
|/ncp unkick (player)|Allows you to remove a tempkick/tempban from a player. &amp;quot;*&amp;quot; is supported here.|&lt;br /&gt;
|/ncp kicklist|Lists all players that have been tempkicked/tempbanned on your server by NoCheatPlus actions.|&lt;br /&gt;
|/ncp tell [delay=(ticks)] (player) (message)|Send a private message to a specified player.|&lt;br /&gt;
|/ncp delay [delay=(ticks)] (command)|Execute a command in delayed time.|&lt;br /&gt;
==权限==&lt;br /&gt;
&lt;br /&gt;
**This page describes permissions for NoCheatPlus 3.10.2 and above,**&lt;br /&gt;
\\**NoCheatPlus 3.10.2-RC-sMD5NET-b620 adds new permissions for commands and new short-cut permissions, updates following soon.**&lt;br /&gt;
\\//For older versions see the [[permissions-3-10-1.creole|permissions page for 3.10.1 and below.]]//&lt;br /&gt;
&lt;br /&gt;
NoCheatPlus supports &amp;quot;SuperPerms&amp;quot;, CraftBukkit&#039;s official permission framework. You&#039;ll need to use a permissions plugin that supports &amp;quot;SuperPerms&amp;quot; to manage all the permissions of NoCheatPlus. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
   * PermissionsEx&lt;br /&gt;
   * bPermissions&lt;br /&gt;
   * Essentials GroupManager&lt;br /&gt;
   * Privileges&lt;br /&gt;
   * zPermissions&lt;br /&gt;
&lt;br /&gt;
By default NoCheatPlus assigns all permissions and gives full rights to players that have been /op-ed on your server. If you don&#039;t want to give OPs full access to all NoCheatPlus features then take a look in the configuration of your permissions plugin (Example with PermissionsEx: allowOps: false).\\\\&lt;br /&gt;
==Notifications==&lt;br /&gt;
|nocheatplus.notify|The player will receive notifications through the in-game chat of players failing NoCheatPlus checks. .|&lt;br /&gt;
If you want moderators to be able to toggle notifications, just give the permission nocheatplus.command.notify, which will also give this one then. Mind the &amp;quot;.silent&amp;quot; permission for individual checks permissions (explained on the bottom of this page).&lt;br /&gt;
&lt;br /&gt;
==Administration==&lt;br /&gt;
|{{{nocheatplus.admin}}}|Shortcut permission for all administrative commands including ban (do not give lightly). See nocheatplus.shortcut permissions for faster setup for moderators.|&lt;br /&gt;
===Debug===&lt;br /&gt;
|nocheatplus.admin.debug|Owners of this node will receive debug messages of checks if NoCheatPlus debugging is turned on.|&lt;br /&gt;
==命令权限==&lt;br /&gt;
|nocheatplus.command.notify|Allow toggling notifications and also to receive them (nocheatplus.notify is included here).|&lt;br /&gt;
|nocheatplus.command.info|The player gets access to &amp;quot;/ncp info&amp;quot;, which displays all violations that a player has gotten (if any).|&lt;br /&gt;
|nocheatplus.command.lag|Gives access to &amp;quot;/ncp lag&amp;quot; which shows informations about your server latency (NoCheatPlus uses this informations to adapt some checks for serversided latency).|&lt;br /&gt;
|nocheatplus.command.reload|The player gets access to &amp;quot;/ncp reload&amp;quot;, which causes NoCheatPlus to reread its configuration files (This doesn&#039;t clear NoCheatPlus data or exemptions!).|&lt;br /&gt;
|nocheatplus.command.plugins|Allows the player to execute the &amp;quot;/plugins&amp;quot; or &amp;quot;/pl&amp;quot; command from CraftBukkit (//protectplugins// has be set to true in the configuration file).|&lt;br /&gt;
|nocheatplus.command.version|Owners of this node can execute the &amp;quot;/version&amp;quot; or &amp;quot;/ver&amp;quot; command from CraftBukkit (//protectplugins// has be set to true in the configuration file).|&lt;br /&gt;
|nocheatplus.command.exemptions|Gives access to execute &amp;quot;/ncp exemptions&amp;quot; which list all exemptions for an specified player (Those exemptions will get reset after every reload/restart! For permanent exemptions use the check permissions!).|&lt;br /&gt;
|nocheatplus.command.exempt|Gives access to the &amp;quot;/ncp exempt&amp;quot; command which allows to temporary exempt players for either all (ALL) or specified checks only.|&lt;br /&gt;
|nocheatplus.command.unexempt|Allows to unexempt players from checks by using the &amp;quot;/ncp unexempt&amp;quot; command.|&lt;br /&gt;
|nocheatplus.command.removeplayer|Gives access to execute &amp;quot;/ncp removeplayer&amp;quot;, which causes NoCheatPlus to wipe/clear specified or all collected data from a player including violations and temporary stored check data (This wont wipe exemptions!).|&lt;br /&gt;
|nocheatplus.command.commands|Allows the player to use the &amp;quot;/ncp&amp;quot; command which lists all NoCheatPlus commands.|&lt;br /&gt;
|nocheatplus.command.ban|Gives permissions to use &amp;quot;/ncp ban&amp;quot; which bans a player on your server.|&lt;br /&gt;
|nocheatplus.command.kick|Gives access to &amp;quot;/ncp kick&amp;quot; which kicks a player from your server.|&lt;br /&gt;
|nocheatplus.command.tell|Gives access to &amp;quot;/ncp tell&amp;quot; which allows whispering something to a specified player.|&lt;br /&gt;
|nocheatplus.command.delay|Gives permissions to use the &amp;quot;/ncp delay&amp;quot; command which has the ability to run a specified command with delayed time execution time.|&lt;br /&gt;
|nocheatplus.command.tempkick|Allows the player to tempkick/tempban someone from the server using &amp;quot;/ncp tempkick&amp;quot;.|&lt;br /&gt;
|nocheatplus.command.kicklist|Gives access to the &amp;quot;/ncp kicklist&amp;quot; command which lists all players that got &amp;quot;tempkicked/tempbanned&amp;quot; from NoCheatplus by either using actions or &amp;quot;/ncp tempkick&amp;quot;.|&lt;br /&gt;
|nocheatplus.command.unkick|Gives access to remove a tempkick/tempban from a player using &amp;quot;/ncp unkick&amp;quot;.|&lt;br /&gt;
&lt;br /&gt;
==Filter permissions (plugin hiding)==&lt;br /&gt;
|nocheatplus.filter.command.(commandname)|Allows to use a command protected by command protection, only for the case the command did not have a permission set. Note that (commandname) is just the lower-case command label. In case of incompatibilities of your permission plugin you might have to add nocheatplus.filter.command.nocheatplus to players that are to use /ncp ... commands.|&lt;br /&gt;
==Bypass==&lt;br /&gt;
Specific bypass permissions.&lt;br /&gt;
|nocheatplus.bypass.denylogin|Allows to bypass the login denial, such as exists with the /ncp tempkick command.|&lt;br /&gt;
==Checks==&lt;br /&gt;
Check permissions, directly related to players actions and associated checks.&lt;br /&gt;
|nocheatplus.checks|Parent permission for all checks. TODO: Overview for &amp;quot;full&amp;quot; exemption by permissions (might need few additional permissions?).|&lt;br /&gt;
===BlockBreak===&lt;br /&gt;
|nocheatplus.checks.blockbreak|Parent permission for the blockbreak checks.|&lt;br /&gt;
|nocheatplus.checks.blockbreak.direction|Don&#039;t force the player to look at the blocks that he/she wants to break.|&lt;br /&gt;
|nocheatplus.checks.blockbreak.fastbreak|Allows the player to break blocks very quickly.|&lt;br /&gt;
|nocheatplus.checks.blockbreak.frequency|Allows the player to break 2 or more blocks at the same time.|&lt;br /&gt;
|nocheatplus.checks.blockbreak.noswing|Don&#039;t force players to swing their arm when breaking blocks.|&lt;br /&gt;
|nocheatplus.checks.blockbreak.reach|Allows breaking of blocks that are out of reach distance.|&lt;br /&gt;
|nocheatplus.checks.blockbreak.wrongblock|Don&#039;t force the player to interact with the block first before he/she is allowed break it (interacting=touching).|&lt;br /&gt;
|nocheatplus.checks.blockbreak.break.liquid|Allows the player to break liquids such as water or lava (source blocks) by using a hack in creative gamemode.|&lt;br /&gt;
===BlockInteract===&lt;br /&gt;
|nocheatplus.checks.blockinteract|Parent permission for this check section.|&lt;br /&gt;
|nocheatplus.checks.blockinteract.direction|Don&#039;t force the player to look at the blocks that he/she is trying to interact with (levers, doors and other).|&lt;br /&gt;
|nocheatplus.checks.blockinteract.reach|Allows the player to interact with blocks that are further away than usual.|&lt;br /&gt;
|nocheatplus.checks.blockinteract.speed|Allows the player to spam interaction on blocks such as levers, note blocks, doors and other.|&lt;br /&gt;
|nocheatplus.checks.blockinteract.visible|Everyone that owns this node is allowed to interact through walls to open a chest, furnace and other container without actually seeing them (also prevents from entering a minecart, bed or boat through walls).|&lt;br /&gt;
===BlockPlace===&lt;br /&gt;
|nocheatplus.checks.blockplace|...|&lt;br /&gt;
|nocheatplus.checks.blockplace.direction|Don&#039;t force the player to look at the block that he/she is trying to place on.|&lt;br /&gt;
|nocheatplus.checks.blockplace.boatsanywhere|Allows the player to place boats everywhere and not only in the water.|&lt;br /&gt;
|nocheatplus.checks.blockplace.fastplace|Allows the player to place blocks very quickly.|&lt;br /&gt;
|nocheatplus.checks.blockplace.noswing|Don&#039;t force players to swing their arm when placing a block.|&lt;br /&gt;
|nocheatplus.checks.blockplace.reach|Allows the player to place blocks that are too far away.|&lt;br /&gt;
|nocheatplus.checks.blockplace.speed|Allows a player to throw projectiles very quickly (snowballs, splash potions and other).|&lt;br /&gt;
|nocheatplus.checks.blockplace.against.liquids|Having this permission assigned allows to place block against liquids by using a special hack.|&lt;br /&gt;
|nocheatplus.checks.blockplace.against.air|This permission allows a player to place blocks against air.|&lt;br /&gt;
===Chat===&lt;br /&gt;
|nocheatplus.checks.chat|...|&lt;br /&gt;
|nocheatplus.checks.chat.color|Don&#039;t filter color codes from messages that get sent by players to allow them using colors in their messages. However nearly every chat plugin will override this.|&lt;br /&gt;
|nocheatplus.checks.chat.text|Allows the player to bypass the chat spam check for written text.|&lt;br /&gt;
|nocheatplus.checks.chat.commands|Allow players to bypass the command frequency check that protects against command spam.|&lt;br /&gt;
|nocheatplus.checks.chat.captcha|Owners of this permission wont be forced to type in a captcha if they fail one of the chat checks (this feature is disabled by default).|&lt;br /&gt;
|nocheatplus.checks.chat.relog|Every player that has this permission is allowed to completely bypass the re-log check of NoCheatPlus.|&lt;br /&gt;
|nocheatplus.checks.chat.logins|Allows the player to bypass the login check which prevents too many players loging in at the same time.|&lt;br /&gt;
===Combined===&lt;br /&gt;
|nocheatplus.checks.combined|Parent permission for the combined check group.|&lt;br /&gt;
|nocheatplus.checks.combined.improbable|Allows the player to bypass the Combined_Improbable check which fights against kill-auras ,speed hacks and some other combined hacks also. It also prevents the player from using 2 or more hacks at the same time.|&lt;br /&gt;
|nocheatplus.checks.combined.bedleave|Allows the player to send bed leave packets from anywhere (can be exploited to confuse some other checks of NoCheatPlus).|&lt;br /&gt;
|nocheatplus.checks.combined.munchhausen|Players with this node might be able to use fishing roods for flying (Check is disabled by default in configuration).|&lt;br /&gt;
===Fight===&lt;br /&gt;
|nocheatplus.checks.fight|Fight check group.|&lt;br /&gt;
|nocheatplus.checks.fight.angle|Don&#039;t prevent the player from attacking multiple entities at the time.|&lt;br /&gt;
|nocheatplus.checks.fight.critical|Don&#039;t prevent the player from doing fake critical hits when it&#039;s technically not possible to do so.|&lt;br /&gt;
|nocheatplus.checks.fight.direction|Don&#039;t force the player to look at the targets while fighting them.|&lt;br /&gt;
|nocheatplus.checks.fight.godmode|Don&#039;t prevent the player from keeping the temporary invulnerability that he/she gets when taking damage.|&lt;br /&gt;
|nocheatplus.checks.fight.fastheal|The owner of this node is allowed to regenerate health faster then usually possible.|&lt;br /&gt;
|nocheatplus.checks.fight.knockback|Don&#039;t prevent the player from doing knockbacks when it&#039;s technically not possible to do so.|&lt;br /&gt;
|nocheatplus.checks.fight.noswing|Don&#039;t force the player to move the arm while fighting against someone or something.|&lt;br /&gt;
|nocheatplus.checks.fight.reach|Allows the player to hit players and mobs that are out of allowed distance.|&lt;br /&gt;
|nocheatplus.checks.fight.selfhit|Allows the player to do self hits for flying by exploiting the knockback of those hits.|&lt;br /&gt;
|nocheatplus.checks.fight.speed|Don&#039;t limit the amount of attacks that the player can do per second.|&lt;br /&gt;
===Inventory===&lt;br /&gt;
|nocheatplus.checks.inventory|Inventory check group.|&lt;br /&gt;
|nocheatplus.checks.inventory.drop|Don&#039;t limit the amount of items that a player may drop within a short timeframe.|&lt;br /&gt;
|nocheatplus.checks.inventory.instantbow|Don&#039;t prevent the player from shooting arrows instantly over the bow without taking the usual time to pull the string back.|&lt;br /&gt;
|nocheatplus.checks.inventory.instanteat|Don&#039;t prevent players from eating their food instantly without taking the usual time to munch on it.|&lt;br /&gt;
|nocheatplus.checks.inventory.fastclick|Allows the player to move items around the inventory instantly without using there mouse/keyboard to do so.|&lt;br /&gt;
|nocheatplus.checks.inventory.items|Allows the player to use illegal enchantments on signed books (This got fixed now in Minecraft 1.4.3 and higher).|&lt;br /&gt;
===Moving===&lt;br /&gt;
|nocheatplus.checks.moving|Parent permission for the moving checks group.|&lt;br /&gt;
|nocheatplus.checks.moving.creativefly|Allows the player to fly faster in creative mode then usually possible.|&lt;br /&gt;
|nocheatplus.checks.moving.morepackets|Allow the player to make a lot more movements than normally possible. Doing more movements will result in faster movement speed and causes the server to spend a lot of additional time for processing these movements.|&lt;br /&gt;
|nocheatplus.checks.moving.morepacketsvehicle|Allows players to make a lot more movements in vehicles (boats, minecrats, pigs, ...) than normally possible.|&lt;br /&gt;
|nocheatplus.checks.moving.nofall|Allows the player to avoid fall damage by using cheats. Normally NoCheatPlus will keep track of a player&#039;s movement and rectify the fall-damage calculations of Minecraft so the player always gets the fall damage he/she is supposed to get.|&lt;br /&gt;
|nocheatplus.checks.moving.survivalfly|Allows the player to fly in survival mode. It also treats the player as if he has the &amp;quot;.nofall&amp;quot; permission too.|&lt;br /&gt;
|nocheatplus.checks.moving.survivalfly.blocking|Allows the player to block while moving at normal speed.|&lt;br /&gt;
|nocheatplus.checks.moving.survivalfly.sneaking|Allows the player to sneak while moving at normal speed.|&lt;br /&gt;
|nocheatplus.checks.moving.survivalfly.sprinting|Allows the player to sprint backwards.|&lt;br /&gt;
|nocheatplus.checks.moving.survivalfly.speeding|Allows the player to bypass the vanilla walk/run/sprint speed limits.|&lt;br /&gt;
|nocheatplus.checks.moving.survivalfly.step|Don&#039;t check if the player is using the step hack to get faster over blocks then usually possible.|&lt;br /&gt;
==Modifications==&lt;br /&gt;
These permissions allow to control which feature/mod a player may use. There is no guarantee that players use the original client and obey the request to turn off/on features, though.&lt;br /&gt;
===CJB===&lt;br /&gt;
|nocheatplus.mods.cjb|All CJB features.|&lt;br /&gt;
|nocheatplus.mods.cjb.fly|Don&#039;t prevent the player from using CJB&#039;s fly mod on the server.|&lt;br /&gt;
|nocheatplus.mods.cjb.radar|Gives access to use CJB&#039;s radar mod on the server.|&lt;br /&gt;
|nocheatplus.mods.cjb.xray|Don&#039;t prevent the player from using CJB&#039;s xray mod on the server.|&lt;br /&gt;
===MinecraftAutoMap===&lt;br /&gt;
|nocheatplus.mods.minecraftautomap|All features for MinecraftAutoMap.|&lt;br /&gt;
|nocheatplus.mods.minecraftautomap.ores|Don&#039;t prevent the player from using the ore detector from Minecraft AutoMap&#039;s.|&lt;br /&gt;
|nocheatplus.mods.minecraftautomap.cave|Don&#039;t prevent the player from using the cave mode feature of the Minecraft AutoMap&#039;s mod.|&lt;br /&gt;
|nocheatplus.mods.minecraftautomap.radar|Don&#039;t prevent the player from using Minecraft AutoMap&#039;s inbuilt radar.|&lt;br /&gt;
===Rei===&lt;br /&gt;
|nocheatplus.mods.rei.cave|Don&#039;t prevent the player from using Rei&#039;s Minimap&#039;s cave mode.|&lt;br /&gt;
|nocheatplus.mods.rei.radar|Don&#039;t prevent Rei&#039;s Minimap mod users from using all kind of available radar hacks.|&lt;br /&gt;
|nocheatplus.mods.rei.radar.player|Allows the player to use the radar from Rei&#039;s Minimap to track down other players only.|&lt;br /&gt;
|nocheatplus.mods.rei.radar.animal|Allows the player to only use the animal radar from Rei&#039;s Minimap mod.|&lt;br /&gt;
|nocheatplus.mods.rei.radar.mob|Gives access to use the mob radar feature from Rei&#039;s Minimap mod.|&lt;br /&gt;
|nocheatplus.mods.rei.radar.slime|Allows the player to track down slimes only by using the radar feature of Rei&#039;s Minimap.|&lt;br /&gt;
|nocheatplus.mods.rei.radar.squid|Player is allowed to use the Rei&#039;s Minimap radar to track down squids only.|&lt;br /&gt;
|nocheatplus.mods.rei.radar.other|Allows the player to use all the other features of the Rei&#039;s Minimap radar.|&lt;br /&gt;
===SmartMoving===&lt;br /&gt;
|nocheatplus.mods.smartmoving|All SmartMoving features.|&lt;br /&gt;
|nocheatplus.mods.smartmoving.climbing|Don&#039;t prevent the player from using Smart Moving&#039;s climb feature.|&lt;br /&gt;
|nocheatplus.mods.smartmoving.swimming|Don&#039;t prevent the player from using Smart Moving&#039;s swimming.|&lt;br /&gt;
|nocheatplus.mods.smartmoving.crawling|Don&#039;t prevent the player from using Smart Moving&#039;s crawl.|&lt;br /&gt;
|nocheatplus.mods.smartmoving.sliding|Don&#039;t prevent the player from using Smart Moving&#039;s slide.|&lt;br /&gt;
|nocheatplus.mods.smartmoving.jumping|Don&#039;t prevent the player from using Smart Moving&#039;s jump.|&lt;br /&gt;
|nocheatplus.mods.smartmoving.flying|Don&#039;t prevent the player from using Smart Moving&#039;s fly.|&lt;br /&gt;
===Zombe===&lt;br /&gt;
|nocheatplus.mods.zombe|All zombe features.|&lt;br /&gt;
|nocheatplus.mods.zombe.fly|Don&#039;t prevent the player from using Zombe&#039;s fly mod.|&lt;br /&gt;
|nocheatplus.mods.zombe.noclip|Don&#039;t prevent the player from using Zombe&#039;s noclip mod on the server.|&lt;br /&gt;
|nocheatplus.mods.zombe.cheat|Don&#039;t prevent the player from using Zombe&#039;s cheat mods.|\\&lt;br /&gt;
== Parent Nodes ==&lt;br /&gt;
Most permissions have parent nodes, that in fact goes for all check types. Resulting in nocheatplus.admin, nocheatplus.checks.moving, nocheatplus.checks.moving.survivalfly, nocheatplus.checks.fight, etc.&lt;br /&gt;
=== Things to know about Permissions ===&lt;br /&gt;
You can exclude a specific player from getting logged by appending &amp;quot;.silent&amp;quot; to the relevant permission node of the specific check. E.g.\\&lt;br /&gt;
&lt;br /&gt;
   * **nocheatplus.checks.moving.nofall.silent**\\&lt;br /&gt;
&lt;br /&gt;
will prevent NoCheatPlus from recording log messages for that player for the &amp;quot;nofall&amp;quot; check, while still executing all other actions as usual.&lt;br /&gt;
==Shortcut permissions==&lt;br /&gt;
|nocheatplus.admin| see above (full admin perms except check bypassing).|&lt;br /&gt;
|nocheatplus.shortcut.info|info about players|&lt;br /&gt;
|nocheatplus.shortcut.monitor|info about players and diagnostic info like version, lag,|&lt;br /&gt;
|nocheatplus.shortcut.safeadmin|&amp;quot;Safe&amp;quot; admin perms, no banning or reloading but unkick, exemption, data removal|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More to be added (shortcut.bypass - bypass about everything).&lt;br /&gt;
&lt;br /&gt;
=Recommended=&lt;br /&gt;
&lt;br /&gt;
The following plugins might be useful to have a look at.&lt;br /&gt;
&lt;br /&gt;
CompatNoCheatPlus (cncp)&lt;br /&gt;
&lt;br /&gt;
Make plugins like mcMMO, Citizens, MagicSpells or MachinaCraft more compatbile with NoCheatPlus. Not all existing plugins are covered (yet), but you can leave a note or ticket request for cncp.&lt;br /&gt;
&lt;br /&gt;
Orebfuscator&lt;br /&gt;
&lt;br /&gt;
Orebfuscator fights all sorts of X-ray-hacks by altering the map information that is sent to the players, such that they have to mine blocks to actually reveal what is behind. Virtually a &amp;quot;must have&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=下载和历史更新=&lt;br /&gt;
&lt;br /&gt;
* 下载正式版本请前往 BukkitDev.&lt;br /&gt;
* Development builds have been moved over to the Jenkins at EcoCityCraft.&lt;br /&gt;
* 不要从任何其他来源下载，不要使用别人送你的插件.&lt;br /&gt;
* Changes by build number can be examined in the Jenkins changes list.&lt;br /&gt;
* All commits can be seen in the GitHub commit history.&lt;br /&gt;
* &amp;lt;s&amp;gt;Plugin statistics are no longer reported to mcstats.org.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Support=&lt;br /&gt;
&lt;br /&gt;
==Documentation Resources==&lt;br /&gt;
&lt;br /&gt;
* Consider first: [https://github.com/asofold/NCPDocs/blob/master/FAQ.creole#faq Frequently asked Questions] and [https://github.com/asofold/NCPDocs/blob/master/Known%20Issues.creole#known-issues Known Issues].&lt;br /&gt;
* [https://github.com/asofold/NCPDocs/blob/master/README.creole#ncpdocs Wiki] (Configuration, Permissions, Commands)&lt;br /&gt;
* Developers might have a look at the page describing the API of NoCheatPlus.&lt;br /&gt;
==Contact us==&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=ItemLinker&amp;diff=1261</id>
		<title>ItemLinker</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=ItemLinker&amp;diff=1261"/>
		<updated>2015-08-11T13:32:58Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Bukkit Plugin Infobox&lt;br /&gt;
|version=v0.0.2&lt;br /&gt;
|兼容服务端版本=1.8CB  1.7.9-R0.2  1.8.3&lt;br /&gt;
|URL=http://dev.bukkit.org/bukkit-plugins/itemlinker/&lt;br /&gt;
}}&lt;br /&gt;
ItemLinker - 此插件可以添加装备展示功能, 让玩家了解你手持物品的一些信息或属性&lt;br /&gt;
&lt;br /&gt;
[[File:ItemLinker- Logo.png|frame|right|展示图片]] &lt;br /&gt;
[[Category:角色]]&lt;br /&gt;
[[Category:聊天]]&lt;br /&gt;
== 插件特性 ==&lt;br /&gt;
*可让玩家将手上的物品展示在聊天内容里&lt;br /&gt;
&lt;br /&gt;
== 安装方法 ==&lt;br /&gt;
#放入plugins&lt;br /&gt;
#重启服务器&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
#手持需要展示的物品&lt;br /&gt;
#然后在聊天栏内输入[item]即可&lt;br /&gt;
&lt;br /&gt;
== 命令 &amp;amp; 权限 ==&lt;br /&gt;
此插件无权限与命令&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=Studio%E8%AE%A8%E8%AE%BA:%E4%BA%92%E5%8A%A9%E5%AE%A2%E6%A0%88&amp;diff=1257</id>
		<title>Studio讨论:互助客栈</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=Studio%E8%AE%A8%E8%AE%BA:%E4%BA%92%E5%8A%A9%E5%AE%A2%E6%A0%88&amp;diff=1257"/>
		<updated>2015-08-11T10:32:16Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;暂不启用。&lt;br /&gt;
快去群里互助、&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
	<entry>
		<id>https://mineplugin.org/index.php?title=PermissionsEX&amp;diff=1256</id>
		<title>PermissionsEX</title>
		<link rel="alternate" type="text/html" href="https://mineplugin.org/index.php?title=PermissionsEX&amp;diff=1256"/>
		<updated>2015-08-11T10:22:44Z</updated>

		<summary type="html">&lt;p&gt;Mcdarc：​/* IMPORTANT NOTICES */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{待翻译}}&lt;br /&gt;
{{Bukkit Plugin Infobox&lt;br /&gt;
|插件名=PermissonEX(PEX)&lt;br /&gt;
|版本=v1.23.1&lt;br /&gt;
|前置插件=无&lt;br /&gt;
|兼容服务端版本=1.8.1&lt;br /&gt;
|網址=http://dev.bukkit.org/bukkit-plugins/permissionsex/&lt;br /&gt;
}}&lt;br /&gt;
=概述=&lt;br /&gt;
==介绍==&lt;br /&gt;
PermissionsEx (PEX) 是一个新的权限（组）, 基于权限组和它的所有功能. 但是PEX插件能做到更多！ 它提供了各式各样有力的后台和游戏内管理方式, 很好的限制了一些玩家对于服务器的修改.&lt;br /&gt;
&lt;br /&gt;
==现有特性==&lt;br /&gt;
版本V1.21开始支持UUID&lt;br /&gt;
不同的存储方式。目前的存储方式有:文本存储(YAML),数据库存储(MySQL，SQLite)。当然,也支持你自己添加！&lt;br /&gt;
YAML存储方式,对于新手,最容易配置的方式,所有玩家的信息都存储在 permission.yml 文件里面,缺点:后期读取可能出现卡顿。&lt;br /&gt;
SQL存储方式,对于有一定基础的人,推荐此方式，目前支持MySQL和SQLite，其他的数据库(如Postgre)也是可以的。PEX会自动创建数据库的表单。这就说明了,你只需要设置好PEX如何连接到数据库，剩余的你就只需要看着PEX自己完成了。&lt;br /&gt;
简明的构架和API接口，如果你对编程有一定了解，那么你可以改变很多。&lt;br /&gt;
全面的指令，你可以在游戏里/控制台，做到你想做的任何事情。指令列表看下文。&lt;br /&gt;
多世界 - 你可以设置一个玩家在某个世界的单独权限，比如在世界A不能破坏，在世界B不能拾取等等。(设置个别方块等权限,见下文)&lt;br /&gt;
权限组的继承，用户可以继承组的权限,组也可以继承组的权限，并且可以选择继承他们的权限、前缀、后缀。&lt;br /&gt;
权限的表达方式，这说明,如果你习惯于GroupManager,你也不用担心更换权限插件之后的不习惯。例子: - essentials.fly 这个权限就是允许玩家使用/fly指令&lt;br /&gt;
多世界权限继承，你可以继承不同世界的权限。也可以在不同世界继承不同的权限。&lt;br /&gt;
良好的优化，当你拥有大量用户的时候,你会发现没有延迟！&lt;br /&gt;
排行榜,你可以设置权限组的排列顺序&lt;br /&gt;
计时权限!你可以使用指令给玩家添加一个时限权限！注意:当服务端重启,或者崩溃将会失效。&lt;br /&gt;
V1.21.1版本开始 PEX支持自动更新,不过并不是跨阶段的更新,只支持BUG修复等更新,防止出现大更新,没有备份而导致文件丢失(V1.21.1→V1.21.2  而不是 V1.21.1 →V1.22.1),当然你也可以在config.yml文件中关闭更新。&lt;br /&gt;
Bukkit权限的兼容&lt;br /&gt;
禁用错误报告,在插件文件夹目录下创建一个文件,名为&#039;report-disable&#039;。&lt;br /&gt;
&lt;br /&gt;
=进阶权限管理=&lt;br /&gt;
===权限的继承 ===&lt;br /&gt;
&lt;br /&gt;
很多服务器配置了多个权限组, 添加权限要各组分别添加. 权限继承可以服务器管理最大限度的减少每一组重复的节点数量.&lt;br /&gt;
&lt;br /&gt;
这里假定您已经完成了基本教程，如还没有，请看基础权限知识，不然的话不能保证您能明白这里的每一步.&lt;br /&gt;
&lt;br /&gt;
实际上，使用了基本教程中的案例，你会发现Member, VIP 和Moderator组都有共同的节点 ,  modifyworld.* .这里不需要使用继承.&lt;br /&gt;
&lt;br /&gt;
===权限继承规则===&lt;br /&gt;
&lt;br /&gt;
当继承需要处理,PEX会遵循下列规则:&lt;br /&gt;
&lt;br /&gt;
对玩家的设置(前缀,后缀,权限节点,etc.)拥有比组更高的优先权.&lt;br /&gt;
设置给一个组的玩家权限在当玩家个人设置生效前被组中任意玩家继承.&lt;br /&gt;
Permission nodes are evaluated in order of the inheritance tree (see The Inheritance Tree for details)&lt;br /&gt;
A group set to inherit from another group will inherit everything (this includes other inheritance directives!) from the source group, not just permissions. For example, if you have group B inheriting from group A, and group A is set to inherit from group B, PEX will follow the inheritance chain on group A, which is set to inherit from B, which inherits from A, and so on. Watch for this, it will cause a loop that will crash PEX.&lt;br /&gt;
&lt;br /&gt;
===对现有的权限组使用继承功能 ===&lt;br /&gt;
&lt;br /&gt;
用现有的组使用继承功能的话 设置PEX默认组的命令会很容易.&lt;br /&gt;
&lt;br /&gt;
用Moderator权限组继承VIP权限组的例子&lt;br /&gt;
&lt;br /&gt;
 pex group VIP parents set Member （这个命令是VIP组组继承了Moderator组的所有权限）&lt;br /&gt;
 pex group Moderator parents set VIP （这个命令是Moderator组继承了VIP组的所有权限）&lt;br /&gt;
 删除多余的权限节点&lt;br /&gt;
&lt;br /&gt;
 pex group VIP remove modifyworld.*&lt;br /&gt;
 pex group Moderator remove modifyworld.*&lt;br /&gt;
现在，VIP组和Moderator组仍然具有相同的权限，VIP组得到 modifyworld.* 权限节点 VIP组成员获得了 -modifyworld.mobtarget.monster.creeper 的权限节点，和Moderator组继承来自VIP组的节点（包括从它的组成员继承的节点）同时获得了modifyworld。mobtarget节点。&lt;br /&gt;
&lt;br /&gt;
权限文件的相关部分现在看起来应该像这样:&lt;br /&gt;
&lt;br /&gt;
    Member:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;8M&amp;amp;7ember&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        permissions:&lt;br /&gt;
        - modifyworld.*&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;900&#039;&lt;br /&gt;
    VIP:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;eVIP&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - Member&lt;br /&gt;
        permissions:&lt;br /&gt;
        - -modifyworld.mobtarget.monster.creeper&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;800&#039;&lt;br /&gt;
    Moderator:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;1Moderator&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - VIP&lt;br /&gt;
        permissions:&lt;br /&gt;
        - -modifyworld.mobtarget.*&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;100&#039;&lt;br /&gt;
这个例子不能大幅度的减少文件大小, 但是如果一个服务器有几个权限组 十几个权限组或者更多的权限节点与权限组的话，权限文件大小是可以被大幅度的压缩的.&lt;br /&gt;
&lt;br /&gt;
这种继承也可以应用于服务器的一个世界或多个世界。想知道更多的话 可以去看 multiworld 继承部分哦.&lt;br /&gt;
&lt;br /&gt;
===继承树===&lt;br /&gt;
&lt;br /&gt;
(Thanks goes to aviator14 for use of these nodes)&lt;br /&gt;
&lt;br /&gt;
Due to the way PEX deals with file backends, it may help to view inheritance as a tree. For example, we have the following permission nodes:&lt;br /&gt;
&lt;br /&gt;
  Guest:&lt;br /&gt;
    prefix: &#039;&amp;amp;7&#039;&lt;br /&gt;
    default: true&lt;br /&gt;
    permissions: []&lt;br /&gt;
  Player:&lt;br /&gt;
    prefix: &#039;&amp;amp;f&#039;&lt;br /&gt;
    default: false&lt;br /&gt;
    permissions:&lt;br /&gt;
    - generic.user.permissions&lt;br /&gt;
    - -multiverse.access.world_creative&lt;br /&gt;
    - -multiverse.portal.access.end&lt;br /&gt;
    - multiverse.access.*&lt;br /&gt;
    - multiverse.core.coord&lt;br /&gt;
    - multiverse.core.info&lt;br /&gt;
    - multiverse.core.list.who&lt;br /&gt;
    - multiverse.portal.access.*&lt;br /&gt;
    inheritance:&lt;br /&gt;
    - Guest&lt;br /&gt;
  Donator:&lt;br /&gt;
    prefix: &#039;&amp;amp;5&#039;&lt;br /&gt;
    permissions:&lt;br /&gt;
    - generic.donor.permissions&lt;br /&gt;
    - multiverse.access.world_creative&lt;br /&gt;
    inheritance:&lt;br /&gt;
    - Player&lt;br /&gt;
  Supporter:&lt;br /&gt;
    prefix: &#039;&amp;amp;6&#039;&lt;br /&gt;
    permissions:&lt;br /&gt;
    - more.generic.donor.permissons&lt;br /&gt;
    - multiverse.portal.access.end&lt;br /&gt;
    inheritance:&lt;br /&gt;
    - Donator&lt;br /&gt;
  Moderator:&lt;br /&gt;
    prefix: &#039;&amp;amp;d&#039;&lt;br /&gt;
    permissions:&lt;br /&gt;
    - generic.moderator.permissions&lt;br /&gt;
    inheritance:&lt;br /&gt;
    - Player&lt;br /&gt;
  ModD:&lt;br /&gt;
    prefix: &#039;&amp;amp;d&#039;&lt;br /&gt;
    permissions: []&lt;br /&gt;
    inheritance:&lt;br /&gt;
    - Moderator&lt;br /&gt;
    - Donator&lt;br /&gt;
  ModS:&lt;br /&gt;
    prefix: &#039;&amp;amp;d&#039;&lt;br /&gt;
    permissions: []&lt;br /&gt;
    inheritance:&lt;br /&gt;
    - Moderator&lt;br /&gt;
    - Supporter&lt;br /&gt;
The original forum post these nodes came from was asking why the ModD group was not getting the multiverse.portal.access.end node it was inheriting from the Donator group. Well, the reason for this is because of the way PEX evaluates nodes in a file backend and the inheritance tree.&lt;br /&gt;
&lt;br /&gt;
An abbreviated version of the tree for the ModD group is this:&lt;br /&gt;
&lt;br /&gt;
ModD permissions (none)&lt;br /&gt;
Moderator (generic.moderator.permissions) which inherits from Player&lt;br /&gt;
Player (which has -multiverse.access.world_creative among others) and inherits from Guest&lt;br /&gt;
Guest (no permissions)&lt;br /&gt;
Donator (generic.donor.permissions, multiverse portal access node) which inherits from Player&lt;br /&gt;
Player (which has -multiverse.access.world_creative among others) and inherits from Guest&lt;br /&gt;
Guest (no permissions)&lt;br /&gt;
In this case, the issue was due to the Moderator tree being evaluated first, which finds the negation node for multiverse and stops looking. If the Donator tree was listed first (which was the suggested fix), PEX would follow that inheritance tree first, which has the multiverse permissions, and allow access to that node.&lt;br /&gt;
&lt;br /&gt;
===Regular Expressions (regex)===&lt;br /&gt;
&lt;br /&gt;
Regular Expressions, also known as regex or regexp, is a way to &#039;match&#039; strings of text, such as particular characters, words, or patterns of characters. PEX supports a subset of regex in it&#039;s permission node checks.&lt;br /&gt;
&lt;br /&gt;
PEX supports open and closed parentheses ( ) for grouping, curly braces { } for pattern matching, a pipe | for &amp;quot;or&amp;quot;, and a dash - for through (as in numbers 1 through 5).&lt;br /&gt;
&lt;br /&gt;
WARNING: If you have any nodes that use these characters then you MUST either put the line in quotes or escape with a backslash the character. If you do not, PEX may mistake the character as an attempt to use a regex, causing a Java error and rendering your permissions useless!&lt;br /&gt;
&lt;br /&gt;
To use it, place the conditions/keywords and/or id numbers in a group, separated by a pipe or a dash if wanting to cover multiple numbers in a sequence.&lt;br /&gt;
&lt;br /&gt;
If this is confusing, worry not. There is a reason why several technical book publishers sell books dedicated to regular expressions. Fortunately, for the purposes of PEX and permission nodes, it&#039;s much simpler to deal with, especially with examples of it in action.&lt;br /&gt;
&lt;br /&gt;
Assume that you have a group that you don&#039;t want opening the following:&lt;br /&gt;
&lt;br /&gt;
 Dispensers (&#039;dispenser&#039;, or 23)&lt;br /&gt;
 Chests (&#039;chest&#039;, or 54)&lt;br /&gt;
 Furnaces (&#039;furnace&#039;, or 61 unlit and &#039;burning_furnance&#039;, or 62 lit)&lt;br /&gt;
 Jukeboxes (&#039;jukebox&#039;, or 84)&lt;br /&gt;
 Remember to check your use-material-names node setting.&lt;br /&gt;
&lt;br /&gt;
You could have a set of nodes like this:&lt;br /&gt;
&lt;br /&gt;
 - -modifyworld.blocks.interact.dispenser&lt;br /&gt;
 - -modifyworld.blocks.interact.chest&lt;br /&gt;
 - -modifyworld.blocks.interact.furnace&lt;br /&gt;
 - -modifyworld.blocks.interact.burning_furnace&lt;br /&gt;
 - -modifyworld.blocks.interact.jukebox&lt;br /&gt;
However, this is unnecessary. Using the regex support in PEX, you can combine the nodes into a single line: - -modifyworld.blocks.interact.(dispenser|chest|burning_furnace|furnace|jukebox) - -modifyworld.blocks.interact.(23|54|61|62|84) (for use-material-names: false)&lt;br /&gt;
&lt;br /&gt;
If you wanted to keep a group from destroying stone (1), grass (2), dirt (3), and cobblestone (4), you can use modifyworld.blocks.destroy.(1-4)&lt;br /&gt;
&lt;br /&gt;
You can also use &#039;or&#039; on other parts of the node.&lt;br /&gt;
&lt;br /&gt;
Keeping with the previous example, adding the ability to place the blocks looks like modifyworld.blocks.(destroy|place).(1-4) Adding sand (12) to this example, you could use modifyworld.blocks.(destroy|place).(1-4|12)&lt;br /&gt;
&lt;br /&gt;
Adding this to a group, such as the default group, is as simple as using the pex group &amp;lt;group&amp;gt; add &amp;lt;node&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
pex group default add modifyworld.blocks.(destroy|place).(1-4|12)&lt;br /&gt;
Any extra nodes can be removed with the pex group &amp;lt;group&amp;gt; remove &amp;lt;node&amp;gt; command. See Commands for more on the add/remove commands.&lt;br /&gt;
&lt;br /&gt;
For advanced users, users can place a $ character directly in front of the node (after any other flag characters) to prevent PEX from performing regex escaping of . and *, so that they behave as normal regex characters rather than their function as delimiters in permissions nodes (escaped by default for backwards compatibility and user sanity)&lt;br /&gt;
&lt;br /&gt;
As you can see, the ability to use regex in permissions can save a lot of typing.&lt;br /&gt;
&lt;br /&gt;
File Back-end Example&lt;br /&gt;
&lt;br /&gt;
In the interest of completeness, this is the full permissions file after the inheritance and regex commands listed above. This example assume use-material-names: false in your plugins/Modifyworld/config.yml file.&lt;br /&gt;
&lt;br /&gt;
groups:&lt;br /&gt;
    default:&lt;br /&gt;
        default: true&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;1000&#039;&lt;br /&gt;
        permissions:&lt;br /&gt;
        - modifyworld.chat&lt;br /&gt;
        - modifyworld.blocks.(destroy|place).(1-4|12)&lt;br /&gt;
    Member:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;8M&amp;amp;7ember&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        permissions:&lt;br /&gt;
        - modifyworld.*&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;900&#039;&lt;br /&gt;
    VIP:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;eVIP&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - Member&lt;br /&gt;
        permissions:&lt;br /&gt;
        - -modifyworld.mobtarget.monster.creeper&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;800&#039;&lt;br /&gt;
    Moderator:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;1Moderator&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - VIP&lt;br /&gt;
        permissions:&lt;br /&gt;
        - -modifyworld.mobtarget.*&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;100&#039;&lt;br /&gt;
    Admins:&lt;br /&gt;
        prefix: &#039;&amp;amp;0(&amp;amp;4Admins&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
        permissions:&lt;br /&gt;
        - -modifyworld.mobtarget.*&lt;br /&gt;
        - modifyworld.*&lt;br /&gt;
        - permissions.*&lt;br /&gt;
        options:&lt;br /&gt;
            rank: &#039;1&#039;&lt;br /&gt;
users:&lt;br /&gt;
    AnotherPlayer:&lt;br /&gt;
        group:&lt;br /&gt;
        - default&lt;br /&gt;
    YourPlayerName:&lt;br /&gt;
        group:&lt;br /&gt;
        - Admins&lt;br /&gt;
===Multiworld===[[Multiworld]]&lt;br /&gt;
&lt;br /&gt;
Having several maps (or worlds) on a server is a common way to offer more than one game play experience. However, not all commands are suitable for all worlds. You wouldn&#039;t want a hardcore survival world to have access to the give command, but it may be perfectly fine, if not required, in a world intended for free building. Fortunately, limiting a permission node to a specific world is easy with PEX by specifying the world when adding the permission node.&lt;br /&gt;
&lt;br /&gt;
Assume the following server setup:&lt;br /&gt;
&lt;br /&gt;
 A survival world with Nether and End worlds (named survival, survival_nether, and survival_the_end respectively)&lt;br /&gt;
 A free build world (named freebuild)&lt;br /&gt;
 A group (pvp) that has the ability to build in the survival world only (modifyworld.*)&lt;br /&gt;
 A group (build) that has the ability to build in the survival and free build world (modifyworld.*)&lt;br /&gt;
See Modifyworld page for details on block placement permission nodes.&lt;br /&gt;
&lt;br /&gt;
The commands to set this up are:&lt;br /&gt;
&lt;br /&gt;
 /pex group pvp add modifyworld.* survival (add build permissions to the survival world for the pvp group)&lt;br /&gt;
 /pex group build add modifyworld.* freebuild (add build permissions to the freebuild world for the build group)&lt;br /&gt;
 /pex group build parents set pvp (Set the build group to inherit the permission to build in the survival world)&lt;br /&gt;
Keep in mind that if you edit/add the multiworld lines into the permissions file by hand, make sure the name you use matches the one used in the bukkit configs and what is on the server, capitalization matters here!&lt;br /&gt;
&lt;br /&gt;
The resulting permissions will look like this in the file back-end:&lt;br /&gt;
&lt;br /&gt;
groups:&lt;br /&gt;
    pvp:&lt;br /&gt;
        permissions:&lt;br /&gt;
        worlds:&lt;br /&gt;
            survival:&lt;br /&gt;
                permissions:&lt;br /&gt;
                - modifyworld.*&lt;br /&gt;
    build:&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - pvp&lt;br /&gt;
        permissions:&lt;br /&gt;
        worlds:&lt;br /&gt;
            freebuild:&lt;br /&gt;
                permissions:&lt;br /&gt;
                - modifyworld.*&lt;br /&gt;
===多世界继承===&lt;br /&gt;
&lt;br /&gt;
你也许看到了这一步的缺陷, 这两个权限组都被允许在地狱与末地使用. 可以用这两种方法对其纠正:&lt;br /&gt;
&lt;br /&gt;
为每个世界单独添加modifyworld.*权限&lt;br /&gt;
用以下指令来/pex world &amp;lt;world&amp;gt; inherit &amp;lt;parentWorlds&amp;gt; /pex world pvp_nether inherit pvp /pex world pvp_the_end inherit pvp进行世界权限继承&lt;br /&gt;
这些指令执行后后台的配置文件应该会像这样:&lt;br /&gt;
&lt;br /&gt;
worlds:&lt;br /&gt;
    pvp_nether:&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - pvp&lt;br /&gt;
    pvp_the_end:&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - pvp&lt;br /&gt;
&lt;br /&gt;
=Backends=&lt;br /&gt;
原帖是这么说的&lt;br /&gt;
PermissionsEx provides several backends to store permissions data. This page (will explain) explains them all.&lt;br /&gt;
（PEX插件提供了一些用于保存权限数据的后台，这个页面会解释所有）&lt;br /&gt;
但其实这个页面只有这一句话（或许是服务器问题）&lt;br /&gt;
所以请等待更新。&lt;br /&gt;
&lt;br /&gt;
=基础的权限设定=&lt;br /&gt;
==权限节点的基本添加和否定 == &lt;br /&gt;
PEX插件有一个普遍原则，就是权限运行命令是不允许的，除非这个权限节点是具体列出的. 对于那些可以被默认（default）操作的事件和命令, PEX插件可以拒绝访问那些被否定的节点.&lt;br /&gt;
&lt;br /&gt;
使用一个可以拒绝访问节点就像用 pex group &amp;lt;group&amp;gt; add &amp;lt;node&amp;gt;（最基本的权限给予命令） 命令那样简单. 使用同样的命令，只在权限节点前加一个负号（-）即可.&lt;br /&gt;
&lt;br /&gt;
举个例子 /give 和 /plugins 命令是水桶客户端的一部分（基本命令）&lt;br /&gt;
&lt;br /&gt;
 /give 命令有一个权限节点 command.give 这个命令一般限制在ops.txt列出的人使用（管理员命令）&lt;br /&gt;
 /plugins 命令也有个权限节点 command.plugins 它可以被服务器中任何人使用。&lt;br /&gt;
我们可以试试对于某个权限组增加和否定这两个节点:&lt;br /&gt;
&lt;br /&gt;
 如果允许某个权限组使用/give, 就可以输入命令 pex group 组别名 add bukkit.command.give&lt;br /&gt;
 不允许某个权限组使用 /plugins, 这时候的命令就为 pex group 组别名 add -bukkit.command.plugins&lt;br /&gt;
&lt;br /&gt;
===重要的关于*的信息 ===&lt;br /&gt;
PEX插件允许使用XXX*来给予XXX下的所有的分权限节点，但是呢，在使用这个前，&#039;&#039;你必须要明白它怎么工作以及会造成什么效果&#039;&#039;。一开始浏览的时候，这看上去很简单，给一个权限组“*”使它可以访问所有的权限节点，但是这也可能会导致你给了你不想要给这个权限组的权限。例如，在插件VanishNoPacket（简称VNP）中，它提供了一个权限vanish.silentjoin，使得所有的用户在登入时都不会显示加入公告，这是大多数服务器主人都不想要的效果。实际上这也可以用否定节点来简单解决（否定节点优先），任何给默认组使用的权限节点都能被否定以“关闭功能”&lt;br /&gt;
&lt;br /&gt;
===重要的后台文件 === &lt;br /&gt;
如果你要在后台修改编辑权限的话，请阅读并遵守以下规则:&lt;br /&gt;
权限必须以一个空格或者负号开始&lt;br /&gt;
- modifyworld.chat 和 - -modifyworld.mobtarget.*是在后台文件中有效的（格式正确）。&lt;br /&gt;
modifyworld.chat 和 -modifyworld.mobtarget.* 在后台文件中无效（格式不正确，无空格或负号）。&lt;br /&gt;
所有在YAML文件中的格式规则在PEX插件基本文件中必须被遵守，错误的文件会使得PEX插件无法启动，然后把log文件塞满错误信息。&lt;br /&gt;
PEX插件用自上而下的方式来检查用户和组别的权限节点，就像网络防火墙一样，如果它找到了一个与它想找的匹配的节点，它就会停止寻找，这就意味着在现实中，如果一个权限给了主要组别和它所有的子组别，它在看到允许的权限后就会停止寻找而忽略否定节点。&lt;br /&gt;
我们举个错误的例子&lt;br /&gt;
&lt;br /&gt;
default:&lt;br /&gt;
  options:&lt;br /&gt;
    default: true&lt;br /&gt;
  permissions:&lt;br /&gt;
  - modifyworld.*&lt;br /&gt;
  - -modifyworld.blocks.interact.23&lt;br /&gt;
用这样的权限节点文件，如果一个玩家想要打开一个发射器（ID 23），它第一个会匹配到modifyworld.*节点然后停止，以至于允许玩家打开！（实际上第二个权限节点是不允许这样的事情发生的。&lt;br /&gt;
&lt;br /&gt;
不过，如果把这两行互换，-modifyworld.blocks.interact.23在modifyworld.*之前，玩家会被拒绝访问发射器（插件先检测到-modifyworld.blocks.interact.23节点）如果一个玩家想要打开一个熔炉（ID 61）插件就会检测到modifyworld.*节点，然后认为是modifyworld.blocks.interact.61节点，使得玩家可以打开。&lt;br /&gt;
&lt;br /&gt;
==上机操作==&lt;br /&gt;
&lt;br /&gt;
先来试试基本的权限指令和插件基本功能（以下作为教程实例并且推荐各服务器使用。）&lt;br /&gt;
创建五个组别个组别：Default，Member，VIP,Mod,Admin。&lt;br /&gt;
 &amp;quot;Default&amp;quot; 可以聊天但是不可以改动任何东西，没有称号&lt;br /&gt;
 &amp;quot;Member&amp;quot;信任的玩家组别，可以改动世界，拥有称号 (&amp;quot;&amp;amp;0(&amp;amp;8M&amp;amp;7ember&amp;amp;0)&amp;amp;7 &amp;quot;)&lt;br /&gt;
 &amp;quot;VIP&amp;quot; 可以改动世界还可以不受到苦力怕的烦恼（这个VIP棒）！ 并且拥有称号&amp;quot;&amp;amp;0(&amp;amp;eVIP&amp;amp;0)&amp;amp;7 &amp;quot;.&lt;br /&gt;
 A &amp;quot;Mod&amp;quot;  可以不受到任何怪物的困扰（万岁！）.&lt;br /&gt;
 An &amp;quot;Admin&amp;quot; (管理员) 是超级用户，可以使用这个插件的所有功能并且拥有炫酷的称号比如 &amp;quot;&amp;amp;0(&amp;amp;4Admin&amp;amp;0)&amp;amp;7 &amp;quot;.&lt;br /&gt;
可选: 去除 modifyworld.* 权限从 &amp;quot;Default&amp;quot; 权限组中&lt;br /&gt;
可选: 添加 modifyworld.chat 权限到 &amp;quot;Default&amp;quot; 权限组里&lt;br /&gt;
是时候测试环境了&lt;br /&gt;
&lt;br /&gt;
===准备===&lt;br /&gt;
安装PEX插件（放在插件目录下）&lt;br /&gt;
&lt;br /&gt;
开启服务器.&lt;br /&gt;
&lt;br /&gt;
打开浏览器控制台（租借，后台服务器的话）&lt;br /&gt;
&lt;br /&gt;
在浏览器中打开PEX插件的配置文件&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===开始基础及基本权限 === &lt;br /&gt;
这些命令必须在控制台输入&lt;br /&gt;
&lt;br /&gt;
创建一个Admin权限组（pex group admin create命令）&lt;br /&gt;
&lt;br /&gt;
把 permissions.* 权限加入到组别中（pex group Admin add pressions.*命令）&lt;br /&gt;
把你自己加入组中 （pex user 你的游戏名 group set Admin）, 其中你的游戏名是你在游戏内的ID名.&lt;br /&gt;
可选的:给自己所有权限不管自己是不是在拥有permissions.*权限的权限组里&lt;br /&gt;
&lt;br /&gt;
====如果你不想（不能）在控制台输入====&lt;br /&gt;
创建一个permissions.yml文件输入以下文字，并上传（放置）到PEX插件的目录，请确保你的格式是正确的！看上面的YAML后台信息的帮助。&lt;br /&gt;
&lt;br /&gt;
 groups:&lt;br /&gt;
 Default:&lt;br /&gt;
   options:&lt;br /&gt;
     default: true&lt;br /&gt;
   permissions:&lt;br /&gt;
&lt;br /&gt;
  modifyworld.* Admin: options: prefix: &#039;&amp;amp;0(&amp;amp;4Admin&amp;amp;0)&amp;amp;7 &#039; permissions:&lt;br /&gt;
  permissions.* users:你的用户名: group:&lt;br /&gt;
  Admin permissions:&lt;br /&gt;
  permissions.*&lt;br /&gt;
是时候创建其他组别了&lt;br /&gt;
&lt;br /&gt;
===创建其他组别: Member, VIP, Mod ===&lt;br /&gt;
&lt;br /&gt;
 使用这个命令创建Member组 /pex group Member create&lt;br /&gt;
 使用这个命令创建VIP组 /pex group VIP create&lt;br /&gt;
 使用这个命令创建Mod组 /pex group Mod create&lt;br /&gt;
接下来我们要标注这几个组别的阶级使得符合这样的顺序 Member -&amp;gt; VIP -&amp;gt; Mod -&amp;gt; Admin.看阶级页面以知道更多&lt;br /&gt;
&lt;br /&gt;
===设置阶级 ===&lt;br /&gt;
输入以下命令&lt;br /&gt;
 /pex group default set rank 1000&lt;br /&gt;
 /pex group Member set rank 900&lt;br /&gt;
 /pex group VIP set rank 800&lt;br /&gt;
 /pex group Mod set rank 100&lt;br /&gt;
 /pex group Admin set rank 1&lt;br /&gt;
阶级100是最高提升的阶级数。&lt;br /&gt;
&lt;br /&gt;
升级和降级命令都会在游戏内收到限制 (但在控制台不会). 在游戏中，你不可以:&lt;br /&gt;
&lt;br /&gt;
把一个低于你阶级的升到你的阶级 (Mod到Admin, 用前面的例子)&lt;br /&gt;
把一个阶级高于你的降到低于你的阶级(Admin到Mod,用前面的例子)&lt;br /&gt;
不能对于你同样阶级的升降级 (Mob不能对Mob操作，Admin不能对Admin操作。)&lt;br /&gt;
如果你在游戏内（只是举个例子）是Admin，想要把一个玩家提高到你一样的阶级必须使用/pex user PlayerName group set Admin.&lt;br /&gt;
&lt;br /&gt;
在控制台，你很自由可以不受以上限制。&lt;br /&gt;
&lt;br /&gt;
===炫酷的滑板鞋!(好吧只是称号吗)===&lt;br /&gt;
使用以下命令&lt;br /&gt;
 /pex group Member prefix &amp;quot;&amp;amp;0(&amp;amp;8M&amp;amp;7ember&amp;amp;0)&amp;amp;7 &amp;quot;&lt;br /&gt;
 /pex group VIP prefix &amp;quot;&amp;amp;0(&amp;amp;eVIP&amp;amp;0)&amp;amp;7 &amp;quot;&lt;br /&gt;
 /pex group Mod prefix &amp;quot;&amp;amp;0(&amp;amp;1Mod&amp;amp;0)&amp;amp;7 &amp;quot;&lt;br /&gt;
 /pex group Admin prefix &amp;quot;&amp;amp;0(&amp;amp;4Admin&amp;amp;0)&amp;amp;7 &amp;quot;&lt;br /&gt;
确保在每个称号后面都加上了个空格，这可以阻止称号和用户名混在一起在聊天中。实际上，后缀前也是因为同样的理由加一个空格为好。还有一种可以显示前缀后缀的方法就是前缀后缀相同（只需把prefix变成suffix就行）。&lt;br /&gt;
&lt;br /&gt;
===给每个组别添加权限 ===&lt;br /&gt;
注意: 如果你还没有允许这些组别修改世界，那么删除modifiyworld.*这一步是不需要的.&lt;br /&gt;
&lt;br /&gt;
可选的: /pex group default remove modifyworld.*&lt;br /&gt;
可选的: /pex group default add modifyworld.chat (Only needed if modifyworld.* has been removed)&lt;br /&gt;
 /pex group Member add modifyworld.*&lt;br /&gt;
 /pex group VIP add modifyworld.*&lt;br /&gt;
 /pex group VIP add -modifyworld.mobtarget.monster.creeper&lt;br /&gt;
 /pex group Mod add modifyworld.*&lt;br /&gt;
 /pex group Mod add -modifyworld.mobtarget.*&lt;br /&gt;
 /pex group Admin add permissions.*&lt;br /&gt;
 /pex group Admin add modifyworld.*&lt;br /&gt;
 /pex group Admin add -modifyworld.mobtarget.*&lt;br /&gt;
来看看成果吧！&lt;br /&gt;
&lt;br /&gt;
===见证奇迹！===&lt;br /&gt;
&lt;br /&gt;
你想要改变你的权限组的话，使用这个命令 /pex user 玩家名 group set 权限组名，接下来就测试啦！&lt;br /&gt;
&lt;br /&gt;
Default&lt;br /&gt;
&lt;br /&gt;
 验证你可以聊天&lt;br /&gt;
 验证你有正确的前缀在聊天时&lt;br /&gt;
 验证你可以在出生点外破坏方块&lt;br /&gt;
 注意: 如果你把modifyworld.* 节点之前移除了，就不能破坏（之前是可选项）&lt;br /&gt;
 如果你可以破坏但是modifyworld.* 节点被移除了！, 找到个爬行者然后拥抱它！ (别担心，它保证对你没兴趣但是你伤得了它)&lt;br /&gt;
Member&lt;br /&gt;
&lt;br /&gt;
 验证你可以聊天&lt;br /&gt;
 验证你有正确的前缀在聊天时&lt;br /&gt;
 验证你可以在出生点外破坏方块&lt;br /&gt;
VIP&lt;br /&gt;
&lt;br /&gt;
 验证你可以聊天&lt;br /&gt;
 验证你有正确的前缀在聊天时&lt;br /&gt;
 验证你可以在出生点外破坏方块&lt;br /&gt;
 如果你可以破坏但是modifyworld.* 节点被移除了！, 找到个爬行者然后拥抱它！ (别担心，它保证对你没兴趣但是你伤得了它)&lt;br /&gt;
Admin&lt;br /&gt;
&lt;br /&gt;
 验证你可以聊天&lt;br /&gt;
 验证你有正确的前缀在聊天时&lt;br /&gt;
 验证你可以在出生点外破坏方块 (如果你把玩家名字放在了OP文件中，并且在PEX插件配置config文档里把allowOps设置为了true，你将可以在出生点附近破坏).&lt;br /&gt;
 验证你可以使用PEX插件所有命令(使用/pex reload命令测试，它应该会回复 &amp;quot;Permissions Reloaded（权限重新加载）&amp;quot;)&lt;br /&gt;
 验证所有怪物都对你没兴趣&lt;br /&gt;
 下一步你可以换一个玩家作为“实验对象”比如加入游戏的好基友(这是为了科学！!)&lt;br /&gt;
&lt;br /&gt;
===测试阶级 ===&lt;br /&gt;
&lt;br /&gt;
 首先使用/pex user 另一个玩家 group set default&lt;br /&gt;
 验证升降级别命令有效 使用/pex promote 前面你移动的那个玩家. 你会看见 &amp;quot;User AnotherPlayer promoted to NextGroup（这个玩家到了下个组别）&amp;quot;&lt;br /&gt;
一直使用这个命令直到出现 &amp;quot;Promotion error: User is not promotable（升级错误，用户不允许）&amp;quot;. 使用 /pex user 这个玩家 命令会显示:&lt;br /&gt;
 playername are member of:&lt;br /&gt;
  Mod (rank 100 @ default)&lt;br /&gt;
 playername&#039;s permissions:&lt;br /&gt;
  -modifyworld.mobtarget.* (from Mod)&lt;br /&gt;
 modifyworld.* (from Mod)&lt;br /&gt;
 playername&#039;s options:&lt;br /&gt;
 降级和升级一样，只不过把命令中的promote变成demote&lt;br /&gt;
如果那个玩家只是个机器人, 如果你想的话，使用这个命令把它删掉 /pex user 玩家名 delete&lt;br /&gt;
如果那个玩家是真人，确保每个组别都正常工作（看上机教程最前面。）&lt;br /&gt;
&lt;br /&gt;
===后台文件案例=== &lt;br /&gt;
如果你成功了上面那个案例，你就会发现后台文件变成了这样。很具有参考性:&lt;br /&gt;
&lt;br /&gt;
  groups:&lt;br /&gt;
   default:&lt;br /&gt;
     options:&lt;br /&gt;
        rank: &#039;1000&#039;&lt;br /&gt;
       default: true&lt;br /&gt;
     permissions:&lt;br /&gt;
     - modifyworld.chat&lt;br /&gt;
   Member:&lt;br /&gt;
     permissions:&lt;br /&gt;
     - modifyworld.*&lt;br /&gt;
     options:&lt;br /&gt;
       rank: &#039;900&#039;&lt;br /&gt;
       prefix: &#039;&amp;amp;0(&amp;amp;8M&amp;amp;7ember&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
   VIP:&lt;br /&gt;
     permissions:&lt;br /&gt;
     - -modifyworld.mobtarget.monster.creeper&lt;br /&gt;
     - modifyworld.*&lt;br /&gt;
     options:&lt;br /&gt;
       rank: &#039;800&#039;&lt;br /&gt;
       prefix: &#039;&amp;amp;0(&amp;amp;eVIP&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
   Mod:&lt;br /&gt;
     permissions:&lt;br /&gt;
     - -modifyworld.mobtarget.*&lt;br /&gt;
     - modifyworld.*&lt;br /&gt;
     options:&lt;br /&gt;
       rank: &#039;100&#039;&lt;br /&gt;
       prefix: &#039;&amp;amp;0(&amp;amp;1Mod&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
   Admin:&lt;br /&gt;
     permissions:&lt;br /&gt;
     - -modifyworld.mobtarget.*&lt;br /&gt;
     - modifyworld.*&lt;br /&gt;
     - permissions.*&lt;br /&gt;
     options:&lt;br /&gt;
       rank: &#039;1&#039;&lt;br /&gt;
       prefix: &#039;&amp;amp;0(&amp;amp;4Admin&amp;amp;0)&amp;amp;7 &#039;&lt;br /&gt;
 users:&lt;br /&gt;
   AnotherPlayer:&lt;br /&gt;
     group:&lt;br /&gt;
     - default&lt;br /&gt;
   YourPlayerName:&lt;br /&gt;
     group:&lt;br /&gt;
     - Admin&lt;br /&gt;
这就是被解析后的文件的样子，但是最好使用YAML编写工具来确保你的文件已经正确，不然插件可能会出所有类别的错误！&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;users&amp;quot;: {&lt;br /&gt;
    &amp;quot;AnotherPlayer&amp;quot;: {&lt;br /&gt;
      &amp;quot;group&amp;quot;: [&lt;br /&gt;
        &amp;quot;default&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;YourPlayerName&amp;quot;: {&lt;br /&gt;
      &amp;quot;group&amp;quot;: [&lt;br /&gt;
        &amp;quot;Admin&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }, &lt;br /&gt;
  &amp;quot;groups&amp;quot;: {&lt;br /&gt;
    &amp;quot;default&amp;quot;: {&lt;br /&gt;
      &amp;quot;options&amp;quot;: {&lt;br /&gt;
        &amp;quot;default&amp;quot;: true, &lt;br /&gt;
        &amp;quot;rank&amp;quot;: &amp;quot;1000&amp;quot;&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;permissions&amp;quot;: [&lt;br /&gt;
        &amp;quot;modifyworld.chat&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;Member&amp;quot;: {&lt;br /&gt;
      &amp;quot;options&amp;quot;: {&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;amp;0(&amp;amp;8M&amp;amp;7ember&amp;amp;0)&amp;amp;7 &amp;quot;, &lt;br /&gt;
        &amp;quot;rank&amp;quot;: &amp;quot;900&amp;quot;&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;permissions&amp;quot;: [&lt;br /&gt;
        &amp;quot;modifyworld.*&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;VIP&amp;quot;: {&lt;br /&gt;
      &amp;quot;options&amp;quot;: {&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;amp;0(&amp;amp;eVIP&amp;amp;0)&amp;amp;7 &amp;quot;, &lt;br /&gt;
        &amp;quot;rank&amp;quot;: &amp;quot;800&amp;quot;&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;permissions&amp;quot;: [&lt;br /&gt;
        &amp;quot;-modifyworld.mobtarget.monster.creeper&amp;quot;, &lt;br /&gt;
        &amp;quot;modifyworld.*&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;Mod&amp;quot;: {&lt;br /&gt;
      &amp;quot;options&amp;quot;: {&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;amp;0(&amp;amp;1Mod&amp;amp;0)&amp;amp;7 &amp;quot;, &lt;br /&gt;
        &amp;quot;rank&amp;quot;: &amp;quot;100&amp;quot;&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;permissions&amp;quot;: [&lt;br /&gt;
        &amp;quot;-modifyworld.mobtarget.*&amp;quot;, &lt;br /&gt;
        &amp;quot;modifyworld.*&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;Admin&amp;quot;: {&lt;br /&gt;
      &amp;quot;options&amp;quot;: {&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;amp;0(&amp;amp;4Admin&amp;amp;0)&amp;amp;7 &amp;quot;, &lt;br /&gt;
        &amp;quot;rank&amp;quot;: &amp;quot;1&amp;quot;&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;permissions&amp;quot;: [&lt;br /&gt;
        &amp;quot;-modifyworld.mobtarget.*&amp;quot;, &lt;br /&gt;
        &amp;quot;modifyworld.*&amp;quot;, &lt;br /&gt;
        &amp;quot;permissions.*&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=Chat Manager=&lt;br /&gt;
=命令=&lt;br /&gt;
===实用指令===&lt;br /&gt;
注意，在以下命令里 user=玩家名字，world=世界名字 permission=权限 node=节点 backend=后台文件 group=权限组别&lt;br /&gt;
 /pex                                                                           显示帮助&lt;br /&gt;
permissions.manage&lt;br /&gt;
 /pex toggle debug                                                      调试开关（不要总开着！，要不然会出很多信息文件）&lt;br /&gt;
permissions.debug&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; toggle debug                                   给指定的一个人测试调整（上面一样）&lt;br /&gt;
permissions.manage.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; check &amp;lt;permission&amp;gt;                         检查一个具体的玩家的具体的权限&lt;br /&gt;
permissions.manage.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex reload                                                                  重新载入所有pex文件&lt;br /&gt;
permissions.manage.reload&lt;br /&gt;
 /pex config &amp;lt;node&amp;gt; [value]                                         看节点的值（写上后面的更改值）&lt;br /&gt;
permissions.manage.config	&lt;br /&gt;
 /pex backend                                                              看现在的后台文件（也就是正在用的文件）&lt;br /&gt;
permissions.manage.backend&lt;br /&gt;
 /pex hierarchy                                                            看现在服务器结构（阶级）&lt;br /&gt;
permissions.manage.users&lt;br /&gt;
 /pex dump &amp;lt;backend&amp;gt; &amp;lt;filename&amp;gt;                            把你的后台文件倒到另外一个文件里 谨慎使用！不会立刻保存，但会在游戏中有效果&lt;br /&gt;
permissions.manage.dump&lt;br /&gt;
 /pex users cleanup &amp;lt;group&amp;gt; [threshold]                     清走“死亡”的会员（默认30天不活动）&lt;br /&gt;
permissions.manage.users.cleanup&lt;br /&gt;
&lt;br /&gt;
===世界管理===&lt;br /&gt;
 /pex worlds                                                                  看PEX里面的世界&lt;br /&gt;
permissions.manage.worlds&lt;br /&gt;
 /pex world &amp;lt;world&amp;gt;                                                      看这个世界的层次信息&lt;br /&gt;
permissions.manage.worlds&lt;br /&gt;
 /pex world &amp;lt;world&amp;gt; inherit &amp;lt;parentWorlds&amp;gt;                 让你选择的世界继承一个世界（继承permission,etc.)&lt;br /&gt;
permissions.manage.worlds.inheritance	&lt;br /&gt;
玩家指令：&lt;br /&gt;
 /pex users list                                                                 看所有在PEX里面的玩家&lt;br /&gt;
permissions.manage.users&lt;br /&gt;
 /pex users                                                                      一样一样&lt;br /&gt;
 /pex user                                                                       一样一样                                                                               = = &lt;br /&gt;
玩家permission管理：&lt;br /&gt;
 /pex user                                                                      一样.....······&lt;br /&gt;
permissions.manage.users&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt;                                                          看玩家的权限&lt;br /&gt;
permissions.manage.users.permissions.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; prefix [newprefix]                              设置玩家前缀颜色&lt;br /&gt;
permissions.manage.users.prefix.&amp;lt;user&amp;gt;	&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; suffix [newsuffix]                               设置玩家后缀颜色&lt;br /&gt;
permissions.manage.users.suffix.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; delete                                                把玩家从权限文件里面移除&lt;br /&gt;
permissions.manage.users.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; list [world]                                          看玩家的权限&lt;br /&gt;
permissions.manage.users.permissions.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; add &amp;lt;permission&amp;gt; [world]                  给玩家增加权限&lt;br /&gt;
permissions.manage.users.permissions.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; remove &amp;lt;permission&amp;gt; [world]            给玩家移除权限&lt;br /&gt;
permissions.manage.users.permissions.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; timed add &amp;lt;permission&amp;gt; &amp;lt;lifetime in seconds&amp;gt; [world] 给玩家在时间内（秒）添加权限&lt;br /&gt;
permissions.manage.users.permissions.timed.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; timed remove &amp;lt;permission&amp;gt; &amp;lt;lifetime in seconds&amp;gt; [world]给玩家在时间内（秒）移除权限&lt;br /&gt;
permissions.manage.users.permissions.timed.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; set &amp;lt;option&amp;gt; &amp;lt;value&amp;gt; [world]          给玩家设选择值（不怎么懂表示，望进一步翻译和解释）&lt;br /&gt;
permissions.manage.users.permissions.&amp;lt;user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===玩家组管理===&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; group list                                          给出玩家所有现在在的组&lt;br /&gt;
permissions.manage.membership.&amp;lt;user&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; group add &amp;lt;group&amp;gt; [world] [lifetime]把玩家加入组（时间，秒，不设默认永久）&lt;br /&gt;
permissions.manage.membership.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; group set &amp;lt;group&amp;gt; [world]               把玩家放进组，注意这将会把玩家从另一个组移除&lt;br /&gt;
permissions.manage.membership.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex user &amp;lt;user&amp;gt; group remove &amp;lt;group&amp;gt; [world]            把玩家从组移除&lt;br /&gt;
permissions.manage.membership.&amp;lt;group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===默认组管理===&lt;br /&gt;
 /pex default group [world]                                            看默认的管理组情况&lt;br /&gt;
permissions.manage.groups.inheritance&lt;br /&gt;
 /pex set default group &amp;lt;group&amp;gt; [world]                       把权限组组设成默认&lt;br /&gt;
permissions.manage.groups.inheritance&lt;br /&gt;
&lt;br /&gt;
===组的指令===&lt;br /&gt;
 /pex group                                                                   显示所有创建了的组&lt;br /&gt;
permissions.manage.groups.list&lt;br /&gt;
 /pex groups                                                                  ↑（同上）&lt;br /&gt;
permissions.manage.groups.list&lt;br /&gt;
 /pex groups list                                                             ↑&lt;br /&gt;
permissions.manage.groups.list&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; prefix [newprefix]                        设置组前缀&lt;br /&gt;
permissions.manage.groups.prefix.&amp;lt;group&amp;gt;	&lt;br /&gt;
/pex group &amp;lt;group&amp;gt; suffix [newsuffix]                          设置组后缀&lt;br /&gt;
permissions.manage.groups.suffix.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; create [parents]                             创建组，parents（母权限组）是说他是从哪里升级得来的（继承权限)&lt;br /&gt;
permissions.manage.groups.create.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; delete                                            删除权限组&lt;br /&gt;
permissions.manage.groups.remove.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; parents list                                     看权限组的继承表&lt;br /&gt;
permissions.manage.groups.inheritance.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; parents set &amp;lt;parents&amp;gt;                   设置权限组组的母权限组&lt;br /&gt;
permissions.manage.groups.inheritance.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt;                                                      显示所有组的权限&lt;br /&gt;
permissions.manage.groups.permissions.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; list [world]                                     组的所有权限，加上世界名称可以看单个世界的权限&lt;br /&gt;
permissions.manage.groups.permissions.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; add &amp;lt;permission&amp;gt; [world]              给小组加权限 &lt;br /&gt;
permissions.manage.groups.permissions.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; remove &amp;lt;permission&amp;gt; [world]           移除权限&lt;br /&gt;
permissions.manage.groups.permissions.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; timed add &amp;lt;permission&amp;gt; [lifetime] [world] 给权限组限时加权限，不填默认永久&lt;br /&gt;
permissions.manage.groups.permissions.timed.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; timed remove &amp;lt;permission&amp;gt; [world]   给权限组限时移除权限组，不填默认永久&lt;br /&gt;
permissions.manage.groups.permissions.timed.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; set &amp;lt;option&amp;gt; &amp;lt;value&amp;gt; [world]       给组的人设置选则的值&lt;br /&gt;
permissions.manage.groups.permissions.&amp;lt;group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===组的玩家的管理===&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; users                                            所有在组里的玩家&lt;br /&gt;
permissions.manage.membership.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; user add &amp;lt;user&amp;gt;                          把玩家弄进小组&lt;br /&gt;
permissions.manage.membership.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex group &amp;lt;group&amp;gt; user remove &amp;lt;user&amp;gt;                    把玩家从组里移除&lt;br /&gt;
permissions.manage.membership.&amp;lt;group&amp;gt;&lt;br /&gt;
 /pex promote &amp;lt;user&amp;gt; &amp;lt;ladder&amp;gt;                                    不知道怎么翻译了Promote &amp;lt;玩家名&amp;gt; on &amp;lt;ladder&amp;gt;. If &amp;lt;ladder&amp;gt; is not specified, the default ladder (named default) will be used.&lt;br /&gt;
permissions.user.promote.&amp;lt;ladder&amp;gt; &lt;br /&gt;
 /pex demote &amp;lt;user&amp;gt; &amp;lt;ladder&amp;gt;      大题同上&lt;br /&gt;
permissions.user.demote.&amp;lt;ladder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
=Features=&lt;br /&gt;
=Integrating with PEX=&lt;br /&gt;
=Migration=&lt;br /&gt;
=Migration and UUIDs=&lt;br /&gt;
=Modifyworld（中译世界修改）=&lt;br /&gt;
===需要注意的地方===&lt;br /&gt;
&lt;br /&gt;
这些需要你已经安装了一个权限插件，其中需要先设置默认组只能聊天。&lt;br /&gt;
&lt;br /&gt;
默认情况下，玩家不会受限制，但是服务器通常需要通过自定义取消用户的权限节点来限制玩家的行为，你可以把modifyworld.*这个权限否定，这样玩家就什么都干不了了&lt;br /&gt;
&lt;br /&gt;
除了以上，默认时，这些关于世界修改的权限是使用方块名字来替代物品ID，如果你想使用ID，设置或增加config文件中的use-material-names: false即可&lt;br /&gt;
&lt;br /&gt;
否定一个节点（在前面加负号&amp;quot;－&amp;quot;,或者把它的值设为false）来否定玩家或者组别的一些功能。而通配符*是指父（即*前）权限节点下的所有子权限节点。&lt;br /&gt;
&lt;br /&gt;
当你在使用PEX插件时，你可以在文件里一行指定多个物品，用|分开，打出这个需要按住shift后按反斜杠\，比如(260|296|297) 就是苹果，小麦和面包，当然先要设置use-material-names: false&lt;br /&gt;
===重要提醒===&lt;br /&gt;
&lt;br /&gt;
Thanks to Bukkit user @Tahg we were notified about one issue with the modifyworld.blocks.place.* node: If you remove modifyworld.* from a group, for the group to place blocks, you will need to specify what blocks the group is allowed to place other blocks on using the modifyworld.blocks.interact.* (alternately you can use a wildcard for the block ID with modifyworld.blocks.interact.*) in addition to the modifyworld.blocks.place.* for the blocks the group is allowed to place. This is because Bukkit checks first for onPlayerInteract() then for onBlockPlace().&lt;br /&gt;
For example, when trying to place a sand block on a grass block, the permission node checks are modifyworld.blocks.interact.grass then modifyworld.blocks.place.sand. Consider the block being targeted with this action - the interact permission is required for the block that is targeted with right-click, and thus could be to the side or above the placed block.&lt;br /&gt;
Metadata can appear on a lot of blocks and items that you might not expect, please make sure you read the section on Metadata and check the debug output before posting in the forums!&lt;br /&gt;
&lt;br /&gt;
===配置文件===&lt;br /&gt;
&lt;br /&gt;
Modifyworld 的配置文件储存在 plugins/Modifyworld/config.yml&lt;br /&gt;
&lt;br /&gt;
下面是 ModifyWorld 的配置文件:&lt;br /&gt;
&lt;br /&gt;
 informPlayers: true&lt;br /&gt;
 itemRestrictions: true&lt;br /&gt;
 whitelist: false&lt;br /&gt;
 messages:&lt;br /&gt;
    prohibitedItem: 你拥有违禁物品 &amp;quot;%s&amp;quot;.&lt;br /&gt;
    whitelist: 你没有白名单加入这个服务器.拜拜!&lt;br /&gt;
    permissionDenied: 对不起,你没有足够的权限！&lt;br /&gt;
 use-material-names: true&lt;br /&gt;
 drop-restricted-item: false&lt;br /&gt;
 item-use-check: false&lt;br /&gt;
&lt;br /&gt;
===Configuration Properties===&lt;br /&gt;
&lt;br /&gt;
由于搬运，格式有些耽误此处格式为：&lt;br /&gt;
&lt;br /&gt;
权限/实体...名   （默认是否开启，false为不开启，或者该项的值） 简介&lt;br /&gt;
 informPlayers	false	是否通知玩家该玩家的权限变化&lt;br /&gt;
 itemRestrictions	false	Enable/disable item restrictions. If this is enabled, items not configured to be allowed will be removed from the player&#039;s inventory if it&#039;s found.&lt;br /&gt;
 messages.prohibitedItem	你禁止某项物品后，会发送信息给拥有被禁止的物品者&lt;br /&gt;
 messages.whitelist	You are not allowed to join this server. Goodbye!	给不在白名单内玩家的信息&lt;br /&gt;
 messages.permissionDenied	Sorry, you don&#039;t have enough permissions	给尝试做没有权限的事情的玩家的信息&lt;br /&gt;
 whitelist	false	是否开启白名单&lt;br /&gt;
 drop-restricted-item	false	设置为true后玩家丢出物品时是“吐出”然而设置为false后玩家丢物品，物品会直接不见！&lt;br /&gt;
 use-material-names	true	true时，检查节点时会使用物品名字来代替ID&lt;br /&gt;
 check-metadata (版本 1.19.1后无)	false	If true, modifyworld will use the meta-data for blocks and items in the permissions checks. This means that your nodes may need a :* or .* added to the end of them!&lt;br /&gt;
 item-use-check	false	设置为true后，可以设置modifyworld.item.use.&amp;lt;物品id&amp;gt;.on.block.&amp;lt;方块id&amp;gt; 的节点，即检查物品使用的对象，基本取代了modifyworld.interact.&amp;lt;实体名称&amp;gt;&lt;br /&gt;
===Metadata Notes===&lt;br /&gt;
&lt;br /&gt;
Starting with release 1.19.1, metadata handling has been changed a bit.&lt;br /&gt;
&lt;br /&gt;
There is no longer a need to specifically turn on metadata handling for modifyworld. However, a lot of blocks and items have metadata that one might not expect, or now has metadata due to changes in minecraft and bukkit.&lt;br /&gt;
&lt;br /&gt;
A few examples are leaf blocks (each type has it&#039;s own value), planks (for the different colours), and sandstone (the different designs).&lt;br /&gt;
&lt;br /&gt;
For item ID&#039;s that have metadata, using :* will cover all possible values for the metadata. For nodes that cover multiple items/blocks where some have metadata and others do not, the regex value of :?* will cover ID&#039;s that have metadata and ID&#039;s that do not.&lt;br /&gt;
&lt;br /&gt;
Many blocks that you might not expect can have metadata, such as chests and doors that are freshly placed but have not been opened yet. When in doubt and you can&#039;t get a permission node, turning on debug will show what is being looked for. Please do this before posting in the forums, I can&#039;t stress this enough. Metadata is a very large stumbling block for many new users to PEX.&lt;br /&gt;
&lt;br /&gt;
===Generic Nodes===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 modifyworld.login	是否允许玩家加入游戏，你需要吧白名单开启来启动这个功能&lt;br /&gt;
 modifyworld.chat	是否允许玩家能发布公告，聊天&lt;br /&gt;
 modifyworld.sneak	Player can crouch (check your Minecraft client config for the key) NOTE: Per https://github.com/PEXPlugins/PermissionsEx/issues/78, 这个节点在bukkit中因为缺少支持难以工作&lt;br /&gt;
 modifyworld.sprint	Player can sprint (double tap your forward key) NOTE: Per http://github.com/t3hk0d3/PermissionsEx/issues/78,也因为同样的原因难以工作。&lt;br /&gt;
 modifyworld.chat.private	玩家是否能私聊&lt;br /&gt;
 modifyworld.usebeds	玩家是否能使用床&lt;br /&gt;
 modifyworld.bucket.empty.&amp;lt;fluid&amp;gt;	玩家是否能使用液体（清空桶）&lt;br /&gt;
 &amp;lt;fluid&amp;gt;指的是水或岩浆&lt;br /&gt;
  modifyworld.bucket.fill.&amp;lt;fluid&amp;gt;	玩家是否能用桶装东西&lt;br /&gt;
 &amp;lt;fluid&amp;gt; 指的是谁，岩浆或牛奶（早期版本里，air就是牛奶）&lt;br /&gt;
 modifyworld.digestion	Allows players&#039; energy bar to deplete. A popular application of this would be to do -modifyworld.digestion to disable energy consumption whilst still enabling modifyworld.*&lt;br /&gt;
&lt;br /&gt;
===Block Nodes===&lt;br /&gt;
&lt;br /&gt;
See Materials for &amp;lt;blockid&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 modifyworld.blocks.destroy.&amp;lt;blockid&amp;gt;	Player can break &amp;lt;blockid&amp;gt;. It&#039;s also possible to specify &amp;lt;blockid&amp;gt; by name. Example: modifyworld.blocks.destroy.stone&lt;br /&gt;
 modifyworld.blocks.place.&amp;lt;blockid&amp;gt;	Player can place &amp;lt;blockid&amp;gt;. NOTICE: This permission requires modifyworld.blocks.interact.&amp;lt;blockid&amp;gt; to work properly.&lt;br /&gt;
 modifyworld.blocks.interact.&amp;lt;blockid&amp;gt;	Player can interact with &amp;lt;blockid&amp;gt; (use levers, press buttons, etc.)&lt;br /&gt;
===Item Nodes===&lt;br /&gt;
&lt;br /&gt;
See Materials for &amp;lt;itemid&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 modifyworld.items.craft.&amp;lt;itemid&amp;gt;	Player can craft &amp;lt;itemid&amp;gt;.&lt;br /&gt;
 modifyworld.items.drop.&amp;lt;itemid&amp;gt;	Player can drop &amp;lt;itemid&amp;gt;.&lt;br /&gt;
 modifyworld.items.enchant.&amp;lt;itemid&amp;gt;	Player can enchant &amp;lt;itemid&amp;gt;.&lt;br /&gt;
 modifyworld.items.have.&amp;lt;itemid&amp;gt;	Player can have &amp;lt;itemid&amp;gt; in their inventory. itemRestrictions: true need to be set for this to work.&lt;br /&gt;
 modifyworld.items.hold.&amp;lt;itemid&amp;gt;	Player can have &amp;lt;itemid&amp;gt; in their hand. itemRestrictions: true need to be set for this to work.&lt;br /&gt;
 modifyworld.items.pickup.&amp;lt;itemid&amp;gt;	Player can pickup &amp;lt;itemid&amp;gt;. Also it&#039;s possible to specify &amp;lt;itemid&amp;gt; by name, example:  、modifyworld.items.pickup.diamondpickaxe&lt;br /&gt;
 modifyworld.item.use.&amp;lt;itemid&amp;gt;.on.block.&amp;lt;blockid&amp;gt;	Player can use &amp;lt;itemid&amp;gt; on block &amp;lt;blockid&amp;gt;. item-use-check: true need to be set for this to work and is check in addition to the modifyworld.interact.&amp;lt;entityName&amp;gt; checks&lt;br /&gt;
As of 1.19.3&lt;br /&gt;
 modifyworld.items.use.&amp;lt;itemid&amp;gt;.on.block.&amp;lt;blockid&amp;gt;	Player can use &amp;lt;itemid&amp;gt; on block &amp;lt;blockid&amp;gt;. item-use-check: true need to be set for this to work and is check in addition to the modifyworld.interact.&amp;lt;entityName&amp;gt; checks&lt;br /&gt;
 modifyworld.items.throw.&amp;lt;itemid&amp;gt;	Player may throw eggs, snowballs, splash potions or experience bottles. Potion metadata excludes splash flag: potion:34 will match a Splash Potion of Swiftness II.&lt;br /&gt;
As of 1.19.4&lt;br /&gt;
 modifyworld.items.take.&amp;lt;itemid&amp;gt;.of.&amp;lt;container&amp;gt;	Player may take items from containers, such as chests.&lt;br /&gt;
 modifyworld.items.put.&amp;lt;itemid&amp;gt;.of.&amp;lt;container&amp;gt;	Player may take put items in containers, such as chests.&lt;br /&gt;
===实体权限节点===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 modifyworld.damage.deal.&amp;lt;实体名称&amp;gt;	Player can deal damage to &amp;lt;entityName&amp;gt; (e.g. skeleton, spider, creeper, cow, pig, minecart, etc)&lt;br /&gt;
 modifyworld.damage.take.&amp;lt;实体名称&amp;gt;	Player can take damage from &amp;lt;entityName&amp;gt;&lt;br /&gt;
 modifyworld.mobtarget.&amp;lt;实体名称&amp;gt;	Player can be targeted by &amp;lt;entityName&amp;gt;&lt;br /&gt;
 modifyworld.interact.&amp;lt;实体名称&amp;gt;	Player can interact with &amp;lt;entityName&amp;gt;&lt;br /&gt;
 modifyworld.tame.&amp;lt;实体名称&amp;gt;	Player can tame &amp;lt;entityName&amp;gt;. This permission won&#039;t give you ability to tame animals or mobs that are not normally tameable (no pet creepers). Currently, only animal.wolf and animal.ocelot are applicable.&lt;br /&gt;
&lt;br /&gt;
===Possible &amp;lt;entityName&amp;gt; values===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Players and Wolves&lt;br /&gt;
 player.&amp;lt;playerName&amp;gt;	Player called &amp;lt;playerName&amp;gt;. (Example: player.t3hk0d3)&lt;br /&gt;
 group.&amp;lt;groupName&amp;gt;	Any member of &amp;lt;groupName&amp;gt; group. (Example: group.admins)&lt;br /&gt;
 animal.wolf	Wild wolf&lt;br /&gt;
 animal.wolf.&amp;lt;playerName&amp;gt;	Wolf tamed by &amp;lt;playerName&amp;gt; (Example: wolf.t3hk0d3)&lt;br /&gt;
 animal.ocelot	Wild ocelot (cat)&lt;br /&gt;
 animal.ocelot.&amp;lt;playerName&amp;gt;	Tamed cat (ocelot)&lt;br /&gt;
 Example: animal.ocelot.t3hk0d3&lt;br /&gt;
 npc.villager	Not related to Bert&lt;br /&gt;
 snowman	Not related Frosty&lt;br /&gt;
 irongolem	Defenders of the Villagers&lt;br /&gt;
Animals&lt;br /&gt;
 animal.chicken	cluck-cluck&lt;br /&gt;
 animal.cow	Mooo&lt;br /&gt;
 animal.mushroomcow	Mooshroom&lt;br /&gt;
 animal.pig	Pig&lt;br /&gt;
 animal.sheep	Sheep&lt;br /&gt;
 animal.squid	Squid&lt;br /&gt;
Monsters&lt;br /&gt;
 monster.blaze	Pyros, every one...&lt;br /&gt;
 monster.cavespider	Worse than spiders&lt;br /&gt;
 monster.creeper	SssssSSSssss&lt;br /&gt;
 monster.enderman	Don&#039;t look at them directly&lt;br /&gt;
 monster.ghast	AWWWWWWW&lt;br /&gt;
 monster.giant	Giant Zombie&lt;br /&gt;
 monster.pigzombie	Pig Zombie, omg&lt;br /&gt;
 monster.silverfish	Beware the horde&lt;br /&gt;
 monster.skeleton	Them bones, them dry bones...&lt;br /&gt;
 monster.slime	Covers regular slimes and magma cubes&lt;br /&gt;
 monster.spider	Yep, this is Spider, he is annoying.&lt;br /&gt;
 monster.zombie	Brainzzzz...&lt;br /&gt;
Environment&lt;br /&gt;
 starvation	Num nums, or lack there of&lt;br /&gt;
 fire	Initial fire damage&lt;br /&gt;
 lava	Lava damage. Add firetick too for full protection.&lt;br /&gt;
 firetick	Damage from touching fire (or after stepping into lava) over time.&lt;br /&gt;
 blockexplosion	Damage from TNT explosion.&lt;br /&gt;
 projectile.arrow	Arrows shot at player&lt;br /&gt;
 drowning	Failing to grab a breath of fresh air&lt;br /&gt;
 fall	Jumping without a parachute&lt;br /&gt;
 suicide	Committing Seppuku&lt;br /&gt;
 poison	Poison potions&lt;br /&gt;
===坐骑权限===&lt;br /&gt;
&lt;br /&gt;
注意：如果你想有权限进入或跳下一个坐骑（矿车 马等），你还需要modifyworld.*权限。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 modifyworld.vehicle.destroy.&amp;lt;坐骑名称&amp;gt;	玩家能破坏这个矿车 (坐骑名称要是英文)&lt;br /&gt;
 modifyworld.vehicle.enter.&amp;lt;坐骑名称&amp;gt;	玩家能够骑上一个坐骑(坐骑名称要是英文)&lt;br /&gt;
 modifyworld.vehicle.collide.&amp;lt;坐骑名称&amp;gt;	玩家能够跳下一个坐骑 (坐骑名称要是英文)&lt;br /&gt;
&lt;br /&gt;
===Possible &amp;lt;vehicleName&amp;gt; values=== &lt;br /&gt;
&lt;br /&gt;
 Boat&lt;br /&gt;
 boat	Not related to the Love Boat&lt;br /&gt;
 Minecart&lt;br /&gt;
 minecart	Indiana Jones rides in one of these&lt;br /&gt;
===物品名称===&lt;br /&gt;
&lt;br /&gt;
如果 use-material-names 设置为 false 就使用物品 ID . 否则使用物品英文名称.&lt;br /&gt;
&lt;br /&gt;
你可以找到更多的细节，包括数据值信息，在Minecraft wiki.&lt;br /&gt;
&lt;br /&gt;
=Pex basics=&lt;br /&gt;
===权限和服务器术语===&lt;br /&gt;
&lt;br /&gt;
服务器控制台 (又叫控制台); 就是当服务器启动时出现的黑色窗口.显示服务器和插件启动信息，以及服务器和插件错误.&lt;br /&gt;
&lt;br /&gt;
全局权限: 就是在服务器上所有世界通用的权限.&lt;br /&gt;
&lt;br /&gt;
世界特定权限: 只在某一个世界启用的特定权限.（如world世界允许飞行而别的世界不可以）&lt;br /&gt;
&lt;br /&gt;
用户: 你服务器的玩家们.&lt;br /&gt;
&lt;br /&gt;
权限组: 一个命名的许多权限权限在一起就叫权限组, 通常用于在服务器上指定各种权限级别 （如VIP1，VIP2）&lt;br /&gt;
&lt;br /&gt;
权限组可以拥有全局和世界特定权限，以及其他插件使用的权限.&lt;br /&gt;
&lt;br /&gt;
权限：表示一个命令、动作或能力是否允许。例如，/give  命令在Bukkit里具有bukkit.command.give节点.&lt;br /&gt;
&lt;br /&gt;
否定权限: 标记为不可用的节点. 一般只在某些特定情况下使用.&lt;br /&gt;
&lt;br /&gt;
继承：一个权限组能够自动使用另一个权限组的所有权限的能力。PEX支持组和世界继承。&lt;br /&gt;
&lt;br /&gt;
数据值: (又叫附加值) 数据值是另一个值添加到一个物品ID号的值，如不同颜色的羊毛块，一个开关的位置，如果一扇门打开或关闭，等等。主要用于&lt;br /&gt;
modifyworld。&lt;br /&gt;
&lt;br /&gt;
===权限层次 ===&lt;br /&gt;
&lt;br /&gt;
PEX支持基于文件和SQL权限的权限等级: 。为了方便解释和可视化，下面的示例将使用一个基于文件的权限层次结构.&lt;br /&gt;
&lt;br /&gt;
users:                                            &amp;lt;- 玩家部分&lt;br /&gt;
    t3hk0d3:                                      &amp;lt;- 玩家名字&lt;br /&gt;
        group:                                    &amp;lt;- 玩家组部分&lt;br /&gt;
        - default                                 &amp;lt;- 玩家所在的组的名字&lt;br /&gt;
        permissions:                              &amp;lt;- 玩家特定权限部分&lt;br /&gt;
        - permissions.*                           &amp;lt;- 玩家所拥有的特定权限&lt;br /&gt;
        worlds:                                   &amp;lt;- 世界特定权限部分&lt;br /&gt;
            world:                                &amp;lt;- 世界名称&lt;br /&gt;
                permissions:                      &amp;lt;- 世界特定的权限组&lt;br /&gt;
                - test.*                          &amp;lt;- 世界特定权限&lt;br /&gt;
                group:                            &amp;lt;- 世界特定权限组部分&lt;br /&gt;
                - testers                         &amp;lt;- 世界特定权限组&lt;br /&gt;
                prefix: &#039;&amp;amp;5[YARR]&amp;amp;f&#039;              &amp;lt;- 世界特定称号&lt;br /&gt;
groups:                                           &amp;lt;- 权限组部分&lt;br /&gt;
    default:                                      &amp;lt;- 权限组名称&lt;br /&gt;
        default: true                             &amp;lt;- 默认组部分&lt;br /&gt;
        permissions:                              &amp;lt;- 权限组部分&lt;br /&gt;
        - -modifyworld.blocks.interact.23         &amp;lt;- 否认权限节点&lt;br /&gt;
        - modifyworld.*                           &amp;lt;- 权限节点&lt;br /&gt;
    admins:&lt;br /&gt;
        inheritance:                              &amp;lt;- 该组继承的组&lt;br /&gt;
        - default                                 &amp;lt;- 从default继承&lt;br /&gt;
        permissions:&lt;br /&gt;
        - example.permission&lt;br /&gt;
        - -punish.noobs&lt;br /&gt;
        options:                                  &amp;lt;- 组选项部分&lt;br /&gt;
            test.test: &#039;100500&#039;                   &amp;lt;- 额外数据&lt;br /&gt;
            rank: &#039;1&#039;                             &amp;lt;- 阶级&lt;br /&gt;
        worlds:&lt;br /&gt;
            nether:&lt;br /&gt;
                permissions:&lt;br /&gt;
                - nocheat.fly&lt;br /&gt;
                prefix: &#039;&amp;amp;7[ADMIN FROM HELL]&#039;&lt;br /&gt;
    testers:&lt;br /&gt;
        inheritance:&lt;br /&gt;
        - admins&lt;br /&gt;
        options:&lt;br /&gt;
            test.test: &#039;9000&#039;&lt;br /&gt;
worlds:                                           &amp;lt;- 世界特定部分&lt;br /&gt;
    nether:                                       &amp;lt;- 世界名称&lt;br /&gt;
        inheritance:                              &amp;lt;- 继承世界部分&lt;br /&gt;
        - world                                   &amp;lt;- 从world世界里继承&lt;br /&gt;
&lt;br /&gt;
===PEX文件格式（YAML） (YAML)===&lt;br /&gt;
&lt;br /&gt;
PEX,像许多别的插件一样, 使用的文件格式是 YAML (YAML Ain&#039;t Markup Language, 如果你想知道更多 猛点这个网址 http://yaml.org/). YAML, 不像其他的文件格式，有着非常挑剔的格式和字符使用。所以PEX的配置文件，包括权限的文件，必须缩进正确！Capitalization matters as well!&lt;br /&gt;
&lt;br /&gt;
适用于PEX的YAML规则:&lt;br /&gt;
&lt;br /&gt;
Certain characters are reserved for use by YAML. Some of the characters are  &#039; - : # and %. If the data for an entry is going to use one of those characters, it must be in quotes.&lt;br /&gt;
%prefix%player%suffix&amp;gt; &amp;amp;e%message is invalid. &amp;quot;%prefix%player%suffix&amp;gt; &amp;amp;e%message&amp;quot; is valid&lt;br /&gt;
Any entries that are made of numbers only must be in quotes.&lt;br /&gt;
rank: 1000 or 45625: is invalid. rank: &#039;1000&#039; or &#039;45625&#039;: is valid.&lt;br /&gt;
Tabs are not allowed to be in the file anywhere, unless it is in quotes. Any place where you would use a tab must use exactly two spaces.&lt;br /&gt;
Each group must start at the very beginning of the line, and each section contained within that section must be indented.&lt;br /&gt;
Due to the regex support in PEX, there are other characters that one has to be aware of. Characters such as } { ) ( ? and * must be quoted or escaped (a backslash works well). This isn&#039;t a YAML limitation, but is a similar situation to the reserved characters in YAML.&lt;br /&gt;
&lt;br /&gt;
=PEXML=&lt;br /&gt;
=Plugin Configuration=&lt;br /&gt;
=Ranks (Promotion and Demotion)=&lt;br /&gt;
=Troubleshooting and FAQ=&lt;/div&gt;</summary>
		<author><name>Mcdarc</name></author>
	</entry>
</feed>