Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
V8.0.0
Breaking changes
- #223: Stats link/unlink feature has been removed.
Features
- #223: New stats system with the following features:
- New Bonus component — a chest that awards a bonus to a player only if the run is completed successfully. Bonuses are re-claimable each run but are persisted globally only once per player per component.
- New
/le stats player [playerName]command — displays a player's global statistics. Admin permission required to view another player's stats. - New
/le stats servercommand — displays server-wide aggregated statistics. Requireslasers.admin. Available from console. - New
/le stats area [id]command — displays aggregated statistics for a specific puzzle area. Requireslasers.admin. Resolves area by position ifidis omitted (in-game only).
- #223: New Leaderboard component — displays a real-time ranked list of players as a floating Text Display inside a puzzle area. Features:
- Two scopes: Area (ranks players on a specific puzzle) and Global (ranks across all areas).
- Fifteen ranking criteria — Area scope: best time, fewest actions, fewest steps, most bonuses, most victories, most runs, most time spent, most steps, most actions; Global scope: areas won, total victories, most runs, most time spent, most steps, most actions, bonuses obtained.
- Configurable number of displayed entries (3–10 lines).
- Paginated area picker GUI to select the target area.
- Refreshes automatically after each player victory. Offline player names are preserved via
last_known_namestored on login.
Technical changes
- #223: The new stats system also includes the following technical changes:
- New stats data model: tables
area_player_stats,player_global_stats,server_global_stats,server_global_stats_puzzle,bonus_obtained. Pre-computed aggregates kept in sync viaGlobalStatsUpdateServiceon all relevant events. - Database migration
7.1.0 → 8.0.0: dropslinked_area_idfromarea; dropsplayerstatstable; addsleaderboard_criteriacolumn tocomponent; addslast_known_namecolumn toplayer_global_stats. - New
ATextDisplayComponentabstract base class for components using Text Display entities (same anti-duplication pattern asAArmorStandComponent). - New
LeaderboardQueryServicefor fetching and formatting ranked data from the database. ComponentCounterUpdateServiceextended with dirty-flag tracking to trigger leaderboard refreshes after player victories (vianotifyAreaStatsUpdated/notifyGlobalStatsUpdated/flushLeaderboardRefresh/clearLeaderboardDirtyFlags).- Player last-known Minecraft name persisted on every
PlayerJoinEventviaPlayerGlobalStatsRepository.updateLastKnownName.
- New stats data model: tables
Fixes
Information
| Published on | March 7, 2026 |
|---|---|
| Downloads | 0 |
Platforms
Paper (1.21.1-1.21.11)
Dependencies
Paper