Repository navigation
Wiki de de
- Startseite
- Installation
- Velocity und BungeeCord
- Firewall und Router einrichten
- Kompatibilität
- Modus mit fester Paketreihenfolge
- Automatische Serverwechsel
- UDP-Weiterleitung und PROXY-Protokoll
- Simple Voice Chat
- Fehlerbehebung
- Anbindung eigener Mods
- UDP-Proxys
Netzwerkverbindungen über RakNet für Minecraft-Clients und -Server.
| Minecraft | Raknetify2 | Client / Server |
|---|---|---|
| Fabric | mods/raknetify2-fabric-*.jar |
Client / Server |
| Forge | mods/raknetify2-forge-*.jar |
Client / Server |
| NeoForge | mods/raknetify2-neoforge-*.jar |
Client / Server |
| Spigot / Paper | plugins/raknetify2-spigot-*.jar |
Server |
| Velocity | plugins/raknetify2-velocity-*.jar |
Velocity |
| BungeeCord | plugins/raknetify2-bungee-*.jar |
BungeeCord |
-
Mehrspieler
-
Server hinzufügen
-
Serveradresse
Serveradresse RakNet · UDP raknet;play.example.com:25565TCP play.example.com:25565 -
Fertig
-
Server beitreten
| F3 | |
|---|---|
| RakNet · UDP | Aktiv · MTU 1400 |
| TCP | Inaktiv |
- Client · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
- Velocity / BungeeCord → TCP → Server
| Portnummer · 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 |
| Serveradresse | UDP |
|---|---|
raknet;play.example.com:25580 |
play.example.com:25580 → NAT → 192.0.2.10:25570
|
Server · 192.0.2.10
|
25570/udp |
Server / Velocity / BungeeCord
| JSON | |
|---|---|
| ① ② ③ | {"mode":"ordered"} |
| ① ∥ ② ∥ ③ | {"mode":"multichannel"} |
| Server | 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
| Serveradresse | trustedProxies |
RakNet |
|---|---|---|
192.0.2.10 · PROXY v2 / UDP |
["192.0.2.10"] |
✓ |
192.0.2.11 · PROXY v2 / UDP |
["192.0.2.10"] |
✗ |
| Client → RakNet / UDP | ["192.0.2.10"] |
✗ |
config/raknetify2-proxy-protocol.json
{"trustedProxies":["192.0.2.10"]}-
Server A · Fabric / Forge / NeoForge ·
config/raknetify2-transfers.json{"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]} -
Server B ·
play.example.com·server.properties→accepts-transfers=true -
Server A ·
/transfer play.example.com 25565 Alex→ Client (Alex) → RakNet ·play.example.com:25570
| Minecraft | |
|---|---|
ui |
Optionen |
entity |
Skelett |
world_interaction |
Inventar |
effects |
Partikel |
chunk |
Blöcke |
- Fabric · Minecraft / Java · English
- Forge / NeoForge / Spigot / Paper · GitHub Releases
Raknetify2 nutzt RakNet über UDP für den Mehrspielermodus von Minecraft. Es verteilt den Datenverkehr auf mehrere Kanäle. Geht auf einem Kanal ein Paket verloren, können die anderen weiterhin Daten übertragen. So kann das Spiel auch dann auf Eingaben reagieren, wenn gerade fehlende Daten nachgeliefert oder Chunks übertragen werden.
Raknetify2 ist ein eigenständig gepflegter Fork von Raknetify, das ursprünglich von ishland entwickelt wurde. Der Fork unterstützt neuere Minecraft-Versionen. Auch die Netzwerkübertragung, die Anbindung an die einzelnen Plattformen und die Kompatibilitätstests werden hier weiter gepflegt.
- Kompatibilität mit Minecraft und anderen Mods prüfen.
- Die passende Datei herunterladen und installieren.
- Verbinde dich über eine Adresse wie
raknet;play.example.com.
- Velocity und BungeeCord
- Firewall und Router einrichten
- Automatische Serverwechsel
- UDP-Weiterleitung und PROXY-Protokoll
- Einen UDP-Port gemeinsam mit Simple Voice Chat nutzen
- Fehler beheben und melden
Wer Mods entwickelt, kann über die Schnittstelle für die Paketreihenfolge angeben, welche Minecraft-Pakete vor oder nach eigenen Nutzdaten verarbeitet werden müssen.
Raknetify2 steht unter der MIT-Lizenz und behält die ursprünglichen Urheberrechtsvermerke bei. Die Netzwerkimplementierung baut auf Raknetify und netty-raknet auf.
Lade eine veröffentlichte Version unter GitHub Releases herunter. Prüfe vorher, welche Minecraft-Version und welchen Modloader sie voraussetzt.
| Installationsziel | Datei | Ordner |
|---|---|---|
| Fabric-Client oder -Server | raknetify2-fabric-*.jar |
mods |
| Forge-Client oder -Server | raknetify2-forge-*.jar |
mods |
| NeoForge-Client oder -Server | raknetify2-neoforge-*.jar |
mods |
| Spigot- oder Paper-Server | raknetify2-spigot-*.jar |
plugins |
| Velocity-Proxy | raknetify2-velocity-*.jar |
plugins |
| BungeeCord-Proxy | raknetify2-bungee-*.jar |
plugins |
Beende den Client oder fahre den Server herunter, bevor du die JAR-Datei austauschst. Entferne die ursprüngliche Raknetify-JAR und alle älteren Raknetify2-JARs aus derselben Installation, bevor du die neue Datei einfügst.
Beim Client liegen die Ordner in der Minecraft-Instanz bzw. im Modpack, das du startest. Bei Servern und Proxys liegen sie im jeweiligen Installationsverzeichnis. Falls dein Loader den Ordner noch nicht angelegt hat, erstelle ihn selbst.
- Installiere die Client-Mod für deinen Loader.
- Installiere die passende Server-Mod oder auf einem kompatiblen Server das Plugin für Spigot/Paper.
- Gib UDP-Verbindungen zum Server frei wie unter Firewall und Router einrichten beschrieben.
- Starte Client und Server neu.
- Füge eine Serveradresse wie
raknet;play.example.comoderraknet;play.example.com:25565hinzu.
Adressen ohne das Präfix raknet; verwenden TCP.
Die Client-Mod allein genügt nicht, um einen fremden Server über RakNet zu erreichen. Der Betreiber muss einen RakNet-Endpunkt bereitstellen. Wenn du nur auf einem fremden Server mitspielst, brauchst du in der Regel keine Portweiterleitung an deinem Router.
Installiere das passende Proxy-Plugin und die Client-Mod. Unter Velocity und BungeeCord findest du die Einstellungen für Listener, die Weiterleitung an Backend-Server, Zugriffsbeschränkungen und die Adresse, mit der sich Spieler verbinden.
Trage bei einem direkten Minecraft-Server das passende Java-Argument aus der Tabelle ein. Für Proxys gelten die Listener-Einstellungen für Velocity und BungeeCord.
| Plattform | Java-Argument | Zulässige Ports |
|---|---|---|
| Fabric-, Forge- oder NeoForge-Server | -Draknetify.fabric.portOverride=25570 |
1 bis 65534
|
| Spigot- oder Paper-Server | -Draknetify.spigot.portOverride=25570 |
1 bis 65535
|
Forge und NeoForge nutzen denselben Listener-Code wie Fabric, deshalb enthält der Name der Einstellung auch dort fabric. Ersetze 25570 durch den gewünschten UDP-Port.
Spigot / Paper ≥ 0.1.0-beta.1.431
Trage das Argument im Java-Startbefehl vor -jar oder bei deinem Hoster im Feld für JVM-Argumente ein. Starte den Server neu und gib UDP auf dem gewählten Port frei. Ist der öffentliche Port ebenfalls 25570, verbinde dich mit raknet;play.example.com:25570. Übersetzt ein Router die Portnummer, verwende in der Client-Adresse den öffentlichen Port. Der bestehende TCP-Port bleibt erhalten.
Unter Spigot/Paper lauscht der UDP-Listener auf derselben lokalen Adresse wie der TCP-Listener von Minecraft. Bei einem ungültigen Wert oder einem belegten UDP-Port kann RakNet nicht starten. Im Startprotokoll siehst du, an welche Adresse und welchen Port der UDP-Listener gebunden ist. Entferne das Argument und starte den Server neu, um wieder die Portnummer des TCP-Listeners zu verwenden.
Du kannst auch am Router oder UDP-Proxy einen anderen öffentlichen UDP-Port freigeben und an den vorhandenen Listener weiterleiten. Die Java-Argumente des Servers brauchst du dafür nicht zu ändern.
Öffne unter GitHub Actions einen erfolgreichen Lauf für main und lade das Archiv unter Artifacts herunter. Dafür brauchst du ein GitHub-Konto. Welche JAR-Datei aus dem Archiv du benötigst, steht oben in der Installationstabelle.
Velocity und BungeeCord vermitteln zwischen Spielern und den eigentlichen Minecraft-Servern. Installiere Raknetify2 auf dem Proxy und auf jedem Client, der eine Verbindung über RakNet herstellen soll.
Raknetify2-Client --UDP--> Velocity oder BungeeCord --TCP--> Backend-Server
Für diesen Verbindungsweg brauchen die Backend-Server kein Raknetify2. Sie benötigen weiterhin die Mods, Plugins und Weiterleitungseinstellungen, auf die dein Netzwerk angewiesen ist. Raknetify2 übersetzt keine Minecraft-Protokollversionen und ändert nichts an der Kontoauthentifizierung des Proxys.
- Prüfe zuerst, ob normale TCP-Verbindungen über deinen Proxy funktionieren, auch bei der Anmeldung und beim Wechsel zwischen Backend-Servern.
- Halte den Proxy an und lade das passende Plugin von GitHub Releases herunter.
- Lege
raknetify2-velocity-*-all.jaroderraknetify2-bungee-*-all.jarim Ordnerpluginsdes Proxys ab. Entferne ältere Raknetify- oder Raknetify2-Plugins aus diesem Ordner. - Installiere die passende Client-Mod von Raknetify2 wie in der Installationsanleitung beschrieben.
- Prüfe die folgenden Listener-Einstellungen, starte den Proxy neu und suche im Protokoll nach Fehlern des RakNet-Listeners.
- Lass öffentlichen UDP-Verkehr zum Proxy zu und beschränke den Zugriff auf die Spielports der Backend-Server wie unter Firewall und Router einrichten beschrieben.
Verwende auf Client und Proxy zueinander passende Raknetify2-Versionen. Lies unter Kompatibilität nach, bevor du verschiedene Versionen kombinierst.
In velocity.toml legt bind fest, auf welcher Adresse und welchem TCP-Port Velocity für Minecraft lauscht. Raknetify2 nutzt normalerweise dieselbe Portnummer für UDP. Die Einträge unter [servers] müssen weiterhin auf die TCP-Adressen der Backend-Server zeigen. Details stehen in Velocitys Konfigurationsreferenz.
Für einen separaten UDP-Port füge dieses JVM-Argument im Startbefehl von Velocity vor -jar ein:
-Draknetify.velocity.portOverride=25570
Ersetze 25570 durch den gewünschten Port. Damit änderst du den UDP-Port für RakNet. Der TCP-Port von Velocity und die Backend-Adressen bleiben erhalten. Starte Velocity anschließend neu.
Richte die Weiterleitung der Spielerdaten sowohl in Velocity als auch auf den Backend-Servern ein. Unterstützt das Backend die moderne Weiterleitung, verwende diese und halte den gemeinsamen Schlüssel geheim. Folge der Anleitung für dein Backend in Velocitys Dokumentation zur Weiterleitung von Spielerdaten. Beschränke den Zugriff auf das Backend weiterhin über die Firewall.
In BungeeCords config.yml gibt host für jeden Eintrag unter listeners die Adresse und den TCP-Port des Minecraft-Listeners an. Raknetify2 nutzt normalerweise dieselbe Portnummer für UDP. Unter servers stehen die TCP-Adressen der Backend-Server. Einzelheiten findest du in der Konfigurationsanleitung für BungeeCord.
Für einen separaten UDP-Port füge dieses JVM-Argument im Startbefehl von BungeeCord vor -jar ein:
-Draknetify.bungee.portOverride=25570
Die Einstellung gilt für den ganzen Proxy-Prozess. Wenn mehrere Minecraft-Listener eingerichtet sind, prüfe im Startprotokoll die tatsächlichen RakNet-Endpunkte, bevor du Firewall-Regeln anlegst. Starte BungeeCord nach der Änderung neu.
Lass die Kontoauthentifizierung am Proxy eingeschaltet. Für Spigot-Backends beschreibt BungeeCords Anleitung zur IP-Weiterleitung die Kombination aus ip_forward: true auf dem Proxy und settings.bungeecord: true auf dem Backend. Die Weiterleitung allein verhindert keine direkten Verbindungen zum Backend. Beschränke den Zugriff wie in der Firewall-Anleitung beschrieben.
Beide Proxy-Einstellungen akzeptieren Ports von 1 bis 65534. Ungültige Werte werden ignoriert. Prüfe deshalb im Startprotokoll den tatsächlich gebundenen UDP-Port. Entferne das Argument und starte den Proxy neu, um wieder dieselbe Portnummer wie der Minecraft-Listener zu verwenden.
Spieler verbinden sich mit dem öffentlichen Hostnamen und dem UDP-Port des Proxys, etwa über raknet;play.example.com:25570. Setzt ein Router die Portnummer um, verwende in der Client-Adresse den öffentlichen UDP-Port. Adressen ohne raknet; verwenden weiterhin den TCP-Listener des Proxys.
Weise Query, Geyser und anderen UDP-Diensten jeweils eigene UDP-Ports zu. Einen Konflikt um einen UDP-Socket behebst du nicht durch Ändern des TCP-Ports.
Für Velocity und BungeeCord benötigt Simple Voice Chat ein eigenes Proxy-Plugin und einen eigenen UDP-Port. Folge der Anleitung für Sprachchat-Proxys.
Wenn vor deinem Minecraft-Proxy ein separates UDP-Relay sitzt, das Header des PROXY-Protokolls v2 sendet, richte Raknetify2 wie unter UDP-Weiterleitung und PROXY-Protokoll beschrieben ein. Die Installation von Velocity oder BungeeCord allein erfordert diese Einstellung nicht.
Teste mit einem Raknetify2-Client außerhalb deines lokalen Netzes. Verbinde dich über den Proxy, wechsle zwischen deinen Backend-Servern und prüfe, ob Spieleridentität und Berechtigungen erhalten bleiben.
- Funktioniert TCP über den Proxy, während RakNet in eine Zeitüberschreitung läuft, prüfe den UDP-Listener des Proxys, den öffentlichen Port, die IPv4- und IPv6-Routen und die Firewall-Regeln.
- Scheitern beide Verbindungsarten beim Übergang vom Proxy zum Backend, prüfe dessen TCP-Adresse, Zugriffsregeln und die Weiterleitung der Spielerdaten.
- Meldet der Proxy einen belegten UDP-Port, prüfe, ob Query, Geyser, ein Sprachchat-Proxy oder ein anderer Prozess ihn verwendet.
Füge einer Fehlermeldung die Protokolle von Proxy und Backend zum selben Verbindungsversuch bei. Unter Fehlerbehebung steht, welche Versionsangaben dazugehören.
Diese Anleitung richtet sich an Serverbetreiber. Raknetify2 braucht eine funktionierende UDP-Verbindung zu dem Server oder Proxy, der RakNet-Verbindungen annimmt. Standardmäßig nutzt der Listener dieselbe Portnummer wie der TCP-Listener von Minecraft.
Im selben lokalen Netz reicht die lokale Adresse des Servers. Seine Firewall muss UDP zulassen. Eine Portweiterleitung am Router ist nötig, wenn Verbindungen aus dem Internet über dessen IPv4-NAT laufen.
Leite öffentliche UDP-Verbindungen an den Rechner mit dem Minecraft-Server und Raknetify2 weiter. Ziel ist der UDP-Port des RakNet-Listeners. Gib diesen Port in der Firewall des Rechners frei. Behalte den bisherigen TCP-Zugang für gewöhnliche Minecraft-Verbindungen bei.
Lauscht Raknetify2 beispielsweise auf UDP-Port 25570, leite den öffentlichen UDP-Port an die lokale Serveradresse und Port 25570 weiter. Der TCP-Port des Servers kann bei 25565 bleiben. Einen anderen UDP-Port legst du in den Listener-Einstellungen für direkte Serververbindungen fest.
Leite öffentliche UDP-Verbindungen an den Rechner weiter, auf dem Velocity oder BungeeCord mit dem Raknetify2-Plugin läuft. Ziel der Weiterleitung ist der UDP-Listener des Proxys für RakNet. Behalte den öffentlichen TCP-Zugang zum Proxy für gewöhnliche Minecraft-Verbindungen bei.
Vom Proxy zu den Backend-Servern läuft Minecraft über TCP. Wenn du Raknetify2 auf dem Proxy installierst, brauchst du auf den Backends keine UDP-Spielports für die Spieler zu öffnen.
| Verbindung | Benötigter Zugriff |
|---|---|
| Spieler zum Proxy | Öffentlicher UDP-Zugriff auf den RakNet-Listener sowie der bestehende öffentliche TCP-Listener |
| Proxy zu den Backend-Servern | TCP-Ports der Minecraft-Backends, nur von den vorgesehenen Proxy-Rechnern aus erreichbar |
| Spieler direkt zu den Spielports der Backends | Zugriff gesperrt lassen, auch über IPv6 |
Laufen Proxy und Backends direkt auf einem dedizierten Rechner unter deiner Kontrolle, können die Backend-Listener Loopback-Adressen nutzen. Trage diese Adressen im Proxy ein. Bei getrennten Rechnern beschränke den TCP-Zugriff auf die Backends per Firewall oder über ein isoliertes privates Netz auf die Proxy-Rechner. Bei Containern und gemieteten Servern müssen entsprechende Beschränkungen zur jeweiligen Netzstruktur passen. Siehe Backends mit Velocity absichern und die Firewall-Anleitung für BungeeCord.
Die Weiterleitung der Spielerdaten und die Firewall-Regeln ergänzen sich. Wer direkt auf das Backend kommt, kann die Anmeldeprüfung des Proxys umgehen. Die Installation des Plugins, Weiterleitungseinstellungen und abweichende UDP-Ports beschreibt Velocity und BungeeCord.
Wenn ein Router die Portnummer umsetzt, können öffentlicher Port und Listener-Port voneinander abweichen:
| Einstellung | Welcher Port gehört hierher? |
|---|---|
| Serveradresse im Client | Öffentlicher UDP-Port |
| Externer Port der Weiterleitungsregel im Router | Öffentlicher UDP-Port |
| Interner Port der Weiterleitungsregel im Router | UDP-Port des RakNet-Listeners |
| Lokaler Port in der Firewall des Rechners | UDP-Port des RakNet-Listeners |
Wenn dein Server hinter einem IPv4-Router steht:
- Ermittle die lokale IPv4-Adresse des Rechners, der die RakNet-Verbindungen annimmt. Richte eine DHCP-Reservierung oder eine passende statische Adresse ein, damit die Weiterleitung auch später auf diesen Rechner zeigt.
- Lege eine UDP-Weiterleitung für den öffentlichen Port an, den die Spieler verwenden sollen.
- Trage als Ziel die lokale Adresse des Rechners und den UDP-Port des RakNet-Listeners ein.
- Erlaube in der Firewall des Rechners eingehenden UDP-Verkehr zum Listener-Port.
Lauscht der Server beispielsweise auf UDP-Port 25565, kann die Regel den öffentlichen Port 25565 an die Zieladresse 192.168.1.100 und den Zielport 25565 weiterleiten. Ersetze die Beispieladresse durch die tatsächliche lokale Adresse deines Servers.
Lass die vorhandene TCP-Regel für gewöhnliche Minecraft-Verbindungen bestehen. Sie leitet keinen UDP-Verkehr weiter.
Prüfe, ob vor deinem Router bereits ein weiterer Router oder dein Internetanbieter NAT verwendet. Bei zwei eigenen Routern musst du beide einrichten. Nutzt der Anbieter Carrier-Grade NAT, frage nach einer öffentlichen IPv4-Adresse oder verwende einen Hoster bzw. Tunnel, der eingehenden UDP-Verkehr unterstützt. Die Portweiterleitung deines Routers hat keinen Einfluss auf das NAT deines Anbieters. TP-Link erklärt die Voraussetzungen für die öffentliche WAN-Adresse.
Gib den gewählten UDP-Port sowohl in der IPv6-Firewall des Routers als auch in der Firewall des Rechners frei. Ziel ist die IPv6-Adresse des Rechners, der die RakNet-Verbindungen annimmt.
Prüfe, ob die IPv6-Adresse des Hostnamens auf diesen Rechner zeigt. Ändert sich seine IPv6-Adresse, aktualisiere den DNS-Eintrag und alle Firewall-Regeln, die sich ausdrücklich auf die alte Adresse beziehen.
Veröffentlicht ein Hostname sowohl IPv4- als auch IPv6-Adressen, muss jede angegebene Adresse erreichbar sein. Prüfe beide Regelsätze, wenn manche Spieler beitreten können und andere nicht.
Ändert die IPv4-Weiterleitung die Portnummer, muss der von den Spielern eingegebene Port auch den IPv6-Listener erreichen. Eine Portumsetzung für IPv4 richtet keinen IPv6-Zugang ein.
Der Hoster oder Tunnel muss auf der Adresse und dem öffentlichen Port, den du den Spielern gibst, UDP unterstützen. Prüfe die zugewiesenen Ports und die Firewall-Regeln des Anbieters ebenso wie die Firewall des Servers.
Leitet ein zusätzlicher UDP-Proxy die Client-Adressen per PROXY-Protokoll v2 weiter, folge der Anleitung UDP-Weiterleitung und PROXY-Protokoll. Beschränke den Zugriff auf den empfangenden UDP-Listener auf den vertrauenswürdigen Proxy.
Verbinde dich von außerhalb des lokalen Servernetzes mit einem aktuellen Raknetify2-Client, etwa über raknet;play.example.com:25565. Gib dabei den öffentlichen UDP-Port an.
Prüfe den Verbindungsweg mit einer echten RakNet-Verbindung. Bleibt ein UDP-Scan ohne Antwort, ist das Ergebnis unter Umständen nicht eindeutig: Auch ein funktionierender Dienst kann unbekannte Testpakete verwerfen. Näheres erklärt die Dokumentation zu UDP-Scans mit Nmap.
Eine erfolgreiche TCP-Verbindung bestätigt nur den TCP-Weg. Läuft RakNet in eine Zeitüberschreitung, prüfe Listener, Weiterleitungsziel, UDP-Port und Firewall-Regeln anhand der Anleitung zur Fehlerbehebung.
Prüfe die Kompatibilität für die Version, die du tatsächlich herunterlädst. Der Entwicklungszweig kann bereits Kombinationen unterstützen, für die noch keine fertige Version erschienen ist.
Minecraft- und Java-Versionen · English
Raknetify2 nennt die mindestens benötigte Java-Version. Minecraft oder der Loader können eine neuere Laufzeitumgebung verlangen. Wähle eine Java-Version, die alle drei Anforderungen erfüllt.
Verwende möglichst dieselbe Raknetify2-Version auf dem Client und dem Server oder Proxy, der die Verbindung annimmt. Lies die Versionshinweise, bevor du unterschiedliche Versionen kombinierst. Verschlüsselte RakNet-Verbindungen setzen auf beiden Seiten Unterstützung für das Protokoll mit authentifizierter Verschlüsselung voraus. Das ursprüngliche Raknetify und ältere Raknetify2-Versionen ohne dieses Protokoll können solche verschlüsselten Verbindungen zu aktualisierten Gegenstellen nicht herstellen.
Raknetify2 überträgt das vorhandene Spielprotokoll von Minecraft. Um unterschiedliche Minecraft-Versionen zu verbinden, brauchst du zusätzlich eine passende Protokollübersetzung.
Tritt der Fehler in einem größeren Modpack auf, folge der Anleitung zur Fehlerbehebung. Gib in der Meldung die genauen Versionen aller Mods an.
Normalerweise können die Kanäle von Raknetify2 unabhängig weiterarbeiten, wenn einer auf fehlende Daten wartet. Im Modus mit fester Reihenfolge laufen alle Minecraft-Pakete pro Richtung über einen einzigen Kanal. Fehlt ein Paket, warten alle nachfolgenden Pakete derselben Richtung, bis es erneut zugestellt wurde. Damit bleibt die Reihenfolge erhalten, die manche Anti-Cheat-Programme erwarten. Während dieser Wartezeit steht allerdings auch der übrige Spielverkehr in derselben Richtung still.
-
Installiere eine Raknetify2-Version mit Unterstützung für diesen Modus auf dem Server oder Proxy, der RakNet-Verbindungen annimmt, und auf allen RakNet-Clients.
-
Erstelle die Datei
config/raknetify2-compatibility.jsonim Arbeitsverzeichnis dieses Servers oder Proxys. Lege das Verzeichnisconfigan, falls es noch fehlt. -
Trage Folgendes ein:
{"mode": "ordered"} -
Starte den Server oder Proxy neu.
Clients übernehmen die Einstellung des Servers automatisch. Spieler brauchen weder eine eigene Konfigurationsdatei noch eine andere RakNet-Serveradresse.
Alle Minecraft-Pakete laufen pro Richtung über einen einzigen zuverlässigen Kanal mit fester Reihenfolge. Das gilt auch für die Begrenzungsmarkierungen von Paketbündeln und für Weltwechsel.
Verbinden sich Spieler über Velocity oder BungeeCord, richte die feste Paketreihenfolge auf diesem Proxy ein, auch wenn das Anti-Cheat-Programm auf einem Backend-Server läuft.
Die Einstellung bleibt beim Wechsel des Backend-Servers wirksam. Bei fester Paketreihenfolge leitet der Proxy Keepalive-Anfragen des Backends an den tatsächlichen Client weiter, statt sie selbst zu beantworten.
Bei der ersten RakNet-Verbindung meldet die Konsole:
Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)
Nach erfolgreicher Aushandlung protokolliert sie außerdem ordered compatibility negotiated und die Adresse der Gegenstelle.
Lass die Anti-Cheat-Prüfungen eingeschaltet und teste deine konkrete Konfiguration.
RakNet-Clients ohne Unterstützung für die feste Paketreihenfolge können keinem Server beitreten, der sie voraussetzt. Aktualisiere Raknetify2 auf diesen Clients oder stelle eine gewöhnliche TCP-Verbindung zur Adresse und zum Port des Servers oder Proxys her. Lass dabei raknet; weg.
Ändere den Dateiinhalt wie folgt:
{"mode": "multichannel"}Starte anschließend den Server oder Proxy neu. Du kannst die Datei auch löschen. Nach dem Neustart ist der Mehrkanalbetrieb dann ebenfalls wieder aktiv.
Die Datei muss genau eine Einstellung namens mode mit dem Wert "ordered" oder "multichannel" enthalten. Achte auf Groß- und Kleinschreibung.
Ist die Konfiguration ungültig oder nicht lesbar, werden RakNet-Verbindungen abgewiesen. Korrigiere die Datei und starte den Prozess neu.
Meldet die Konsole weiterhin multichannel, prüfe, ob die Datei im Arbeitsverzeichnis genau des Servers oder Proxys liegt, der die RakNet-Verbindung annimmt. Starte diesen Prozess neu.
Server mit Fabric, Forge oder NeoForge können beim Wechsel zu einem eingetragenen Ziel RakNet wählen, wenn der Client diese Funktion unterstützt. Dafür nutzen sie den Servertransfer von Minecraft, den es seit Java Edition 1.20.5 gibt. Prüfe für beide Seiten, ob deine Raknetify2-Version die jeweilige Minecraft-Version und den Loader unterstützt.
Installiere Raknetify2 auf dem sendenden Server und auf dem Client. Das Ziel muss einen kompatiblen RakNet-Listener bereitstellen und eingehende Minecraft-Transfers annehmen.
Diese Konfiguration gilt für Transfers, die von Servern mit den drei oben genannten Modloadern ausgehen. Die Plugins für Spigot/Paper, Velocity und BungeeCord lesen diese Transferdatei nicht.
Erstelle im Verzeichnis des sendenden Servers die Datei config/raknetify2-transfers.json:
{
"destinations": [
{
"host": "play.example.com",
"tcpPort": 25565,
"udpPort": 25570
}
]
}Ersetze Hostnamen und Ports im Beispiel durch die Werte deines Ziels. Starte anschließend den sendenden Server neu. Weitere Ziele trägst du im selben Array ein.
| Feld | Bedeutung |
|---|---|
host |
Hostname oder IP-Adresse des Ziels, ohne Transportpräfix und ohne Port |
tcpPort |
Zielport der ursprünglichen Transferanfrage |
udpPort |
Öffentlicher RakNet-Port, zu dem der weitergeleitete Client eine Verbindung herstellen soll |
TCP und UDP dürfen dieselbe Portnummer verwenden. Setzt ein Router den UDP-Port um, trage hier den öffentlichen Port ein. Schreibe Portnummern als JSON-Zahlen.
Sende Transfers an den gewöhnlichen Hostnamen und TCP-Port des Ziels. Raknetify2 prüft, ob der Client Unterstützung für automatische Transfers meldet. Unterstützt er sie und passt das Ziel zu einem Eintrag, wird der konfigurierte UDP-Port gewählt. Für andere Clients und nicht eingetragene Ziele bleibt die ursprüngliche Transferadresse erhalten.
Für den Abgleich zählen Hostname und TCP-Port der Transferanfrage. Groß- und Kleinschreibung, ein abschließender DNS-Punkt und gleichwertige IPv6-Schreibweisen werden vereinheitlicht. Es erfolgt keine DNS-Abfrage. Zwei verschiedene Hostnamen brauchen daher auch dann eigene Einträge, wenn sie auf dieselbe Adresse verweisen. Platzhalter wie Sternchen werden nicht unterstützt.
Verwendet das Ziel die Minecraft-Datei server.properties, setze dort accepts-transfers=true und starte den Server neu. Ziel-Proxys können dafür eine eigene Einstellung haben. Minecraft lehnt eingehende Transfers standardmäßig ab, auch wenn Spieler dem Server direkt beitreten können.
Der RakNet-Listener des Ziels, die Weiterleitung des öffentlichen UDP-Ports und die Firewall des Rechners müssen bereits eingerichtet sein. Die Transferdatei auf dem sendenden Server legt fest, welche Adresse der Client erhält.
Prüfe bei einem Hostnamen mit IPv4- und IPv6-Adresse beide Verbindungswege zum Ziel. Teste eine direkte RakNet-Verbindung, bevor du nach Problemen mit dem automatischen Serverwechsel suchst.
Lass Anmelde- und Zugangskontrollen am Ziel eingeschaltet. Die Einstellung gewährt Spielern keinen Zugang und ersetzt die Authentifizierung des Servers nicht.
Fehlende oder unbekannte Felder, ungültige Ports und doppelt eingetragene Ziele führen beim Start zu einem Konfigurationsfehler. Suche den Fehler im Serverprotokoll, korrigiere die JSON-Datei und starte den Server neu.
Um die automatische Auswahl abzuschalten, entferne die Konfigurationsdatei oder trage {"destinations": []} ein. Starte dann den sendenden Server neu. Seine Transferanfragen verwenden anschließend die ursprünglichen Adressen.
Ein UDP-Proxy kann RakNet-Verkehr weiterleiten und die ursprüngliche Client-Adresse per PROXY-Protokoll v2 mitgeben. Schalte die Funktion ein, wenn ein vorgeschalteter UDP-Proxy solche Header an deinen Listener sendet. Für eine gewöhnliche Portweiterleitung am Router ist sie nicht erforderlich.
Erstelle auf dem Server oder Minecraft-Proxy, der den weitergeleiteten UDP-Verkehr empfängt, die Datei config/raknetify2-proxy-protocol.json:
{
"trustedProxies": ["192.0.2.10"]
}Ersetze das Beispiel durch die tatsächliche Quell-IP deines UDP-Proxys oder einen von dir kontrollierten CIDR-Bereich. Entscheidend ist die Adresse, die der empfangende Listener nach einem eventuell dazwischenliegenden NAT sieht. Erlaubt sind IPv4- und IPv6-Adressen in Zahlenschreibweise. DNS-Namen sind ungültig. Starte den empfangenden Server oder Proxy neu.
Richte den vorgeschalteten Proxy so ein, dass er für UDP Header des PROXY-Protokolls v2 sendet. Raknetify2 akzeptiert weitergeleitete Client-Adressen nur aus den eingetragenen Quellen. Solange diese Einstellung aktiv ist, werden direkte RakNet-Verbindungen ohne solche Header abgewiesen. Für den TCP-Listener gilt weiterhin seine bestehende Konfiguration.
Jeder eingetragene Proxy darf Client-Adressen vorgeben. Beschränke deshalb in der Firewall des Backends den Zugriff auf dessen UDP-Port auf die vorgesehenen Proxys. Halte die freigegebenen Adressbereiche so klein, wie dein Netz es zulässt.
Die Datei darf nur trustedProxies enthalten und muss mindestens einen Eintrag haben. Ein leeres Array ist ungültig. Bei einer ungültigen Datei startet der RakNet-Listener nicht.
Entferne die Datei und starte den Listener neu, um wieder direkte UDP-Verbindungen anzunehmen. Passe zugleich die Weiterleitung des vorgeschalteten Proxys und die Firewall-Regeln an den neuen Verbindungsweg an.
Scheitern Verbindungen nach dem Einschalten, prüfe die tatsächliche Quelladresse des Proxys am Backend, den freigegebenen Adressbereich und ob der Proxy für UDP Header des PROXY-Protokolls v2 sendet.
Die Installation eines Minecraft-Proxys und die Einrichtung der Backends beschreibt Velocity und BungeeCord.
Auf Fabric, Forge, NeoForge, Spigot und Paper kann Raknetify2 den UDP-Listener des Servers gemeinsam mit Simple Voice Chat verwenden.
Installiere Simple Voice Chat auf dem Server und auf allen Clients, die Sprachchat nutzen möchten. Für die übrigen Einstellungen folge der Serveranleitung von Simple Voice Chat.
Die Konfigurationsdatei von Raknetify2 gehört auch auf Spigot/Paper in das oberste Verzeichnis config des Servers. Die Datei von Simple Voice Chat selbst bleibt im unten angegebenen plattformspezifischen Ordner.
-
Erstelle im Serververzeichnis die Datei
config/raknetify2-voicechat.jsonmit folgendem Inhalt:{"enabled": true} -
Setze in der Serverkonfiguration von Simple Voice Chat
port=-1. Bei einem Server mit Modloader ist das die Dateiconfig/voicechat/voicechat-server.properties, unter Spigot/Paper die Dateiplugins/voicechat/voicechat-server.properties. -
Lass
bind_addressleer, wenn es genau einen passenden RakNet-Listener gibt. Lauschen mehrere auf diesem UDP-Port, gib die lokale Adresse des Listeners an, den beide Dienste nutzen sollen. -
Starte den Server neu und führe für einen verbundenen Spieler
/voicechat test <PLAYERNAME>aus.
Nutzt der RakNet-Listener einen anderen Port als Minecraft, setze port für den Sprachchat ausdrücklich auf diesen lokalen UDP-Port statt auf -1. Lauscht RakNet auf dem lokalen UDP-Port 25570, trage also port=25570 ein.
Setze voice_host, wenn Clients eine abweichende öffentliche Adresse oder Portnummer benötigen. Leitet ein Router den öffentlichen UDP-Port 25580 an den lokalen UDP-Port 25570 weiter, verwende port=25570 und voice_host=play.example.com:25580. Die öffentliche Adresse gehört in voice_host. Mit bind_address wählst du einen lokalen Listener aus.
Raknetify2 stellt den gemeinsamen UDP-Socket über die API von Simple Voice Chat bereit. Simple Voice Chat übernimmt die Authentifizierung und Verschlüsselung für den Sprachchat. Spieler können ihn unabhängig davon nutzen, ob ihre Spielverbindung über TCP oder RakNet läuft.
Weise Query und Geyser jeweils eigene UDP-Ports zu. Der gemeinsame Socket wird nur für Simple Voice Chat unterstützt.
Unter Velocity oder BungeeCord nutzt die Integration keinen Socket gemeinsam mit dem Sprachchat-Proxy. Folge der Proxy-Anleitung für Simple Voice Chat und gib dem Sprachchat-Proxy einen eigenen UDP-Port. Beim offiziellen Proxy-Plugin gehört eine abweichende öffentliche Adresse für voice_host in die Sprachchat-Konfiguration des Proxys. Das Plugin ignoriert die voice_host-Einstellungen der Backends.
Bei einem gewöhnlichen UDP-Tunnel gib unter voice_host den öffentlichen Hostnamen und den UDP-Port an, der an diesen Server weitergeleitet wird.
Steht im Protokoll No RakNet listener matches the voice bind address and port, prüfe, ob RakNet erfolgreich gestartet ist. Der Sprachchat muss denselben Port und dieselbe lokale Bindeadresse wie der Listener verwenden.
Bei der Meldung Multiple RakNet listeners match the voice bind address gib unter bind_address eine konkrete passende lokale Adresse an und starte den Server neu.
Nur ein Plugin kann Simple Voice Chat seinen UDP-Socket bereitstellen. Meldet der Server beim Start, dass das bereits ein anderes Plugin tut, entscheide dich für eine der beiden Integrationen.
Zum Abschalten der Raknetify2-Integration setze in ihrer Sprachchat-Konfiguration {"enabled": false} oder entferne die Datei. Gib Simple Voice Chat einen eigenen UDP-Port, passe Firewall- oder Weiterleitungsregeln entsprechend an und starte den Server neu.
Prüfe diese Punkte der Reihe nach:
- Auf dem Client ist die zu seinem Loader und seiner Minecraft-Version passende Raknetify2-Mod installiert.
- Auf dem Server oder Proxy, der die Verbindung annimmt, ist Raknetify2 installiert. Der Listener ist fehlerfrei gestartet.
- Die Adresse beginnt mit
raknet;und enthält den öffentlichen UDP-Port. - Hoster, Router und die Firewall des Rechners lassen UDP auf diesem Port zu.
- Die IPv4- und IPv6-Adressen des Hostnamens zeigen auf den richtigen Rechner. Die Firewall-Regeln lassen beide Verbindungswege zu.
Eine erfolgreiche TCP-Verbindung bestätigt nur den TCP-Weg. Prüfe die UDP-Weiterleitung und den IPv6-Zugang wie unter Firewall und Router einrichten beschrieben. Ist das PROXY-Protokoll eingeschaltet, müssen Clients über einen der als vertrauenswürdig eingetragenen Proxys zum Listener gelangen.
Suche nach einem weiteren Prozess, der den UDP-Port verwendet. Query, Geyser und andere UDP-Dienste brauchen jeweils eigene Ports. Mit Simple Voice Chat kannst du den Port gemeinsam nutzen.
Einen anderen lokalen UDP-Port kannst du in den Listener-Einstellungen für direkte Serververbindungen oder den Einstellungen für Velocity und BungeeCord festlegen. Beachte die erforderliche Version für Spigot/Paper. Nur den öffentlichen Port am Router zu ändern behebt den Konflikt um den lokalen Socket nicht.
Verbinde dich über die raknet;-Adresse direkt mit dem Ziel. Scheitert schon dieser Versuch, behebe zuerst das Problem mit dem Listener oder dem Verbindungsweg zum Ziel.
Klappt die direkte Verbindung, prüfe, ob das Ziel eingehende Transfers annimmt. Ein Minecraft-Server mit server.properties braucht accepts-transfers=true. Ein direkter Beitritt prüft diese Einstellung nicht.
Vergleiche dann den Hostnamen und den TCP-Port der Transferanfrage mit config/raknetify2-transfers.json auf dem sendenden Server. Prüfe, ob die Datei nach einem Neustart geladen wurde und ob der Client automatische RakNet-Transfers unterstützt. Siehe Automatische Serverwechsel.
Prüfe die Raknetify2-Versionen an beiden Enden der Verbindung. Ändert eine Version das verschlüsselte Protokoll, aktualisiere Client und Server bzw. Proxy gemeinsam. Behalte bei der Fehlersuche die Authentifizierungseinstellungen des Servers bei.
Halte fest, wodurch der Fehler ausgelöst wird: etwa beim Öffnen eines Inventars, Empfangen eines Ressourcenpakets, Wechseln der Welt oder Erzeugen eines Objekts. Vergleiche denselben Vorgang über TCP und RakNet, möglichst in einer separaten Testinstallation.
Bei manchen eigenen Nutzdaten kommt es darauf an, in welcher Reihenfolge sie relativ zu Vanilla-Paketen eintreffen. Wer eine Mod entwickelt, kann solche Abhängigkeiten über die Schnittstelle für die Paketreihenfolge angeben.
Öffne eine Meldung im Issue-Tracker von Raknetify2 und gib Folgendes an:
- Minecraft-, Java-, Loader- und Raknetify2-Versionen auf beiden Seiten.
- Versionen der Server- und Proxy-Software, auch von vorgeschalteten UDP-Proxys.
- Alle weiteren installierten Mods mit ihren Versionen.
- Schritte, mit denen sich der Fehler nachstellen lässt, und welches Ergebnis du erwartet hast.
- Ob dieselben Schritte über TCP funktionieren.
- Passende Ausschnitte aus Client-, Server- und Proxy-Protokollen desselben Verbindungsversuchs.
Entferne vor dem Hochladen Zugriffstoken, Passwörter und andere private Angaben aus den Protokollen. Lass die für die Diagnose nötigen Fehlermeldungen und Stacktraces stehen.
Mit Raknetify2 können Mods angeben, bei welchen Minecraft-Paketen die Reihenfolge gegenüber ihren eigenen Nutzdaten erhalten bleiben muss. Das ist wichtig, wenn die Verarbeitung beispielsweise ein Objekt, einen Chunk, ein Inventar oder einen anderen Zustand voraussetzt, den erst ein früheres Paket erzeugt.
| Gruppe | Zugehöriger Datenverkehr |
|---|---|
ui |
Weltunabhängige Menüs und Interaktionen |
entity |
Erzeugen, Entfernen und Bewegen von Objekten |
world_interaction |
Inventare und andere weltabhängige Interaktionen |
effects |
Geräusche und Partikel |
chunk |
Aktualisierungen von Gelände, Blöcken und Beleuchtung |
Innerhalb jedes Kanals werden die Pakete zuverlässig in der richtigen Reihenfolge zugestellt. Bei Paketen aus verschiedenen Gruppen kann sich die Reihenfolge zueinander ändern. Wähle die Gruppe, zu der die Abhängigkeit deiner Nutzdaten passt.
Trage in der fabric.mod.json deiner Mod einen Provider für den Einstiegspunkt raknetify:packet_channels ein. Der Provider implementiert Consumer<BiConsumer<String, String>> mit Typen aus dem JDK. Er erhält eine Registrierungsfunktion, die die Kennung eigener Nutzdaten und die zugehörige Gruppe entgegennimmt.
Ergänze deine bestehenden Metadaten um den folgenden Eintrag. Ersetze den Klassennamen durch den vollständig qualifizierten Namen deines Providers:
{
"entrypoints": {
"raknetify:packet_channels": [
"com.example.mod.OrderingProvider"
]
}
}Das Beispiel zeigt nur einen Ausschnitt. Behalte den restlichen Inhalt deiner fabric.mod.json einschließlich vorhandener Einstiegspunkte bei.
Eine Mod, die Objektbewegungen erweitert, könnte beispielsweise example:entity_path in der Gruppe entity registrieren. Die Dokumentation der PacketOrdering-API enthält die Implementierung des Providers.
Ist Raknetify2 nicht installiert, ruft Fabric diesen Einstiegspunkt nicht auf. Registriere Kennungen und Gruppen während der Initialisierung, ohne vorauszusetzen, dass die Initialisierung einer anderen Mod schon abgeschlossen ist.
Ist Raknetify2 verfügbar, können Forge- und NeoForge-Mods sowie Server- und Proxy-Plugins während ihrer Initialisierung PacketOrdering.register(identifier, group) aufrufen. Die Klasse heißt com.ishland.raknetify.api.PacketOrdering. Registriere die Regeln, bevor der Server Spielerverbindungen annimmt. Bei optionaler Integration darf dein Code keine Raknetify2-Klassen laden, wenn die Abhängigkeit fehlt.
Neue Regeln gelten für neue Verbindungen. Bestehende Verbindungen behalten die Regeln vom Verbindungsaufbau. Eine identische Registrierung darf wiederholt werden. Widersprüchliche Gruppen für dieselbe Kennung werden abgewiesen.
Nutzdaten-Kennungen brauchen einen gültigen eigenen Namensraum. Der Namensraum minecraft ist reserviert. Pro Endpunkt sind insgesamt 128 Regeln zulässig, einschließlich eingebauter Regeln und Registrierungen anderer Mods. Kennungen dürfen bis zu 255 ASCII-Zeichen lang sein und müssen der Namensraum-Syntax der API entsprechen.
Aktualisierte RakNet-Gegenstellen tauschen ihre Regeln beim Verbindungsaufbau aus. Ein Server oder Proxy kann die Regel der Gegenstelle nutzen, wenn er für diese Nutzdaten keine eigene hat. Lokale Regeln haben Vorrang. Die Regeln der Gegenstelle gelten nur für die jeweilige Verbindung.
Informationen zu UDP-Relays und weitergeleiteten Client-Adressen findest du unter UDP-Weiterleitung und PROXY-Protokoll.
Wie du einen Minecraft-Proxy einrichtest, beschreibt Velocity und BungeeCord.