diff --git a/go.mod b/go.mod index ba225ee..fd644f4 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/bedrock-tool/bedrocktool go 1.20 //replace github.com/sandertv/gophertunnel => ./gophertunnel -replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.30.0-1 +replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.30.0-3 //replace github.com/df-mc/dragonfly => ./dragonfly replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.6-2 diff --git a/go.sum b/go.sum index 5e3fc10..ae85e44 100644 --- a/go.sum +++ b/go.sum @@ -92,6 +92,10 @@ github.com/olebeck/gio v0.0.0-20230607184051-9ab60b08f083 h1:ZnL97gNzNlVxNj7X3fh github.com/olebeck/gio v0.0.0-20230607184051-9ab60b08f083/go.mod h1:8CFQM/4LurRd9G3NUYdacFb9j2pK0LrAyVO2mAZo4mw= github.com/olebeck/gophertunnel v1.30.0-1 h1:GUI2WX48cJKK/UcTLSIRU1O+nG6iURV8/l2KS8GsMsk= github.com/olebeck/gophertunnel v1.30.0-1/go.mod h1:HxQfl/8mZzvjzhekEH8RO6xLAgan9i/wIyrQzw0tIPY= +github.com/olebeck/gophertunnel v1.30.0-2 h1:JbkADJTfpCfC7nL9O08LON0k8OBahfmOdByN3dy/CQE= +github.com/olebeck/gophertunnel v1.30.0-2/go.mod h1:HxQfl/8mZzvjzhekEH8RO6xLAgan9i/wIyrQzw0tIPY= +github.com/olebeck/gophertunnel v1.30.0-3 h1:D3PP7ttzZWgyHmacVMiPslWsTj3UNeRvO1x+5kA97wE= +github.com/olebeck/gophertunnel v1.30.0-3/go.mod h1:HxQfl/8mZzvjzhekEH8RO6xLAgan9i/wIyrQzw0tIPY= 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= diff --git a/handlers/packet_logger.go b/handlers/packet_logger.go index b537d12..b85ad3d 100644 --- a/handlers/packet_logger.go +++ b/handlers/packet_logger.go @@ -46,7 +46,6 @@ var MutedPackets = []string{ var dirS2C = color.GreenString("S") + "->" + color.CyanString("C") var dirC2S = color.CyanString("C") + "->" + color.GreenString("S") -var pool = packet.NewPool() func NewDebugLogger(extraVerbose bool) *utils.ProxyHandler { var logPlain, logCrypt, logCryptEnc io.WriteCloser @@ -77,7 +76,7 @@ func NewDebugLogger(extraVerbose bool) *utils.ProxyHandler { proxy = pc }, PacketFunc: func(header packet.Header, payload []byte, src, dst net.Addr) { - pk := utils.DecodePacket(header, payload) + pk := utils.DecodePacket(proxy.Server.Pool(), header, payload) if pk == nil { return } diff --git a/subcommands/resourcepack-d/resourcepack-d.go b/subcommands/resourcepack-d/resourcepack-d.go index e7fe9c8..1a71341 100644 Binary files a/subcommands/resourcepack-d/resourcepack-d.go and b/subcommands/resourcepack-d/resourcepack-d.go differ diff --git a/utils/proxy.go b/utils/proxy.go index 0e5fdd0..bcdee75 100644 --- a/utils/proxy.go +++ b/utils/proxy.go @@ -545,9 +545,7 @@ func (p *ProxyContext) Run(ctx context.Context, serverAddress, name string) (err return err } -var pool = packet.NewPool() - -func DecodePacket(header packet.Header, payload []byte) packet.Packet { +func DecodePacket(pool packet.Pool, header packet.Header, payload []byte) packet.Packet { var pk packet.Packet if pkFunc, ok := pool[header.PacketID]; ok { pk = pkFunc() @@ -560,6 +558,6 @@ func DecodePacket(header packet.Header, payload []byte) packet.Packet { logrus.Errorf("%T: %s", pk, recoveredErr.(error)) } }() - pk.Marshal(protocol.NewReader(bytes.NewBuffer(payload), 0)) + pk.Marshal(protocol.NewReader(bytes.NewBuffer(payload), 0, false)) return pk } diff --git a/utils/replay.go b/utils/replay.go index ae5cc41..c46e05b 100644 --- a/utils/replay.go +++ b/utils/replay.go @@ -285,7 +285,7 @@ func (r *replayConnector) loop() { func createReplayConnector(filename string, packetFunc PacketFunc) (r *replayConnector, err error) { r = &replayConnector{ - pool: packet.NewPool(), + pool: minecraft.DefaultProtocol.Packets(true), proto: minecraft.DefaultProtocol, packetFunc: packetFunc, spawn: make(chan struct{}), @@ -315,6 +315,14 @@ func createReplayConnector(filename string, packetFunc PacketFunc) (r *replayCon return r, nil } +func (r *replayConnector) DisconnectOnInvalidPacket() bool { + return false +} + +func (r *replayConnector) DisconnectOnUnknownPacket() bool { + return false +} + func (r *replayConnector) Close() error { r.once.Do(func() { close(r.close)