TelnetNegotiationCore.Gmcp
4.5.3
dotnet add package TelnetNegotiationCore.Gmcp --version 4.5.3
NuGet\Install-Package TelnetNegotiationCore.Gmcp -Version 4.5.3
<PackageReference Include="TelnetNegotiationCore.Gmcp" Version="4.5.3" />
<PackageVersion Include="TelnetNegotiationCore.Gmcp" Version="4.5.3" />
<PackageReference Include="TelnetNegotiationCore.Gmcp" />
paket add TelnetNegotiationCore.Gmcp --version 4.5.3
#r "nuget: TelnetNegotiationCore.Gmcp, 4.5.3"
#:package TelnetNegotiationCore.Gmcp@4.5.3
#addin nuget:?package=TelnetNegotiationCore.Gmcp&version=4.5.3
#tool nuget:?package=TelnetNegotiationCore.Gmcp&version=4.5.3
TelnetNegotiationCore.Gmcp
The standard GMCP packages for MUD clients and servers: the Core package (Core.Hello,
Core.Supports.Set/Add/Remove, Core.Ping, Core.KeepAlive, Core.Goodbye), and typed messages
for Client.Media, Client.GUI, Client.Map, Char.Login (version 2, as Mudlet speaks it),
External.Discord, IRE.Composer, Char.Vitals, Char.Items, Char.Skills, Char.Afflictions,
Char.Defences, Room.Info, Comm.Channel.Text, and the MUD Standards mudstd.* proposals.
It does not depend on TelnetNegotiationCore. A session takes a GmcpSend delegate to send with and
is handed each received message, so it works over any GMCP transport. TelnetNegotiationCore wires
one up in a call:
var telnet = await builder
.AddPlugin<GMCPProtocol>().UseGmcpServerSession(out var gmcp)
.BuildAsync();
// Later, from the game:
if (gmcp.Supports("Char.Vitals"))
{
await gmcp.SendAsync("Char.Vitals", """{"hp":100,"maxhp":120}""");
}
GmcpServerSession records the client's name and version from Core.Hello, keeps the module list
from Core.Supports, answers Core.Ping, reports Core.KeepAlive, sends Core.Goodbye, and passes
every other message to OnMessageAsync. Supports("Char.Vitals") is true when the client listed
Char.Vitals or Char.
GmcpClientSession sends Core.Hello and the Core.Supports messages, times Core.Ping round
trips, and reports Core.Goodbye. With TelnetNegotiationCore, UseGmcpClientSession sends
Core.Hello from WithClientIdentity and Core.Supports.Set as soon as GMCP is agreed:
var telnet = await new TelnetInterpreterBuilder()
.UseMode(TelnetInterpreter.TelnetMode.Client)
.WithClientIdentity("MyClient", "1.0")
.AddPlugin<GMCPProtocol>()
.UseGmcpClientSession(out var gmcp, new("Char", 1), new("Room", 1))
.BuildAsync();
Over another transport, call HelloAsync and SetSupportsAsync yourself when GMCP is agreed.
Typed messages have ToJson() and TryParse, and either session sends one with SendAsync(message):
await gmcp.SendAsync(new CharVitals { Hp = 100, MaxHp = 120 });
Other Char.* packages have no agreed keys between servers. GmcpPackages names them, and the game
sends its own JSON.
MsdpNames holds the MSDP command, list and variable names from the MSDP specification
(MsdpNames.Command.Report, MsdpNames.Character.HealthMax, MsdpNames.Mapping.Room), and
MsdpNames.GmcpPackage, the MSDP package that carries MSDP over GMCP.
| 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 was computed. 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. net11.0 is compatible. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.IO.Pipelines (>= 10.0.13)
- System.Text.Json (>= 10.0.13)
-
net10.0
- No dependencies.
-
net11.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TelnetNegotiationCore.Gmcp:
| Package | Downloads |
|---|---|
|
TelnetNegotiationCore
A Client and Server compatible library to create telnet applications, with a mind to MUDs. |
GitHub repositories
This package is not used by any popular GitHub repositories.