Безопасная batch registration addon content
✅ Source verified 🧰 Creator helper
Регистрировать двадцать объектов по одному — много boilerplate и легко пропустить partial failure.
Creator API Political World даёт helpers:
RegisterIdeologies(...)RegisterGovernments(...)RegisterActions(...)RegisterRarePoliticalEvents(...)Result object
Заголовок раздела «Result object»Проверенный source возвращает:
public sealed class BatchRegistrationResult{ public int Requested; public int Registered; public List<string> FailedIds;
public bool AllSucceeded { get; }}var result = PoliticalWorldAPI.RegisterIdeologies( AddonId, new[] { ideologyA, ideologyB, ideologyC });
if (!result.AllSucceeded){ foreach (string failedId in result.FailedIds) { LogWarning("Failed ideology: " + failedId); }}Partial success сохраняется
Заголовок раздела «Partial success сохраняется»Один failed item не превращается в exception, который отменяет все предыдущие success.
Для каждого definition:
Requested++try registration success → Registered++ failure → FailedIds.Add(id)Thrown exception считается failure конкретного item.
Зачем это нужно
Заголовок раздела «Зачем это нужно»Автор должен различать:
requested 20registered 19failed 1и:
register everything returned falseПервый вариант даёт полезную диагностику.
Batch registration не является transaction
Заголовок раздела «Batch registration не является transaction»Проверенный helper не откатывает уже зарегистрированный content, если более поздний definition не прошёл.
Поэтому:
AllSucceeded == falseможет означать, что большая часть content уже успешно зарегистрирована.
Если нужны all-or-nothing semantics, сначала валидируйте весь набор или делайте explicit rollback через поддерживаемые API.
Stable IDs в FailedIds
Заголовок раздела «Stable IDs в FailedIds»Failed content ID:
YourName.MyAddon.technocracyнамного полезнее:
item 17Stable IDs удобно искать в логах человеку и ИИ.
Общий вывод
Заголовок раздела «Общий вывод»Bulk creator API должен возвращать structured partial result:
- requested;
- successful;
- failed stable IDs;
- при возможности diagnostic codes/reasons.
Так большие content packs намного легче поддерживать.