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" />
                    
Directory.Packages.props
<PackageReference Include="HakuuLib.MultiplayerLAN" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=HakuuLib.MultiplayerLAN&version=0.1.5
                    
Install as a Cake Tool

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 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 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.

Version Downloads Last Updated
0.1.5 159 2/8/2026
0.1.3 101 1/31/2026