Skip to content

MineCraftServerWatchLib; This package can ping a large variety of different Minecraft-Server versions and get status informations with several possible patterns.

License

hexxone/mcswlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mcswlib

This package can ping a large variety of different Minecraft-Server versions and get status informations using different patterns.

Installation:

Available on nuget: https://www.nuget.org/packages/mcswlib/

Examples:

Simple Single-use:

using(var factory = new ServerStatusFactory())
{
	var inst = factory.Make("mc.server.me", 25565);
	var res = inst.Updater.Ping();
	Console.WriteLine("Result: " + res);
}

Notice: The Factory can re-use a given ServerStatusUpdater for the same server to avoid multiple pings with different deriving classes

// create two instances with the same base
var a = factory.Make("mc.server.me", 25565, false, "One");
var b = factory.Make("mc.server.me", 25565, false, "Two");
Console.WriteLine(a.Updater.Equals(b.Updater)); // prints: true

var c = factory.Make("mc.server.me", 25565, true, "Three");
Console.WriteLine(a.Updater.Equals(c.Updater)); // prints: false

Multi-use:

var factory = new ServerStatusFactory();
factory.Make("mc.server.me", 25565, false, "One");
factory.Make("mc.server.com", 25565, false, "Two");

while(true) {
	factory.PingAll();
	foreach (var srv in factory.Entries) {
		var events = srv.Update();
		foreach (var evt in events)
			Console.WriteLine($"Server {srv.Label} Event:\r\n{evt}");
	}
	// ...Sleep some time or do something else...
}

Async / Event-based:

var factory = new ServerStatusFactory();

factory.Changed += (object sender, EventBase[] e) => {
	var srv = (ServerStatus)sender;
	Console.WriteLine("Got new Events for server: " + srv.Label);
	foreach (var evt in e)
		Console.WriteLine(evt);
};

factory.Make("mc.server.me", 25565, false, "One");

factory.StartAutoUpdate();

// continue doing something else

Credits:

I have done a lot of research on the minecraft-server protocol so most of the code is actually self-written. I have however taken some inspiration from this gist for example.

For detailed info on minecraft protocol versions go here: https://wiki.vg/Protocol_version_numbers

Libraries:

About

MineCraftServerWatchLib; This package can ping a large variety of different Minecraft-Server versions and get status informations with several possible patterns.

Topics

Resources

License

Stars

Watchers

Forks

Languages