Skip to content

Add public playtime policy and lookup APIs - #48

Draft
remdui wants to merge 2 commits into
mainfrom
agent/playtime-dataregistry
Draft

Add public playtime policy and lookup APIs#48
remdui wants to merge 2 commits into
mainfrom
agent/playtime-dataregistry

Conversation

@remdui

@remdui remdui commented Jul 31, 2026

Copy link
Copy Markdown
Member

Summary

Adds the authoritative DataRegistry contract for the player-facing Playtime feature.

  • blocks physical backend patterns before server-to-gamemode mapping or unknown-server fallback
  • adds public query-blacklist policy separately from accrual and network-total policy
  • exposes immutable playtime catalog metadata and direct UUID/identifier snapshot lookups
  • applies one visibility policy to snapshots, profiles, tracked totals, leaderboards, and tracked-key discovery
  • preserves configured playtime lists and server rules in canonical config output
  • bumps the API/runtime version to 1.14.0

Configuration

playtime:
  blacklisted-server-patterns: []
  ignored-gamemodes: []
  query-blacklisted-gamemodes: []
  excluded-from-network-total-gamemodes: []
  server-gamemode-rules: []
  • blacklisted-server-patterns: matching physical servers never accrue playtime. Evaluated before mapping and fallback.
  • ignored-gamemodes: do not accrue and are omitted from public reads, including retained historical rows.
  • query-blacklisted-gamemodes: remain internally tracked but are omitted from every public playtime read and total.
  • excluded-from-network-total-gamemodes: remain queryable but do not count toward networkTotalMillis.

Physical blacklist changes are prospective. Historical time already aggregated into a shared logical gamemode cannot be split by physical backend.

Public API

  • adds PlaytimeCatalog and PlaytimeGamemodeDefinition
  • adds PlayerData#playtimeCatalog()
  • adds UUID, PlayerLookup, and identifier playtime lookups
  • keeps the existing player-ID/as-of and leaderboard methods
  • resolves production identifier lookups and snapshots in one DataRegistry transaction

Consumers should use PlayerPlaytimeSnapshot#networkTotalMillis() as the canonical global value.

Compatibility

  • no database migration
  • existing aggregate and segment schema remains unchanged
  • existing PlayerData playtime methods remain available
  • release version bumped to 1.14.0

Verification

  • CI Lint: passed
  • Java 25 core unit suite: 327 tests passed
  • MySQL 8.4 integration suite: passed
  • JaCoCo coverage gates: passed
  • bundled Paper and Velocity platform acceptance: passed
  • no temporary publication workflow or staging files remain in the PR

@remdui remdui closed this Jul 31, 2026
@remdui
remdui force-pushed the agent/playtime-dataregistry branch from a579bb2 to 6f7e37b Compare July 31, 2026 07:03
@remdui remdui reopened this Jul 31, 2026
@github-actions
github-actions Bot force-pushed the agent/playtime-dataregistry branch from 3086175 to fd4a740 Compare July 31, 2026 07:14
@remdui remdui changed the title Add player-facing playtime policy and query APIs Add public playtime policy and lookup APIs Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant