Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for bZx

✨ Design, solve and share light-based puzzles ✨

Report lasersenigma?

Release
8.0.0

bZx released lasersenigma version 8.0.0 on Sat 6:28 AM

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 server command — displays server-wide aggregated statistics. Requires lasers.admin. Available from console.
    • New /le stats area [id] command — displays aggregated statistics for a specific puzzle area. Requires lasers.admin. Resolves area by position if id is 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_name stored 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 via GlobalStatsUpdateService on all relevant events.
    • Database migration 7.1.0 → 8.0.0: drops linked_area_id from area; drops playerstats table; adds leaderboard_criteria column to component; adds last_known_name column to player_global_stats.
    • New ATextDisplayComponent abstract base class for components using Text Display entities (same anti-duplication pattern as AArmorStandComponent).
    • New LeaderboardQueryService for fetching and formatting ranked data from the database.
    • ComponentCounterUpdateService extended with dirty-flag tracking to trigger leaderboard refreshes after player victories (via notifyAreaStatsUpdated / notifyGlobalStatsUpdated / flushLeaderboardRefresh / clearLeaderboardDirtyFlags).
    • Player last-known Minecraft name persisted on every PlayerJoinEvent via PlayerGlobalStatsRepository.updateLastKnownName.

Fixes

  • #305: Fixed a bug preventing area victory detection.
  • #409: A player in spectator mode no longer triggers area activation/deactivation, player count change events, or player-based victory conditions.

Information

Published onMarch 7, 2026
Downloads0

Platforms

Paper Paper (1.21.1-1.21.11)

Dependencies

Paper Paper
Edit Plugin Dependencies: Paper