Identica

identity/username/

Все настройки identity/username/conflicts.yml и identity/username/messages.yml.

identity/username/conflicts.yml содержит правила, которые решают, что делать, когда два аккаунта хотят один ник, а identity/username/messages.yml — то, что при этом видят игроки. Когда возникает конфликт и что делают правила по умолчанию, описано в разделе Ники и конфликты.

conflicts.yml

outcomes:
  rename-holder:
    pattern: "{username}_{provider}"
    tooLong: SHORTEN
    taken: NUMBER
    holderOnline: KEEP_PLAYING
  rename-arriving:
    pattern: "{username}_{provider}"
    tooLong: SHORTEN
    taken: NUMBER
  refuse: {}
providers: {}
rules:
  - arriving: { guarantees: [OWNED_USERNAME] }
    holder: { guarantees: [] }
    trigger: FIRST_JOIN
    outcome: rename-holder
  - arriving: { guarantees: [OWNED_USERNAME] }
    holder: { guarantees: [] }
    trigger: PROVIDER_RENAME
    outcome: rename-arriving
  - arriving: { guarantees: [] }
    outcome: refuse
  - outcome: refuse

rules

Принимаетсписок правил

Влияет накакой исход решает конфликт

Правило без условий — наименее конкретное: оно решает всё, что не решает ни одно другое правило.

Какое правило применяется

Из правил, подходящих к конфликту, побеждает самое конкретное:

  1. правило, называющее id провайдеров для большего числа сторон, сильнее правила, называющего их для меньшего;
  2. затем правило, называющее гарантии для большего числа сторон, сильнее правила, называющего их для меньшего;
  3. затем правило, которое дополнительно задаёт trigger или arrivedVia, сильнее правила без них.

Из одинаково конкретных правил побеждает первое в списке. Если два одинаково конкретных правила могут подойти к одному конфликту, но решают его по-разному, консоль предупреждает об этом при запуске и перезагрузке, потому что второе там никогда не применится. Если не подходит ни одно правило, входящему игроку отказывают.

rules[].arriving и rules[].holder

Что правило требует от провайдера заходящего игрока и от провайдера держателя. Не указывайте сторону, чтобы принять любую.

guarantees

Принимаетсписок гарантий, например [OWNED_USERNAME]

Влияет нана каких провайдерах может стоять сторона

Провайдер должен иметь ровно эти гарантии: [] требует провайдера без гарантий, например Credential. Не указывайте поле, чтобы принять любого провайдера. OWNED_USERNAME — гарантия провайдеров, которые владеют никами своих игроков, например Premium.

providers

Принимаетсписок id провайдеров, например [premium], в любом регистре

Влияет нана каких провайдерах может стоять сторона

rules[].trigger

ПринимаетFIRST_JOIN или PROVIDER_RENAME

Влияет нак какой ситуации относится правило

Не указывайте, чтобы правило относилось к обеим. См. Когда возникает конфликт.

rules[].arrivedVia

Принимаетпричину, по которой был выбран провайдер заходящего игрока, например HOSTNAME

Влияет наотносится ли правило только к игрокам, попавшим к провайдеру таким путём

HOSTNAME означает, что игрок зашёл через одну из entrypoints провайдера. Не указывайте, чтобы принять любую причину.

rules[].outcome

Принимаетid исхода, например rename-holder, или { id: ..., with: { ... } }, чтобы изменить часть его настроек только для этого правила

Влияет накак решается конфликт

ИсходДействие
refuseЗаходящему игроку отказывают с сообщением pipeline.policy.taken; держатель сохраняет ник.
rename-arrivingДержатель сохраняет ник; аккаунт заходящего игрока получает новый.
rename-holderАккаунт заходящего игрока получает ник; держатель получает новый.

Аддоны и провайдеры могут добавлять собственные исходы; их id появляются в outcomes. Правило, называющее несуществующий исход, выводится в консоль как ошибка при запуске и перезагрузке и вместо этого отказывает заходящему игроку.

outcome:
  id: rename-holder
  with:
    holderOnline: KICK_HOLDER

outcomes и providers

Настройки исхода берутся из трёх мест, и каждое указывает только то, что меняет:

  1. with правила — оно побеждает;
  2. providers.<provider>.<outcome> — для провайдера аккаунта, который исход переименовывает: держателя для rename-holder, заходящего игрока для остальных;
  3. outcomes.<outcome> — Identica записывает туда значения исхода по умолчанию.
providers:
  credential:
    rename-holder:
      pattern: "{username}_offline"

pattern

Принимаетстроку

По умолчанию"{username}_{provider}"

Влияет нановый ник у rename-holder и rename-arriving

{username} — переименовываемый ник, {provider} — id провайдера переименовываемого аккаунта. Символы, которые Minecraft не допускает в нике, то есть всё, кроме букв, цифр и _, отбрасываются.

tooLong

ПринимаетSHORTEN или REFUSE

По умолчаниюSHORTEN

Влияет начто происходит, если новый ник длиннее 16 символов, допустимых в Minecraft

SHORTEN укорачивает исходный ник, пока результат не поместится: Christopherson становится Chris_credential. REFUSE вместо этого отказывает заходящему игроку, и держатель сохраняет ник.

taken

ПринимаетNUMBER или REFUSE

По умолчаниюNUMBER

Влияет начто происходит, если новым ником уже владеет другой аккаунт

NUMBER добавляет число от 2 до 9, например Steve_credential2, и отказывает заходящему игроку, если заняты все. REFUSE отказывает сразу.

holderOnline

ПринимаетKEEP_PLAYING или KICK_HOLDER

По умолчаниюKEEP_PLAYING

Влияет начто делает rename-holder с держателем, который сейчас в сети

С KEEP_PLAYING держатель играет под ником, пока не выйдет, и со следующего входа играет под новым. Оба сохранённых ника меняются сразу, поэтому заходящий игрок в этой сессии играет под ником, составленным по тем же настройкам rename-holder, например Steve_premium, а под самим ником — со следующего входа, когда держатель уже вышел.

С KICK_HOLDER держателя отключают с сообщением pipeline.policy.holderReplaced, и с этого момента ник свободен. Прокси называет заходящего игрока, пока держатель ещё подключён, поэтому и здесь заходящий игрок проводит первую сессию под ником, составленным по этим настройкам.

Ники без правила

Identica использует настройки rename-holder в двух случаях, которые не решает ни одно правило:

  • Два аккаунта одного провайдера с OWNED_USERNAME хотят один ник, значит, ник держателя устарел: провайдер переименовал держателя, а тот с тех пор не заходил. Ник получает его нынешний владелец, а держатель — ник по настройкам rename-holder для своего провайдера. При следующем входе держателя новый ник от провайдера проходит через правила как PROVIDER_RENAME.
  • На этом прокси под ником аккаунта ещё играет другой игрок, например держатель, которого переименовали, пока он был в сети, и который ещё не вышел. Тогда игрок в этой сессии играет под ником по настройкам rename-holder для своего провайдера.

messages.yml

Сообщения применяются во всех сценариях.

pipeline.identity.synchronizationFailed

Принимаетсписок строк

Влияет насообщение, которое показывается, когда Identica не удаётся обновить ник аккаунта

pipeline.policy.taken

Принимаетсписок строк

Влияет насообщение, с которым игроку отказывают, когда так решают правила конфликтов

{username} — ник, который хотел игрок.

pipeline.policy.holderReplaced

Принимаетсписок строк

Влияет насообщение, с которым отключают держателя в сети при holderOnline: KICK_HOLDER

{username} — ник, который держатель потерял, {renamed} — ник, под которым он играет со следующего входа.

pipeline:
  policy:
    taken:
      - "<red>{username} is taken, please join with another name.</red>"
    holderReplaced:
      - "<yellow>The owner of {username} has joined. Join again to play as {renamed}.</yellow>"

На этой странице