Identica

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: refuse

rules

Takesa 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:

  1. a rule naming provider ids on more sides beats one naming fewer;
  2. then a rule naming guarantees on more sides beats one naming fewer;
  3. then a rule that also names a trigger or arrivedVia beats 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.

guarantees

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.

providers

Takesa list of provider ids, such as [premium], in any case

Affectswhich providers the side may stand on

rules[].trigger

TakesFIRST_JOIN or PROVIDER_RENAME

Affectswhich situation the rule applies to

Leave it out for both. See When a conflict comes up.

rules[].arrivedVia

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.

rules[].outcome

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

OutcomeEffect
refuseThe joining player is refused with pipeline.policy.taken; the holder keeps the name.
rename-arrivingThe holder keeps the name; the joining player's account gets a renamed one.
rename-holderThe 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_HOLDER

outcomes and providers

An outcome's settings come from three places, each stating only what it changes:

  1. the rule's with, which wins;
  2. providers.<provider>.<outcome>, for the provider of the account the outcome renames: the holder's for rename-holder, the joining player's for the others;
  3. outcomes.<outcome>, which Identica writes with the outcome's defaults.
providers:
  credential:
    rename-holder:
      pattern: "{username}_offline"

pattern

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.

tooLong

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.

taken

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.

holderOnline

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_USERNAME want 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 with rename-holder's settings for its provider. On the holder's next join, the provider's new name for it goes through the rules as a PROVIDER_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

pipeline.policy.taken

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>"

On this page