Skip to main content

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:

MetricDescription
DurationTime between entering and leaving the area.
StepsDistance walked (1 step ≈ 1 block).
ActionsInteractions with components (placing/retrieving mirrors, rotating, etc.).
BonusBonus 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 / Y shown 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 Duo or Trio) 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 optionEffect when disabled
save_victory_even_if_player_changed_worldVictory is not saved if the player left by changing world.
save_victory_even_if_player_teleportedVictory 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.

CommandDescriptionPermission
/le stats player [name]Show a player's global statslasers.admin for other players
/le stats area [id]Show area aggregate statslasers.admin
/le stats serverShow server-wide statslasers.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 TRUNCATE statement — use DELETE FROM. With no WHERE clause SQLite automatically applies its "truncate optimization". Run VACUUM at 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.