Rename cmd -> examples

This commit is contained in:
Tnze
2021-02-27 15:00:25 +08:00
parent 8e7ac43bf5
commit a7bf3b683f
12 changed files with 28 additions and 17 deletions

17
examples/mcping/README.md Normal file
View File

@ -0,0 +1,17 @@
# mcping
Ping tool for Minecraft: Java Edition.
Just for example. Not recommended for daily use. Use [github.com/go-mc/mcping](github.com/go-mc/mcping) instead, which including SRV parse.
适用于Minecraft: Java Edition的ping工具。
只起示例作用,日常使用建议使用完整版[github.com/go-mc/mcping](github.com/go-mc/mcping)包含SRV解析等功能。
Install with go tools:
```go get -u github.com/Tnze/go-mc/cmd/mcping```
`$GOPATH/bin` should in your `$PATH`.
Install with Homebrew:
```brew tap Tnze/tap && brew install mcping```
Useage:
```mcping <hostname>[:port]```

72
examples/mcping/mcping.go Normal file
View File

@ -0,0 +1,72 @@
// Usage: go run examples/ping/ping.go localhost
package main
import (
"encoding/json"
"fmt"
"os"
"strings"
"github.com/Tnze/go-mc/bot"
"github.com/Tnze/go-mc/chat"
"github.com/google/uuid"
)
type status struct {
Description chat.Message
Players struct {
Max int
Online int
Sample []struct {
ID uuid.UUID
Name string
}
}
Version struct {
Name string
Protocol int
}
//favicon ignored
}
func main() {
addr := getAddr()
fmt.Printf("MCPING (%s):\n", addr)
resp, delay, err := bot.PingAndList(addr)
if err != nil {
fmt.Printf("ping and list server fail: %v", err)
os.Exit(1)
}
var s status
err = json.Unmarshal(resp, &s)
if err != nil {
fmt.Print("unmarshal resp fail:", err)
os.Exit(1)
}
fmt.Print(s)
fmt.Println("Delay:", delay)
}
func getAddr() string {
const usage = "Usage: mcping <hostname>[:port]"
if len(os.Args) < 2 {
fmt.Println("no host name.", usage)
os.Exit(1)
}
return os.Args[1]
}
func (s status) String() string {
var sb strings.Builder
fmt.Fprintln(&sb, "Server:", s.Version.Name)
fmt.Fprintln(&sb, "Protocol:", s.Version.Protocol)
fmt.Fprintln(&sb, "Description:", s.Description)
fmt.Fprintf(&sb, "Players: %d/%d\n", s.Players.Online, s.Players.Max)
for _, v := range s.Players.Sample {
fmt.Fprintf(&sb, "- [%s] %v\n", v.Name, v.ID)
}
return sb.String()
}