Add deleteDebugStick parameter to fix broken item translation in dragonfly
This commit is contained in:
@@ -28,7 +28,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
listener, err := minecraft.ListenConfig{
|
listener, err := minecraft.ListenConfig{
|
||||||
StatusProvider: p,
|
StatusProvider: p,
|
||||||
AcceptedProtocols: legacyver.All(),
|
AcceptedProtocols: legacyver.All(false),
|
||||||
}.Listen("raknet", config.Connection.LocalAddress)
|
}.Listen("raknet", config.Connection.LocalAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|||||||
@@ -4,20 +4,22 @@ import (
|
|||||||
"github.com/sandertv/gophertunnel/minecraft"
|
"github.com/sandertv/gophertunnel/minecraft"
|
||||||
)
|
)
|
||||||
|
|
||||||
// All returns a slice of all legacy protocol versions that are supported.
|
// All returns a slice of all legacy protocol versions that are supported. deleteDebugStick
|
||||||
func All() []minecraft.Protocol {
|
// 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 {
|
||||||
return []minecraft.Protocol{
|
return []minecraft.Protocol{
|
||||||
New800(),
|
New800(deleteDebugStick),
|
||||||
New786(),
|
New786(deleteDebugStick),
|
||||||
New776(),
|
New776(deleteDebugStick),
|
||||||
New766(),
|
New766(deleteDebugStick),
|
||||||
New748(),
|
New748(deleteDebugStick),
|
||||||
New729(),
|
New729(deleteDebugStick),
|
||||||
New712(),
|
New712(deleteDebugStick),
|
||||||
New686(),
|
New686(deleteDebugStick),
|
||||||
New685(),
|
New685(deleteDebugStick),
|
||||||
New671(),
|
New671(deleteDebugStick),
|
||||||
New662(),
|
New662(deleteDebugStick),
|
||||||
New649(),
|
New649(deleteDebugStick),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ func (t *DefaultBlockTranslator) DowngradeBlockPackets(pks []packet.Packet, conn
|
|||||||
pk.EntityMetadata = t.downgradeEntityMetadata(pk.EntityMetadata)
|
pk.EntityMetadata = t.downgradeEntityMetadata(pk.EntityMetadata)
|
||||||
}
|
}
|
||||||
case *packet.SetActorData:
|
case *packet.SetActorData:
|
||||||
pk.EntityMetadata = t.downgradeEntityMetadata(pk.EntityMetadata)
|
//pk.EntityMetadata = t.downgradeEntityMetadata(pk.EntityMetadata)
|
||||||
case *packet.StartGame:
|
case *packet.StartGame:
|
||||||
t.latest.Adjust(pk.Blocks)
|
t.latest.Adjust(pk.Blocks)
|
||||||
t.mapping.Adjust(pk.Blocks)
|
t.mapping.Adjust(pk.Blocks)
|
||||||
@@ -234,7 +234,7 @@ func (t *DefaultBlockTranslator) UpgradeBlockPackets(pks []packet.Packet, conn *
|
|||||||
pk.TransactionData = transactionData
|
pk.TransactionData = transactionData
|
||||||
}
|
}
|
||||||
case *packet.SetActorData:
|
case *packet.SetActorData:
|
||||||
pk.EntityMetadata = t.upgradeEntityMetadata(pk.EntityMetadata)
|
//pk.EntityMetadata = t.upgradeEntityMetadata(pk.EntityMetadata)
|
||||||
}
|
}
|
||||||
result = append(result, pk)
|
result = append(result, pk)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ type DefaultItemTranslator struct {
|
|||||||
ridToCustomItem map[int32]world.CustomItem
|
ridToCustomItem map[int32]world.CustomItem
|
||||||
originalToCustom map[int32]int32
|
originalToCustom map[int32]int32
|
||||||
customToOriginal map[int32]int32
|
customToOriginal map[int32]int32
|
||||||
|
hasDebugStick bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewItemTranslator(mapping mapping.Item, latestMapping mapping.Item, blockMapping mapping.Block, blockMappingLatest mapping.Block) *DefaultItemTranslator {
|
func NewItemTranslator(mapping mapping.Item, latestMapping mapping.Item, blockMapping mapping.Block, blockMappingLatest mapping.Block) *DefaultItemTranslator {
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// New649 ...
|
// New649 ...
|
||||||
func New649() *Protocol {
|
func New649(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList649, ItemVersion649)
|
itemMapping := mapping.NewItemMapping(requiredItemList649, ItemVersion649, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData649)
|
blockMapping := mapping.NewBlockMapping(blockStateData649)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.20.60",
|
ver: "1.20.60",
|
||||||
id: proto.ID649,
|
id: proto.ID649,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion649), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion649), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion649), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion649), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// New662 ...
|
// New662 ...
|
||||||
func New662() *Protocol {
|
func New662(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList662, ItemVersion662)
|
itemMapping := mapping.NewItemMapping(requiredItemList662, ItemVersion662, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData662)
|
blockMapping := mapping.NewBlockMapping(blockStateData662)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.20.70",
|
ver: "1.20.70",
|
||||||
id: proto.ID662,
|
id: proto.ID662,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion662), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion662), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion662), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion662), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// New671 ...
|
// New671 ...
|
||||||
func New671() *Protocol {
|
func New671(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList671, ItemVersion671)
|
itemMapping := mapping.NewItemMapping(requiredItemList671, ItemVersion671, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData671)
|
blockMapping := mapping.NewBlockMapping(blockStateData671)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.20.80",
|
ver: "1.20.80",
|
||||||
id: proto.ID671,
|
id: proto.ID671,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion671), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion671), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion671), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion671), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// New685 uses same data as 686
|
// New685 uses same data as 686
|
||||||
func New685() *Protocol {
|
func New685(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion685)
|
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion685, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData686)
|
blockMapping := mapping.NewBlockMapping(blockStateData686)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.0",
|
ver: "1.21.0",
|
||||||
id: proto.ID685,
|
id: proto.ID685,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion685), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion685), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion685), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion685), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,14 +21,14 @@ var (
|
|||||||
blockStateData686 []byte
|
blockStateData686 []byte
|
||||||
)
|
)
|
||||||
|
|
||||||
func New686() *Protocol {
|
func New686(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion686)
|
itemMapping := mapping.NewItemMapping(requiredItemList686, ItemVersion686, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData686)
|
blockMapping := mapping.NewBlockMapping(blockStateData686)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.2",
|
ver: "1.21.2",
|
||||||
id: proto.ID686,
|
id: proto.ID686,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion686), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion686), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion686), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion686), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,14 +21,14 @@ var (
|
|||||||
blockStateData712 []byte
|
blockStateData712 []byte
|
||||||
)
|
)
|
||||||
|
|
||||||
func New712() *Protocol {
|
func New712(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList712, ItemVersion712)
|
itemMapping := mapping.NewItemMapping(requiredItemList712, ItemVersion712, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData712)
|
blockMapping := mapping.NewBlockMapping(blockStateData712)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.20",
|
ver: "1.21.20",
|
||||||
id: proto.ID712,
|
id: proto.ID712,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion712), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion712), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion712), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion712), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,14 +21,14 @@ var (
|
|||||||
blockStateData729 []byte
|
blockStateData729 []byte
|
||||||
)
|
)
|
||||||
|
|
||||||
func New729() *Protocol {
|
func New729(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList729, ItemVersion729)
|
itemMapping := mapping.NewItemMapping(requiredItemList729, ItemVersion729, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData729)
|
blockMapping := mapping.NewBlockMapping(blockStateData729)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.30",
|
ver: "1.21.30",
|
||||||
id: proto.ID729,
|
id: proto.ID729,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion729), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion729), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion729), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion729), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,14 +21,14 @@ var (
|
|||||||
blockStateData748 []byte
|
blockStateData748 []byte
|
||||||
)
|
)
|
||||||
|
|
||||||
func New748() *Protocol {
|
func New748(deleteDebugStick bool) *Protocol {
|
||||||
itemMapping := mapping.NewItemMapping(requiredItemList748, ItemVersion748)
|
itemMapping := mapping.NewItemMapping(requiredItemList748, ItemVersion748, deleteDebugStick)
|
||||||
blockMapping := mapping.NewBlockMapping(blockStateData748)
|
blockMapping := mapping.NewBlockMapping(blockStateData748)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.40",
|
ver: "1.21.40",
|
||||||
id: proto.ID748,
|
id: proto.ID748,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion748), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion748), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion748), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion748), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest, blockMapping, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,16 +19,15 @@ var (
|
|||||||
requiredItemList766 []byte
|
requiredItemList766 []byte
|
||||||
//go:embed data/block_states_766.nbt
|
//go:embed data/block_states_766.nbt
|
||||||
blockStateData766 []byte
|
blockStateData766 []byte
|
||||||
|
|
||||||
itemMapping766 = mapping.NewItemMapping(requiredItemList766, ItemVersion766)
|
|
||||||
blockMapping766 = mapping.NewBlockMapping(blockStateData766)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func New766() *Protocol {
|
func New766(deleteDebugStick bool) *Protocol {
|
||||||
|
itemMapping := mapping.NewItemMapping(requiredItemList766, ItemVersion766, deleteDebugStick)
|
||||||
|
blockMapping := mapping.NewBlockMapping(blockStateData766)
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.50",
|
ver: "1.21.50",
|
||||||
id: proto.ID766,
|
id: proto.ID766,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping766, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping766, BlockVersion766), chunk.NewBlockPaletteEncoding(blockMapping766, BlockVersion766), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion766), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion766), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping766, itemMappingLatest, blockMapping766, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,16 +19,16 @@ var (
|
|||||||
requiredItemList776 []byte
|
requiredItemList776 []byte
|
||||||
//go:embed data/block_states_776.nbt
|
//go:embed data/block_states_776.nbt
|
||||||
blockStateData776 []byte
|
blockStateData776 []byte
|
||||||
|
|
||||||
itemMapping776 = mapping.NewItemMapping(requiredItemList776, ItemVersion776)
|
|
||||||
blockMapping776 = mapping.NewBlockMapping(blockStateData776)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func New776() *Protocol {
|
func New776(deleteDebugStick bool) *Protocol {
|
||||||
|
itemMapping := mapping.NewItemMapping(requiredItemList776, ItemVersion776, deleteDebugStick)
|
||||||
|
blockMapping := mapping.NewBlockMapping(blockStateData776)
|
||||||
|
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.60",
|
ver: "1.21.60",
|
||||||
id: proto.ID776,
|
id: proto.ID776,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping776, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping776, BlockVersion776), chunk.NewBlockPaletteEncoding(blockMapping776, BlockVersion776), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion776), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion776), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping776, itemMappingLatest, blockMapping776, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,16 +19,15 @@ var (
|
|||||||
requiredItemList786 []byte
|
requiredItemList786 []byte
|
||||||
//go:embed data/block_states_786.nbt
|
//go:embed data/block_states_786.nbt
|
||||||
blockStateData786 []byte
|
blockStateData786 []byte
|
||||||
|
|
||||||
itemMapping786 = mapping.NewItemMapping(requiredItemList786, ItemVersion786)
|
|
||||||
blockMapping786 = mapping.NewBlockMapping(blockStateData786)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func New786() *Protocol {
|
func New786(deleteDebugStick bool) *Protocol {
|
||||||
|
itemMapping786 := mapping.NewItemMapping(requiredItemList786, ItemVersion786, deleteDebugStick)
|
||||||
|
blockMapping786 := mapping.NewBlockMapping(blockStateData786)
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.70",
|
ver: "1.21.70",
|
||||||
id: proto.ID786,
|
id: proto.ID786,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping786, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping786, BlockVersion786), chunk.NewBlockPaletteEncoding(blockMapping786, BlockVersion786), false),
|
blockTranslator: NewBlockTranslator(blockMapping786, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping786, BlockVersion786), chunk.NewBlockPaletteEncoding(blockMapping786, BlockVersion786), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping786, itemMappingLatest, blockMapping786, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping786, itemMappingLatest(deleteDebugStick), blockMapping786, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,16 +19,15 @@ var (
|
|||||||
requiredItemList800 []byte
|
requiredItemList800 []byte
|
||||||
//go:embed data/block_states_800.nbt
|
//go:embed data/block_states_800.nbt
|
||||||
blockStateData800 []byte
|
blockStateData800 []byte
|
||||||
|
|
||||||
itemMapping800 = mapping.NewItemMapping(requiredItemList800, ItemVersion800)
|
|
||||||
blockMapping800 = mapping.NewBlockMapping(blockStateData800)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func New800() *Protocol {
|
func New800(deleteDebugStick bool) *Protocol {
|
||||||
|
itemMapping := mapping.NewItemMapping(requiredItemList800, ItemVersion800, deleteDebugStick)
|
||||||
|
blockMapping := mapping.NewBlockMapping(blockStateData800)
|
||||||
return &Protocol{
|
return &Protocol{
|
||||||
ver: "1.21.80",
|
ver: "1.21.80",
|
||||||
id: proto.ID800,
|
id: proto.ID800,
|
||||||
blockTranslator: NewBlockTranslator(blockMapping800, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping800, BlockVersion800), chunk.NewBlockPaletteEncoding(blockMapping800, BlockVersion800), false),
|
blockTranslator: NewBlockTranslator(blockMapping, blockMappingLatest, chunk.NewNetworkPersistentEncoding(blockMapping, BlockVersion800), chunk.NewBlockPaletteEncoding(blockMapping, BlockVersion800), false),
|
||||||
itemTranslator: NewItemTranslator(itemMapping800, itemMappingLatest, blockMapping800, blockMappingLatest),
|
itemTranslator: NewItemTranslator(itemMapping, itemMappingLatest(deleteDebugStick), blockMapping, blockMappingLatest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,14 @@ var (
|
|||||||
//go:embed data/block_states_818.nbt
|
//go:embed data/block_states_818.nbt
|
||||||
blockStateData818 []byte
|
blockStateData818 []byte
|
||||||
|
|
||||||
itemMappingLatest = mapping.NewItemMapping(requiredItemList818, ItemVersion818)
|
itemMappingLatestWithDebugStick = mapping.NewItemMapping(requiredItemList818, ItemVersion818, false)
|
||||||
blockMappingLatest = mapping.NewBlockMapping(blockStateData818)
|
itemMappingLatestWithoutDebugStick = mapping.NewItemMapping(requiredItemList818, ItemVersion818, true)
|
||||||
|
blockMappingLatest = mapping.NewBlockMapping(blockStateData818)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func itemMappingLatest(deleteDebugStick bool) mapping.Item {
|
||||||
|
if deleteDebugStick {
|
||||||
|
return itemMappingLatestWithDebugStick
|
||||||
|
}
|
||||||
|
return itemMappingLatestWithoutDebugStick
|
||||||
|
}
|
||||||
|
|||||||
@@ -43,17 +43,19 @@ type DefaultItemMapping struct {
|
|||||||
itemRuntimeIDToData map[int32]map[string]any
|
itemRuntimeIDToData map[int32]map[string]any
|
||||||
// itemEntries holds a map to translate item string IDs to runtime IDs.
|
// itemEntries holds a map to translate item string IDs to runtime IDs.
|
||||||
itemEntries []ItemEntry
|
itemEntries []ItemEntry
|
||||||
|
|
||||||
airRID int32
|
airRID int32
|
||||||
itemVersion uint16
|
itemVersion uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewItemMapping(requiredItemList []byte, itemVersion uint16) *DefaultItemMapping {
|
func NewItemMapping(requiredItemList []byte, itemVersion uint16, deleteDebugStick bool) *DefaultItemMapping {
|
||||||
itemRuntimeIDsToNames := make(map[int32]string)
|
itemRuntimeIDsToNames := make(map[int32]string)
|
||||||
itemNamesToRuntimeIDs := make(map[string]int32)
|
itemNamesToRuntimeIDs := make(map[string]int32)
|
||||||
itemRuntimeIDToVersion := make(map[int32]uint8)
|
itemRuntimeIDToVersion := make(map[int32]uint8)
|
||||||
itemRuntimeIDToData := make(map[int32]map[string]any)
|
itemRuntimeIDToData := make(map[int32]map[string]any)
|
||||||
itemEntries := make([]ItemEntry, 0, 1600)
|
itemEntries := make([]ItemEntry, 0, 1600)
|
||||||
var airRID *int32
|
var airRID *int32
|
||||||
|
var debugStickRID *int32
|
||||||
|
|
||||||
var m map[string]struct {
|
var m map[string]struct {
|
||||||
RuntimeID int16 `json:"runtime_id"`
|
RuntimeID int16 `json:"runtime_id"`
|
||||||
@@ -64,6 +66,22 @@ func NewItemMapping(requiredItemList []byte, itemVersion uint16) *DefaultItemMap
|
|||||||
if err := json.Unmarshal(requiredItemList, &m); err != nil {
|
if err := json.Unmarshal(requiredItemList, &m); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v, ok := m["minecraft:debug_stick"]; ok {
|
||||||
|
rid := int32(v.RuntimeID)
|
||||||
|
debugStickRID = &rid
|
||||||
|
}
|
||||||
|
|
||||||
|
if deleteDebugStick && debugStickRID != nil {
|
||||||
|
delete(m, "minecraft:debug_stick")
|
||||||
|
for name, data := range m {
|
||||||
|
if int32(data.RuntimeID) > *debugStickRID {
|
||||||
|
data.RuntimeID-- // Shift all runtime IDs down by 1
|
||||||
|
}
|
||||||
|
m[name] = data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for name, data := range m {
|
for name, data := range m {
|
||||||
rid := int32(data.RuntimeID)
|
rid := int32(data.RuntimeID)
|
||||||
if name == "minecraft:air" {
|
if name == "minecraft:air" {
|
||||||
|
|||||||
Reference in New Issue
Block a user