Plugin channels: Difference between revisions

From wiki.vg
Jump to navigation Jump to search
imported>Benc
(add AdvCdm and ItemName channels)
imported>Benc
(add Forge ModLoader channel)
Line 62: Line 62:
== Notable community plugin channels ==
== Notable community plugin channels ==
Channels listed in this section are not Mojang-sanctioned. This is just a likely-incomplete list of channels used by mods/plugins popular within the Minecraft community.
Channels listed in this section are not Mojang-sanctioned. This is just a likely-incomplete list of channels used by mods/plugins popular within the Minecraft community.
=== <code>FML</code> ===
''Two-way''
Used by [http://www.minecraftforge.net/forum/index.php Forge] ModLoader to negotiate required mods, among other things. [https://github.com/cpw/FML/blob/master/common/cpw/mods/fml/common/network/FMLNetworkHandler.java]


=== <code>ML|OpenTE</code> ===
=== <code>ML|OpenTE</code> ===
''Server to client''
''Server to client''


Used by [http://www.minecraftforum.net/topic/75440-v132-risugamis-mods-preliminary-updates/ ModLoader] to support custom GUI windows. Does not use the REGISTER channel.
Used by [http://www.minecraftforum.net/topic/75440-modloader/ ModLoader] to support custom GUI windows. Does not use the REGISTER channel.


=== <code>WECUI</code> ===
=== <code>WECUI</code> ===

Revision as of 11:52, 3 November 2012

Plugin channels are implemented using packet 0xFA, allowing client mods and server plugins to communicate without cluttering up chat. This post by Dinnerbone is a good introduction and basic documentation.

Reserved channels

REGISTER

Two-way

Allows the client to register for one or more custom channels, indicating that the server should send data on those channels if the appropriate plugin is installed. Payload is a null (\00) separated list of strings.

UNREGISTER

Two-way

Allows the client to unregister from one or more custom channels, indicating that the server should stop sending data on those channels. Payload is a null-separated list of strings.

Channels internal to Minecraft

As of 1.3, Minecraft itself started using plugin channels to implement new features. These internal channel names are prefixed by MC|. 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.

MC|AdvCdm

Two-way

Adventure mode command block. Three integers for the x/y/z block coordinates, followed by a string: the command the block should run.

MC|Beacon

Client to server

Two integers corresponding to the 2 effects a user wishes to have active.

MC|BEdit

Client to server

When a player edits an unsigned book.

This payload is simply a set of bytes corresponding to an ItemStack. It is serialized / deserialized exactly the same as itemstacks in packets.

MC|BSign

Client to server

When a player signs a book. This payload is simply a set of bytes corresponding to an ItemStack. It is serialized / deserialized exactly the same as itemstacks in packets.

MC|ItemName

Two-way

When a player uses an anvil to name an item. The payload is just a string: the item's new name.

MC|TPack

Server to client

Remote texture packs. This contains a string representing the url to get the texture pack from, followed by null (\00) and then '16', all in ASCII.

MC|TrList

Server to client

The list of trades a villager NPC is offering.

MC|TrSel

Client to server − When a player selects a specific trade offered by a villager NPC. It contains a single int id corresponding to the selected slot int the players current (trading) inventory.

Notable community plugin channels

Channels listed in this section are not Mojang-sanctioned. This is just a likely-incomplete list of channels used by mods/plugins popular within the Minecraft community.

FML

Two-way

Used by Forge ModLoader to negotiate required mods, among other things. [1]

ML|OpenTE

Server to client

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

WECUI

Two-way

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