HakuuLib.MultiplayerLAN
0.1.5
dotnet add package HakuuLib.MultiplayerLAN --version 0.1.5
NuGet\Install-Package HakuuLib.MultiplayerLAN -Version 0.1.5
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HakuuLib.MultiplayerLAN" Version="0.1.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="HakuuLib.MultiplayerLAN" Version="0.1.5" />
<PackageReference Include="HakuuLib.MultiplayerLAN" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add HakuuLib.MultiplayerLAN --version 0.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: HakuuLib.MultiplayerLAN, 0.1.5"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package HakuuLib.MultiplayerLAN@0.1.5
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=HakuuLib.MultiplayerLAN&version=0.1.5
#tool nuget:?package=HakuuLib.MultiplayerLAN&version=0.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
HakuuLib.MultiplayerLAN
A .NET library for LAN discovery and forwarding in multiplayer games.
Supported Games
| Game | Protocol | Discovery Port | Transport |
|---|---|---|---|
| Minecraft Java Edition | Custom Multicast | UDP 4445 | TCP 25565 |
| Minecraft Bedrock Edition | RakNet | UDP 19132/19133 | UDP |
| Left 4 Dead 2 | Source Engine Query (A2S) | UDP 27015 | UDP |
| Civilization VI | UDP Broadcast | UDP 62900-62999 | UDP 62056 |
Features
- 🔍 LAN Discovery - Listen for game server announcements on local network
- 📡 Broadcasting - Advertise game servers to the local network
- 🔀 Forwarding - Forward LAN game traffic across network boundaries
- ⚡ Async/Await - Fully asynchronous API with cancellation support
- 🎯 AOT Compatible - Ready for Native AOT compilation
- 🎮 Multi-Game - Support for Minecraft, L4D2, Civilization VI, and Source Engine games
Installation
dotnet add package HakuuLib.MultiplayerLAN
Quick Start
Using the Factory (Recommended)
using HakuuLib.MultiplayerLAN;
// Minecraft Java
var javaListener = MultiplayerLanFactory.CreateMinecraftJavaDiscoveryListener();
// Minecraft Bedrock
var bedrockListener = MultiplayerLanFactory.CreateMinecraftBedrockDiscoveryListener();
// Left 4 Dead 2
var l4d2Listener = MultiplayerLanFactory.CreateL4D2DiscoveryListener();
// Civilization VI - Discover LAN lobbies
await foreach (var lobby in MultiplayerLanFactory.DiscoverCiv6LobbiesAsync())
{
Console.WriteLine($"Found Civ6: {lobby.DisplayName}");
}
Minecraft Java Edition
using HakuuLib.MultiplayerLAN.Minecraft.Java.Discovery;
using HakuuLib.MultiplayerLAN.Minecraft.Java.Forwarding;
// Listen for LAN games
var listener = new JavaLanDiscoveryListener();
await listener.StartAsync();
await foreach (var announcement in listener.ListenAsync())
{
Console.WriteLine($"Found: {announcement.Motd} at port {announcement.Port}");
}
// Forward a remote server to LAN
var forwarder = new JavaLanForwarder(new JavaLanForwarderOptions
{
RemoteHost = "mc.example.com",
RemotePort = 25565,
Motd = "My LAN Server"
});
await forwarder.StartAsync();
Minecraft Bedrock Edition
using HakuuLib.MultiplayerLAN.Minecraft.Bedrock.Discovery;
using HakuuLib.MultiplayerLAN.Minecraft.Bedrock.Forwarding;
var listener = new BedrockLanDiscoveryListener();
await listener.StartAsync();
await foreach (var server in listener.ListenAsync())
{
Console.WriteLine($"Found: {server.MotdLine1} v{server.VersionName} [{server.PlayerCount}/{server.MaxPlayerCount}]");
}
// Forward a remote Bedrock server to LAN
var forwarder = new BedrockLanForwarder(new BedrockLanForwarderOptions
{
RemoteHost = "bedrock.example.com",
RemotePort = 19132,
MotdLine1 = "My LAN Server"
});
await forwarder.StartAsync();
Left 4 Dead 2 / Source Engine Games
using HakuuLib.MultiplayerLAN.SourceEngine.Discovery;
using HakuuLib.MultiplayerLAN.SourceEngine.LeftForDead2;
// Query a specific server
var info = await SourceServerQuery.QueryInfoAsync("192.168.1.100", 27015);
if (info != null)
{
Console.WriteLine($"Server: {info.Name} - Map: {info.Map} - Players: {info.Players}/{info.MaxPlayers}");
}
// Listen for L4D2 LAN servers
var listener = new L4D2LanDiscoveryListener();
await listener.StartAsync();
await foreach (var server in listener.ListenAsync())
{
Console.WriteLine($"Found: {server.Name} - Map: {server.Map} - Mode: {server.GameMode}");
}
// Discover all L4D2 servers on LAN
await foreach (var server in L4D2ServerQuery.DiscoverLanServersAsync())
{
Console.WriteLine($"Discovered: {server.Name} at {server.Address}");
}
Civilization VI
using HakuuLib.MultiplayerLAN.Civilization6.Discovery;
using HakuuLib.MultiplayerLAN.Civilization6.Forwarding;
// Discover Civ6 LAN lobbies
await foreach (var lobby in Civ6LanDiscovery.DiscoverLobbiesAsync())
{
Console.WriteLine($"Found: {lobby.DisplayName}");
Console.WriteLine($" Host: {lobby.HostName}");
Console.WriteLine($" Map: {lobby.MapName} ({lobby.MapSize})");
Console.WriteLine($" Players: {lobby.CurrentPlayers}/{lobby.MaxPlayers}");
}
// Query a specific host
var lobbyInfo = await Civ6LanDiscovery.QueryHostAsync("192.168.1.100");
if (lobbyInfo != null)
{
Console.WriteLine($"Game: {lobbyInfo.GameName} - Turn: {lobbyInfo.GameTurn}");
}
// Using options to customize discovery
var options = new Civ6LanDiscoveryOptions
{
Timeout = 5000,
ScanAllPorts = true // Scan all 100 ports (62900-62999)
};
var lobbies = await Civ6LanDiscovery.DiscoverLobbiesListAsync(options);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.