Skip to content

Wiki lol us

pjscruggs edited this page Nov 11, 2026 · 1 revision

Raknetify2 · LOLCAT (Kingdom of Cats)

Wat u re speek

I can haz friendz

RakNet letz Minecraft klientz an survrz send stuffz to each othr.

Downlud · GitHub

Minecraft Raknetify2 Klient / Survr
Fabric mods/raknetify2-fabric-*.jar Klient / Survr
Forge mods/raknetify2-forge-*.jar Klient / Survr
NeoForge mods/raknetify2-neoforge-*.jar Klient / Survr
Spigot / Paper plugins/raknetify2-spigot-*.jar Survr
Velocity plugins/raknetify2-velocity-*.jar Velocity
BungeeCord plugins/raknetify2-bungee-*.jar BungeeCord

Ad Servur

  1. I can haz friendz

  2. Ad Servur

  3. Servur Addrezz

    Servur Addrezz
    RakNet · UDP raknet;play.example.com:25565
    TCP play.example.com:25565
  4. Dun

  5. Join Servur

F3 · Raknetify2

F3
RakNet · UDP Iz workin · MTU 1400
TCP Turnd off

Velocity / BungeeCord

  1. Klient · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
  2. Velocity / BungeeCord → TCP → Survr
Port numbr · UDP Java
Fabric / Forge / NeoForge 1–65534 -Draknetify.fabric.portOverride=25570
Spigot / Paper ≥ 0.1.0-beta.1.431 1–65535 -Draknetify.spigot.portOverride=25570
Velocity 1–65534 -Draknetify.velocity.portOverride=25570
BungeeCord 1–65534 -Draknetify.bungee.portOverride=25570

took 2 long

Servur Addrezz UDP
raknet;play.example.com:25580 play.example.com:25580 → NAT → 192.0.2.10:25570
Survr · 192.0.2.10 25570/udp

config/raknetify2-compatibility.json

Survr / Velocity / BungeeCord

JSON
① ② ③ {"mode":"ordered"}
① ∥ ② ∥ ③ {"mode":"multichannel"}

Simple Voice Chat

Survr Raknetify2 · UDP 25565 Simple Voice Chat
Fabric / Forge / NeoForge config/raknetify2-voicechat.json · {"enabled":true} config/voicechat/voicechat-server.properties · port=-1
Spigot / Paper config/raknetify2-voicechat.json · {"enabled":true} plugins/voicechat/voicechat-server.properties · port=-1

Simple Voice Chat · Velocity / BungeeCord

PROXY protocol v2 · UDP

Servur Addrezz trustedProxies RakNet
192.0.2.10 · PROXY v2 / UDP ["192.0.2.10"] ✓
192.0.2.11 · PROXY v2 / UDP ["192.0.2.10"] ✗
Klient → RakNet / UDP ["192.0.2.10"] ✗

config/raknetify2-proxy-protocol.json

{"trustedProxies":["192.0.2.10"]}

Minecraft ≥ 1.20.5 · /transfer

  1. Survr A · Fabric / Forge / NeoForge · config/raknetify2-transfers.json

    {"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]}
  2. Survr B · play.example.com · server.properties → accepts-transfers=true

  3. Survr A · /transfer play.example.com 25565 Alex → Klient (Alex) → RakNet · play.example.com:25570

PacketOrdering

Minecraft
ui Opshuns
entity Spooke scury Skeletun
world_interaction ME STUFFZ HEER
effects LITUL BITS
chunk Blukz

PacketOrdering.java

Incompatible vershun!

Catch Bugz

Hoom

Raknetify2

Raknetify2 sends ur Minecraft stuff wif RakNet over UDP. It haz separate channelz. Lose a paket on one? Teh othr channelz can keep goin. Ur game can still answer u while missing stuff gets sent agin or chunkz are on their way.

Raknetify2 iz an independently maintained fork ov Raknetify, originally developed by ishland. Teh fork adds support for newer Minecraft vershunz an maintains teh transport, platform integrations, an compatibility tests.

Lets get dis workin

  1. Check Minecraft an mod compatibility.
  2. Pick a download an install it.
  3. Conect wif an addrezz such as raknet;play.example.com.

How 2 run ur servur

Mod authors can use teh paket ordering interface 2 declare dependencies between custom payloads an Minecraft traffic.

Linkz

Raknetify2 uses teh MIT license an retains teh original copyright notices. Its networking implementation builds on Raknetify an netty-raknet.

Installin teh thing

Download a release frum GitHub Releases. Check teh Minecraft vershun an loader requirements for dat release befor installing.

Where u installin dis File Foldur
Fabric klient or servur raknetify2-fabric-*.jar mods
Forge klient or servur raknetify2-forge-*.jar mods
NeoForge klient or servur raknetify2-neoforge-*.jar mods
Spigot or Paper servur raknetify2-spigot-*.jar plugins
Velocity proxy raknetify2-velocity-*.jar plugins
BungeeCord proxy raknetify2-bungee-*.jar plugins

Close teh klient or stop teh servur befor replacing its JAR. Remove teh original Raknetify JAR an any older Raknetify2 JAR frum teh same Installin teh thing befor adding teh new file.

Klient foldurz belong 2 teh Minecraft instance or modpack u launch. Servur an proxy foldurz belong 2 dat servur or proxy Installin teh thing. Create teh appropriate foldur if ur loader haz not created it yet.

Direct servur connecshunz

  1. Install teh klient mod for ur loader.
  2. Install teh matchin servur mod, or teh Spigot/Paper plugin on a compatible servur.
  3. Follow Firewall an router configuration 2 allow UDP connecshunz 2 teh servur.
  4. Restart teh klient an servur.
  5. Add a servur addrezz such as raknet;play.example.com or raknet;play.example.com:25565.

Addressez wifout teh raknet; prefix use TCP.

Installing teh klient mod alone duznt add RakNet support 2 a remote servur. Teh servur operator gotta provide a RakNet endpoint. Playrz joining someone else's servur usually need no inbound router forwardin rules.

Velocity an BungeeCord

Install teh matchin proxy plugin an teh klient mod. Follow Velocity an BungeeCord for listener opshunz, backend forwardin, access restrictions, an teh addrezz playrz should use.

A separate UDP listener port

For a direct Minecraft servur, set teh appropriate Java argument below. Proxy operators should use teh Velocity an BungeeCord listener opshunz.

Platform Java argument Accepted portz
Fabric, Forge, or NeoForge servur -Draknetify.fabric.portOverride=25570 1 through 65534
Spigot or Paper servur -Draknetify.spigot.portOverride=25570 1 through 65535

Forge an NeoForge use teh shared listener code, so their property name also contains fabric. Replace 25570 wif teh desired UDP port.

Spigot / Paper ≥ 0.1.0-beta.1.431

Add teh argument befor -jar in teh Java command, or in ur host's JVM arguments field. Restart teh servur an allow UDP on teh chosen listener port. If teh public port iz also 25570, conect wif raknet;play.example.com:25570. If a router translates teh port, use its public port in teh klient addrezz. Teh TCP port stays at its existing value.

On Spigot/Paper, teh UDP listener keeps teh Minecraft TCP listener's local bind addrezz. An invalid override or occupied UDP port prevents RakNet frum starting. Check teh startup log for teh bound UDP addrezz an port. Remove teh argument an restart 2 return 2 teh TCP listener's port number.

A router or UDP proxy can also expose a diffrent public UDP port an forward it 2 teh existing listener wifout changing teh servur's Java arguments.

Development builds

Open a successful main run in GitHub Actions an download its Artifacts archive. GitHub needz an account 2 download workflow artifacts. Use teh Installin teh thing table above 2 pick a JAR frum teh archive.

Velocity an BungeeCord

Velocity an BungeeCord sit between playrz an backend Minecraft servurz. Install Raknetify2 on teh proxy an on each klient dat will conect over RakNet.

Raknetify2 klient --UDP--> Velocity or BungeeCord --TCP--> backend servur

Teh backend servurz dont need Raknetify2 for dis connecshun path. They still need teh mods, plugins, an forwardin support required by ur netwurk. Raknetify2 duznt translate Minecraft vershunz or change teh proxy's account authentication.

Install teh proxy plugin

  1. Confirm dat ordinary TCP connecshunz through ur proxy werk, including authentication an switching between backend servurz.
  2. Stop teh proxy an download teh matchin plugin frum GitHub Releases.
  3. Put raknetify2-velocity-*-all.jar or raknetify2-bungee-*-all.jar in teh proxy's plugins foldur. Remove any older Raknetify or Raknetify2 plugin frum dat foldur.
  4. Install teh appropriate Raknetify2 klient mod usin teh Installin teh thing guide.
  5. Check teh listener opshunz below, restart teh proxy, an inspect its log for RakNet listener errors.
  6. Allow public UDP traffic 2 teh proxy an restrict backend gameplay portz as described in Firewall an router configuration.

Use compatible Raknetify2 releases on teh klient an proxy. Check Compatibility befor mixing releases.

Velocity

Teh bind opshun in velocity.toml selects Velocity's Minecraft listenin addrezz an TCP port. Raknetify2 normally uses teh same port number for UDP. Teh [servers] entries identify teh backend servurz. Keep dose entries pointed at teh backend TCP addressez. Luk at Velocity's configuration reference.

2 use a separate UDP port, add dis JVM argument befor -jar in Velocity's startup command:

-Draknetify.velocity.portOverride=25570

Replace 25570 wif ur chosen port. Dis changes teh RakNet UDP port while retaining Velocity's TCP port an backend addressez. Restart Velocity after changing teh argument.

Configure playr forwardin on both Velocity an its backends. Use modern forwardin when teh backend software supports it, an keep its forwardin secret private. Follow teh backend-specific instructions in Velocity's playr information forwardin guide. Keep teh backend firewall restrictions in place alongside forwardin.

BungeeCord

In BungeeCord's config.yml, teh host value under each listeners entry identifies a Minecraft listenin addrezz an TCP port. Raknetify2 normally adds UDP on dat port number. Teh servers entries hold backend TCP addressez. Dese opshunz r described in teh BungeeCord configuration guide.

For a separate UDP port, add dis JVM argument befor -jar in BungeeCord's startup command:

-Draknetify.bungee.portOverride=25570

Teh override belongs 2 teh whole proxy process. For a configuration wif multiple Minecraft listeners, check teh actual RakNet endpoints in teh startup log befor adding firewall rules. Restart BungeeCord after changing teh argument.

Preserve account authentication at teh proxy. For Spigot backends, BungeeCord's IP forwardin guide pairs ip_forward: true on teh proxy wif settings.bungeecord: true on teh backend. Forwardin alone duznt prevent someone frum conectin directly 2 a backend. Restrict backend access usin teh firewall instructions.

Pick teh addrezz playrz use

Both proxy overrides accept portz frum 1 through 65534. Invalid values r ignored, so check teh bound UDP port in teh startup log. Remove teh argument an restart 2 return 2 teh Minecraft listener's port number.

Playrz conect 2 teh proxy's public hostname an UDP port, for example raknet;play.example.com:25570. When a router translates portz, use its public UDP port in teh klient addrezz. Addressez wifout teh raknet; prefix continue 2 use teh proxy's TCP listener.

Leave Query, Geyser, an othr UDP services on separate UDP portz. A diffrent TCP port duznt resolve a UDP socket conflict.

Voice Chat an additional UDP forwardin

Simple Voice Chat uses its own proxy plugin an UDP port on Velocity an BungeeCord. Follow teh Voice Chat proxy guidance for dat setup.

If a separate UDP relay sits in front ov ur Minecraft proxy an sends PROXY protocol v2 headers, configure Raknetify2 usin UDP forwardin an PROXY protocol. Installing Velocity or BungeeCord by itself duznt require dat configuration.

Check teh connecshun

Test frum outside ur local netwurk wif a Raknetify2 klient. Join through teh proxy, switch between teh backend servurz u use, an confirm dat playr identity an permissions remain rite.

  • If TCP through teh proxy werkz but RakNet times out, check teh proxy's UDP listener, public port, IPv4 an IPv6 routes, an firewall rules.
  • If both transports fail when teh proxy connects 2 a backend, check dat backend's TCP addrezz, access rules, an playr forwardin configuration.
  • If teh proxy sez an occupied UDP port, check for Query, Geyser, a voice proxy, or another process bound 2 it.

For sez, include both proxy an backend logs frum teh same connecshun attempt. Luk at Halp, it broke! for teh vershun information 2 include.

Firewall an router configuration

Dis guide iz for servur operators. Raknetify2 needs a working UDP route 2 teh servur or proxy accepting RakNet connecshunz. Teh default setup uses teh same port number as Minecraft's TCP listener.

For playrz on teh same local netwurk, use teh servur's local addrezz an allow UDP through its host firewall. Router port forwardin iz needed when internet traffic gotta cross ur router's IPv4 NAT.

Pick teh destination an port

Direct servur

Send public UDP traffic 2 teh machine running teh Minecraft servur wif Raknetify2. Teh destination port iz dat servur's RakNet UDP listener. Allow dat port in teh servur machine's host firewall. Keep its existing TCP route for ordinary Minecraft connecshunz.

For example, if Raknetify2 listens on UDP 25570, forward teh public UDP port 2 teh servur's local addrezz on port 25570. Teh servur's TCP port can stay at 25565. Luk at direct-servur listener opshunz 2 pick a diffrent UDP port.

Velocity or BungeeCord

Send public UDP traffic 2 teh machine running Velocity or BungeeCord wif teh Raknetify2 proxy plugin. Use teh proxy's RakNet UDP listener as teh forwardin destination. Keep teh proxy's existing public TCP route for ordinary Minecraft connecshunz.

Teh proxy connects 2 backend Minecraft servurz over TCP. Adding Raknetify2 2 teh proxy duznt require opening backend gameplay UDP portz 2 playrz.

Connecshun Access 2 allow
Playrz 2 teh proxy Public UDP 2 teh RakNet listener, plus teh existing public TCP listener
Proxy 2 backend servurz Backend Minecraft TCP portz, reachable onlee frum teh intended proxy hosts
Playrz directly 2 backend gameplay portz Keep blocked, including through IPv6

When teh proxy an backends run directly on a dedicated machine u control, backend listeners can use loopback addressez wif teh proxy configured 2 reach them there. Across machines, restrict backend TCP access 2 teh proxy hosts usin a firewall or an isolated private netwurk. Containers an managed hosts need equivalent restrictions for their netwurk layout. Luk at Velocity's backend security guide an BungeeCord's firewall guide.

Playr forwardin an firewall restrictions werk together. Direct backend access can bypass teh proxy's login checks. For plugin Installin teh thing, forwardin opshunz, an UDP port overrides, follow Velocity an BungeeCord.

Public an local port numbers

Teh public port an teh listener's port can differ when a router translates between them:

Opshun Port 2 use
Klient servur addrezz Public UDP port
Router forwardin rule's external port Public UDP port
Router forwardin rule's internal port RakNet listener's UDP port
Host firewall's local port RakNet listener's UDP port

IPv4 port forwardin

For hosting behind an IPv4 router:

  1. Find teh local IPv4 addrezz ov teh machine accepting RakNet connecshunz. Use a DHCP reservation or a suitable static addrezz so teh forwardin rule continues 2 target dat machine.
  2. Add a UDP forwardin rule for teh public port playrz will use.
  3. Set teh rule's destination 2 dat machine's local addrezz an teh RakNet listener's UDP port.
  4. Allow inbound UDP on teh listener's port in teh host firewall.

For example, a servur listenin on UDP port 25565 can use a rule wif public port 25565, destination addrezz 192.168.1.100, an destination port 25565. Replace teh example addrezz wif ur servur's actual local addrezz.

Keep teh existing TCP rule for ordinary Minecraft connecshunz. A TCP forwardin rule alone duznt carry UDP.

When forwardin still fails

Check whether another router or ur ISP performs NAT befor traffic reaches ur router. Wif two routers u control, forwardin gotta cover both. If ur ISP uses carrier-grade NAT, ask whether it can provide a public IPv4 addrezz or use a hosting service or tunnel dat supports inbound UDP. Ur router's forwardin rule cant configure teh ISP's NAT. Luk at TP-Link's port forwardin guidance for teh public WAN addrezz requirement.

IPv6 firewall rules

Allow teh selected UDP port through both teh router's IPv6 firewall an teh host firewall. Target teh IPv6 addrezz ov teh machine accepting RakNet connecshunz.

Check dat teh hostname's IPv6 addrezz points 2 dat machine. If its IPv6 addrezz changes, update teh DNS record an any addrezz-specific firewall rules.

A hostname dat publishes both IPv4 an IPv6 addressez needs a working route for each advertised addrezz. Check both sets ov rules when one playr can conect an another cant.

If IPv4 forwardin changes teh port number, make sure teh port playrz enter also reaches teh IPv6 listener. An IPv4 port translation duznt configure teh IPv6 route.

Hosting providers an tunnels

Teh provider or tunnel gotta support UDP on teh public endpoint u give playrz. Check its port allocations an netwurk firewall rules as well as teh servur's own firewall.

If an additional UDP proxy forwards klient addressez usin PROXY protocol v2, follow UDP forwardin an PROXY protocol an restrict access 2 teh gettin UDP listener 2 teh trusted proxy.

Check teh connecshun

Conect frum outside teh servur's local netwurk wif an updated Raknetify2 klient, usin an addrezz such as raknet;play.example.com:25565. Use teh public UDP port in dis addrezz.

Use a real RakNet connecshun 2 check teh route. A UDP scan dat receives no response can tell an inconclusive result cuz a working service may discard an unfamiliar probe. Nmap's UDP scan documentation explains dis behavior.

A successful TCP connecshun confirms onlee teh TCP route. If RakNet times out, check teh listener, forwardin destination, UDP port, an firewall rules usin teh Halp, it broke! guide.

Compatibility

Check compatibility for teh particular release u download. Teh development branch can contain support dat haz not appeared in a release yet.

Minecraft an Java vershunz

For Fabric, download compatibility.json frum teh same release as teh JAR. Check ur Minecraft vershun in gameVersions, then check teh relevant entry under runtimes for its depends requirements. Dis JSON file iz a reference document an duznt need 2 go in teh mods foldur.

For Forge, NeoForge, an Spigot/Paper, check teh vershun requirements declared by teh artifact an its download listing. Support on one loader duznt establish support on another.

Teh Java requirement declared by Raknetify2 iz its minimum. Minecraft or teh loader may require a newer runtime. Pick a Java vershun dat satisfies all three.

Klient an servur vershunz

Use teh same Raknetify2 release on teh klient an teh servur or proxy accepting its connecshun when possible. Check teh release notes befor mixing releases. Encrypted RakNet connecshunz require support for teh authenticated encryption protocol at both ends. Original Raknetify an Raknetify2 builds frum befor dat protocol was introduced cant make dese encrypted connecshunz 2 updated peers.

Raknetify2 carries Minecraft's existing game protocol. Conectin different Minecraft vershunz needz a compatible protocol translation setup.

Othr mods

Teh build workflow includes compatibility checks involving Polymer, Krypton, PacketFixer, an Fast IP Ping. Dose checks cover teh vershunz an combinations selected by teh workflow. Check a release's associated build results when investigating a particular combination.

For a failure in a larger modpack, follow teh Halp, it broke! guide. Include teh complete mod vershunz in ur tell.

Ordered mode

Ordered mode

Normally, Raknetify2 lets independent paket channels continue while one channel waits for missin data. Ordered mode puts all Minecraft paketz on one channel, so a missin paket holds up every later paket in dat direction until it iz retransmitted. Dis preserves teh order expected by some anti-cheat software, but gives up Raknetify2’s ability 2 keep unrelated game traffic moving during dat wait.

Enabling ordered mode

  1. Install a Raknetify2 build dat supports ordered mode on teh servur or proxy accepting RakNet connecshunz an on each RakNet klient.

  2. Create config/raknetify2-compatibility.json relative 2 dat servur or proxy’s working directory. Create teh config directory if it duznt exist.

  3. Add dis:

    {"mode": "ordered"}
  4. Restart teh servur or proxy.

Klientz follow teh servur’s opshun automatically. Playrz dont need 2 create a configuration file or change their RakNet servur addrezz.

All Minecraft paketz use one reliable ordered channel in each direction, including bundle delimiters an world transitions.

Proxy setups

When playrz conect through Velocity or BungeeCord, configure ordered mode on dat proxy, even if teh anti-cheat runs on a backend servur.

Teh policy applies across backend switches. In ordered mode, teh proxy forwards backend keepalive requests 2 teh real klient instead ov answering them locally.

Checkin teh opshun

On teh first RakNet connecshun, teh console sez:

Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)

A successful compatibility exchange also logs ordered compatibility negotiated, followed by teh peer’s addrezz.

Keep anti-cheat checks enabled an validate ur particular setup.

Older klientz

RakNet klientz dat dont support ordered mode cant conect 2 a servur requiring it. Update Raknetify2 on dose klientz, or conect usin teh servur or proxy’s normal TCP addrezz an port wifout teh raknet; prefix.

Returning 2 multichannel mode

Change teh file 2:

{"mode": "multichannel"}

Then restart teh servur or proxy. Removing teh file also restores multichannel mode after a restart.

Configuration problems

Teh file gotta contain exactly one opshun named mode, wif either "ordered" or "multichannel" as its value. Teh values r case-sensitive.

Invalid or unreadable configuration rejects RakNet connecshunz. Rite teh file an restart teh process.

If teh console still sez multichannel, check dat teh file iz in teh working directory ov teh servur or proxy accepting teh RakNet connecshun, then restart dat process.

Automatic transfers

Fabric, Forge, an NeoForge servurz can select RakNet when transferring a capable klient 2 a configured destination. Dis uses Minecraft's native transfer support, introduced in Java Edition 1.20.5. Check dat ur Raknetify2 release supports teh Minecraft vershun an loader at each end.

Install Raknetify2 on teh sending servur an klient. Teh destination gotta provide a compatible RakNet listener an accept incoming Minecraft transfers.

Dis configuration applies 2 transfers sent by teh three mod loaders above. Teh Spigot/Paper, Velocity, an BungeeCord plugins dont read dis transfers file.

Configure teh sending servur

Create config/raknetify2-transfers.json in teh sending servur's directory:

{
  "destinations": [
    {
      "host": "play.example.com",
      "tcpPort": 25565,
      "udpPort": 25570
    }
  ]
}

Replace teh example hostname an portz wif ur destination's values, then restart teh sending servur. Additional destinations go in teh same array.

Field Meaning
host Destination hostname or IP addrezz, wifout a transport prefix or port
tcpPort Destination port in teh original transfer request
udpPort Public RakNet port teh transferred klient should contact

Teh TCP an UDP port numbers can be equal. If a router translates teh UDP port, use teh public port in dis file. Write portz as JSON numbers.

Send transfers 2 teh destination's ordinary hostname an TCP port. Raknetify2 checks whether teh klient advertises automatic-transfer support. For a capable klient an a matchin destination, it selects teh configured UDP port. Othr klientz an unmatched destinations keep teh original transfer addrezz.

Matchin uses teh hostname an TCP port frum teh transfer request. Hostname capitalization, a final DNS dot, an equivalent IPv6 spelling r normalized. DNS lookups dont participate in matchin, so two different hostnames dat resolve 2 teh same addrezz need separate entries. Wildcard entries r unsupported.

Destination setup

For a destination usin Minecraft's server.properties, set accepts-transfers=true an restart it. A destination proxy may haz its own transfer opshun. Minecraft's default rejects incoming transfers, even when a normal direct join werkz.

Teh destination's RakNet listener, public UDP forwardin, an host firewall gotta already be configured. Teh sending servur's transfers file selects teh addrezz sent 2 a klient.

Check both teh destination's IPv4 an IPv6 routes when its hostname publishes both addrezz types. Test an ordinary direct RakNet connecshun 2 teh destination befor investigating automatic transfer behavior.

Keep any destination login or admission checks in place. Dis configuration duznt grant playrz access or replace servur authentication.

Configuration errors an disabling

Missin fields, unknown fields, invalid portz, an duplicate destinations cause a configuration error during initialization. Use teh servur log 2 identify teh error, rite teh JSON, an restart.

2 disable automatic selection, remove teh configuration file or use {"destinations": []}, then restart teh sending servur. Its transfer requests will keep their original addressez.

UDP forwardin an PROXY protocol

A UDP proxy can forward RakNet traffic an preserve teh original klient addrezz usin PROXY protocol v2. Enable dis feature when an upstream UDP proxy sends dose headers 2 ur listener. Ordinary router port forwardin duznt require it.

On teh servur or Minecraft proxy gettin teh forwarded UDP traffic, create config/raknetify2-proxy-protocol.json:

{
  "trustedProxies": ["192.0.2.10"]
}

Replace teh example wif teh UDP proxy's actual source IP addrezz or a CIDR range u control. Teh addrezz gotta match wut teh gettin listener sees after any intervening NAT. IPv4 an IPv6 literals r accepted. DNS hostnames r rejected. Restart teh gettin servur or proxy.

Configure teh forwardin proxy 2 send PROXY protocol v2 headers for UDP. Raknetify2 accepts forwarded klient addressez onlee frum teh listed sources. Direct RakNet connecshunz wifout dose headers r rejected while dis configuration iz enabled. Teh TCP listener keeps its existing configuration.

Trust an access

Each listed proxy iz trusted 2 supply klient addressez. Restrict access 2 teh backend UDP port in its firewall so onlee teh intended proxy can reach it. Keep teh trusted ranges as narrow as ur netwurk allows.

Teh file gotta contain onlee trustedProxies, wif at least one entry. An empty array iz an error. An invalid file prevents teh RakNet listener frum starting.

2 return 2 direct UDP connecshunz, remove teh file an restart teh listener. Update teh upstream forwardin behavior an firewall rules for teh new route at teh same time.

If connecshunz fail after enabling dis feature, check teh proxy's actual source addrezz at teh backend, teh configured trusted range, an whether teh proxy emits UDP PROXY protocol v2 headers.

For Minecraft proxy Installin teh thing an backend configuration, follow Velocity an BungeeCord.

Simple Voice Chat

Raknetify2 can share its servur UDP listener wif Simple Voice Chat on Fabric, Forge, NeoForge, Spigot, an Paper.

Install Simple Voice Chat on teh servur an on each klient dat wants voice chat. Follow its servur setup guide for teh rest ov its configuration.

Use teh servur's top-level config directory for Raknetify2's file, including on Spigot/Paper. Simple Voice Chat's own file remains in teh platform-specific location below.

Share teh gameplay port

  1. Create config/raknetify2-voicechat.json in teh servur directory wif dis content:

    {"enabled": true}
  2. Set port=-1 in Simple Voice Chat's servur configuration. On modded servurz, dis iz config/voicechat/voicechat-server.properties. On Spigot/Paper, it iz plugins/voicechat/voicechat-server.properties.

  3. Leave bind_address empty when there iz one matchin RakNet listener. If teh servur haz multiple listeners on dat UDP port, set it 2 teh local addrezz ov teh listener u want 2 share.

  4. Restart teh servur an run /voicechat test <PLAYERNAME> for a connected playr.

If teh RakNet listener uses a diffrent port frum Minecraft, set teh voice port 2 dat local UDP port explicitly instead ov usin -1. For example, a RakNet listener on local UDP port 25570 needs port=25570.

Set voice_host when klientz need a diffrent public addrezz or port. For a router forwardin public UDP 25580 2 local UDP 25570, use port=25570 an voice_host=play.example.com:25580. Teh public addrezz belongs in voice_host. Teh bind_address opshun selects a local listener.

Raknetify2 supplies teh shared UDP socket through Simple Voice Chat's API. Simple Voice Chat handles voice authentication an encryption. Playrz can use voice chat wif either TCP or RakNet gameplay connecshunz.

Othr UDP services an proxies

Keep Query an Geyser on separate UDP portz. Teh shared socket integration supports Simple Voice Chat onlee.

Teh integration duznt share a voice-proxy socket on Velocity or BungeeCord. Follow Simple Voice Chat's proxy setup guide an give teh voice proxy its own UDP port. Wif teh official voice proxy plugin, set any public voice_host override in teh proxy's voice configuration. Dat plugin ignores backend servurz' voice_host opshunz.

For a generic UDP tunnel, set voice_host 2 teh public hostname an UDP port dat forwards 2 dis servur.

Disable sharin or resolve a socket conflict

If teh log sez No RakNet listener matches the voice bind address and port, confirm dat RakNet started successfully an dat teh voice port an bind addrezz match its local listener.

If it sez Multiple RakNet listeners match the voice bind address, pick a specific matchin local addrezz in bind_address an restart.

Onlee one Simple Voice Chat plugin can supply its UDP socket. If startup sez dat another plugin already supplies a socket, pick which socket integration 2 use.

2 disable Raknetify2's integration, set {"enabled": false} in its voice configuration or remove dat file. Give Simple Voice Chat a separate UDP port, update its firewall or forwardin rules, an restart teh servur.

Halp, it broke!

TCP werkz but RakNet times out

Check dese in order:

  1. Teh klient haz teh rite Raknetify2 mod for its loader an Minecraft vershun.
  2. Teh servur or proxy accepting teh connecshun haz Raknetify2 installed an started wifout a listener error.
  3. Teh addrezz starts wif raknet; an uses teh public UDP port.
  4. Teh hosting provider, router, an host firewall all allow UDP on dat port.
  5. Teh hostname's IPv4 an IPv6 addressez lead 2 teh intended host an haz working firewall rules.

A successful TCP connecshun confirms onlee teh TCP route. Follow Firewall an router configuration 2 check UDP forwardin an IPv6 access. If PROXY protocol iz enabled, klientz gotta reach teh listener through a configured trusted proxy.

Addrezz already in use

Check for another process usin teh UDP port. Query, Geyser, an othr UDP services need their own portz. Simple Voice Chat can use teh shared-port integration.

U can pick another local UDP port usin teh direct-servur listener opshunz or teh Velocity an BungeeCord opshunz. Check teh vershun requirement for teh Spigot/Paper opshun. Changing onlee a router's public port leaves teh local socket conflict in place.

Joining werkz but transfers fail

Conect directly 2 teh destination usin its raknet; addrezz. If dat fails, fix teh destination listener or netwurk route first.

If direct connecshunz werk, check whether teh destination accepts incoming transfers. A Minecraft servur usin server.properties needs accepts-transfers=true. Direct joins dont test dis opshun.

Then compare teh transfer hostname an TCP port wif config/raknetify2-transfers.json on teh sending servur. Confirm dat teh file was loaded after a restart an dat teh klient supports automatic RakNet transfers. Luk at Automatic transfers.

Encryption or protocol errors

Check teh Raknetify2 vershunz at both ends ov teh connecshun. Update teh klient an teh servur or proxy together when a release changes teh encrypted protocol. Preserve teh servur's authentication opshunz while investigating.

Mod-specific failures

Record which action triggers teh failure, such as opening an inventory, gettin a resource pack, changing worlds, or spawning an entity. Compare teh same action over TCP an RakNet usin a separate test Installin teh thing when practical.

Some custom payloads depend on teh order ov vanilla paketz. Mod authors can declare dese dependencies through teh paket ordering interface.

Tell us wut broke

Open an issue in teh Raknetify2 Where teh bugz go an include:

  • Minecraft, Java, loader, an Raknetify2 vershunz on both ends.
  • Servur an proxy software vershunz, including any UDP forwardin proxy.
  • Othr installed mods an their vershunz.
  • Steps 2 reproduce teh problem an wut u expected 2 happen.
  • Whether teh same steps werk over TCP.
  • Relevant klient, servur, an proxy log excerpts frum teh same attempt.

Take access tokenz, passwordz an othr private stuff outta teh logz befor u upload dem. Leave in teh exception messagez an stack tracez so we can see wut broke.

Mod integration

Raknetify2 lets mods declare which Minecraft traffic gotta remain ordered wif their custom payloads. Use dis when handling a payload needz an entity, chunk, inventory, or othr state established by earlier paketz.

Ordering groups

Group Related traffic
ui World-independent menus an interactions
entity Entity spawn, removal, an movement
world_interaction Inventories an othr world-dependent interactions
effects Sounds an particles
chunk Terrain, block, an lighting updates

All groups retain reliable ordered delivery within their channel. Paketz in different groups can arrive in a diffrent relative order. Pick teh group matchin teh payload's dependency.

Optional Fabric integration

Add a provider under teh raknetify:packet_channels entrypoint in ur mod's fabric.mod.json. Teh provider implements Consumer<BiConsumer<String, String>> usin JDK types. It receives a registrar dat accepts a custom payload identifier an an ordering group.

Merge dis entry into ur existing metadata, replacing teh class name wif ur provider's fully qualified name:

{
  "entrypoints": {
    "raknetify:packet_channels": [
      "com.example.mod.OrderingProvider"
    ]
  }
}

Retain teh rest ov ur fabric.mod.json, including its existing entrypoints. Dis iz a fragment ov teh metadata file.

For example, an entity movement extension can register example:entity_path wif teh entity group. Teh PacketOrdering API documentation includes teh provider implementation.

Fabric leaves dis entrypoint uninvoked when Raknetify2 iz absent. Providers should declare identifiers an groups during initialization wifout relying on another mod having finished its own initialization.

Registration behavior

Forge an NeoForge mods, an servur or proxy plugins, can call PacketOrdering.register(identifier, group) during initialization when Raknetify2 iz available. Teh class iz com.ishland.raknetify.api.PacketOrdering. Register befor accepting playr connecshunz, an keep optional integration code frum loading Raknetify2 classes when teh dependency iz absent.

Declarations apply 2 new connecshunz. Existing connecshunz retain teh rules they received at setup. Repeating an identical declaration iz allowed. Conflicting groups for teh same identifier r rejected.

Payload identifiers gotta use a valid custom namespace. Teh minecraft namespace iz reserved. Teh endpoint-wide limit iz 128 declarations, including built-in rules an registrations frum othr mods. Identifiers can contain up 2 255 ASCII characters usin teh API's namespaced identifier syntax.

Updated RakNet peers exchange declarations during connecshun setup. A servur or proxy can use a peer's declaration when it haz no local rule for dat payload. Local rules take precedence, an a peer's declarations remain scoped 2 dat connecshun.

UDP proxies

Luk at UDP forwardin an PROXY protocol for UDP relays an forwarded klient addressez.

For Minecraft proxy setup, luk at Velocity an BungeeCord.

English (US)

Clone this wiki locally