Stats
Lasers-Enigma tracks statistics at three levels: per player per area, per player globally, and server-wide.
What is tracked per run
Each time a player enters a puzzle area, a run is started. The following metrics are recorded:
| Metric | Description |
|---|---|
| Duration | Time between entering and leaving the area. |
| Steps | Distance walked (1 step ≈ 1 block). |
| Actions | Interactions with components (placing/retrieving mirrors, rotating, etc.). |
| Bonus | Bonus components collected. Only permanently saved if the run is won. |
Runs are not tracked for players in spectator mode, creative mode, or edition mode.
Stat levels
Area player stats
Per player, per area. Includes:
- Records (best across all solo wins, independent per dimension): best duration, fewest actions, fewest steps, most bonus.
- First run won: stats of the first winning run (immutable once set).
- Totals (all runs, win or lose): total time spent, total steps, total actions, number of entries, number of victories.
Player global stats
Aggregated across all areas for one player:
- Unique areas won, total victories, total entries.
- Total time spent, total steps, total actions.
- Unique bonus obtained (across all areas).
Server stats
Aggregated across all players:
- Total areas, total components (by type), total bonus.
- Total victories, unique areas won (by any player), total entries.
- Total time spent, total steps, total actions.
Victory message
When a player wins a puzzle, a chat message displays the run's stats. This message can be disabled via the show_stats_on_player_left_area config option.
- Header:
★★★ First Victory! ★★★on first win,★ Victory ★otherwise. - Duration, Actions, Steps: values from this run (not cumulative records).
- Record indicators (not shown on first victory):
★ Personal record!— beat your own previous best for that dimension.★★★ Puzzle record!— beat the best record across all players for that dimension.- Puzzle record replaces personal record (never both on the same dimension).
- Bonus:
🏆 X / Yshown only if the area contains bonus components.
Solo runs (tainted runs)
Records (personal and puzzle) are only updated during solo runs. If multiple players are inside the area at any point during a run, every active run is marked as tainted:
- ✅ Victory is counted.
- ✅ Bonuses are acquired.
- ❌ Personal and puzzle records are not updated.
- The victory message includes: "Records are only counted in solo runs."
- The player whose entry tainted the runs receives a message listing the players already running; the players already inside receive a message naming the entrant.
This prevents exploiting a puzzle already solved by another player to get artificially good stats.
Two exceptions:
- Areas whose victory condition is No victory (hubs, lobbies) never taint runs — nothing can be won there.
- Companion plugins can allow legitimate multi-player runs: right before runs are tainted, a cancellable event is fired, and a companion plugin (such as LE Play Server Utils for levels tagged
DuoorTrio) can cancel the tainting as long as the simultaneous player count stays within the level's intended team size. Runs that were already tainted stay tainted — there is no retroactive un-taint.
Victory eligibility
A victory may be blocked depending on config settings:
| Config option | Effect when disabled |
|---|---|
save_victory_even_if_player_changed_world | Victory is not saved if the player left by changing world. |
save_victory_even_if_player_teleported | Victory is not saved if the player teleported more than 50 blocks away. |
Leaderboard
The Leaderboard component displays a ranked list of players in-world. It supports area-scoped and global-scoped rankings with 15 different criteria.
Commands
See the full Stats commands reference for detailed usage.
| Command | Description | Permission |
|---|---|---|
/le stats player [name] | Show a player's global stats | lasers.admin for other players |
/le stats area [id] | Show area aggregate stats | lasers.admin |
/le stats server | Show server-wide stats | lasers.admin |
Resetting stats
The easiest way to wipe stats and progression in-game is the
/le stats resetProgress
commands — they reset one area, one player, one player in one area, or everyone,
recompute the aggregates for you, and also clear keys, bonuses and (for
whole-player resets) checkpoints. /le stats resetProgress allPlayerForAllArea confirm
is the in-game equivalent of the full database wipe described below.
The manual route below is for advanced or offline cases — e.g. you have copied an
existing world/server and want to start from fresh stats without launching it.
Stats live in the plugin's SQLite database (plugins/LasersEnigma/database.sqlite
by default), so clearing them means emptying the relevant tables directly.
Before you start: stop the server, then make a backup copy of
database.sqlite. Editing the database while the server is running can corrupt it or get your changes overwritten on shutdown.
Open the database with a tool such as DB Browser for SQLite, then run the script below.
SQLite has no
TRUNCATEstatement — useDELETE FROM. With noWHEREclause SQLite automatically applies its "truncate optimization". RunVACUUMat the end to reclaim the freed disk space.
-- Puzzle stats (per area, per player, server-wide)
DELETE FROM area_global_stats;
DELETE FROM area_player_stats;
DELETE FROM player_global_stats;
DELETE FROM server_global_stats;
DELETE FROM server_global_stats_puzzle;
VACUUM;
If the server also runs multi-level races and you want to reset their rankings,
add the following. Do not delete from multi_level_race_build,
multi_level_race_build_level, multi_level_race_build_placement or
multi_level_race_exit_teleporter — those hold the race definitions (the
builds), not stats.
-- Multi-level race results / rankings only
DELETE FROM multi_level_race_result;
DELETE FROM multi_level_race_run_group_member;
DELETE FROM multi_level_race_run_group;
DELETE FROM multi_level_race_run;
VACUUM;
To also wipe per-player progression (not strictly stats — bonuses already collected, checkpoints and keys owned), add:
DELETE FROM bonus_obtained;
DELETE FROM playersworldcheckpoints;
DELETE FROM playerscheckpoints;
DELETE FROM playerskeys;
VACUUM;
Save the database and restart the server once done.