optimize registry insertion

This commit is contained in:
Tnze
2024-06-16 02:22:10 +08:00
parent 19945a6d0b
commit bbb19c38b7
3 changed files with 26 additions and 37 deletions

View File

@ -35,16 +35,21 @@ func (r *Registry[E]) FindByID(id int32) *E {
}
func (r *Registry[E]) Insert(name string, data E) {
r.Value = append(r.Value, Entry[E]{Name: name, Element: data})
entry := Entry[E]{
Name: name,
ID: int32(len(r.Value)),
Element: data,
}
r.Value = append(r.Value, entry)
}
func (r *Registry[E]) InsertNBT(name string, data nbt.RawMessage) error {
entry := Entry[E]{Name: name, ID: int32(len(r.Value))}
func (r *Registry[E]) InsertWithNBT(name string, data nbt.RawMessage) error {
var elem E
if data.Type != 0 {
if err := data.UnmarshalDisallowUnknownField(&entry.Element); err != nil {
if err := data.UnmarshalDisallowUnknownField(&elem); err != nil {
return err
}
}
r.Value = append(r.Value, entry)
r.Insert(name, elem)
return nil
}