identity/username/
Every setting of identity/username/conflicts.yml and identity/username/messages.yml.
identity/username/conflicts.yml holds the rules that settle two accounts wanting one username, and identity/username/messages.yml what players see when it happens. Usernames and conflicts explains when a conflict comes up and what the default rules do.
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: refuseTakesa list of rules
Affectswhich outcome settles a conflict
A rule without conditions is the least specific one and settles everything no other rule does.
Which rule applies
Of the rules that apply to a conflict, the most specific one wins:
- a rule naming provider ids on more sides beats one naming fewer;
- then a rule naming guarantees on more sides beats one naming fewer;
- then a rule that also names a
triggerorarrivedViabeats one that does not.
Among equally specific rules, the first one in the list wins. When two equally specific rules can apply to the same conflict but settle it differently, the console warns on start and on reload, because the second one never applies there. When no rule applies, the arriving player is refused.
rules[].arriving and rules[].holder
What the rule asks of the joining player's provider and of the holder's provider. Leave a side out to accept any.
Takesa list of guarantees, such as [OWNED_USERNAME]
Affectswhich providers the side may stand on
The provider must have exactly these guarantees: [] asks for a provider that guarantees nothing, such as Credential. Leave the field out to accept any provider. OWNED_USERNAME is the guarantee of providers that own their players' names, such as Premium.
Takesa list of provider ids, such as [premium], in any case
Affectswhich providers the side may stand on
TakesFIRST_JOIN or PROVIDER_RENAME
Affectswhich situation the rule applies to
Leave it out for both. See When a conflict comes up.
Takeswhy the joining player's provider was picked, such as HOSTNAME
Affectswhether the rule applies only to players who reached their provider that way
HOSTNAME means the player joined through one of the provider's entrypoints. Leave it out for any reason.
Takesan outcome id, such as rename-holder, or { id: ..., with: { ... } } to change some of its settings for this rule only
Affectshow the conflict is settled
| Outcome | Effect |
|---|---|
refuse | The joining player is refused with pipeline.policy.taken; the holder keeps the name. |
rename-arriving | The holder keeps the name; the joining player's account gets a renamed one. |
rename-holder | The joining player's account gets the name; the holder gets a renamed one. |
Addons and providers may add outcomes of their own; their ids appear under outcomes. A rule naming an outcome that does not exist is reported as an error in the console on start and on reload, and refuses the joining player instead.
outcome:
id: rename-holder
with:
holderOnline: KICK_HOLDERoutcomes and providers
An outcome's settings come from three places, each stating only what it changes:
- the rule's
with, which wins; providers.<provider>.<outcome>, for the provider of the account the outcome renames: the holder's forrename-holder, the joining player's for the others;outcomes.<outcome>, which Identica writes with the outcome's defaults.
providers:
credential:
rename-holder:
pattern: "{username}_offline"Takesa string
Default"{username}_{provider}"
Affectsthe renamed username of rename-holder and rename-arriving
{username} is the username being renamed and {provider} the id of the renamed account's provider. Characters Minecraft does not allow in a username, anything but letters, digits and _, are left out.
TakesSHORTEN or REFUSE
DefaultSHORTEN
Affectswhat happens when the renamed username is longer than Minecraft's 16 characters
SHORTEN shortens the original username until the result fits: Christopherson becomes Chris_credential. REFUSE refuses the joining player instead, and the holder keeps the name.
TakesNUMBER or REFUSE
DefaultNUMBER
Affectswhat happens when another account holds the renamed username
NUMBER adds a number from 2 to 9, such as Steve_credential2, and refuses the joining player when all of them are held. REFUSE refuses at once.
TakesKEEP_PLAYING or KICK_HOLDER
DefaultKEEP_PLAYING
Affectswhat rename-holder does with a holder who is online
With KEEP_PLAYING, the holder keeps playing under the name until leaving and plays under the renamed name from the next join on. Both stored names change at once, so the joining player plays this session under a name made with the same rename-holder settings, such as Steve_premium, and under the name itself from their next join on, once the holder has left.
With KICK_HOLDER, the holder is disconnected with pipeline.policy.holderReplaced, so the name is free from then on. The proxy names the joining player while the holder is still connected, so the joining player also plays this first session under a name made with these settings.
Names made without a rule
Identica uses the rename-holder settings in two cases no rule decides:
- Two accounts of the same provider with
OWNED_USERNAMEwant one name, so the holder's name is outdated: the holder was renamed at the provider and has not joined since. The current owner gets the name, and the holder a name made withrename-holder's settings for its provider. On the holder's next join, the provider's new name for it goes through the rules as aPROVIDER_RENAME. - Another player on this proxy still plays under the account's username, such as a holder renamed while online who has not left yet. The player plays this session under a name made with
rename-holder's settings for the player's provider.
messages.yml
The messages apply to every scenario.
Takesa list of lines
Affectsthe message shown when Identica cannot update the account's username
Takesa list of lines
Affectsthe message a player is refused with when the conflict rules refuse them
{username} is the username the player wanted.
Takesa list of lines
Affectsthe message an online holder is disconnected with under holderOnline: KICK_HOLDER
{username} is the username the holder lost and {renamed} the one they play under from the next join on.
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>"