Trayitem files are used to hold Lot metadata that is used by the Sims 4. It is essentially a serialized Protobuf file, and uses VarInt to store numbers. An example dump of a trayitem file is as follows (incomplete):
Loading ./tray/0x00000002!0x023801bb9522020d.trayitem Lot name: String (9): Rivendell Lot Description: String (165): #fantasy #elven houses in a nice #green #valley with #waterfall, #slope, #stream, #cave, #bridge and different charateristic rooms. NO CC, MOO used. By Artrui @ MTS Creator UUID: VarInt: 2474641876 Creator Name: String (9): Blumenrui Favourites: VarInt: 0 Downloads: VarInt: 0 Unknown: string(14) "01dfc608220a6f" Lot Width: VarInt: 40 Lot Height: VarInt: 30 Lot Price Category (Low to High): VarInt: 6 Lot Value (Price Value): VarInt: 776843 Number of Bedrooms: VarInt: 3 Number of Bathrooms: VarInt: 4 Architecture Value: VarInt: 370593 Num Thumbnails: VarInt: 7 Front Side Thumbnail: VarInt: 0 Unknown2: VarInt: 4239733099 Unknown3: VarInt: 4
Full specification to follow.
Uint32 (0x00) Uint32 (Bytes Until EOF) Byte (0x08) * Byte (Changing this single byte = unreadable by the game. Perhaps a checksum?) Byte (0xC7) (0xB4) - (0x80) (0x94) Byte (0x80) (0x94) (0xB8) (0xE4) (0x8C) (0x98) (0xD0) (Above 2 bytes: Combinations seen) 80 98 80 94 80 D0 80 B8 80 98 - Nothing on lot 80 FC - Tags 80 E4 - 1 trait 80 D8 - 1 trait + Tags 80 E0 - All 3 traits 80 F4 - 1 trait Byte (Varies) Byte x 4 (92 AB C2 F5) (B9 B7 80 9C) (9C AB C2 9F) (AC AB C2 B9) (A6 AB C2 A9) Byte x 1 (0F) (02) (08) Byte x 2 (10 02) Byte (10) (1A) Byte x 4 (10 00 00 00) Byte x 13 (0x00) Byte (0x22) Byte (Length) Byte x Length (String) - Lot Name Byte (0x2A) Byte (Length) Byte x Length (String) - Lot Description Byte (0x30) - Creators UUID Byte x 5 Seen: (F3 B9 A8 B1 08) (DD 80 E9 E4 8D) Byte (0x3A) Byte (Length) Byte x Length (String) - Creators Name Byte (0x40) - Favourites Byte (0x00)? Byte (0x48) - Downloads Byte (0x00)? Byte (0x52) Byte x 3 Seen: 34 0A 20 36 0A 22 3E 0A 20 3E 0A 2A 46 0A 32 4E 0A 3A 51 0A 3A Byte x 4 (0x 08 C6 DF 01) Byte (0x10) Byte (Lot Width) Seen: 0x1E 0x28 Byte (0x18) Byte (Lot Height) Seen: 0x14 0x1E Byte (0x20) - Lot Price Category (1 - 6) aka Price Level Byte (0x01)? Byte (0x28) - Lot Value aka Price Value Byte Seen: 0x32 (0xB4 01) (0x8B B5 2F) Byte (0x30) Byte Number of bedrooms Byte (0x38) Byte Number of bathrooms Byte (0x40) Can be multiple bytes! - Architecture Value Byte Seen (0x3C) (0xB4 01) (0x00) (0x A1 CF 16) Byte (0x48) Num Thumbnails Byte Seen 0x03 0x04 Byte (0x50) Front side Byte Seen 0x03 Byte (0x58) Venue type? + Groud floor index? Byte x 5 (EB E2 D4 E5 0F) Byte (0x60) Byte (0x02) (Optional) Byte 0x72 Byte x 9 (Trait requirements) Seen: 18 1E 33 02 00 00 00 00 00 10 1E 33 02 00 00 00 00 00 08 1E 33 02 00 00 00 00 00 18 00 7B 02 00 00 00 00 00 1F 33 02 00 00 00 00 00 18 1A 33 02 00 00 00 00 00 19 33 02 00 00 00 00 00 Byte x 6 (Building type?) 78 00 20 00 2B 00) Byte (0x42) Byte 00 (Tags length) (If tagLength > 0) Then read string of tags Byte x 4 (0x50 10 58 00) Byte (0x60) Byte x 3 Seen: (0xC1 A8 09 ) (0xC0 EB 06) (0x AA B0 04) (0xBC B0 04) Byte x 4 (CB or C9) (CB 3E 9E 28) (CB 3E 9E 28) (C8 3E 9E 28) (Optional?) Byte 0x58 * Byte x 2 (These 2 vary on same lot saved twice) Byte (AC) Byte x 3 (A3 ED 01) (80 CA 04) Bytes x 9 88 01 00 A0 01 00 AB 01 00