Skip to content

Client Libraries

MEMOxiiii edited this page Sep 17, 2026 · 3 revisions

Client Libraries

Backend servers integrate with Portal's Socket Protocol through a client library for their platform, rather than implementing the wire protocol by hand.

Library Language Backend software Install
PortalPM PHP PocketMine-MP Drop plugin into plugins/
PortalDF Go Dragonfly go get github.com/MEMOxiiii/PortalDF
Portal-GeyserMC Java GeyserMC 2.9.5+ Drop JAR into Geyser extensions/

NukkitX / PowerNukkitX support is planned; EndstoneMC (BDS) is experimental and not guaranteed due to BDS limitations — use Portal-GeyserMC as a workaround to connect BDS-based servers in the meantime.

All of the above (and any custom integration) must speak socket protocol version 3 to register with a current Portal — see Socket Protocol. Whether a given library supports registering as a NetherNet backend (vs. RakNet only) depends on that library's own version — check its own docs/wiki (linked in the table above) for what it supports and how to configure it; Backend Transports here covers what Portal itself does once a server registers either way.

No library for your platform?

If your server software isn't listed, implement the Socket Protocol directly — it's a small binary TCP protocol (auth, register, transfer, player info, server list, find-player, latency, draining). Each library above is a reference implementation of the same protocol in a different language, so they're a good starting point to read if you're writing a new one.

Whichever path you take, the library/integration needs network.communication.address and network.communication.secret from Portal's Configuration to connect.

Clone this wiki locally