Plugin channels

Plugin channels allow client mods and server plugins to communicate without cluttering up chat. This post by Dinnerbone is a good introduction and basic documentation.

Two-way

Allows the client or server to register for one or more custom channels, indicating that data should be sent on those channels if the receiving end supports it too. Payload is a null separated list of strings.

This channel was renamed from  in 1.13.

Two-way

Allows the client or server to unregister from one or more custom channels, indicating that the receiving end should stop sending data on those channels. Payload is a null-separated list of strings. This is only useful if plugins are disabled/unloaded while the client is connected.

This channel was renamed from  in 1.13.

Channels internal to Minecraft
Since 1.3, Minecraft itself uses several plugin channels to implement new features. These internal channels use the  namespace. They are not formally registered using the register channel. The vanilla Minecraft server will send these packets regardless, and the vanilla client will accept them.

Note that there were originally more channels included, but most of these were removed in 1.13. See this revision of the article for the original list. As of 1.14, the only remaining channels other than the brand one are debugging-related channels, which are not normally sent.

Two-way

Announces the server and client implementation name right after a player has logged in. For the Notchian client and server server, this is "vanilla" (which is chosen using the Function ) (encoded as a protocol string: a UTF-8 string with the length prefixed as a VarInt).

These brands are used in crash reports and a few other locations; it's recommended that custom clients and servers use changed brands for the purpose of identification (for the Notchian client, the class used to get the brand is one of the few non-obfuscated classes). The brand is not processed in any other way, and Notchian clients will connect to servers with changed brands with no issue (the brand is not used to validate).

The Notchian server sends a  packet right after it sends a Join Game packet, and the Notchian client sends it right after receiving a Join Game packet. However, some modified clients and servers will not send this packet (or will take longer to send it than normal), so it is important to not crash if the brand has not been sent. Additionally, the brand may change at any time (for instance, if connected through a BungeeCord instance, you may switch from a server with one brand to a server with another brand without receiving a Join Game packet).

Server to client



Never sent, but does something with pathfinding debugging. The client reads the data and stores it, but its renderer cannot be enabled without modifications.

PathEntity structure:

PathPoint structure:

Values for node type:


 * 0: BLOCKED
 * 1: OPEN
 * 2: WALKABLE
 * 3: TRAPDOOR
 * 4: FENCE
 * 5: LAVA
 * 6: WATER
 * 7: RAIL
 * 8: DANGER_FIRE
 * 9: DAMAGE_FIRE
 * 10: DANGER_CACTUS
 * 11: DAMAGE_CACTUS
 * 12: DANGER_OTHER
 * 13: DAMAGE_OTHER
 * 14: DOOR_OPEN
 * 15: DOOR_WOOD_CLOSED
 * 16: DOOR_IRON_CLOSED

Server to client

Never sent, but used to debug block updates. Does not render without modifying the client.

Never sent, but (presumably) used to debug caves. Does not render without modifying the client.

Never sent, but (presumably) used to debug structures. Does not render without modifying the client.

Adds a single new structure, which will always be rendered if the player is in the same dimension.

Never sent, but (presumably) used to debug something with world generation. Does not render without modifying the client.

Adds a colored cube of the list of things to render. This cube is never removed.

Client to server

Sent after a Server list ping in Minecraft 1.6. More information on Server List Ping. In 1.7 and above, the Request (Status, 0x00, serverbound) packet is instead sent before the ping.

Notable community plugin channels
Channels listed in this section are not used by the vanilla Minecraft client or server. This is just a likely-incomplete list of channels used by mods/plugins popular within the Minecraft community.

Formerly ; additionally, note that the channel name is remapped by spigot so that the old name can still be used in plugins.

See here

,
Used by Minecraft Forge to negotiate required mods, among other things.  

Server to client

Used by ModLoader to support custom GUI windows. Does not use the REGISTER channel.

Used by the server-side WorldEdit and the client-side WorldEditCUI to coordinate selections.

, ,
Used by the client-side World Downloader mod to get permission information and perform permission requests.