0x3F S3FPacketCustomPayload
Sends a plugin channel message from server to client. Used for mod/plugin communication.
Fields
| Field | Type | Description |
|---|---|---|
| channel | String | Plugin channel name |
| data | PacketBuffer | Channel-specific payload |
Wire Encoding
| Field | Type | Notes |
|---|---|---|
| Channel | String | Plugin channel identifier |
| Data Length | short | |
| Data | byte[] | Channel-specific payload |
MCP References
MCP
NetHandlerPlayClient.handleCustomPayload()Handler Interface
HND
INetHandlerPlayClientNotes
Common channels: "MC|Brand" (server brand), "MC|AdvCmd" (command block update), "MC|TrList" (villager trades), "MC|RPack" (resource pack).
implementation Implementation Cases
BrandDetector
(Flux B39.11 (Brand detection), Lycoris 1.0 (Brand detection))
Read server brand from "MC|Brand" channel. Detect anti-cheat plugins from custom payloads.
if (event.getPacket() instanceof S3FPacketCustomPayload) {
S3FPacketCustomPayload s3f = (S3FPacketCustomPayload) event.getPacket();
if (s3f.getChannelName().equals("MC|Brand")) {
String brand = s3f.getBufferData().readStringFromBuffer(32767);
// detect server type
}
}ServerCrasher
(Flux B39.11 (Brand detection), Lycoris 1.0 (Brand detection))
Read server brand from "MC|Brand" channel. Detect anti-cheat plugins from custom payloads.
if (event.getPacket() instanceof S3FPacketCustomPayload) {
S3FPacketCustomPayload s3f = (S3FPacketCustomPayload) event.getPacket();
if (s3f.getChannelName().equals("MC|Brand")) {
String brand = s3f.getBufferData().readStringFromBuffer(32767);
// detect server type
}
}AntiCheatDetector
(Flux B39.11 (Brand detection), Lycoris 1.0 (Brand detection))
Read server brand from "MC|Brand" channel. Detect anti-cheat plugins from custom payloads.
if (event.getPacket() instanceof S3FPacketCustomPayload) {
S3FPacketCustomPayload s3f = (S3FPacketCustomPayload) event.getPacket();
if (s3f.getChannelName().equals("MC|Brand")) {
String brand = s3f.getBufferData().readStringFromBuffer(32767);
// detect server type
}
}