LibreMetaverse.Protocol
3.2.0
Prefix Reserved
dotnet add package LibreMetaverse.Protocol --version 3.2.0
NuGet\Install-Package LibreMetaverse.Protocol -Version 3.2.0
<PackageReference Include="LibreMetaverse.Protocol" Version="3.2.0" />
<PackageVersion Include="LibreMetaverse.Protocol" Version="3.2.0" />
<PackageReference Include="LibreMetaverse.Protocol" />
paket add LibreMetaverse.Protocol --version 3.2.0
#r "nuget: LibreMetaverse.Protocol, 3.2.0"
#:package LibreMetaverse.Protocol@3.2.0
#addin nuget:?package=LibreMetaverse.Protocol&version=3.2.0
#tool nuget:?package=LibreMetaverse.Protocol&version=3.2.0
▗▖ ▄ ▗▖ ▄▄▄ ▗▞▀▚▖▗▖ ▗▖▗▞▀▚▖ ■ ▗▞▀▜▌▄ ▄ ▗▞▀▚▖ ▄▄▄ ▄▄▄ ▗▞▀▚▖
▐▌ ▄ ▐▌ █ ▐▛▀▀▘▐▛▚▞▜▌▐▛▀▀▘▗▄▟▙▄▖▝▚▄▟▌█ █ ▐▛▀▀▘█ ▀▄▄ ▐▛▀▀▘
▐▌ █ ▐▛▀▚▖█ ▝▚▄▄▖▐▌ ▐▌▝▚▄▄▖ ▐▌ ▀▄▀ ▝▚▄▄▖█ ▄▄▄▀ ▝▚▄▄▖
▐▙▄▄▖█ ▐▙▄▞▘ ▐▌ ▐▌ ▐▌
▐▌
LibreMetaverse.Protocol
The Second Life wire protocol with no client attached. Every UDP message the grid sends or accepts, as a class you can build, serialize and parse; the capability messages that travel over HTTP; the login request and response; and the records and enums that those messages carry. If it is a shape on the wire, it is defined here.
Archiving · Utilities · Voice.Vivox · Voice.WebRTC
│ built on the client
LibreMetaverse the client: login, managers, inventory
│
Transport UDP socket, reliable circuit, throttle
│
[Protocol] packets and capability messages
│
Assets the offline data model
├── ModelFormats · Rendering.MeshFoundry · Rendering.Simple
│
StructuredData · Imaging.Abstractions
│
Types UUID, vectors, quaternions, colors
on their own: PrimMesher · Imaging.Skia · RLV · LslTools
A name in brackets is this package. Packages use the ones beneath them; the Depends on section below is exact.
What is in it
- UDP packets: a class for every message in the viewer's message template (
ChatFromViewerPacket,AgentUpdatePacket,ObjectUpdatePacket,StartPingCheckPacketand the rest), generated from the template at build time. Each one serializes withToBytes(), andPacket.BuildPacketparses bytes back into the right class, handling zero-coding. PacketDecoder: turns a packet into text. With Trace-level logging enabled it writes the header and every block and field, with decoders for the fields that are better shown as names than as numbers; otherwise it writes a one-line summary (type and sequence number). Useful in proxies, loggers and test tools.- Capability messages (
LibreMetaverse.Messages.Linden): the event-queue and capability bodies as typed classes withSerializeandDeserialize. - Login (
LoginRequest,LoginResponseData,AccountLevelBenefits): both directions, so a client can read a login reply and a login server can write one in the form viewers expect. - Records and enums:
Group,GroupMember,GroupRole,ParcelandParcelInfo,FriendInfo,InstantMessage,MuteEntry,GridRegion,TransactionInfo, the parcel flags,ScriptPermission,TeleportLureFlagsand the many other values the messages use.
Example
using LibreMetaverse;
using LibreMetaverse.Packets;
var ping = new StartPingCheckPacket { PingID = { PingID = 7, OldestUnacked = 0 } };
byte[] wire = ping.ToBytes();
int end = wire.Length - 1;
Packet parsed = Packet.BuildPacket(wire, ref end, new byte[4096]);
Console.WriteLine(PacketDecoder.PacketToString(parsed)); // the whole packet at Trace level, a summary line otherwise
Use it when
You are writing something that speaks the protocol but is not a client: a packet capture or proxy, a protocol test harness, a bot that wants only a few messages, or, in time, a simulator. The sockets and the reliability machinery that carry the packets are in LibreMetaverse.Transport; the client with its managers is LibreMetaverse.
Depends on
LibreMetaverse.Assets, LibreMetaverse.StructuredData and LibreMetaverse.Types. It targets .NET Standard 2.1, .NET Framework 4.8.1, and .NET 8, 9 and 10.
Install
dotnet add package LibreMetaverse.Protocol
More
- Source, issues and discussion: https://github.com/cinderblocks/libremetaverse
- Moving from 3.1: the migration guide
- License: BSD-3-Clause
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net481 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8.1
- LibreMetaverse.Assets (>= 3.2.0)
- LibreMetaverse.StructuredData (>= 3.2.0)
- LibreMetaverse.Types (>= 3.2.0)
-
.NETStandard 2.1
- LibreMetaverse.Assets (>= 3.2.0)
- LibreMetaverse.StructuredData (>= 3.2.0)
- LibreMetaverse.Types (>= 3.2.0)
-
net10.0
- LibreMetaverse.Assets (>= 3.2.0)
- LibreMetaverse.StructuredData (>= 3.2.0)
- LibreMetaverse.Types (>= 3.2.0)
-
net8.0
- LibreMetaverse.Assets (>= 3.2.0)
- LibreMetaverse.StructuredData (>= 3.2.0)
- LibreMetaverse.Types (>= 3.2.0)
-
net9.0
- LibreMetaverse.Assets (>= 3.2.0)
- LibreMetaverse.StructuredData (>= 3.2.0)
- LibreMetaverse.Types (>= 3.2.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on LibreMetaverse.Protocol:
| Package | Downloads |
|---|---|
|
LibreMetaverse
LibreMetaverse is a .NET client library for connecting to and interacting with Second Life, OpenSimulator, and compatible virtual world servers. Provides networking, inventory, avatar, asset, and world management APIs. |
|
|
LibreMetaverse.Transport
The UDP transport of LibreMetaverse, without the client: the socket loop, the datagram buffer, the traffic throttle and the record of received packet numbers. Pulled in by the LibreMetaverse package. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.2.0 | 45 | 10/13/2026 |