From bde5e8e972614c2b9636458c2c1a7f150613b6e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luciano=20Mej=C3=ADa?= Date: Sat, 19 Sep 2026 20:35:45 -0500 Subject: [PATCH] feat: sync with protocol --- conn.go | 22 +++++++++++++++------- go.mod | 14 +++++++++----- go.sum | 18 ++++++++++++++++++ 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/conn.go b/conn.go index 765dcf5..953c4f8 100644 --- a/conn.go +++ b/conn.go @@ -362,18 +362,22 @@ func (c *conn) translatePacket(pk packet.Packet, serverSent bool) packet.Packet } case *packet.BossEvent: pk.BossEntityUniqueID = c.translateUniqueID(pk.BossEntityUniqueID, serverSent) - pk.PlayerUniqueID = c.translateUniqueID(pk.PlayerUniqueID, serverSent) case *packet.Camera: pk.CameraEntityUniqueID = c.translateUniqueID(pk.CameraEntityUniqueID, serverSent) pk.TargetPlayerUniqueID = c.translateUniqueID(pk.TargetPlayerUniqueID, serverSent) case *packet.ChangeMobProperty: pk.EntityUniqueID = int64(c.translateRuntimeID(uint64(pk.EntityUniqueID), serverSent)) case *packet.ClientBoundMapItemData: - for i, x := range pk.TrackedObjects { - if x.Type == protocol.MapObjectTypeEntity { - x.EntityUniqueID = c.translateUniqueID(x.EntityUniqueID, serverSent) - pk.TrackedObjects[i] = x + if trackedObjects, ok := pk.TrackedObjects.Value(); ok { + for i, x := range trackedObjects { + if x.Type == protocol.MapObjectTypeEntity { + if entityUniqueID, ok := x.EntityUniqueID.Value(); ok { + x.EntityUniqueID = protocol.Option(c.translateUniqueID(entityUniqueID, serverSent)) + } + trackedObjects[i] = x + } } + pk.TrackedObjects = protocol.Option(trackedObjects) } case *packet.CommandBlockUpdate: if !pk.Block { @@ -434,7 +438,9 @@ func (c *conn) translatePacket(pk packet.Packet, serverSent bool) packet.Packet pk.EntityRuntimeID = c.translateRuntimeID(pk.EntityRuntimeID, serverSent) case *packet.PlayerAuthInput: if pk.InputData.Load(packet.InputFlagClientPredictedVehicle) { - pk.ClientPredictedVehicle = c.translateUniqueID(pk.ClientPredictedVehicle, serverSent) + if predictedVehicleUniqueID, ok := pk.ClientPredictedVehicle.Value(); ok { + pk.ClientPredictedVehicle = protocol.Option(c.translateUniqueID(predictedVehicleUniqueID, serverSent)) + } } case *packet.PlayerList: for i := range pk.Entries { @@ -472,7 +478,9 @@ func (c *conn) translatePacket(pk packet.Packet, serverSent bool) packet.Packet case *packet.SetScoreboardIdentity: if pk.ActionType != packet.ScoreboardIdentityActionClear { for i := range pk.Entries { - pk.Entries[i].EntityUniqueID = c.translateUniqueID(pk.Entries[i].EntityUniqueID, serverSent) + if entityUniqueID, ok := pk.Entries[i].EntityUniqueID.Value(); ok { + pk.Entries[i].EntityUniqueID = protocol.Option(c.translateUniqueID(entityUniqueID, serverSent)) + } } } case *packet.ShowCredits: diff --git a/go.mod b/go.mod index 26ca407..0cc0c0b 100644 --- a/go.mod +++ b/go.mod @@ -6,27 +6,31 @@ require ( github.com/brentp/intintmap v0.0.0-20251106190759-56907b1f8479 github.com/cooldogedev/spectral v0.0.5 github.com/cooldogedev/spectrum v0.0.44 - github.com/df-mc/dragonfly v0.11.0 + github.com/df-mc/dragonfly v0.11.5 github.com/golang/snappy v1.0.0 github.com/google/uuid v1.6.0 github.com/quic-go/quic-go v0.60.0 - github.com/sandertv/gophertunnel v1.57.1 + github.com/sandertv/gophertunnel v1.62.0 ) require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/coder/websocket v1.8.14 // indirect github.com/coreos/go-oidc/v3 v3.20.0 // indirect - github.com/df-mc/go-nethernet v1.0.18 // indirect + github.com/df-mc/go-nethernet v1.0.20 // indirect github.com/df-mc/go-playfab v1.0.0 // indirect + github.com/df-mc/go-playfab/v2 v2.0.2 // indirect github.com/df-mc/go-xsapi v1.0.1 // indirect + github.com/df-mc/go-xsapi/v2 v2.0.3 // indirect github.com/df-mc/goleveldb v1.1.9 // indirect github.com/df-mc/jsonc v1.0.5 // indirect - github.com/df-mc/worldupgrader v1.0.21 // indirect + github.com/df-mc/worldupgrader v1.0.22 // indirect github.com/go-gl/mathgl v1.2.0 // indirect github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/klauspost/compress v1.19.1 // indirect github.com/nxadm/tail v1.4.11 // indirect github.com/onsi/gomega v1.38.2 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect github.com/pion/datachannel v1.6.2 // indirect github.com/pion/dtls/v3 v3.1.5 // indirect github.com/pion/ice/v4 v4.3.0 // indirect @@ -43,7 +47,7 @@ require ( github.com/pion/transport/v4 v4.0.2 // indirect github.com/pion/turn/v5 v5.0.12 // indirect github.com/pion/webrtc/v4 v4.2.17 // indirect - github.com/sandertv/go-raknet v1.15.1 // indirect + github.com/sandertv/go-raknet v1.15.2-0.20260705184311-0d1fd09e2cf6 // indirect github.com/segmentio/fasthash v1.0.3 // indirect github.com/wlynxg/anet v0.0.5 // indirect golang.org/x/crypto v0.54.0 // indirect diff --git a/go.sum b/go.sum index 06e1539..703bb0c 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/brentp/intintmap v0.0.0-20251106190759-56907b1f8479 h1:UZbbt19ACBOFO+ github.com/brentp/intintmap v0.0.0-20251106190759-56907b1f8479/go.mod h1:TOk10ahXejq9wkEaym3KPRNeuR/h5Jx+s8QRWIa2oTM= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g= +github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= github.com/cooldogedev/spectral v0.0.5 h1:VTWbJkqwDqg/eeDwIXwC6+jpXEGlOzu6QzP1hSEUhIM= github.com/cooldogedev/spectral v0.0.5/go.mod h1:Oq9dVLgqaRiS/hZvKvLk/XWXFOZmmTKM29u6o4GBe84= github.com/cooldogedev/spectrum v0.0.44 h1:UKOfX5O50FahNb3acOJHD/INyOxss/wtCLSmZM5mIEo= @@ -12,18 +14,28 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/df-mc/dragonfly v0.11.0 h1:bylZOYzHRuaBxYewToTPa3v1m74aKfG0yd433ZiypfQ= github.com/df-mc/dragonfly v0.11.0/go.mod h1:OFJjCz3xfDalVZEtV4lJdbenwKDEAczKHikHN7kVwMc= +github.com/df-mc/dragonfly v0.11.5 h1:amqepXVBRBi/e5j1K2H8GjNFgpMs6FP1RQgNH0Myfn0= +github.com/df-mc/dragonfly v0.11.5/go.mod h1:edW4tJmnTBFEAsyq0i+jNANDQVdPHmdbqBQpkHVXhWw= github.com/df-mc/go-nethernet v1.0.18 h1:SSlGPhweIux3c9PKhkmyxbMtBc/V2+b9+cJYdyqxbAo= github.com/df-mc/go-nethernet v1.0.18/go.mod h1:11MfQo5F7PDKfHg1H0zM5mMkrCv29jRE0lK5B4egW9w= +github.com/df-mc/go-nethernet v1.0.20 h1:H0MO0GkVlAypu9IDQhzg5Pph3mCD7r40+ExiImsXT2M= +github.com/df-mc/go-nethernet v1.0.20/go.mod h1:11MfQo5F7PDKfHg1H0zM5mMkrCv29jRE0lK5B4egW9w= github.com/df-mc/go-playfab v1.0.0 h1:6gVukk3aQbJ934GJFdcZJHVIw9lhauK+KHOevbwJA10= github.com/df-mc/go-playfab v1.0.0/go.mod h1:nGOlE+JFGOH5Z0iidEgJapHhndFi/oNk17RN9pKCF+k= +github.com/df-mc/go-playfab/v2 v2.0.2 h1:JqOsrpe0nt6Ni4V2JrdmOAhbBgTm7LBw1ppGXlmknhs= +github.com/df-mc/go-playfab/v2 v2.0.2/go.mod h1:CS3FV3tJlohvGQiX0IJiaYKOVNfy0p778B84oEVyxlw= github.com/df-mc/go-xsapi v1.0.1 h1:H1SbxYr4rXOqZSB8MwiODbDUsHRihxbHf+YOljUWgXw= github.com/df-mc/go-xsapi v1.0.1/go.mod h1:uKC/a/2/JOamgRDezvgVe7OmXdqERUfmCcIWAOp9hPA= +github.com/df-mc/go-xsapi/v2 v2.0.3 h1:fQLw4k15OinFhagWjbSj0BwQXeDUmY8a1J8yquEod3w= +github.com/df-mc/go-xsapi/v2 v2.0.3/go.mod h1:Gi/zQG2DFMJOMt4DIjuBuINTnU4YnZINe+RyFyza8oo= github.com/df-mc/goleveldb v1.1.9 h1:ihdosZyy5jkQKrxucTQmN90jq/2lUwQnJZjIYIC/9YU= github.com/df-mc/goleveldb v1.1.9/go.mod h1:+NHCup03Sci5q84APIA21z3iPZCuk6m6ABtg4nANCSk= github.com/df-mc/jsonc v1.0.5 h1:O7oh07kbS5AYY+l2Fji6l4h0iHcdjKbxCtK5VlZlLMU= github.com/df-mc/jsonc v1.0.5/go.mod h1:+Q++JuCE9IKiP8v7sWImdf/RjQX0nfXyfX6PdfTTmc4= github.com/df-mc/worldupgrader v1.0.21 h1:Qr4/QB8ek7En0vkTuRXYq4FrZM0HHSOXsJOL7Ko4Cjg= github.com/df-mc/worldupgrader v1.0.21/go.mod h1:tsSOLTRm9mpG7VHvYpAjjZrkRHWmSbKZAm9bOLNnlDk= +github.com/df-mc/worldupgrader v1.0.22 h1:Wt1T0imJ9avprhp3vhr21iYLDZ6LqxVqH7LMiqZASWM= +github.com/df-mc/worldupgrader v1.0.22/go.mod h1:tsSOLTRm9mpG7VHvYpAjjZrkRHWmSbKZAm9bOLNnlDk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -52,6 +64,8 @@ github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pion/datachannel v1.6.2 h1:7EXQ8TH3vTouBUdRWYbcX2edSx9Yj6k5zl5P+qyxEPc= github.com/pion/datachannel v1.6.2/go.mod h1:pzbdAZvyGtXbcHM1hBbsFaOTf40lZizU/dNlvVOak6E= github.com/pion/dtls/v3 v3.1.5 h1:9xJtVsHwMYeSjPp5Hh1FTis4DchnQWtnOa5o+6ygqfc= @@ -94,8 +108,12 @@ github.com/quic-go/quic-go v0.60.0 h1:xcQioE8OM66UQLeUMHltK1CCcOu3JbVB4JAQdDQSB+ github.com/quic-go/quic-go v0.60.0/go.mod h1:wpKpjmPpftl30sL6pFh7REVpjbcCVy4zt2vDyK1TuJk= github.com/sandertv/go-raknet v1.15.1 h1:Okw1u6cez2VwWcONc5Q3+i87ustRpdityLoXD/CKfAI= github.com/sandertv/go-raknet v1.15.1/go.mod h1:/yysjwfCXm2+2OY8mBazLzcxJ3irnylKCyG3FLgUPVU= +github.com/sandertv/go-raknet v1.15.2-0.20260705184311-0d1fd09e2cf6 h1:Oj7QsiwWTOLmCpOjjmW0Qwde4BE8F5+Kjz817qzICyk= +github.com/sandertv/go-raknet v1.15.2-0.20260705184311-0d1fd09e2cf6/go.mod h1:/yysjwfCXm2+2OY8mBazLzcxJ3irnylKCyG3FLgUPVU= github.com/sandertv/gophertunnel v1.57.1 h1:P14qngVxDCnSedLvGJtkLrzDOVBQEL1fFliBrT3E9Mc= github.com/sandertv/gophertunnel v1.57.1/go.mod h1:Frjuk3g1EEGRYjzyrEMS4j/hDvTcez2STfuRHkRPlNU= +github.com/sandertv/gophertunnel v1.62.0 h1:n+CBO0ngnlURV3DMCe9uq9KtZbr8sK1/Z5mYhGO9Wq4= +github.com/sandertv/gophertunnel v1.62.0/go.mod h1:LZsch9elPoPzsJGDbx7ClWEHFjgHZ/lONvXF7m16Qn8= github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=