From 199c1628b189d04cfc658ddb4eefca905057e7dc Mon Sep 17 00:00:00 2001 From: Doge Date: Thu, 6 Feb 2025 05:10:47 +0300 Subject: [PATCH 1/2] protocol.go: override server packets (#3) --- legacyver/protocol.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/legacyver/protocol.go b/legacyver/protocol.go index 98fae62..d1fd5fc 100644 --- a/legacyver/protocol.go +++ b/legacyver/protocol.go @@ -20,6 +20,10 @@ func init() { for pkId, cur := range packetPoolClient { packetPoolClient[pkId] = convertPacketFunc(pkId, cur) } + + for pkId, cur := range packetPoolServer { + packetPoolServer[pkId] = convertPacketFunc(pkId, cur) + } } func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packet { From 2672b73e4a7373e603ded20d4c31023e75d1b6cb Mon Sep 17 00:00:00 2001 From: Doge Date: Thu, 6 Feb 2025 07:24:49 +0300 Subject: [PATCH 2/2] mapping: fixed custom item conversion (#4) --- legacyver/item_translator.go | 4 ++-- mapping/item.go | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/legacyver/item_translator.go b/legacyver/item_translator.go index a77a880..03aef62 100644 --- a/legacyver/item_translator.go +++ b/legacyver/item_translator.go @@ -498,7 +498,7 @@ func (t *DefaultItemTranslator) DowngradeItemPackets(pks []packet.Packet, _ *min panic(itemType) } } else { - t.latest.RegisterEntry(entry.Name) + t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID)) entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) } pk.Items[i] = entry @@ -717,7 +717,7 @@ func (t *DefaultItemTranslator) UpgradeItemPackets(pks []packet.Packet, _ *minec panic(itemType) } } else { - t.latest.RegisterEntry(entry.Name) + t.latest.RegisterEntryRID(entry.Name, int32(entry.RuntimeID)) entry.RuntimeID = int16(t.mapping.RegisterEntry(entry.Name)) } pk.Items[i] = entry diff --git a/mapping/item.go b/mapping/item.go index e3babde..4ec7d86 100644 --- a/mapping/item.go +++ b/mapping/item.go @@ -12,6 +12,7 @@ type Item interface { // ItemNameToRuntimeID converts a string ID to an item runtime ID. ItemNameToRuntimeID(string) (int32, bool) RegisterEntry(string) int32 + RegisterEntryRID(string, int32) Air() int32 ItemVersion() uint16 } @@ -96,6 +97,15 @@ func (m *DefaultItemMapping) RegisterEntry(name string) int32 { return nextRID } +func (m *DefaultItemMapping) RegisterEntryRID(name string, rid int32) { + defer m.mu.Unlock() + m.mu.Lock() + if _, ok := m.itemNamesToRuntimeIDs[name]; !ok { + m.itemNamesToRuntimeIDs[name] = rid + m.itemRuntimeIDsToNames[rid] = name + } +} + func (m *DefaultItemMapping) Air() int32 { defer m.mu.Unlock() m.mu.Lock()