- Add ImportLocation/ImportMap read-only accessors to BaseSpawner.Json.cs exposing _jsonLocation/_jsonMap for the importer post-STJ-deserialization. - Rewrite ImportJsonSpawners to deserialize List<BaseSpawner> directly via SpawnerJsonSerializer.Options (polymorphic on $type), eliminating DynamicJson + AssemblyHandler.FindTypeByName + CreateInstance<ISpawner>. - Enforce cleanup contract: every deserialized spawner (registered in World at Map.Internal by STJ) is either MoveToWorld'd or Delete()'d — map==null/ Internal guard Deletes, inner catch Deletes on placement failure. - Add internal ImportFile seam for testability (from=null safe; only used in JsonException path which valid files never hit). - Add ImportCleanupTests: valid placement, no-map orphan rejected, duplicate location replaced — all with rigorous finally cleanup. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Application | ||
| BuildTool | ||
| Logger | ||
| Server | ||
| Server.Tests | ||
| UOContent | ||
| UOContent.Tests | ||