Add DowngradeLevelChunkPacket

This commit is contained in:
AkmalFairuz
2025-08-23 08:41:20 +07:00
parent d9d8b0bc75
commit 2bb1292e03
18 changed files with 144 additions and 101 deletions

View File

@@ -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)
}

View File

@@ -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)

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}

View File

@@ -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),
}
}