From d132c78111a401e6ca2314e71312daf28920fdda Mon Sep 17 00:00:00 2001 From: Tnze Date: Fri, 12 Mar 2021 22:39:39 +0800 Subject: [PATCH] Map image generator --- bot/mcbot.go | 12 ++- examples/genmaps/colors.gob | Bin 0 -> 9213 bytes examples/genmaps/genmaps.go | 130 +++++++++++++++++++++++++++++++++ examples/genmaps/util_funcs.go | 53 ++++++++++++++ save/save.go | 1 - 5 files changed, 191 insertions(+), 5 deletions(-) create mode 100644 examples/genmaps/colors.gob create mode 100644 examples/genmaps/genmaps.go create mode 100644 examples/genmaps/util_funcs.go delete mode 100644 save/save.go diff --git a/bot/mcbot.go b/bot/mcbot.go index 654cc54..cf8e09c 100644 --- a/bot/mcbot.go +++ b/bot/mcbot.go @@ -6,6 +6,7 @@ package bot import ( "context" + "errors" "net" "strconv" @@ -34,11 +35,14 @@ func (c *Client) JoinServerWithDialer(d *net.Dialer, addr string) (err error) { func parseAddress(r *net.Resolver, addr string) (string, error) { const missingPort = "missing port in address" var port uint16 + var addrErr *net.AddrError host, portStr, err := net.SplitHostPort(addr) - if addrErr, ok := err.(*net.AddrError); ok && addrErr.Err == missingPort { - host, port = addr, DefaultPort - } else if err != nil { - return "", err + if err != nil { + if errors.As(err, &addrErr) { + host, port = addr, DefaultPort + } else { + return "", err + } } else { if portInt, err := strconv.ParseUint(portStr, 10, 16); err != nil { port = DefaultPort diff --git a/examples/genmaps/colors.gob b/examples/genmaps/colors.gob new file mode 100644 index 0000000000000000000000000000000000000000..1ea2afdbdee0170f01d5b45d67dc55260129ce89 GIT binary patch literal 9213 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 0; i-- { + b := block.ByID[block.StateID[uint32(bs.Get(y*16*16+i))]] + c := colors[b.ID] + layerImg.Set(i/16, i%16, c) + } + draw.Draw( + img, image.Rect(0, 0, 16, 16), + layerImg, image.Pt(0, 0), + draw.Over, + ) + } + } + return +} diff --git a/examples/genmaps/util_funcs.go b/examples/genmaps/util_funcs.go new file mode 100644 index 0000000..a2299c1 --- /dev/null +++ b/examples/genmaps/util_funcs.go @@ -0,0 +1,53 @@ +package main + +import ( + "bytes" + _ "embed" + "encoding/gob" + "fmt" + "image" + "image/png" + "log" + "os" +) + +func savePng(img image.Image, name string) { + f, err := os.Create(name) + if err != nil { + log.Fatal(err) + } + + if err := png.Encode(f, img); err != nil { + f.Close() + log.Fatal(err) + } + + if err := f.Close(); err != nil { + log.Fatal(err) + } +} + +//go:embed colors.gob +var colorsBin []byte // gob([]color.RGBA64) + +func init() { + if err := gob.NewDecoder(bytes.NewReader(colorsBin)).Decode(&colors); err != nil { + panic(err) + } +} + +func usage() { + _, _ = fmt.Fprintf(os.Stderr, "usage: %s [-region ] \n", os.Args[0]) + os.Exit(1) +} + +func mkmax(c, n *int) { + if *c < *n { + *c = *n + } +} +func mkmin(c, n *int) { + if *c > *n { + *c = *n + } +} diff --git a/save/save.go b/save/save.go deleted file mode 100644 index 16890c0..0000000 --- a/save/save.go +++ /dev/null @@ -1 +0,0 @@ -package save