update deps, poll realms on startup

This commit is contained in:
olebeck 2022-08-22 12:56:02 +02:00
parent fcb862b4c3
commit 9ef5a7b803
6 changed files with 42 additions and 29 deletions

View File

@ -37,6 +37,7 @@ jobs:
id: get-latest-tag
- uses: "marvinpinto/action-automatic-releases@latest"
if: startsWith(github.ref, 'refs/tags/v')
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: ${{ steps.get-latest-tag.outputs.tag }}
@ -46,6 +47,7 @@ jobs:
dist/*
- uses: "marvinpinto/action-automatic-releases@latest"
if: "!(startsWith(github.ref, 'refs/tags/v'))"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: latest

2
go.mod
View File

@ -18,7 +18,7 @@ require (
//replace github.com/df-mc/dragonfly => ./dragonfly
replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.24.6
replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.24.7
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.8.2-5

2
go.sum
View File

@ -41,6 +41,8 @@ github.com/olebeck/dragonfly v0.8.2-5 h1:0G9dhTQ1Oae1KnmgRjNeqYPQ/PsLFGwMWtQYAJk
github.com/olebeck/dragonfly v0.8.2-5/go.mod h1:xgpCDhHoP03RygPaTrzzDwsSTcEZhxNPMV3CAxETj+I=
github.com/olebeck/gophertunnel v1.24.6 h1:Mnpzk9e+eMdfx/wbEsmwQabEbalNzFRu+3iMEBzaVSg=
github.com/olebeck/gophertunnel v1.24.6/go.mod h1:dMOw79FHxr2azEqiGH20AwdljisAN1kqwu5SjPBnZ5k=
github.com/olebeck/gophertunnel v1.24.7 h1:EMYLDMxGxzPtoI/Y77KHPcfelkGS+QcjdtStGIqtYFE=
github.com/olebeck/gophertunnel v1.24.7/go.mod h1:dMOw79FHxr2azEqiGH20AwdljisAN1kqwu5SjPBnZ5k=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

View File

@ -1,7 +1,9 @@
package main
func (w *WorldState) getPacks() (packs map[string]*resource.Pack, err error) {
for _, pack := range w.ServerConn.ResourcePacks() {
packs[pack.Name()] = pack
}
packs = make(map[string]*resource.Pack)
for _, pack := range w.ServerConn.ResourcePacks() {
packs[pack.Name()] = pack
}
return
}

View File

@ -9,6 +9,7 @@ import (
"net/http"
"os"
"strings"
"time"
"github.com/google/subcommands"
)
@ -46,27 +47,36 @@ func realms_get(path string) ([]byte, error) {
}
func (realm *Realm) Address() (string, error) {
if G_debug {
fmt.Printf("realm.Address()\n")
}
body, err := realms_get(fmt.Sprintf("worlds/%d/join", realm.Id))
if err != nil {
if strings.Contains(err.Error(), "503") {
return "", fmt.Errorf("realm is starting")
var body []byte
var err error
ticker := time.NewTicker(time.Second * 3)
defer ticker.Stop()
i := 0
for range ticker.C {
i++
body, err = realms_get(fmt.Sprintf("worlds/%d/join", realm.Id))
if err != nil {
if err.Error() == "HTTP 503" {
fmt.Printf("Waiting for the realm to start... %d\033[K\r", i)
continue
}
return "", err
}
return "", err
println()
var data struct {
Address string `json:"address"`
PendingUpdate bool `json:"pendingUpdate"`
}
if err := json.Unmarshal(body, &data); err != nil {
return "", err
}
return data.Address, nil
}
var data struct {
Address string `json:"address"`
PendingUpdate bool `json:"pendingUpdate"`
}
if err := json.Unmarshal(body, &data); err != nil {
return "", err
}
return data.Address, nil
panic("unreachable")
}
// get_realms lists all realms the user has access to
func get_realms() ([]Realm, error) {
data, err := realms_get("worlds")
if err != nil {
@ -83,8 +93,7 @@ func get_realms() ([]Realm, error) {
return realms.Servers, nil
}
func get_realm(realm_name, id string) (string, string, error) {
// returns: name, address, err
func get_realm(realm_name, id string) (name string, address string, err error) {
realms, err := get_realms()
if err != nil {
return "", "", err
@ -94,11 +103,12 @@ func get_realm(realm_name, id string) (string, string, error) {
if id != "" && id != fmt.Sprint(id) {
continue
}
address, err := realm.Address()
name = realm.Name
address, err = realm.Address()
if err != nil {
return "", "", err
}
return realm.Name, address, nil
return
}
}
return "", "", fmt.Errorf("realm not found")

View File

@ -150,9 +150,7 @@ func (w *WorldState) ProcessLevelChunk(pk *packet.LevelChunk) {
}
if blockNBTs != nil {
w.blockNBT[protocol.SubChunkPos{
pk.Position.X(),
0,
pk.Position.Z(),
pk.Position.X(), 0, pk.Position.Z(),
}] = blockNBTs
}
@ -210,7 +208,6 @@ func (w *WorldState) ProcessSubChunk(pk *packet.SubChunk) {
fmt.Print(err)
}
if blockNBT != nil {
fmt.Printf("%+v\n", blockNBT)
w.blockNBT[pos3] = blockNBT
}