fix(entity): models get their item component, as the client makes it

The client makes the registry's item component for models too (only a pet takes it away); DLU skipped it and the model component wrote the item block itself, for the 30 model LOTs without an item row as well, and with the object id as ug_id. Live (Raven Bluff property capture): the item block carries the userModelID for brick built models (LOT 14) and 0 for reward models (LOT 8069). 1,455 LOTs gain the item component; nothing else changes (LoaderSnapshotTest).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-10-01 06:27:36 -05:00
parent b2192e158c
commit cc337a298d
4 changed files with 33 additions and 18 deletions

View File

@@ -131,14 +131,7 @@ void ModelComponent::Resume() {
}
void ModelComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) {
// ItemComponent Serialization. Pets do not get this serialization.
if (!m_Parent->HasComponent(eReplicaComponentType::PET)) {
outBitStream.Write1();
outBitStream.Write<LWOOBJID>(m_userModelID != LWOOBJID_EMPTY ? m_userModelID : m_Parent->GetObjectID());
outBitStream.Write<int>(0);
outBitStream.Write0();
}
// The item block in front of it is the ItemComponent's (the client makes one from the registry)
//actual model component:
outBitStream.Write1(); // Yes we are writing model info
outBitStream.Write(m_NumListeningInteract > 0); // Is pickable