minecraftping

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2019 License: MIT Imports: 9 Imported by: 0

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.

Documentation

Overview

Package minecraftping is a simple library to ping Minecraft Java Edition servers.

Index

Constants

View Source
const DefaultPort = 25565

DefaultPort is the default Minecraft Java Edition network port.

Variables

This section is empty.

Functions

This section is empty.

Types

type Response

type Response struct {
	Version struct {
		Name     string `json:"name"`
		Protocol int    `json:"protocol"`
	} `json:"version"`
	Players struct {
		Max    int `json:"max"`
		Online int `json:"online"`
		Sample []struct {
			Name string `json:"name"`
			Id   string `json:"id"`
		} `json:"sample"`
	} `json:"players"`
	Description json.RawMessage `json:"description"`
	Favicon     string          `json:"favicon"`
}

Response is a representation of the Minecraft Java Edition server's ping response. More information: https://wiki.vg/Server_List_Ping#Response

func Ping

func Ping(address string, port uint16, protocolVersion int, timeout time.Duration) (Response, error)

Ping connects and pings the Minecraft Java Edition server at the specified address and port. protocolVersion dictates which protocol version to attempt the ping with as the response is protocol version dependent. More information: https://wiki.vg/Server_List_Ping

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL