Repository navigation
fix: property model and brick by brick fixes - #2041
Open
aronwk-aaron wants to merge 6 commits into
Open
aronwk-aaron wants to merge 6 commits into
aronwk-aaron wants to merge 6 commits into
Conversation
The bitstreams sent are usually on the sender's stack, so the pointer it kept was dangling once Send returned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The client's PlaceModelResponse::Deserialize (0x00dc0170) reads the rotation as an optional w, x, y, z quaternion, but the server wrote the 4-byte response after the rotation flag, so with any rotation other than identity the client ran out of data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The model info window sends UpdatePropertyOrModelForFilterCheck with isProperty false (client 0x00cc42e0); only the property editor sends it true (0x00c2e710). A model's name and description aren't stored yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A brick built model item's config has blueprintid (lowercase), which the saved item XML didn't keep (only blueprintID), so a picked up model lost its blueprint on the next load and could not be placed again. It is now saved as bp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The client makes the mutable model component, which reads the behaviors and editing info, only when the object's config has propertyObjectID or inInventory (ObjectLoader2::LoadModelBehaviorsComponent); every other model gets the plain one, which reads only the model block. Writing the behaviors for every model made the client read them as the next component's data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LWOInventoryComponent_Common::msgUpdateInventoryGroup (0x00c955b0) and msgUpdateInventoryGroupContents (0x00ce1f50) look the inventory type up in m_VaultToPlayerInventory first, which maps VAULT_MODELS to MODELS. The server refused group updates for the model vault. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
reviewed code myself and tested locally |
aronwk-aaron
marked this pull request as ready for review
October 17, 2026 01:43
aronwk-aaron
commented
Oct 17, 2026
EmosewaMC
approved these changes
Oct 24, 2026
2 of 6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On behalf of @aronwk-aaron (written by Claude).
Small fixes for property models and brick by brick, each checked against the 1.10.64 client.
PlaceModelResponse::Deserialize(0x00dc0170) reads the rotation as an optional w, x, y, z quaternion, but the server wrote the 4-byte response after the rotation flag, so any model placed with a rotation other than identity sent a message the client ran out of data reading.UpdatePropertyOrModelForFilterCheckwithisPropertyfalse (client 0x00cc42e0); only the property editor sends it true (0x00c2e710). Storing a model's name and description is a follow-up.blueprintidconfig of a brick built model item wasn't saved in the item XML, so a picked up model couldn't be placed again after a reload.propertyObjectIDorinInventory(ObjectLoader2::LoadModelBehaviorsComponent); for other models it read those bits as the next component's data.VAULT_MODELStoMODELSfor groups (m_VaultToPlayerInventory); the server refused group updates from the vault.🤖 Generated with Claude Code