JRakNet adalah perpustakaan jaringan untuk Java yang mengimplementasikan protokol RakNet berbasis UDP. Pustaka ini dimaksudkan untuk digunakan untuk server dan klien Minecraft, namun masih dapat digunakan untuk membuat server game dan klien untuk video game lainnya dengan mudah. Anda juga dapat membaca JavaDocs
Info Protokol | Versi |
---|---|
Protokol saat ini | 10 |
Protokol server yang didukung | 10 |
Protokol klien yang didukung | 10 |
Jika Anda menggunakan versi rilis, gunakan ketergantungan ini:
< dependency >
< groupId >com.whirvis</ groupId >
< artifactId >jraknet</ artifactId >
< version >2.12.3</ version >
</ dependency >
Jika Anda ingin menggunakan versi snapshot, gunakan repositori dan ketergantungan ini:
< repository >
< id >codemc-repo</ id >
< url >https://repo.codemc.org/repository/maven-public/</ url >
</ repository >
< dependency >
< groupId >com.whirvis</ groupId >
< artifactId >jraknet</ artifactId >
< version >2.12.4-SNAPSHOT</ version >
</ dependency >
Membuat server di JRakNet sangatlah mudah, semua yang diperlukan untuk membuatnya dapat dilihat di sini:
// Add loopback exemption for Minecraft
if (! UniversalWindowsProgram . MINECRAFT . setLoopbackExempt ( true )) {
System . err . println ( "Failed to add loopback exemption for Minecraft" );
}
// Create server
RakNetServer server = new RakNetServer ( 19132 , 10 );
server . setIdentifier ( new MinecraftIdentifier ( "JRakNet Example Server" , 354 , "1.11" , 0 , 10 ,
server . getGloballyUniqueId (), "New World" , "Survival" ));
// Add listener
server . addListener ( new RakNetServerListener () {
// Client connected
@ Override
public void onConnect ( RakNetServer server , InetSocketAddress address , ConnectionType connectionType ) {
System . out . println ( "Client from address " + address + " has connected to the server" );
}
// Client logged in
@ Override
public void onLogin ( RakNetServer server , RakNetClientPeer peer ) {
System . out . println ( "Client from address " + peer . getAddress () + " has logged in" );
}
// Client disconnected
@ Override
public void onDisconnect ( RakNetServer server , InetSocketAddress address , RakNetClientPeer peer , String reason ) {
System . out . println ( "Client from address " + address
+ " has disconnected from the server for reason " " + reason + " " " );
}
// Packet received
@ Override
public void handleMessage ( RakNetServer server , RakNetClientPeer peer , RakNetPacket packet , int channel ) {
System . out . println ( "Client from address " + peer . getAddress () + " sent packet with ID "
+ RakNet . toHexStringId ( packet ) + " on channel " + channel );
}
});
// Start server
server . start ();
Ini adalah server RakNet sederhana yang dapat diuji melalui Minecraft dengan membuka tab "Teman" di mana server akan muncul. Setelah server muncul, Anda seharusnya dapat mengkliknya untuk memicu koneksi dan pengait paket.
Di Windows 10, aplikasi yang menggunakan kerangka Program Windows Universal secara default tidak dapat menyambung ke server yang berjalan di mesin yang sama dengan aplikasi tersebut. Fitur menjengkelkan ini dapat dinonaktifkan hanya dengan membuat objek UniversalWindowsProgram
dengan parameter pertama dan satu-satunya adalah ID aplikasi yang ingin Anda sambungkan. Contohnya adalah Microsoft's Edge yaitu Microsoft.MicrosoftEdge_8wekyb3d8bbwe
. Jadi, untuk mengaktifkan pengecualian loopback, yang diperlukan hanyalah ini:
UniversalWindowsProgram microsoftEdge = new UniversalWindowsProgram ( "Microsoft.MicrosoftEdge_8wekyb3d8bbwe" );
if (! microsoftEdge . setLoopbackExempt ( true )) {
System . err . println ( "Failed to enable loopback exemption for Microsoft Edge" );
}
Sederhana, bukan? Jangan ragu untuk menerapkan ini jika Anda menjalankan pada mesin non-Windows 10. Implementasi ini dibuat khusus agar berfungsi meskipun mesin Anda tidak menjalankan Windows 10 atau tidak menginstal Windows PowerShell. Tentu saja, jika Anda tidak menggunakan mesin Windows 10 dengan Windows PowerShell terinstal, tidak ada cara untuk memeriksa dengan benar apakah aplikasi Anda dikecualikan dari loopback. Namun, saya yakin ini dapat diselesaikan dengan bantuan pengguna Windows 10 dengan Windows PowerShell jika diperlukan.
Membuat klien di JRakNet juga sangat mudah. Kode yang diperlukan untuk membuat klien dapat dilihat di sini:
// Create client
RakNetClient client = new RakNetClient ();
// Add listener
client . addListener ( new RakNetClientListener () {
// Connected to server
@ Override
public void onConnect ( RakNetClient client , InetSocketAddress address , ConnectionType connectionType ) {
System . out . println ( "Successfully connected to server with address " + address );
}
// Logged into server
@ Override
public void onLogin ( RakNetClient client , RakNetServerPeer peer ) {
System . out . println ( "Successfully logged into server" );
client . disconnect ();
}
// Disconnected from server
@ Override
public void onDisconnect ( RakNetClient client , InetSocketAddress address , RakNetServerPeer peer , String reason ) {
System . out . println ( "Successfully disconnected from server with address " + address + " for reason " " + reason + " " " );
}
});
// Connect to server
client . connect ( "sg.lbsg.net" , 19132 );
Ini adalah klien RakNet sederhana yang mencoba menyambung ke server LBSG utama. Ketika terhubung, itu menutup koneksi.