You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
2bc4340ec9
FurniEditorUpdateFurnidataEvent (10046) was edit-only: FurnidataWriter.write() refuses classnames absent from furnidata, so a furni with no entry showed the DB-fallback name with locked fields and "Classname not found". Make it an upsert: - FurnidataWriter.create(): append a complete entry (JSON5-preserving, atomic + backup) into the matching roomitemtypes/wallitemtypes furnitype array; guards against duplicate classname (ALREADY_EXISTS) and id collision (ID_COLLISION); split-tier writes to items.furnidata.create_tier (default "custom", file created with a shell if absent), single-file writes to the source. - FurnidataEntryBuilder: build the complete entry from the item's items_base row (id = sprite id, classname, type-driven section, xdim/ydim, canstandon/ cansiton/canlayon, name/desc, sane defaults matching existing entries). - Handler: on write()==false, load the Item, build + create the entry, map CreateResult to a precise message; then the existing reindex + 10047 broadcast + public_name mirror run for both paths; audit action is "create" vs "edit". No renderer change, no new packet. Pairs with the client unlocking name/desc when the entry is missing (separate Nitro-V3 change).