Перейти к содержимому

Регистрация addon через PoliticalWorldAPI

✅ Source verified Political World GitHub snapshot ce0c917 API source generation 1.9.0

До подписки на события и регистрации собственного контента addon должен зарегистрировать identity:

PoliticalWorldAPI.RegisterAddon(...)

Public definition:

public sealed class AddonDefinition
{
public string Id;
public string Name;
public string Version;
public string Description;
public string Author;
}

Минимальный пример:

private const string AddonId = "YourName.MyAddon";
bool ok = PoliticalWorldAPI.RegisterAddon(
new PoliticalWorldAPI.AddonDefinition
{
Id = AddonId,
Name = "My Addon",
Version = "0.1.0",
Author = "YourName",
Description = "Example addon"
}
);

В проверенном source валидируется:

  • ID не пустой;
  • длина от 3 до 96 символов;
  • разрешены буквы, цифры, ., _, -;
  • первый и последний символ — буква или цифра;
  • core ID Lous12.PoliticalWorld зарезервирован;
  • duplicate addon ID отклоняется;
  • Name обязателен.

Отсутствие . namespace separator сейчас создаёт warning, а не hard failure.

Рекомендуемый формат:

AuthorOrOrg.ProjectName

Например:

YourName.MyPoliticalAddon

Обычный порядок:

1. Проверить API compatibility.
2. RegisterAddon.
3. При необходимости проверить capabilities.
4. Зарегистрировать localization/content/events/actions.
5. Вывести diagnostics.

Именно такой порядок используется в repository getting-started example.

Political World проверяет, что content ID принадлежит namespace зарегистрированного addon.

Примеры:

YourName.MyAddon.technocracy
YourName.MyAddon:event_palace_crisis
YourName.MyAddon_action_example

В проверенном validation после addon ID принимаются ownership separators:

.
:
_

У конкретного content type могут быть дополнительные правила.

Без ownership check addon A мог бы зарегистрировать:

OtherAddon.some_content

Получаем collisions, сломанные migrations и непонятные diagnostics.

Public registry должен уметь ответить:

Кто владеет этим content ID?

Успешный RegisterAddon создаёт diagnostics state и записывает:

PWDIAG001

То есть registration становится наблюдаемой support tooling.

API предоставляет:

PoliticalWorldAPI.IsAddonRegistered(addonId)
PoliticalWorldAPI.GetAddon(addonId)
PoliticalWorldAPI.GetRegisteredAddons()

Публичные методы возвращают копии DTO, а не дают напрямую mutable internal registry entry.

Addon ID нельзя считать просто красивым названием.

Он может стать частью:

  • content IDs;
  • localization keys;
  • addon-private kingdom data namespaces;
  • tags;
  • diagnostics;
  • save-compatible references.

Позднее переименование может потребовать migration.

Addon framework должен сначала установить identity, а уже потом принимать контент.

Identity даёт устойчивую единицу для:

  • ownership;
  • diagnostics;
  • collision prevention;
  • правил;
  • migrations;
  • capabilities;
  • support reports.