Identica
3.0.1Modular next-gen Minecraft authentication and identity plugin with pluggable providers
3.0.1latestFixes for Logins, Clusters and SQLitelast week Identica 3.0.1 fixes players left without a prompt or reason on the auth server, join restrictions and recognition that went stale across the proxies of a cluster, and SQLite keeping the rows of deleted accounts, old password hashes included.Upgrading
* Replace the plugin and provider jars; the configuration and the database need no changes from you. SQLite:* the first start deletes the rows that deleted accounts left behind, such as provider profiles and the Credential password history with its old password hashes. From then on SQLite deletes them with the account, like the other databases. <!-- release-notes:end -->Changelog
Fixes
* Authentication: Fixed two renames to one username at once failing with a storage error instead of reporting it taken ([#254](https://github.com/whereareiam/Identica/pull/254)) * Authentication: Fixed players getting no prompt while allowResume is off ([#240](https://github.com/whereareiam/Identica/pull/240)) * Commands: Fixed the 2FA reset reporting success for a unique id without an account ([#228](https://github.com/whereareiam/Identica/pull/228)) * Credential: Fixed passwords longer than 72 bytes failing registration with bcrypt ([#231](https://github.com/whereareiam/Identica/pull/231)) * Database: Fixed SQLite keeping rows of deleted accounts ([#251](https://github.com/whereareiam/Identica/pull/251)) * Migration: Fixed a move confirmed too late being reported as not pending instead of expired ([#235](https://github.com/whereareiam/Identica/pull/235)) * Recognition: Fixed a proxy recognising a player from an address their latest login no longer used ([#247](https://github.com/whereareiam/Identica/pull/247)) * Restriction: Fixed a lifted join restriction staying in force on the other proxies of a cluster ([#243](https://github.com/whereareiam/Identica/pull/243)) * Routing: Fixed players turned away by the completion server staying on the auth server without a reason ([#225](https://github.com/whereareiam/Identica/pull/225)) Full Changelog: https://github.com/whereareiam/Identica/compare/3.0.0...3…Support
If you need help with setup, configuration, or upgrades, join us on [Discord](https://discord.arcadeya.com). If you find a bug or want to suggest a feature, use [GitHub](https://github.com/whereareiam/Identica).3.0.0A more reliable Identicalast week Identica 3.0.0 fixes dozens of login, session and replication problems, reorganises the configuration into clear documents per area, and upgrades your 2.2.1 installation by itself on the first start.Highlights
Fewer ways for a login to go wrong.* Login progress stays with the connection that made it, so a second client under the same name can't take over a login in progress; while one connection logs in, others under its name are asked to try again shortly. Commands typed before their prompt are kept, authenticator codes work only once, and provider denials such as lockouts can't be bypassed through another provider. Sessions and replication hold up across proxies.* An account has one active session, and a crashed proxy's sessions end within 30 seconds. Two proxies writing the same login or session at the same moment no longer overwrite each other: the one that comes second disconnects its player with "Reconnect to try again." (engine.concurrentChangeKick). Prompts and registration work with Redis replication, and proxies sharing a database start and save together without failing. Configuration is split by area.* Settings, engine, routing, username conflicts and each feature have their own document, and files carry a version, so Identica upgrades them itself, starting with your 2.2.1 configuration and database. Usernames are unique without regard to case.* A player can't registeralicewhile an account holdsAlice, and a Credential player who registered asAliceand joins asalicelogs in to the same account, with its password and UUID. Conflict rules decide who keeps a name when, for example, a premium owner joins under a name a Credential account holds. Providers are picked more reliably.* A provider's hostname, a verified account link or a running migration decide the provider before name guesses do. Routing targets can follow the proxy's forced hosts, and Premium can detect premium clients by their profile (experimental, off by default). Statistics.* Next to bStats, Identica sends anonymous statistics and error reports to FastStats, including logins by provider, 2FA adoption and client versions. Player names, unique ids and addresses are never sent.Upgrading
Before the first start:* stop every proxy that uses the database and back up the database and the data directory. The first proxy to start brings both up to date. Versions:* Identica upgrades from 2.2.1 and newer. On an older installation, start 2.2.1 once first. MySQL 8.0.19 or newer is required; on an older server Identica stops before it changes any table. MariaDB has no minimum version. Configuration:* every setting, message and command you changed in 2.2.1 moves to the document that holds it now, and the files an upgrade changes are copied to.strata/backup/. * The provider files inproviders/Credential/andproviders/Premium/are not upgraded: a value whose name or place changed falls back to its default, so compare them with the provider pages. * Removed settings:connection.sessions.activeTtl(sessions now expire afterreplication.heartbeatTimeoutonce their proxy stops), a scenario'sadvanceLockTtl, and theadvanceBusyandpipelineKickmessages. The username synchronization failure is one message,pipeline.identity.synchronizationFailed, with the text of 2.2.1's authentication scenario. * An account has one session now, so the session concurrency policyALLOW_MULTIPLEno longer exists. The upgrade turns it intoREPLACE_EXISTING, in the settings and in a provider's session settings, so the newest login takes over; setREJECT_NEWto keep the first login instead. Usernames:* accounts that already share a name in two cases keep logging in through their own providers; the oldest holds the name. The console lists them on each start and/identica admin username duplicatesshows them; nothing has to be changed. */identica credential registeronly creates new accounts: it no longer links Credential to an existing account, and it refuses a name any account holds, in any case and through any provider, naming that account. The new account gets the UUID reserved for its name with/identica admin reservation set, so accounts moved from another plugin can keep their UUIDs. * The conflict rules of 2.2.1 (format_display) have no counterpart. Identica replaces them with the new default rules and deletesproviders/conflicts; set your own rules again in the new form. The messagespipeline.policy.conflictDeniedandpipeline.policy.entrypointRequiredare removed. Redis: delete the session keys of 2.2.1 before the first start (`identica:sessions:with the default key names), for example withredis-cli --scan --pattern 'identica:sessions:*' | xargs redis-cli del`. This version stores sessions differently. Redis ACL:* a Redis user with restricted commands needsevalshaandscriptas well, for the writes that only succeed over what was read. Statistics:* turn FastStats off inplugins/faststats/config.properties; the Statistics page lists what is sent.For addon developers
Access:*IdenticaAPIis an interface. Get it withIdenticaAPI.get(), orIdenticaAPI.whenReady(...)when your addon may start first:IdenticaAPI.getEventManager()becomesIdenticaAPI.get().getEventManager(),getService(...)becamefindService(...)returning anOptional, andgetPresenceService()becamegetIdentityService(). Startup:* Identica starts in phases, and aRuntimeLifecyclenames itsStartupPhase.IdenticaBootstrappedEventis called once the features have started;IdenticaReadyEventat the end, once providers are loaded and connections are handled. Usernames:* a username lives in its own table, read and changed throughAccountUsernamePersistenceService(find,findHolder,setSource,rename), which replacesAccountUsernameStatePersistenceService,AccountUsernameHistoryPersistenceServiceandAccountPersistenceService.updateUsername.AccountService.create,AccountPersistenceService.createandrenamereturn aUsernameWriteResult, andcreatetakes the username's source and provider.AccountUsernameDuplicatePersistenceServicelists shared names. Providers and conflicts:*ProviderTraitisProviderGuarantee, withOWNED_USERNAMEforAUTHORITATIVE_USERNAME, andProviderClaimOrigin.ENTRYPOINTisHOSTNAME. Conflicts are settled byConflictServicerules and registrableConflictOutcomes, which a provider adds throughIdenticaProvider.conflictOutcomes();UsernameAssignerreplacesUsernameConflictHandler, and the resolvers, guards and conflict types are gone. Sessions and logins:* an account has one session:SessionConcurrencyPolicy.ALLOW_MULTIPLEandSessionService.findAllByUniqueIdare gone.SessionService.openfails withConcurrentSessionChangeExceptionwhen another login of the account was opened in between.PipelineStateReferencenames a connection.UsernameHeldEventandLoginSupersededEventreport refused and superseded logins. </content> </invoke> Replication:*ReplicatedCachereads with a revision (read, returningVersioned) and writes or removes only over what was read (write,remove); aReplicationAdapterimplementscompareAndPutandcompareAndInvalidate.PipelineStateStore.savereturns whether it saved,clear(reference, read)clears only the state that was read, andupdateis gone. <!-- release-notes:end -->Changelog
What’s new
* Authentication: Introduced usernames unique without regard to case ([#201](https://github.com/whereareiam/Identica/pull/201)) * Configuration: Introduced upgrades of 2.2.1 configuration directories ([#196](https://github.com/whereareiam/Identica/pull/196)) * Database: Introduced upgrades of 2.2.1 databases ([#182](https://github.com/whereareiam/Identica/pull/182)) * Identity: Introduced username conflict rules on p2.2.1Premium Stays PremiumJun 29, 2026 This update focuses on authentication reliability for mixed premium and credential setups. Premium authentication now works consistently in both seamless and interactive flows, and fallback authentication preserves the correct provider context and result messages.What's Changed
Fixes
* Premium: allow premium authentication to complete correctly in seamless mode * Engine: preserve provider subject when switching to fallback providers * Engine: keep provider-specific fallback denial results instead of showing a generic authentication failure Full Changelog: https://github.com/whereareiam/Identica/compare/2.2.0...2…2.2.0Packed for EveryoneMay 25, 2026 Identica now ships as a universal plugin jar, simplifying installation and platform support. This update also brings minor command fixes and safer auth-skipping behavior.What's Changed
What’s new
* Platform: Introduce universal plugin jar by @whereareiam in https://github.com/whereareiam/Identica/pull/76Enhancements
* Command: Permission messages from commands are now showed without brackets by default by @whereareiam in https://github.com/whereareiam/Identica/pull/79Fixes
* Command: Ensure root aliases are registered properly by @whereareiam in https://github.com/whereareiam/Identica/pull/78 * Engine: block auth-skipping recognition on untrusted IPs by @whereareiam in https://github.com/whereareiam/Identica/pull/80 Full Changelog: https://github.com/whereareiam/Identica/compare/2.1.1...2…
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta