mapping: fixed custom item conversion (#4)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user