# xTeams v1.3.30 Change Log:
- feat: hybrid player identification (UUID for premium, nickname for offline) via `settings.identifier_mode`
- feat: extended player selectors `*`, `@online`, `@team`, `@teamall`, `@noteam` for join and leave
- feat: in-game update checker that notifies on startup when a new version is on Modrinth
- feat: `/xteams reload` now also reloads LuckPerms and Minecraft team hook settings
- feat: expanded PlaceholderAPI placeholders — new globals, current-player, other-player and per-team variants
- perf: update checker runs asynchronously, no longer blocks plugin enable
- refactor: centralized team persistence, removed duplicate config saves on join/leave/delete
- refactor: `PlayerIdentifier` exposes `normalize()` and `resolveName()` is guaranteed non-null
- fix: `%xteams_in_team_*%` and `%xteams_player_in_team_*%` now return correct values in UUID mode
- fix: scoreboard team display name now matches the configured `displayName` instead of the internal key
- fix: `/xteams sync` now reaches every online team member even when Bukkit hasn't cached their nickname
- fix: `/xteams teaminfo` and the `playerinfo` tab completer now show nicknames, never raw UUIDs
- fix: player selectors (`@team`, `@teamall`, `*`, …) now return nicknames instead of internal identifiers
- fix: `TeamListener` null-checks the player and team before applying LuckPerms / Minecraft team hooks
- fix: null-safe parsing of `settings.identifier_mode` (no NPE when the YAML value is explicit null)
- fix: tab-completer hints for `/xteams create` and `/xteams setdisplay` narrow down as you type
- fix: successful `/xteams sync`, `reload`, `help` and `info` no longer trigger Bukkit's "wrong usage" message
Optional dependencies
LuckPerms
Any compatible version
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }