PluginMessagePacket
This commit is contained in:
@@ -6,10 +6,7 @@ import mc.protocol.packets.ClientSidePacket;
|
|||||||
import mc.protocol.packets.Packet;
|
import mc.protocol.packets.Packet;
|
||||||
import mc.protocol.packets.PingPacket;
|
import mc.protocol.packets.PingPacket;
|
||||||
import mc.protocol.packets.ServerSidePacket;
|
import mc.protocol.packets.ServerSidePacket;
|
||||||
import mc.protocol.packets.client.ClientSettingsPacket;
|
import mc.protocol.packets.client.*;
|
||||||
import mc.protocol.packets.client.HandshakePacket;
|
|
||||||
import mc.protocol.packets.client.LoginStartPacket;
|
|
||||||
import mc.protocol.packets.client.StatusServerRequestPacket;
|
|
||||||
import mc.protocol.packets.server.DisconnectPacket;
|
import mc.protocol.packets.server.DisconnectPacket;
|
||||||
import mc.protocol.packets.server.JoinGamePacket;
|
import mc.protocol.packets.server.JoinGamePacket;
|
||||||
import mc.protocol.packets.server.LoginSuccessPacket;
|
import mc.protocol.packets.server.LoginSuccessPacket;
|
||||||
@@ -49,7 +46,10 @@ public enum State {
|
|||||||
),
|
),
|
||||||
PLAY(3,
|
PLAY(3,
|
||||||
// server bound
|
// server bound
|
||||||
Map.of(0x04, ClientSettingsPacket.class),
|
Map.of(
|
||||||
|
0x04, ClientSettingsPacket.class,
|
||||||
|
0x09, PluginMessagePacket.class
|
||||||
|
),
|
||||||
// client bound
|
// client bound
|
||||||
Map.of(JoinGamePacket.class, 0x23)
|
Map.of(JoinGamePacket.class, 0x23)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package mc.protocol.packets.client;
|
||||||
|
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
import mc.protocol.io.NetByteBuf;
|
||||||
|
import mc.protocol.packets.ClientSidePacket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plugin Message packet.
|
||||||
|
*
|
||||||
|
* <p>Канал связи для модов и плагинов.</p>
|
||||||
|
*
|
||||||
|
* <p>Структура пакета</p>
|
||||||
|
* <pre>
|
||||||
|
* | FIELD | TYPE | NOTES |
|
||||||
|
* |--------------|-------------|------------------|
|
||||||
|
* | Channel name | String (20) | Название канала |
|
||||||
|
* | Data | Byte array | Любые данные |
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @see <a href="https://wiki.vg/index.php?title=Protocol&oldid=14204#Plugin_Message_.28serverbound.29">Plugin Message (serverbound)</a>
|
||||||
|
* @see <a href="https://wiki.vg/index.php?title=Plugin_channels&oldid=14089">Plugin channels</a>
|
||||||
|
* @see <a href="https://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/">Minecraft Plugin Channels + Messaging</a>
|
||||||
|
*/
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@EqualsAndHashCode
|
||||||
|
@ToString
|
||||||
|
public class PluginMessagePacket implements ClientSidePacket {
|
||||||
|
|
||||||
|
private String channelName;
|
||||||
|
private byte[] rawData;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readSelf(NetByteBuf netByteBuf) {
|
||||||
|
this.channelName = netByteBuf.readString(20);
|
||||||
|
this.rawData = new byte[netByteBuf.readableBytes()];
|
||||||
|
netByteBuf.readBytes(this.rawData);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user