From d9d8b0bc75d6f5afba00d9231de87ae772667c6d Mon Sep 17 00:00:00 2001 From: Akmal Fairuz <35138228+AkmalFairuz@users.noreply.github.com> Date: Wed, 13 Aug 2025 21:37:46 +0700 Subject: [PATCH 1/5] Add support for protocol version 1.21.100 (#12) --- README.md | 33 +- cmd/dfmapping/main.go | 5 +- example-proxy.go | 9 +- go.mod | 16 +- go.sum | 30 + internal/block_states.go | 3 +- internal/chunk/chunk.go | 3 +- internal/chunk/decode.go | 1 + internal/chunk/encode.go | 3 +- internal/chunk/encoding.go | 3 +- internal/item/registry.go | 7 +- internal/pool.go | 13 + legacyver/all.go | 1 + legacyver/block_translator.go | 121 +- legacyver/data/block_states_827.nbt | Bin 0 -> 2091687 bytes legacyver/data/required_item_list_827.json | 9256 +++++++++++++++++ legacyver/item_translator.go | 1 + .../legacypacket/biome_definition_list.go | 3 +- legacyver/legacypacket/camera_aim_assist.go | 5 + legacyver/legacypacket/camera_instruction.go | 5 + .../correct_player_move_prediction.go | 6 +- legacyver/legacypacket/start_game.go | 5 + legacyver/proto/biome.go | 104 + legacyver/proto/id.go | 1 + legacyver/proto/io.go | 1 + legacyver/proto/player.go | 3 +- legacyver/protocol.go | 41 +- legacyver/v649.go | 1 + legacyver/v662.go | 1 + legacyver/v671.go | 1 + legacyver/v685.go | 1 + legacyver/v686.go | 1 + legacyver/v712.go | 1 + legacyver/v729.go | 1 + legacyver/v748.go | 1 + legacyver/v766.go | 1 + legacyver/v776.go | 1 + legacyver/v786.go | 1 + legacyver/v800.go | 1 + legacyver/v818.go | 1 + legacyver/v819.go | 23 +- legacyver/v827.go | 34 + mapping/block.go | 29 +- mapping/custom_blocks.go | 2 +- mapping/item.go | 3 +- packbuilder/builder.go | 3 +- packbuilder/components.go | 3 +- packbuilder/items.go | 5 +- packbuilder/manifest.go | 5 +- packbuilder/resource_pack.go | 3 +- 50 files changed, 9667 insertions(+), 135 deletions(-) create mode 100644 internal/pool.go create mode 100644 legacyver/data/block_states_827.nbt create mode 100644 legacyver/data/required_item_list_827.json create mode 100644 legacyver/proto/biome.go create mode 100644 legacyver/v827.go diff --git a/README.md b/README.md index 67d29dc..1e8a94f 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,23 @@ A gophertunnel protocol interface implementation to support older Minecraft Bedrock versions. ## Supported Versions -| Protocol ID | Version | Support | -|-------------|---------|---------| -| 819 | 1.21.93 | ✅ | -| 818 | 1.21.90 | ✅ | -| 800 | 1.21.80 | ✅ | -| 786 | 1.21.70 | ✅ | -| 776 | 1.21.60 | ✅ | -| 766 | 1.21.50 | ✅ | -| 748 | 1.21.40 | ✅ | -| 729 | 1.21.30 | ✅ | -| 712 | 1.21.20 | ✅ | -| 686 | 1.21.2 | ✅ | -| 685 | 1.21.0 | ✅ | -| 671 | 1.20.80 | ✅ | -| 662 | 1.20.70 | ✅ | -| 649 | 1.20.60 | ✅ | +| Protocol ID | Version | Support | +|-------------|----------|---------| +| 827 | 1.21.100 | ✅ | +| 819 | 1.21.93 | ✅ | +| 818 | 1.21.90 | ✅ | +| 800 | 1.21.80 | ✅ | +| 786 | 1.21.70 | ✅ | +| 776 | 1.21.60 | ✅ | +| 766 | 1.21.50 | ✅ | +| 748 | 1.21.40 | ✅ | +| 729 | 1.21.30 | ✅ | +| 712 | 1.21.20 | ✅ | +| 686 | 1.21.2 | ✅ | +| 685 | 1.21.0 | ✅ | +| 671 | 1.20.80 | ✅ | +| 662 | 1.20.70 | ✅ | +| 649 | 1.20.60 | ✅ | <= 1.20.50 is not possible to support due to different compression logic and gophertunnel does not provide a way to support dynamic compression. diff --git a/cmd/dfmapping/main.go b/cmd/dfmapping/main.go index 49bcc7b..75c8dc4 100644 --- a/cmd/dfmapping/main.go +++ b/cmd/dfmapping/main.go @@ -4,11 +4,12 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/samber/lo" - "github.com/sandertv/gophertunnel/minecraft/nbt" "io" "net/http" "os" + + "github.com/samber/lo" + "github.com/sandertv/gophertunnel/minecraft/nbt" ) func main() { diff --git a/example-proxy.go b/example-proxy.go index fd60a0a..4f6678b 100644 --- a/example-proxy.go +++ b/example-proxy.go @@ -2,15 +2,16 @@ package main import ( "errors" + "log" + "os" + "sync" + "time" + "github.com/akmalfairuz/legacy-version/legacyver" "github.com/pelletier/go-toml" "github.com/sandertv/gophertunnel/minecraft" "github.com/sandertv/gophertunnel/minecraft/auth" "golang.org/x/oauth2" - "log" - "os" - "sync" - "time" ) // The following program implements a proxy that forwards players from one local address to a remote address. diff --git a/go.mod b/go.mod index 2014bf3..2fe76fb 100644 --- a/go.mod +++ b/go.mod @@ -5,16 +5,16 @@ go 1.24 toolchain go1.24.0 require ( - github.com/df-mc/dragonfly v0.10.3 + github.com/df-mc/dragonfly v0.10.5 github.com/df-mc/worldupgrader v1.0.19 github.com/go-gl/mathgl v1.2.0 github.com/google/uuid v1.6.0 github.com/pelletier/go-toml v1.9.5 github.com/rogpeppe/go-internal v1.14.1 github.com/samber/lo v1.49.1 - github.com/sandertv/gophertunnel v1.47.4 + github.com/sandertv/gophertunnel v1.49.0 github.com/segmentio/fasthash v1.0.3 - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 + golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 golang.org/x/image v0.25.0 golang.org/x/oauth2 v0.30.0 ) @@ -22,13 +22,13 @@ require ( require ( github.com/brentp/intintmap v0.0.0-20190211203843-30dc0ade9af9 // indirect github.com/df-mc/goleveldb v1.1.9 // indirect - github.com/go-jose/go-jose/v4 v4.1.0 // indirect + github.com/go-jose/go-jose/v4 v4.1.2 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/muhammadmuzzammil1998/jsonc v1.0.0 // indirect github.com/sandertv/go-raknet v1.14.3-0.20250305181847-6af3e95113d6 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/text v0.28.0 // indirect ) diff --git a/go.sum b/go.sum index 3c03498..79970fc 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,19 @@ github.com/brentp/intintmap v0.0.0-20190211203843-30dc0ade9af9 h1:/G0ghZwrhou0Wq21qc1vXXMm/t/aKWkALWwITptKbE0= github.com/brentp/intintmap v0.0.0-20190211203843-30dc0ade9af9/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/cooldogedev/gophertunnel v0.0.0-20250805131657-cc74f1797ff7 h1:IvKtI+ka2fAVh+QFEuLjLTQPyYARaem3q9pr+Y7wJCI= +github.com/cooldogedev/gophertunnel v0.0.0-20250805131657-cc74f1797ff7/go.mod h1:lmRarAmn25V/+QeiUbUDXeA26bEaNlX1wGEM/rj39ew= +github.com/cooldogedev/gophertunnel v0.0.0-20250806215416-758d5047d822 h1:cW4FrZUxjdJBoSD3Fpw7Z86LQJHtTK7o9lIgGXuaZ3Q= +github.com/cooldogedev/gophertunnel v0.0.0-20250806215416-758d5047d822/go.mod h1:lmRarAmn25V/+QeiUbUDXeA26bEaNlX1wGEM/rj39ew= 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.9.20-0.20241229163702-cc7e4ee0e3ce h1:mhBn/ezojzACPHeg+Y9NnU2bbYCozx27RgpfWUPw4i0= github.com/df-mc/dragonfly v0.9.20-0.20241229163702-cc7e4ee0e3ce/go.mod h1:hH1eU9lmucLNLehzxXzOUOmHJQLz3DLpQMUqIKcz8YI= github.com/df-mc/dragonfly v0.10.3 h1:t0mxRvjjgG8uBevqqzejJVL2M6obi6RYePMTPDlXo74= github.com/df-mc/dragonfly v0.10.3/go.mod h1:pO7nuyRKV50ZVZzB7AhTMU/0p4cvk1/yCu43vFqAzcI= +github.com/df-mc/dragonfly v0.10.5 h1:vn3Mwh7vWPDtIdss4QEOP8vSZGHRAjyLvrOEM5mEUI0= +github.com/df-mc/dragonfly v0.10.5/go.mod h1:/KjoqvIe5+ZxuFUPSRey9UzQS3GkTgAyTH0jTYFMs/g= 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/worldupgrader v1.0.18 h1:Q34X9ID/hGuDyj9oiq+dpyjOaJdNxhVmVUepf/EPYDA= @@ -19,6 +27,8 @@ github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3 github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= +github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI= +github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= @@ -62,6 +72,10 @@ github.com/sandertv/gophertunnel v1.47.3 h1:MsHv8QEx17+N/39BnAvHn/KU9zv8Rt9ZHTKa github.com/sandertv/gophertunnel v1.47.3/go.mod h1:lvzOdyb2fkoo3uySe++hy4UKq0I649oUFJKkro2ZHpY= github.com/sandertv/gophertunnel v1.47.4 h1:PmNbEUf9+7Fk8bP2875cvYTt22g0d4eeQhtd1dxjqqA= github.com/sandertv/gophertunnel v1.47.4/go.mod h1:lvzOdyb2fkoo3uySe++hy4UKq0I649oUFJKkro2ZHpY= +github.com/sandertv/gophertunnel v1.48.1 h1:+DleZznxkYugxEIEFAKN4JDfYSv/zm6//MfYFdIgyq8= +github.com/sandertv/gophertunnel v1.48.1/go.mod h1:lmRarAmn25V/+QeiUbUDXeA26bEaNlX1wGEM/rj39ew= +github.com/sandertv/gophertunnel v1.49.0 h1:9FIl4GGYMrFTmBPgkOTUskGWRQHIg4NMpY8JdM6SrCg= +github.com/sandertv/gophertunnel v1.49.0/go.mod h1:lmRarAmn25V/+QeiUbUDXeA26bEaNlX1wGEM/rj39ew= 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.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -72,10 +86,16 @@ golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= @@ -86,6 +106,8 @@ golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= @@ -93,6 +115,10 @@ golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= @@ -109,6 +135,10 @@ golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= diff --git a/internal/block_states.go b/internal/block_states.go index e35ba0d..c7c240a 100644 --- a/internal/block_states.go +++ b/internal/block_states.go @@ -2,10 +2,11 @@ package internal import ( "fmt" - "github.com/df-mc/worldupgrader/blockupgrader" "sort" "strings" "unsafe" + + "github.com/df-mc/worldupgrader/blockupgrader" ) // StateHash is a struct that may be used as a map key for block states. It contains the name of the block state diff --git a/internal/chunk/chunk.go b/internal/chunk/chunk.go index 1baf026..2ea4546 100644 --- a/internal/chunk/chunk.go +++ b/internal/chunk/chunk.go @@ -1,8 +1,9 @@ package chunk import ( - "github.com/df-mc/dragonfly/server/block/cube" "sync" + + "github.com/df-mc/dragonfly/server/block/cube" ) // Chunk is a segment in the world with a size of 16x16x256 blocks. A chunk contains multiple sub chunks diff --git a/internal/chunk/decode.go b/internal/chunk/decode.go index 29b73db..78d0ffa 100644 --- a/internal/chunk/decode.go +++ b/internal/chunk/decode.go @@ -3,6 +3,7 @@ package chunk import ( "bytes" "fmt" + "github.com/df-mc/dragonfly/server/block/cube" ) diff --git a/internal/chunk/encode.go b/internal/chunk/encode.go index c4e8392..77b3ae4 100644 --- a/internal/chunk/encode.go +++ b/internal/chunk/encode.go @@ -2,8 +2,9 @@ package chunk import ( "bytes" - "github.com/df-mc/dragonfly/server/block/cube" "sync" + + "github.com/df-mc/dragonfly/server/block/cube" ) // pool is used to pool byte buffers used for encoding chunks. diff --git a/internal/chunk/encoding.go b/internal/chunk/encoding.go index 5c5d7b6..e7e7333 100644 --- a/internal/chunk/encoding.go +++ b/internal/chunk/encoding.go @@ -4,9 +4,10 @@ import ( "bytes" "encoding/binary" "fmt" - "github.com/akmalfairuz/legacy-version/mapping" "strings" + "github.com/akmalfairuz/legacy-version/mapping" + "github.com/df-mc/dragonfly/server/block/cube" "github.com/df-mc/worldupgrader/blockupgrader" "github.com/sandertv/gophertunnel/minecraft/nbt" diff --git a/internal/item/registry.go b/internal/item/registry.go index da70586..7192578 100644 --- a/internal/item/registry.go +++ b/internal/item/registry.go @@ -4,12 +4,13 @@ import ( "bytes" "embed" "encoding/json" - "github.com/df-mc/worldupgrader/blockupgrader" - "github.com/sandertv/gophertunnel/minecraft/nbt" - "github.com/sandertv/gophertunnel/minecraft/protocol" "regexp" "sort" "strconv" + + "github.com/df-mc/worldupgrader/blockupgrader" + "github.com/sandertv/gophertunnel/minecraft/nbt" + "github.com/sandertv/gophertunnel/minecraft/protocol" ) var ( diff --git a/internal/pool.go b/internal/pool.go new file mode 100644 index 0000000..b722387 --- /dev/null +++ b/internal/pool.go @@ -0,0 +1,13 @@ +package internal + +import ( + "bytes" + "sync" +) + +// BufferPool is a sync.Pool for buffers used to write compressed data to. +var BufferPool = sync.Pool{ + New: func() any { + return bytes.NewBuffer(make([]byte, 0, 256)) + }, +} diff --git a/legacyver/all.go b/legacyver/all.go index 9c31812..fbcc035 100644 --- a/legacyver/all.go +++ b/legacyver/all.go @@ -8,6 +8,7 @@ import ( // must be set to true if you're using Dragonfly. func All(dragonflyMapping bool) []minecraft.Protocol { return []minecraft.Protocol{ + New819(dragonflyMapping), New818(dragonflyMapping), New800(dragonflyMapping), New786(dragonflyMapping), diff --git a/legacyver/block_translator.go b/legacyver/block_translator.go index d983c67..95dd5c3 100644 --- a/legacyver/block_translator.go +++ b/legacyver/block_translator.go @@ -3,6 +3,8 @@ package legacyver import ( "bytes" _ "embed" + + "github.com/akmalfairuz/legacy-version/internal" "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/mapping" "github.com/df-mc/dragonfly/server/block/cube" @@ -43,62 +45,69 @@ func NewBlockTranslator(mapping mapping.Block, latestMapping mapping.Block, pse return &DefaultBlockTranslator{mapping: mapping, latest: latestMapping, pse: pse, pe: pe, oldFormat: oldFormat} } +func (t *DefaultBlockTranslator) downgradeLevelChunkPacket(pk *packet.LevelChunk) error { + count := int(pk.SubChunkCount) + if count == protocol.SubChunkRequestModeLimitless || count == protocol.SubChunkRequestModeLimited { + return nil + } + + buf := bytes.NewBuffer(pk.RawPayload) + writeBuf := internal.BufferPool.Get().(*bytes.Buffer) + defer func() { + writeBuf.Reset() + internal.BufferPool.Put(writeBuf) + }() + if !pk.CacheEnabled { + c, err := chunk.NetworkDecode(t.latest.Air(), buf, count, false, world.Overworld.Range(), LatestNetworkPersistentEncoding, LatestBlockPaletteEncoding) + if err != nil { + return err + } + c = t.DowngradeChunk(c) + + payload, err := chunk.NetworkEncode(t.mapping.Air(), c, t.oldFormat, t.pe) + if err != nil { + return err + } + writeBuf.Write(payload) + pk.SubChunkCount = uint32(len(c.Sub())) + } + safeBytes := buf.Bytes() + + countBorder, err := buf.ReadByte() + if err != nil { + pk.RawPayload = append(writeBuf.Bytes(), safeBytes...) + return nil + } + borderBytes := make([]byte, countBorder) + if _, err = buf.Read(borderBytes); err != nil { + pk.RawPayload = append(writeBuf.Bytes(), safeBytes...) + return nil + } + writeBuf.WriteByte(countBorder) + writeBuf.Write(borderBytes) + + enc := nbt.NewEncoderWithEncoding(writeBuf, nbt.NetworkLittleEndian) + dec := nbt.NewDecoderWithEncoding(buf, nbt.NetworkLittleEndian) + for { + var decNbt map[string]any + if err = dec.Decode(&decNbt); err != nil { + break + } + t.mapping.DowngradeBlockActorData(decNbt) + + if err = enc.Encode(decNbt); err != nil { + break + } + } + pk.RawPayload = append(writeBuf.Bytes(), buf.Bytes()...) + return nil +} + func (t *DefaultBlockTranslator) DowngradeBlockPackets(pks []packet.Packet, conn *minecraft.Conn) (result []packet.Packet) { for _, pk := range pks { switch pk := pk.(type) { case *packet.LevelChunk: - count := int(pk.SubChunkCount) - if count == protocol.SubChunkRequestModeLimitless || count == protocol.SubChunkRequestModeLimited { - break - } - - buf := bytes.NewBuffer(pk.RawPayload) - writeBuf := bytes.NewBuffer(nil) - if !pk.CacheEnabled { - c, err := chunk.NetworkDecode(t.latest.Air(), buf, count, false, world.Overworld.Range(), LatestNetworkPersistentEncoding, LatestBlockPaletteEncoding) - if err != nil { - //fmt.Println(err) - break - } - c = t.DowngradeChunk(c) - - payload, err := chunk.NetworkEncode(t.mapping.Air(), c, t.oldFormat, t.pe) - if err != nil { - //fmt.Println(err) - break - } - writeBuf.Write(payload) - pk.SubChunkCount = uint32(len(c.Sub())) - } - safeBytes := buf.Bytes() - - countBorder, err := buf.ReadByte() - if err != nil { - pk.RawPayload = append(writeBuf.Bytes(), safeBytes...) - break - } - borderBytes := make([]byte, countBorder) - if _, err = buf.Read(borderBytes); err != nil { - pk.RawPayload = append(writeBuf.Bytes(), safeBytes...) - break - } - writeBuf.WriteByte(countBorder) - writeBuf.Write(borderBytes) - - enc := nbt.NewEncoderWithEncoding(writeBuf, nbt.NetworkLittleEndian) - dec := nbt.NewDecoderWithEncoding(buf, nbt.NetworkLittleEndian) - for { - var decNbt map[string]any - if err = dec.Decode(&decNbt); err != nil { - break - } - t.mapping.DowngradeBlockActorData(decNbt) - - if err = enc.Encode(decNbt); err != nil { - break - } - } - pk.RawPayload = append(writeBuf.Bytes(), buf.Bytes()...) + _ = t.downgradeLevelChunkPacket(pk) case *packet.SubChunk: r := world.Overworld.Range() if t.oldFormat { @@ -247,11 +256,11 @@ func (t *DefaultBlockTranslator) DowngradeBlockRuntimeID(input uint32) uint32 { } state, ok := t.latest.RuntimeIDToState(input) if !ok { - return t.mapping.Air() + return t.mapping.InfoUpdate() } runtimeID, ok := t.mapping.StateToRuntimeID(state) if !ok { - return t.mapping.Air() + return t.mapping.InfoUpdate() } return runtimeID } @@ -315,11 +324,11 @@ func (t *DefaultBlockTranslator) UpgradeBlockRuntimeID(input uint32) uint32 { } state, ok := t.mapping.RuntimeIDToState(input) if !ok { - return t.latest.Air() + return t.latest.InfoUpdate() } runtimeID, ok := t.latest.StateToRuntimeID(state) if !ok { - return t.latest.Air() + return t.latest.InfoUpdate() } return runtimeID } diff --git a/legacyver/data/block_states_827.nbt b/legacyver/data/block_states_827.nbt new file mode 100644 index 0000000000000000000000000000000000000000..46350120065d81d42ac20714e510defa4899411a GIT binary patch literal 2091687 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%0ATdT{+o*|QZ96wHtZgeNh6U~I0)y;! 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 fGo0<&f@e6}gN1{~m#ef|~6 Date: Sat, 23 Aug 2025 08:41:20 +0700 Subject: [PATCH 2/5] Add DowngradeLevelChunkPacket --- go.mod | 11 +++--- go.sum | 6 +++ legacyver/all.go | 47 +++++++++++++++++++++++ legacyver/block_translator.go | 72 +++++++++++++++++++++-------------- legacyver/v649.go | 8 ++-- legacyver/v662.go | 8 ++-- legacyver/v671.go | 8 ++-- legacyver/v685.go | 8 ++-- legacyver/v686.go | 8 ++-- legacyver/v712.go | 8 ++-- legacyver/v729.go | 8 ++-- legacyver/v748.go | 8 ++-- legacyver/v766.go | 7 ++-- legacyver/v776.go | 8 ++-- legacyver/v786.go | 9 ++--- legacyver/v800.go | 7 ++-- legacyver/v818.go | 7 ++-- legacyver/v819.go | 7 ++-- 18 files changed, 144 insertions(+), 101 deletions(-) diff --git a/go.mod b/go.mod index 2fe76fb..031a6f1 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,9 @@ module github.com/akmalfairuz/legacy-version -go 1.24 - -toolchain go1.24.0 +go 1.24.0 require ( - github.com/df-mc/dragonfly v0.10.5 + github.com/df-mc/dragonfly v0.10.6-0.20250817203556-60bcf6b7432b github.com/df-mc/worldupgrader v1.0.19 github.com/go-gl/mathgl v1.2.0 github.com/google/uuid v1.6.0 @@ -14,13 +12,14 @@ require ( github.com/samber/lo v1.49.1 github.com/sandertv/gophertunnel v1.49.0 github.com/segmentio/fasthash v1.0.3 - golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 + golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b golang.org/x/image v0.25.0 golang.org/x/oauth2 v0.30.0 ) require ( github.com/brentp/intintmap v0.0.0-20190211203843-30dc0ade9af9 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/df-mc/goleveldb v1.1.9 // indirect github.com/go-jose/go-jose/v4 v4.1.2 // indirect github.com/golang/snappy v1.0.0 // indirect @@ -28,7 +27,7 @@ require ( github.com/muhammadmuzzammil1998/jsonc v1.0.0 // indirect github.com/sandertv/go-raknet v1.14.3-0.20250305181847-6af3e95113d6 // indirect golang.org/x/crypto v0.41.0 // indirect - golang.org/x/mod v0.26.0 // indirect + golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/text v0.28.0 // indirect ) diff --git a/go.sum b/go.sum index 79970fc..1e1e577 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,8 @@ github.com/df-mc/dragonfly v0.10.3 h1:t0mxRvjjgG8uBevqqzejJVL2M6obi6RYePMTPDlXo7 github.com/df-mc/dragonfly v0.10.3/go.mod h1:pO7nuyRKV50ZVZzB7AhTMU/0p4cvk1/yCu43vFqAzcI= github.com/df-mc/dragonfly v0.10.5 h1:vn3Mwh7vWPDtIdss4QEOP8vSZGHRAjyLvrOEM5mEUI0= github.com/df-mc/dragonfly v0.10.5/go.mod h1:/KjoqvIe5+ZxuFUPSRey9UzQS3GkTgAyTH0jTYFMs/g= +github.com/df-mc/dragonfly v0.10.6-0.20250817203556-60bcf6b7432b h1:i3nfD4EFsuIZJfod6W9/lovMw8rzwCjGHRVKOBu1nXo= +github.com/df-mc/dragonfly v0.10.6-0.20250817203556-60bcf6b7432b/go.mod h1:1B3NiEGWj0S9U4QlsL58HPvnmgPlaFCm/pCVWdnrMH0= 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/worldupgrader v1.0.18 h1:Q34X9ID/hGuDyj9oiq+dpyjOaJdNxhVmVUepf/EPYDA= @@ -96,6 +98,8 @@ golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= +golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b h1:DXr+pvt3nC887026GRP39Ej11UATqWDmWuS99x26cD0= +golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4= golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= @@ -108,6 +112,8 @@ golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= diff --git a/legacyver/all.go b/legacyver/all.go index fbcc035..2e6d5c4 100644 --- a/legacyver/all.go +++ b/legacyver/all.go @@ -1,7 +1,20 @@ package legacyver import ( + "fmt" + "sync" + + "github.com/akmalfairuz/legacy-version/internal/chunk" + "github.com/akmalfairuz/legacy-version/mapping" "github.com/sandertv/gophertunnel/minecraft" + "github.com/sandertv/gophertunnel/minecraft/protocol/packet" +) + +var ( + EnableChunkTranslation = true + + blockTranslatorsMu sync.RWMutex + blockTranslators map[int32]BlockTranslator ) // All returns a slice of all legacy protocol versions that are supported. dragonflyMapping @@ -24,3 +37,37 @@ func All(dragonflyMapping bool) []minecraft.Protocol { New649(dragonflyMapping), } } + +// lookupOrCreateBlockTranslator looks up a block translator for the given protocol version. +func lookupOrCreateBlockTranslator(protocolVersion, blockVersion int32, blockStateData []byte) BlockTranslator { + blockTranslatorsMu.RLock() + if translator, ok := blockTranslators[protocolVersion]; ok { + blockTranslatorsMu.RUnlock() + return translator + } + blockTranslatorsMu.RUnlock() + + blockTranslatorsMu.Lock() + defer blockTranslatorsMu.Unlock() + + if translator, ok := blockTranslators[protocolVersion]; ok { + return translator + } + + blockMapping := mapping.NewBlockMapping(blockStateData) + ret := NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, blockVersion), chunk.NewBlockPaletteEncoding(blockMapping, blockVersion), false) + blockTranslators[protocolVersion] = ret + return ret +} + +// DowngradeLevelChunkPacket downgrades the given level chunk packet to the specified protocol version. +func DowngradeLevelChunkPacket(protocolVersion int32, pk *packet.LevelChunk) error { + blockTranslatorsMu.RLock() + translator, ok := blockTranslators[protocolVersion] + blockTranslatorsMu.RUnlock() + if !ok { + return fmt.Errorf("no block translator found for protocol version %d", protocolVersion) + } + + return translator.DowngradeLevelChunk(pk) +} diff --git a/legacyver/block_translator.go b/legacyver/block_translator.go index 95dd5c3..b7c2a38 100644 --- a/legacyver/block_translator.go +++ b/legacyver/block_translator.go @@ -4,7 +4,6 @@ import ( "bytes" _ "embed" - "github.com/akmalfairuz/legacy-version/internal" "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/mapping" "github.com/df-mc/dragonfly/server/block/cube" @@ -31,6 +30,10 @@ type BlockTranslator interface { DowngradeBlockPackets([]packet.Packet, *minecraft.Conn) (result []packet.Packet) // UpgradeBlockPackets upgrades the input block packets to the latest block packets. UpgradeBlockPackets([]packet.Packet, *minecraft.Conn) (result []packet.Packet) + // DowngradeLevelChunk downgrades the given LevelChunk packet to a legacy format. + DowngradeLevelChunk(*packet.LevelChunk) error + // BlockMapping returns the block mapping used by this translator. + BlockMapping() mapping.Block } type DefaultBlockTranslator struct { @@ -45,18 +48,18 @@ func NewBlockTranslator(mapping mapping.Block, latestMapping mapping.Block, pse return &DefaultBlockTranslator{mapping: mapping, latest: latestMapping, pse: pse, pe: pe, oldFormat: oldFormat} } -func (t *DefaultBlockTranslator) downgradeLevelChunkPacket(pk *packet.LevelChunk) error { +func (t *DefaultBlockTranslator) BlockMapping() mapping.Block { + return t.mapping +} + +func (t *DefaultBlockTranslator) DowngradeLevelChunk(pk *packet.LevelChunk) error { count := int(pk.SubChunkCount) if count == protocol.SubChunkRequestModeLimitless || count == protocol.SubChunkRequestModeLimited { return nil } buf := bytes.NewBuffer(pk.RawPayload) - writeBuf := internal.BufferPool.Get().(*bytes.Buffer) - defer func() { - writeBuf.Reset() - internal.BufferPool.Put(writeBuf) - }() + writeBuf := bytes.NewBuffer(nil) if !pk.CacheEnabled { c, err := chunk.NetworkDecode(t.latest.Air(), buf, count, false, world.Overworld.Range(), LatestNetworkPersistentEncoding, LatestBlockPaletteEncoding) if err != nil { @@ -76,12 +79,12 @@ func (t *DefaultBlockTranslator) downgradeLevelChunkPacket(pk *packet.LevelChunk countBorder, err := buf.ReadByte() if err != nil { pk.RawPayload = append(writeBuf.Bytes(), safeBytes...) - return nil + return err } borderBytes := make([]byte, countBorder) if _, err = buf.Read(borderBytes); err != nil { pk.RawPayload = append(writeBuf.Bytes(), safeBytes...) - return nil + return err } writeBuf.WriteByte(countBorder) writeBuf.Write(borderBytes) @@ -107,8 +110,17 @@ func (t *DefaultBlockTranslator) DowngradeBlockPackets(pks []packet.Packet, conn for _, pk := range pks { switch pk := pk.(type) { case *packet.LevelChunk: - _ = t.downgradeLevelChunkPacket(pk) + if !EnableChunkTranslation { + break + } + if err := t.DowngradeLevelChunk(pk); err != nil { + //fmt.Println(err) + break + } case *packet.SubChunk: + if !EnableChunkTranslation { + break + } r := world.Overworld.Range() if t.oldFormat { r = cube.Range{0, 255} @@ -147,25 +159,27 @@ func (t *DefaultBlockTranslator) DowngradeBlockPackets(pks []packet.Packet, conn pk.SubChunkEntries[i] = entry } } - case *packet.ClientCacheMissResponse: - r := world.Overworld.Range() - if t.oldFormat { - r = cube.Range{0, 255} - } - - for i, blob := range pk.Blobs { - buf := bytes.NewBuffer(blob.Payload) - ind := byte(0) - subChunk, err := chunk.DecodeSubChunk(t.latest.Air(), r, buf, &ind, chunk.NetworkEncoding, LatestNetworkPersistentEncoding, LatestBlockPaletteEncoding) - if err != nil { - // Has a possibility to be a biome, ignore then - continue - } - t.DowngradeSubChunk(subChunk) - - blob.Payload = append(chunk.EncodeSubChunk(subChunk, chunk.NetworkEncoding, t.pe, chunk.SubChunkVersion9, r, int(ind)), buf.Bytes()...) - pk.Blobs[i] = blob - } + //case *packet.ClientCacheMissResponse: + // if EnableChunkTranslation { + // r := world.Overworld.Range() + // if t.oldFormat { + // r = cube.Range{0, 255} + // } + // + // for i, blob := range pk.Blobs { + // buf := bytes.NewBuffer(blob.Payload) + // ind := byte(0) + // subChunk, err := chunk.DecodeSubChunk(t.latest.Air(), r, buf, &ind, chunk.NetworkEncoding, LatestNetworkPersistentEncoding, LatestBlockPaletteEncoding) + // if err != nil { + // // Has a possibility to be a biome, ignore then + // continue + // } + // t.DowngradeSubChunk(subChunk) + // + // blob.Payload = append(chunk.EncodeSubChunk(subChunk, chunk.NetworkEncoding, t.pe, chunk.SubChunkVersion9, r, int(ind)), buf.Bytes()...) + // pk.Blobs[i] = blob + // } + // } case *packet.UpdateSubChunkBlocks: for i, block := range pk.Blocks { block.BlockRuntimeID = t.DowngradeBlockRuntimeID(block.BlockRuntimeID) diff --git a/legacyver/v649.go b/legacyver/v649.go index 52b4bb2..20539e8 100644 --- a/legacyver/v649.go +++ b/legacyver/v649.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -25,12 +24,11 @@ var ( // New649 ... func New649(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList649, ItemVersion649) - blockMapping := mapping.NewBlockMapping(blockStateData649) - + blockTranslator := lookupOrCreateBlockTranslator(649, BlockVersion649, blockStateData649) return &Protocol{ ver: "1.20.60", id: proto.ID649, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion649), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion649), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v662.go b/legacyver/v662.go index 258d7d5..fa083e9 100644 --- a/legacyver/v662.go +++ b/legacyver/v662.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -25,12 +24,11 @@ var ( // New662 ... func New662(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList662, ItemVersion662) - blockMapping := mapping.NewBlockMapping(blockStateData662) - + blockTranslator := lookupOrCreateBlockTranslator(662, BlockVersion662, blockStateData662) return &Protocol{ ver: "1.20.70", id: proto.ID662, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion662), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion662), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v671.go b/legacyver/v671.go index cb51048..bd83485 100644 --- a/legacyver/v671.go +++ b/legacyver/v671.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -25,12 +24,11 @@ var ( // New671 ... func New671(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList671, ItemVersion671) - blockMapping := mapping.NewBlockMapping(blockStateData671) - + blockTranslator := lookupOrCreateBlockTranslator(671, BlockVersion671, blockStateData671) return &Protocol{ ver: "1.20.80", id: proto.ID671, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion671), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion671), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v685.go b/legacyver/v685.go index b8062dc..61061f0 100644 --- a/legacyver/v685.go +++ b/legacyver/v685.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -18,12 +17,11 @@ const ( // New685 uses same data as 686 func New685(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion685) - blockMapping := mapping.NewBlockMapping(blockStateData686) - + blockTranslator := lookupOrCreateBlockTranslator(685, BlockVersion685, blockStateData686) return &Protocol{ ver: "1.21.0", id: proto.ID685, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion685), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion685), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v686.go b/legacyver/v686.go index 9713b7e..25307e2 100644 --- a/legacyver/v686.go +++ b/legacyver/v686.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,12 +23,11 @@ var ( func New686(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion686) - blockMapping := mapping.NewBlockMapping(blockStateData686) - + blockTranslator := lookupOrCreateBlockTranslator(686, BlockVersion686, blockStateData686) return &Protocol{ ver: "1.21.2", id: proto.ID686, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion686), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion686), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v712.go b/legacyver/v712.go index e7ab4ae..7618324 100644 --- a/legacyver/v712.go +++ b/legacyver/v712.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,12 +23,11 @@ var ( func New712(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList712, ItemVersion712) - blockMapping := mapping.NewBlockMapping(blockStateData712) - + blockTranslator := lookupOrCreateBlockTranslator(712, BlockVersion712, blockStateData712) return &Protocol{ ver: "1.21.20", id: proto.ID712, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion712), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion712), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v729.go b/legacyver/v729.go index 322e09d..9f33734 100644 --- a/legacyver/v729.go +++ b/legacyver/v729.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,12 +23,11 @@ var ( func New729(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList729, ItemVersion729) - blockMapping := mapping.NewBlockMapping(blockStateData729) - + blockTranslator := lookupOrCreateBlockTranslator(729, BlockVersion729, blockStateData729) return &Protocol{ ver: "1.21.30", id: proto.ID729, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion729), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion729), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v748.go b/legacyver/v748.go index fd503df..0bb3afd 100644 --- a/legacyver/v748.go +++ b/legacyver/v748.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,12 +23,11 @@ var ( func New748(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList748, ItemVersion748) - blockMapping := mapping.NewBlockMapping(blockStateData748) - + blockTranslator := lookupOrCreateBlockTranslator(748, BlockVersion748, blockStateData748) return &Protocol{ ver: "1.21.40", id: proto.ID748, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion748), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion748), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v766.go b/legacyver/v766.go index 7d73daa..c9d49a8 100644 --- a/legacyver/v766.go +++ b/legacyver/v766.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,11 +23,11 @@ var ( func New766(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList766, ItemVersion766) - blockMapping := mapping.NewBlockMapping(blockStateData766) + blockTranslator := lookupOrCreateBlockTranslator(766, BlockVersion766, blockStateData766) return &Protocol{ ver: "1.21.50", id: proto.ID766, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion766), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion766), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v776.go b/legacyver/v776.go index 9c82f48..47b6ea6 100644 --- a/legacyver/v776.go +++ b/legacyver/v776.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,12 +23,11 @@ var ( func New776(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList776, ItemVersion776) - blockMapping := mapping.NewBlockMapping(blockStateData776) - + blockTranslator := lookupOrCreateBlockTranslator(776, BlockVersion776, blockStateData776) return &Protocol{ ver: "1.21.60", id: proto.ID776, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion776), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion776), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v786.go b/legacyver/v786.go index a963d99..ee7968d 100644 --- a/legacyver/v786.go +++ b/legacyver/v786.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -23,12 +22,12 @@ var ( ) func New786(dragonflyMapping bool) *Protocol { - itemMapping786 := mapping.NewItemMapping(requiredItemList786, ItemVersion786) - blockMapping786 := mapping.NewBlockMapping(blockStateData786) + itemMapping := mapping.NewItemMapping(requiredItemList786, ItemVersion786) + blockTranslator := lookupOrCreateBlockTranslator(786, BlockVersion786, blockStateData786) return &Protocol{ ver: "1.21.70", id: proto.ID786, - blockTranslator: NewBlockTranslator(blockMapping786, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping786, BlockVersion786), chunk.NewBlockPaletteEncoding(blockMapping786, BlockVersion786), false), - itemTranslator: NewItemTranslator(itemMapping786, itemMappingLatest(dragonflyMapping), blockMapping786, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v800.go b/legacyver/v800.go index a31df6c..79f8dcf 100644 --- a/legacyver/v800.go +++ b/legacyver/v800.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,11 +23,11 @@ var ( func New800(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList800, ItemVersion800) - blockMapping := mapping.NewBlockMapping(blockStateData800) + blockTranslator := lookupOrCreateBlockTranslator(800, BlockVersion800, blockStateData800) return &Protocol{ ver: "1.21.80", id: proto.ID800, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion800), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion800), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v818.go b/legacyver/v818.go index 10f79ee..f61aca5 100644 --- a/legacyver/v818.go +++ b/legacyver/v818.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,11 +23,11 @@ var ( func New818(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList818, ItemVersion818) - blockMapping := mapping.NewBlockMapping(blockStateData818) + blockTranslator := lookupOrCreateBlockTranslator(818, BlockVersion818, blockStateData818) return &Protocol{ ver: "1.21.90", id: proto.ID818, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion818), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion818), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } diff --git a/legacyver/v819.go b/legacyver/v819.go index ff6a53f..34a1369 100644 --- a/legacyver/v819.go +++ b/legacyver/v819.go @@ -3,7 +3,6 @@ package legacyver import ( _ "embed" - "github.com/akmalfairuz/legacy-version/internal/chunk" "github.com/akmalfairuz/legacy-version/legacyver/proto" "github.com/akmalfairuz/legacy-version/mapping" ) @@ -24,11 +23,11 @@ var ( func New819(dragonflyMapping bool) *Protocol { itemMapping := mapping.NewItemMapping(requiredItemList819, ItemVersion819) - blockMapping := mapping.NewBlockMapping(blockStateData819) + blockTranslator := lookupOrCreateBlockTranslator(819, BlockVersion819, blockStateData819) return &Protocol{ ver: "1.21.90", id: proto.ID819, - blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion819), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion819), false), - itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest), + blockTranslator: blockTranslator, + itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockTranslator.BlockMapping(), blockMappingLatest), } } From 99a7495fc24d22c1e7a32c64d063205b10726274 Mon Sep 17 00:00:00 2001 From: Akmal Fairuz <35138228+AkmalFairuz@users.noreply.github.com> Date: Sat, 23 Aug 2025 14:31:57 +0700 Subject: [PATCH 3/5] initialize blockTranslators --- legacyver/all.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/legacyver/all.go b/legacyver/all.go index 2e6d5c4..7e1c49c 100644 --- a/legacyver/all.go +++ b/legacyver/all.go @@ -14,7 +14,7 @@ var ( EnableChunkTranslation = true blockTranslatorsMu sync.RWMutex - blockTranslators map[int32]BlockTranslator + blockTranslators = make(map[int32]BlockTranslator) ) // All returns a slice of all legacy protocol versions that are supported. dragonflyMapping From bb157beb0370e4fb7e5ca8f0354eb9613440e9ed Mon Sep 17 00:00:00 2001 From: AkmalFairuz Date: Thu, 2 Oct 2025 15:22:28 +0700 Subject: [PATCH 4/5] 1.21.111 support --- go.mod | 11 +- go.sum | 14 + ...1_1.21.50.29_beta_to_1.21.100.23_beta.json | 12 + legacyver/all.go | 1 + legacyver/data/block_states_844.nbt | Bin 0 -> 2156052 bytes legacyver/data/required_item_list_844.json | 9511 +++++++++++++++++ legacyver/legacypacket/game_rules_changed.go | 31 + legacyver/legacypacket/packet.go | 1 - .../legacypacket/player_armour_damage.go | 86 +- legacyver/legacypacket/start_game.go | 2 +- legacyver/proto/biome.go | 53 +- legacyver/proto/id.go | 1 + legacyver/protocol.go | 24 +- legacyver/v766.go | 2 +- legacyver/v776.go | 2 +- legacyver/v786.go | 2 +- legacyver/v800.go | 2 +- legacyver/v818.go | 2 +- legacyver/v819.go | 2 +- legacyver/v827.go | 21 +- legacyver/v844.go | 34 + 21 files changed, 9715 insertions(+), 99 deletions(-) create mode 100644 internal/item/schemas/0241_1.21.50.29_beta_to_1.21.100.23_beta.json create mode 100644 legacyver/data/block_states_844.nbt create mode 100644 legacyver/data/required_item_list_844.json create mode 100644 legacyver/legacypacket/game_rules_changed.go delete mode 100644 legacyver/legacypacket/packet.go create mode 100644 legacyver/v844.go diff --git a/go.mod b/go.mod index 031a6f1..e9c1e92 100644 --- a/go.mod +++ b/go.mod @@ -10,24 +10,25 @@ require ( github.com/pelletier/go-toml v1.9.5 github.com/rogpeppe/go-internal v1.14.1 github.com/samber/lo v1.49.1 - github.com/sandertv/gophertunnel v1.49.0 + github.com/sandertv/gophertunnel v1.50.0 github.com/segmentio/fasthash v1.0.3 golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b golang.org/x/image v0.25.0 - golang.org/x/oauth2 v0.30.0 + golang.org/x/oauth2 v0.31.0 ) require ( github.com/brentp/intintmap v0.0.0-20190211203843-30dc0ade9af9 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/df-mc/goleveldb v1.1.9 // indirect + github.com/df-mc/jsonc v1.0.5 // indirect github.com/go-jose/go-jose/v4 v4.1.2 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/muhammadmuzzammil1998/jsonc v1.0.0 // indirect github.com/sandertv/go-raknet v1.14.3-0.20250305181847-6af3e95113d6 // indirect - golang.org/x/crypto v0.41.0 // indirect + golang.org/x/crypto v0.42.0 // indirect golang.org/x/mod v0.27.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/text v0.29.0 // indirect ) diff --git a/go.sum b/go.sum index 1e1e577..9e0d8c4 100644 --- a/go.sum +++ b/go.sum @@ -18,6 +18,8 @@ github.com/df-mc/dragonfly v0.10.6-0.20250817203556-60bcf6b7432b h1:i3nfD4EFsuIZ github.com/df-mc/dragonfly v0.10.6-0.20250817203556-60bcf6b7432b/go.mod h1:1B3NiEGWj0S9U4QlsL58HPvnmgPlaFCm/pCVWdnrMH0= 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.18 h1:Q34X9ID/hGuDyj9oiq+dpyjOaJdNxhVmVUepf/EPYDA= github.com/df-mc/worldupgrader v1.0.18/go.mod h1:tsSOLTRm9mpG7VHvYpAjjZrkRHWmSbKZAm9bOLNnlDk= github.com/df-mc/worldupgrader v1.0.19 h1:BnwRe/lVv9IhwRWZK5olvTYNTKWh7rhFdqNPDMnoKFM= @@ -78,6 +80,10 @@ github.com/sandertv/gophertunnel v1.48.1 h1:+DleZznxkYugxEIEFAKN4JDfYSv/zm6//MfY github.com/sandertv/gophertunnel v1.48.1/go.mod h1:lmRarAmn25V/+QeiUbUDXeA26bEaNlX1wGEM/rj39ew= github.com/sandertv/gophertunnel v1.49.0 h1:9FIl4GGYMrFTmBPgkOTUskGWRQHIg4NMpY8JdM6SrCg= github.com/sandertv/gophertunnel v1.49.0/go.mod h1:lmRarAmn25V/+QeiUbUDXeA26bEaNlX1wGEM/rj39ew= +github.com/sandertv/gophertunnel v1.49.2-0.20251001025512-8f35332755bf h1:bqPdup6V7GyCDsHt7OODSFEhdVR5D8f3ZnavYBA++R4= +github.com/sandertv/gophertunnel v1.49.2-0.20251001025512-8f35332755bf/go.mod h1:WjTvUo02TmvPULY1y5oxxAhZIeH8ew31/LUkSUD6ABw= +github.com/sandertv/gophertunnel v1.50.0 h1:uoXQBWOD823T8snohPjIkFo+pcYrlIalEmcY2S1FUPM= +github.com/sandertv/gophertunnel v1.50.0/go.mod h1:WjTvUo02TmvPULY1y5oxxAhZIeH8ew31/LUkSUD6ABw= 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.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= @@ -92,6 +98,8 @@ golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= @@ -125,10 +133,14 @@ golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= @@ -145,6 +157,8 @@ golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= diff --git a/internal/item/schemas/0241_1.21.50.29_beta_to_1.21.100.23_beta.json b/internal/item/schemas/0241_1.21.50.29_beta_to_1.21.100.23_beta.json new file mode 100644 index 0000000..a35dbc4 --- /dev/null +++ b/internal/item/schemas/0241_1.21.50.29_beta_to_1.21.100.23_beta.json @@ -0,0 +1,12 @@ +{ + "remappedMetas": { + "minecraft:spawn_egg": { + "147": "minecraft:happy_ghast_spawn_egg", + "148": "minecraft:copper_golem_spawn_egg" + } + }, + "renamedIds": { + "minecraft:record_lava_chicken": "minecraft:music_disc_lava_chicken", + "minecraft:record_tears": "minecraft:music_disc_tears" + } +} \ No newline at end of file diff --git a/legacyver/all.go b/legacyver/all.go index 7e1c49c..be7867e 100644 --- a/legacyver/all.go +++ b/legacyver/all.go @@ -21,6 +21,7 @@ var ( // must be set to true if you're using Dragonfly. func All(dragonflyMapping bool) []minecraft.Protocol { return []minecraft.Protocol{ + New827(dragonflyMapping), New819(dragonflyMapping), New818(dragonflyMapping), New800(dragonflyMapping), diff --git a/legacyver/data/block_states_844.nbt b/legacyver/data/block_states_844.nbt new file mode 100644 index 0000000000000000000000000000000000000000..e7f8bd7113599dae83f3bd3514c4a4d6468f0445 GIT binary patch literal 2156052 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

8Leb5PLzzH0>12ixif(2Y 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 T&Lz}kTrAVv+@QPXc Date: Thu, 2 Oct 2025 15:23:29 +0700 Subject: [PATCH 5/5] Add support for protocol version 1.21.111 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1e8a94f..5a78a4a 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ A gophertunnel protocol interface implementation to support older Minecraft Bedr ## Supported Versions | Protocol ID | Version | Support | |-------------|----------|---------| +| 844 | 1.21.111 | ✅ | | 827 | 1.21.100 | ✅ | | 819 | 1.21.93 | ✅ | | 818 | 1.21.90 | ✅ |