Categorygithub.com/Cryptkeeper/go-minecraftping
repositorypackage
1.1.0
Repository: https://github.com/cryptkeeper/go-minecraftping.git
Documentation: pkg.go.dev

# README

go-minecraftping Go Report Card GoDoc

A wrapper for querying Minecraft Java Edition servers using the vanilla Server List Ping protocol.

Usage

Installation

Install using go get github.com/Cryptkeeper/go-minecraftping

Example Usage

package main

import (
	"fmt"
	"github.com/Cryptkeeper/go-minecraftping"
	"log"
	"time"
)

func main() {
	var protocolVersion = 575 // Minecraft Java Edition 1.15.1
	resp, err := minecraftping.Ping("myip", 25565, protocolVersion, time.Second * 5)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%d/%d players are online.", resp.Players.Online, resp.Players.Max)
}

(The default Minecraft port, 25565, is also available as a const, minecraftping.DefaultPort.)

protocolVersion is ever changing as Minecraft updates. See protocol version numbers for a complete and updated listing. If the server compatible with the sent protocol version, the server will reply with the same protocol version in the Response object, otherwise it will send its required protocol version (keep in mind, some servers may be compatible with multiple protocol versions.)

Response

The response structure is described in minecraftping.Response

Compatibility

  1. This does not support Minecraft's legacy ping protocol for pre-Minecraft version 1.6 servers.
  2. The description field of Response is provided as a json.RawMessage object. This is because the field's schema follows the Chat schema (a Minecraft specific schema) that I'm not willing to support at this functionality level.
  3. This does not support the Ping or Pong behavior of the Server List Ping protocol. If you wish to determine the latency of the connection do you should do so manually.