package appearances // Appearance represents a single appearance with ID, name, and client version requirements type Appearance struct { id int32 // Appearance ID name string // Appearance name minClient int16 // Minimum client version required } // NewAppearance creates a new appearance with the given parameters func NewAppearance(id int32, name string, minClientVersion int16) *Appearance { if len(name) == 0 { return nil } return &Appearance{ id: id, name: name, minClient: minClientVersion, } } // GetID returns the appearance ID func (a *Appearance) GetID() int32 { return a.id } // GetName returns the appearance name func (a *Appearance) GetName() string { return a.name } // GetMinClientVersion returns the minimum client version required func (a *Appearance) GetMinClientVersion() int16 { return a.minClient } // GetNameString returns the name as a string (alias for GetName for C++ compatibility) func (a *Appearance) GetNameString() string { return a.name } // SetName sets the appearance name func (a *Appearance) SetName(name string) { a.name = name } // SetMinClientVersion sets the minimum client version func (a *Appearance) SetMinClientVersion(version int16) { a.minClient = version } // IsCompatibleWithClient returns true if the appearance is compatible with the given client version func (a *Appearance) IsCompatibleWithClient(clientVersion int16) bool { return clientVersion >= a.minClient } // Clone creates a copy of the appearance func (a *Appearance) Clone() *Appearance { return &Appearance{ id: a.id, name: a.name, minClient: a.minClient, } }