First commit for mc server player locator
This commit is contained in:
parent
36f2ba09f8
commit
89f50251a1
|
@ -0,0 +1,8 @@
|
||||||
|
module codehub.onpointcoding.net/sean/go-mcserverplayerlocator
|
||||||
|
|
||||||
|
go 1.15
|
||||||
|
|
||||||
|
require (
|
||||||
|
codehub.onpointcoding.net/sean/go-mclookup v0.0.0-20201122232238-6a804b5efe4c
|
||||||
|
github.com/Tnze/go-mc v1.16.1
|
||||||
|
)
|
|
@ -0,0 +1,7 @@
|
||||||
|
codehub.onpointcoding.net/sean/go-mclookup v0.0.0-20201122214338-c6eacd5035dd h1:+rANY6/6B0JUvjv1L/2F83OcPPD4pKEOpNZcYptJf5s=
|
||||||
|
codehub.onpointcoding.net/sean/go-mclookup v0.0.0-20201122214338-c6eacd5035dd/go.mod h1:BFdow03DiFDFpVqVDdFzzJTkPtTDMUSJcq0AiO59TPI=
|
||||||
|
codehub.onpointcoding.net/sean/go-mclookup v0.0.0-20201122232238-6a804b5efe4c h1:FJJ4+UnY2vvKd2Rr3KBZqEfsBpEBJ5ugtR7i7EEhg98=
|
||||||
|
codehub.onpointcoding.net/sean/go-mclookup v0.0.0-20201122232238-6a804b5efe4c/go.mod h1:BFdow03DiFDFpVqVDdFzzJTkPtTDMUSJcq0AiO59TPI=
|
||||||
|
github.com/Tnze/go-mc v1.16.1 h1:KX2h8pLjqz6bJVVJpMa0TE6lkcPmAyzhlfhFp8AwyEs=
|
||||||
|
github.com/Tnze/go-mc v1.16.1/go.mod h1:LKj1KKSj4m58fpJaTmOHC3DdQKJ1RSfEGHFR1zMLSF8=
|
||||||
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
@ -0,0 +1,88 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"compress/gzip"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
mclookup "codehub.onpointcoding.net/sean/go-mclookup"
|
||||||
|
"github.com/Tnze/go-mc/nbt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Printf("MC Server Player Locator -- by MrMelon\n")
|
||||||
|
if pddir, err := os.Stat("playerdata/"); !os.IsNotExist(err) {
|
||||||
|
if pddir.IsDir() {
|
||||||
|
files, err := filepath.Glob("playerdata/*dat")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error getting playerdata NBT files\n")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, file := range files {
|
||||||
|
base := filepath.Base(file)
|
||||||
|
fmt.Printf("Parsing %s...\r", base)
|
||||||
|
|
||||||
|
uuid := strings.Replace(base, ".dat", "", -1)
|
||||||
|
|
||||||
|
apiResult, err := mclookup.LookupPlayer(uuid)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
filedata, err := ioutil.ReadFile(file)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
zr, err := gzip.NewReader(bytes.NewBuffer(filedata))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var content bytes.Buffer
|
||||||
|
|
||||||
|
if _, err := io.Copy(&content, zr); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := zr.Close(); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
player := playerCompound{}
|
||||||
|
err = nbt.Unmarshal(content.Bytes(), &player)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(player.Pos) == 3 {
|
||||||
|
fmt.Printf("%s (%s): %v, %v, %v\n", apiResult.Data.Player.Username, uuid, player.Pos[0], player.Pos[1], player.Pos[2])
|
||||||
|
}
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Printf("playerdata isn't a folder\n")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Printf("playerdata folder doesn't exist\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type playerCompound struct {
|
||||||
|
Pos []float64 `nbt:"Pos"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func fileExists(filename string) bool {
|
||||||
|
info, err := os.Stat(filename)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return !info.IsDir()
|
||||||
|
}
|
Reference in New Issue