diff --git a/examples/frameworkServer/main.go b/examples/frameworkServer/main.go index eb16be9..38e6403 100644 --- a/examples/frameworkServer/main.go +++ b/examples/frameworkServer/main.go @@ -14,7 +14,7 @@ import ( "os" ) -const MaxPlayer = 1024 +const MaxPlayer = 16384 const IconPath = "./server-icon.png" var motd = chat.Message{Text: "A Minecraft Server ", Extra: []chat.Message{{Text: "Powered by go-mc", Color: "yellow"}}} diff --git a/examples/pressureTest/main.go b/examples/pressureTest/main.go index 806ffd5..9d40a4d 100644 --- a/examples/pressureTest/main.go +++ b/examples/pressureTest/main.go @@ -28,6 +28,7 @@ func main() { time.Sleep(time.Second * 3) } }(i) + time.Sleep(time.Millisecond) } select {} } @@ -46,7 +47,6 @@ func newIndividual(id int, name string) (i *individual) { i.player = basic.NewPlayer(i.client, basic.DefaultSettings) basic.EventsListener{ GameStart: i.onGameStart, - Death: i.onDeath, Disconnect: onDisconnect, }.Attach(i.client) return @@ -68,19 +68,6 @@ func (i *individual) run(address string) { log.Printf("[%d] Handle game error: %v", i.id, err) } -func (i *individual) onDeath() error { - log.Printf("[%d]Died and Respawned", i.id) - // If we exclude Respawn(...) then the player won't press the "Respawn" button upon death - go func() { - time.Sleep(time.Second * 5) - err := i.player.Respawn() - if err != nil { - log.Print(err) - } - }() - return nil -} - func (i *individual) onGameStart() error { log.Printf("[%d]Game start", i.id) return nil diff --git a/server/gameplay.go b/server/gameplay.go index 44c4c2c..60a5e8b 100644 --- a/server/gameplay.go +++ b/server/gameplay.go @@ -131,6 +131,9 @@ func (g *Game) AcceptPlayer(name string, id uuid.UUID, protocol int32, conn *net if err := ph.F(p, Packet757(packet)); err != nil { return } + if err := p.GetErr(); err != nil { + return + } } } } diff --git a/server/keepalive.go b/server/keepalive.go index 9473c3c..cca4bdd 100644 --- a/server/keepalive.go +++ b/server/keepalive.go @@ -156,9 +156,9 @@ func (k *KeepAlive) tickPlayer(p *Player) { func (k *KeepAlive) kickPlayer() { if elem := k.waitList.Front(); elem != nil { - //player := elem.Value.(keepAliveItem).player + player := k.waitList.Remove(elem).(keepAliveItem).player k.waitList.Remove(elem) - //k.onPlayerExpire(player) + player.PutErr(errors.New("keepalive: client did not response")) } keepAliveSetTimer(k.waitList, k.waitTimer, keepAliveWaitInterval) }