-
Notifications
You must be signed in to change notification settings - Fork 1
Paper Integration
RazorPlay01 edited this page May 14, 2025
·
2 revisions
This guide explains how to integrate the Minecraft Networking API with Paper servers.
Add the API as a dependency via JitPack (see Setup). For Maven:
<dependency>
<groupId>com.github.RazorPlay01</groupId>
<artifactId>PacketHandler</artifactId>
<version>1.1.0</version>
</dependency>Use Bukkit’s plugin messaging system to send packets to clients.
Example:
import com.github.razorplay.packet_handler.network.IPacket;
import com.github.razorplay.packet_handler.network.PacketTCP;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class PacketSender {
private static final String CHANNEL = "my_mod:packets_channel";
public static void sendPacketToClient(Player player, IPacket packet) {
try {
player.sendPluginMessage(JavaPlugin.getPlugin(MyPlugin.class), CHANNEL, PacketTCP.write(packet));
} catch (PacketSerializationException e) {
JavaPlugin.getPlugin(MyPlugin.class).getLogger().warning("Error sending packet: " + e.getMessage());
}
}
}Implement PluginMessageListener to handle incoming packets.
Example:
import com.github.razorplay.packet_handler.network.IPacket;
import com.github.razorplay.packet_handler.network.PacketTCP;
import com.google.common.io.ByteStreams;
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener;
public class PacketListener implements PluginMessageListener {
private static final String CHANNEL = "my_mod:packets_channel";
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
if (channel.equals(CHANNEL)) {
try {
IPacket packet = PacketTCP.read(ByteStreams.newDataInput(message));
if (packet instanceof MyPacket myPacket) {
// Handle packet
player.sendMessage("Received: " + myPacket.getMessage());
}
} catch (Exception e) {
JavaPlugin.getPlugin(MyPlugin.class).getLogger().warning("Error processing packet: " + e.getMessage());
}
}
}
}Register the listener in your plugin:
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
PacketTCP.registerPackets(MyPacket.class);
getServer().getMessenger().registerOutgoingPluginChannel(this, "my_mod:packets_channel");
getServer().getMessenger().registerIncomingPluginChannel(this, "my_mod:packets_channel", new PacketListener());
}
}