func PingAndList(addr string, port int) (string, error) {
	conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", addr, port))  
	if err != nil {
		return "", fmt.Errorf("cannot connect the server %q: %v", addr, err)
	}
	hsPacket := newHandshakePacket(404, addr, port, 1)
	_, err = conn.Write(hsPacket.Pack(-1))
	if err != nil {
		return "", fmt.Errorf("send handshake packect fail: %v", err)
	}
	reqPacket := pk.Packet{
		ID:   0,
		Data: []byte{},
	}
	_, err = conn.Write(reqPacket.Pack(-1))
	if err != nil {
		return "", fmt.Errorf("send list packect fail: %v", err)
	}
	recv, err := pk.RecvPacket(bufio.NewReader(conn), false)
	if err != nil {
		return "", fmt.Errorf("recv list packect fail: %v", err)
	}
	s, _ := pk.UnpackString(bytes.NewReader(recv.Data))
	return string(s), nil
}
PingAndList chack server status and list online player
package gomcbot
import (
	"bufio"
	"bytes"
	"crypto/cipher"
	"fmt"
	pk "github.com/Tnze/gomcbot/packet"
	"io"
	"net"
)
type Game struct {
	addr string
	port int
	conn net.Conn
	reciver *bufio.Reader
	sender  io.Writer
	threshold int
	Info      PlayerInfo
	abilities PlayerAbilities
	settings  Settings
	player    Player
	wd        world  
	sendChan chan pk.Packet   
	recvChan chan *pk.Packet  
	events   chan Event
	motion   chan func()  
}