diff --git a/session/processor.go b/session/processor.go index 69391f7..5b9f259 100644 --- a/session/processor.go +++ b/session/processor.go @@ -42,7 +42,7 @@ type Processor interface { // ProcessPreTransfer is called before transferring the player to a different server. ProcessPreTransfer(ctx *Context, origin *string, target *string) // ProcessTransferFailure is called when the player transfer to a different server fails. - ProcessTransferFailure(ctx *Context, origin *string, target *string) + ProcessTransferFailure(ctx *Context, origin *string, target *string, err error) // ProcessPostTransfer is called after transferring the player to a different server. ProcessPostTransfer(ctx *Context, origin *string, target *string) // ProcessCache is called before updating the session's cache. @@ -57,14 +57,14 @@ type NopProcessor struct{} // Ensure that NopProcessor satisfies the Processor interface. var _ Processor = NopProcessor{} -func (NopProcessor) ProcessStartGame(_ *Context, _ *minecraft.GameData) {} -func (NopProcessor) ProcessServer(_ *Context, _ *packet.Packet) {} -func (NopProcessor) ProcessServerEncoded(_ *Context, _ *[]byte) {} -func (NopProcessor) ProcessClient(_ *Context, _ *packet.Packet) {} -func (NopProcessor) ProcessClientEncoded(_ *Context, _ *[]byte) {} -func (NopProcessor) ProcessFlush(_ *Context) {} -func (NopProcessor) ProcessPreTransfer(_ *Context, _ *string, _ *string) {} -func (NopProcessor) ProcessTransferFailure(_ *Context, _ *string, _ *string) {} -func (NopProcessor) ProcessPostTransfer(_ *Context, _ *string, _ *string) {} -func (NopProcessor) ProcessCache(_ *Context, _ *[]byte) {} -func (NopProcessor) ProcessDisconnection(_ *Context, _ *string) {} +func (NopProcessor) ProcessStartGame(_ *Context, _ *minecraft.GameData) {} +func (NopProcessor) ProcessServer(_ *Context, _ *packet.Packet) {} +func (NopProcessor) ProcessServerEncoded(_ *Context, _ *[]byte) {} +func (NopProcessor) ProcessClient(_ *Context, _ *packet.Packet) {} +func (NopProcessor) ProcessClientEncoded(_ *Context, _ *[]byte) {} +func (NopProcessor) ProcessFlush(_ *Context) {} +func (NopProcessor) ProcessPreTransfer(_ *Context, _ *string, _ *string) {} +func (NopProcessor) ProcessTransferFailure(_ *Context, _ *string, _ *string, _ error) {} +func (NopProcessor) ProcessPostTransfer(_ *Context, _ *string, _ *string) {} +func (NopProcessor) ProcessCache(_ *Context, _ *[]byte) {} +func (NopProcessor) ProcessDisconnection(_ *Context, _ *string) {} diff --git a/session/session.go b/session/session.go index c4129ab..1470714 100644 --- a/session/session.go +++ b/session/session.go @@ -164,18 +164,18 @@ func (s *Session) TransferContext(ctx context.Context, addr string) (err error) s.sendMetadata(true) conn, err := s.dial(ctx, addr) if err != nil { - s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr) + s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr, err) return fmt.Errorf("dialer failed: %w", err) } if err := conn.DoConnect(); err != nil { - s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr) + s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr, err) return fmt.Errorf("connection sequence failed failed: %w", err) } conn.OnConnect(func(err error) { if err != nil { - s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr) + s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr, err) return } @@ -183,7 +183,7 @@ func (s *Session) TransferContext(ctx context.Context, addr string) (err error) s.animation.Play(s.client, gameData) s.sendGameData(conn.GameData()) if err := conn.DoSpawn(); err != nil { - s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr) + s.Processor().ProcessTransferFailure(NewContext(), &origin, &addr, err) return } s.inFallback.Store(false)