Refactor item mapping to use dragonflyMapping parameter and remove deleteDebugStick references

This commit is contained in:
AkmalFairuz
2025-07-02 21:53:13 +07:00
parent 0abc5c3694
commit 9b6ddc51fd
16 changed files with 86 additions and 76 deletions

View File

@@ -4,22 +4,21 @@ import (
"github.com/sandertv/gophertunnel/minecraft"
)
// All returns a slice of all legacy protocol versions that are supported. deleteDebugStick
// must be set to true if you're using Dragonfly. deleteDebugStick must be set to false if you're using
// PocketMine, Nukkit, or other server software that includes the debug stick in the item registry.
func All(deleteDebugStick bool) []minecraft.Protocol {
// All returns a slice of all legacy protocol versions that are supported. dragonflyMapping
// must be set to true if you're using Dragonfly.
func All(dragonflyMapping bool) []minecraft.Protocol {
return []minecraft.Protocol{
New800(deleteDebugStick),
New786(deleteDebugStick),
New776(deleteDebugStick),
New766(deleteDebugStick),
New748(deleteDebugStick),
New729(deleteDebugStick),
New712(deleteDebugStick),
New686(deleteDebugStick),
New685(deleteDebugStick),
New671(deleteDebugStick),
New662(deleteDebugStick),
New649(deleteDebugStick),
New800(dragonflyMapping),
New786(dragonflyMapping),
New776(dragonflyMapping),
New766(dragonflyMapping),
New748(dragonflyMapping),
New729(dragonflyMapping),
New712(dragonflyMapping),
New686(dragonflyMapping),
New685(dragonflyMapping),
New671(dragonflyMapping),
New662(dragonflyMapping),
New649(dragonflyMapping),
}
}

Binary file not shown.

View File

@@ -22,14 +22,14 @@ var (
)
// New649 ...
func New649(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList649, ItemVersion649, deleteDebugStick)
func New649(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList649, ItemVersion649)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -22,14 +22,14 @@ var (
)
// New662 ...
func New662(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList662, ItemVersion662, deleteDebugStick)
func New662(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList662, ItemVersion662)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -22,14 +22,14 @@ var (
)
// New671 ...
func New671(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList671, ItemVersion671, deleteDebugStick)
func New671(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList671, ItemVersion671)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -15,14 +15,14 @@ const (
)
// New685 uses same data as 686
func New685(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion685, deleteDebugStick)
func New685(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion685)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,14 +21,14 @@ var (
blockStateData686 []byte
)
func New686(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion686, deleteDebugStick)
func New686(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion686)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,14 +21,14 @@ var (
blockStateData712 []byte
)
func New712(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList712, ItemVersion712, deleteDebugStick)
func New712(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList712, ItemVersion712)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,14 +21,14 @@ var (
blockStateData729 []byte
)
func New729(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList729, ItemVersion729, deleteDebugStick)
func New729(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList729, ItemVersion729)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,14 +21,14 @@ var (
blockStateData748 []byte
)
func New748(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList748, ItemVersion748, deleteDebugStick)
func New748(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList748, ItemVersion748)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,13 +21,13 @@ var (
blockStateData766 []byte
)
func New766(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList766, ItemVersion766, deleteDebugStick)
func New766(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList766, ItemVersion766)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,14 +21,14 @@ var (
blockStateData776 []byte
)
func New776(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList776, ItemVersion776, deleteDebugStick)
func New776(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList776, ItemVersion776)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -21,13 +21,13 @@ var (
blockStateData786 []byte
)
func New786(deleteDebugStick bool) *Protocol {
itemMapping786 := mapping.NewItemMapping(requiredItemList786, ItemVersion786, deleteDebugStick)
func New786(dragonflyMapping bool) *Protocol {
itemMapping786 := mapping.NewItemMapping(requiredItemList786, ItemVersion786)
blockMapping786 := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping786, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping786, itemMappingLatest(dragonflyMapping), blockMapping786, blockMappingLatest),
}
}

View File

@@ -21,13 +21,13 @@ var (
blockStateData800 []byte
)
func New800(deleteDebugStick bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList800, ItemVersion800, deleteDebugStick)
func New800(dragonflyMapping bool) *Protocol {
itemMapping := mapping.NewItemMapping(requiredItemList800, ItemVersion800)
blockMapping := mapping.NewBlockMapping(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(deleteDebugStick), blockMapping, blockMappingLatest),
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(dragonflyMapping), blockMapping, blockMappingLatest),
}
}

View File

@@ -3,6 +3,7 @@ package legacyver
import (
_ "embed"
"github.com/akmalfairuz/legacy-version/mapping"
"github.com/sandertv/gophertunnel/minecraft/nbt"
)
const (
@@ -17,15 +18,33 @@ var (
requiredItemList818 []byte
//go:embed data/block_states_818.nbt
blockStateData818 []byte
//go:embed data/dragonfly_latest_vanilla_items.nbt
dragonflyLatestVanillaItemsRaw []byte
itemMappingLatestWithDebugStick = mapping.NewItemMapping(requiredItemList818, ItemVersion818, false)
itemMappingLatestWithoutDebugStick = mapping.NewItemMapping(requiredItemList818, ItemVersion818, true)
blockMappingLatest = mapping.NewBlockMapping(blockStateData818)
itemMappingLatestPocketMine = mapping.NewItemMapping(requiredItemList818, ItemVersion818)
itemMappingLatestDragonfly = mapping.NewItemMapping(requiredItemList818, ItemVersion818)
blockMappingLatest = mapping.NewBlockMapping(blockStateData818)
)
func itemMappingLatest(deleteDebugStick bool) mapping.Item {
if deleteDebugStick {
return itemMappingLatestWithoutDebugStick
func init() {
var m map[string]struct {
RuntimeID int32 `nbt:"runtime_id"`
ComponentBased bool `nbt:"component_based"`
Version int32 `nbt:"version"`
Data map[string]any `nbt:"data,omitempty"`
}
if err := nbt.Unmarshal(dragonflyLatestVanillaItemsRaw, &m); err != nil {
panic(err)
}
for identifier, v := range m {
itemMappingLatestDragonfly.SetItemRuntimeID(identifier, v.RuntimeID)
}
return itemMappingLatestWithDebugStick
}
func itemMappingLatest(dragonflyMapping bool) mapping.Item {
if dragonflyMapping {
return itemMappingLatestDragonfly
}
return itemMappingLatestPocketMine
}