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Принимаетсписок правил
Влияет накакой исход решает конфликт
Правило без условий — наименее конкретное: оно решает всё, что не решает ни одно другое правило.
Какое правило применяется
Из правил, подходящих к конфликту, побеждает самое конкретное:
- правило, называющее id провайдеров для большего числа сторон, сильнее правила, называющего их для меньшего;
- затем правило, называющее гарантии для большего числа сторон, сильнее правила, называющего их для меньшего;
- затем правило, которое дополнительно задаёт
triggerилиarrivedVia, сильнее правила без них.
Из одинаково конкретных правил побеждает первое в списке. Если два одинаково конкретных правила могут подойти к одному конфликту, но решают его по-разному, консоль предупреждает об этом при запуске и перезагрузке, потому что второе там никогда не применится. Если не подходит ни одно правило, входящему игроку отказывают.
rules[].arriving и rules[].holder
Что правило требует от провайдера заходящего игрока и от провайдера держателя. Не указывайте сторону, чтобы принять любую.
Принимаетсписок гарантий, например [OWNED_USERNAME]
Влияет нана каких провайдерах может стоять сторона
Провайдер должен иметь ровно эти гарантии: [] требует провайдера без гарантий, например Credential. Не указывайте поле, чтобы принять любого провайдера. OWNED_USERNAME — гарантия провайдеров, которые владеют никами своих игроков, например Premium.
Принимаетсписок id провайдеров, например [premium], в любом регистре
Влияет нана каких провайдерах может стоять сторона
ПринимаетFIRST_JOIN или PROVIDER_RENAME
Влияет нак какой ситуации относится правило
Не указывайте, чтобы правило относилось к обеим. См. Когда возникает конфликт.
Принимаетпричину, по которой был выбран провайдер заходящего игрока, например HOSTNAME
Влияет наотносится ли правило только к игрокам, попавшим к провайдеру таким путём
HOSTNAME означает, что игрок зашёл через одну из entrypoints провайдера. Не указывайте, чтобы принять любую причину.
Принимаетid исхода, например rename-holder, или { id: ..., with: { ... } }, чтобы изменить часть его настроек только для этого правила
Влияет накак решается конфликт
| Исход | Действие |
|---|---|
refuse | Заходящему игроку отказывают с сообщением pipeline.policy.taken; держатель сохраняет ник. |
rename-arriving | Держатель сохраняет ник; аккаунт заходящего игрока получает новый. |
rename-holder | Аккаунт заходящего игрока получает ник; держатель получает новый. |
Аддоны и провайдеры могут добавлять собственные исходы; их id появляются в outcomes. Правило, называющее несуществующий исход, выводится в консоль как ошибка при запуске и перезагрузке и вместо этого отказывает заходящему игроку.
outcome:
id: rename-holder
with:
holderOnline: KICK_HOLDERoutcomes и providers
Настройки исхода берутся из трёх мест, и каждое указывает только то, что меняет:
withправила — оно побеждает;providers.<provider>.<outcome>— для провайдера аккаунта, который исход переименовывает: держателя дляrename-holder, заходящего игрока для остальных;outcomes.<outcome>— Identica записывает туда значения исхода по умолчанию.
providers:
credential:
rename-holder:
pattern: "{username}_offline"Принимаетстроку
По умолчанию"{username}_{provider}"
Влияет нановый ник у rename-holder и rename-arriving
{username} — переименовываемый ник, {provider} — id провайдера переименовываемого аккаунта. Символы, которые Minecraft не допускает в нике, то есть всё, кроме букв, цифр и _, отбрасываются.
ПринимаетSHORTEN или REFUSE
По умолчаниюSHORTEN
Влияет начто происходит, если новый ник длиннее 16 символов, допустимых в Minecraft
SHORTEN укорачивает исходный ник, пока результат не поместится: Christopherson становится Chris_credential. REFUSE вместо этого отказывает заходящему игроку, и держатель сохраняет ник.
ПринимаетNUMBER или REFUSE
По умолчаниюNUMBER
Влияет начто происходит, если новым ником уже владеет другой аккаунт
NUMBER добавляет число от 2 до 9, например Steve_credential2, и отказывает заходящему игроку, если заняты все. REFUSE отказывает сразу.
Принимает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
Сообщения применяются во всех сценариях.
Принимаетсписок строк
Влияет насообщение, которое показывается, когда Identica не удаётся обновить ник аккаунта
Принимаетсписок строк
Влияет насообщение, с которым игроку отказывают, когда так решают правила конфликтов
{username} — ник, который хотел игрок.
Принимаетсписок строк
Влияет насообщение, с которым отключают держателя в сети при 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>"