Both Treasury and Business store overlapping player data (login times, UUID↔name mapping) in separate tables. Consolidate into one economy_players table and backfill.
Technical notes — Business owns firm_players (FirmPlayerMapper: uuid↔name cache, touched by FirmPlayerCreationEventListener on login); Treasury owns player_login_times (PlayerLoginMapper: last-login epoch). Neither stores both. Add an economy-schema migration (V<n>__economy_players.sql — schema changes go there) for a unified economy_players(player_uuid_bin, current_name, name_lower, first_seen, last_seen, last_login_epoch); point both mappers at it (Treasury owns the writer, business reads), then drop the old tables. Cross-plugin coordination required.
Code context — Two overlapping tables in the shared economy schema: business's
firm_players(FirmPlayerMapper: uuid↔name cache, touched byFirmPlayerCreationEventListeneron login) and Treasury'splayer_login_times(PlayerLoginMapper: last-login epoch). Neither stores both.Approach: new
economy-schemamigration (V<n>__economy_players.sql— schema changes go there) for a unifiedeconomy_players(player_uuid_bin, current_name, name_lower, first_seen, last_seen, last_login_epoch); point both mappers at it, Treasury owns the writer, business reads, then drop the old tables. Cross-plugin coordination required.