
Lasers Enigma
✨ Create solve and share puzzles based on light ✨
V8.28.0
Features
- #678: new "No victory" condition for areas that cannot be completed, such as hubs and lobbies: victory, records and the "stats tainted" message are disabled there, while passage statistics (time, entries, steps, actions) and their leaderboards keep working. Translated in all supported languages.
Fixes
- #678 / #654: entering an area where others are mid-run no longer shows a "stats tainted" message wrongly naming you as the intruder. You now see who is already running, while the players already inside keep getting the message naming you.
Technical changes
-
#702: deleting an elevator now removes its call buttons through the same internal clean-up as the dedicated "delete call buttons" action, keeping the two consistent. No visible change in-game today — it is a preventive robustness fix.
-
#678: companion plugins can now keep multi-player runs record-eligible — a new cancellable event lets them veto the stats-tainting a player entry would otherwise cause. Used by LE Play Server Utils for levels tagged
DuoorTrio. -
#687 #688 #689 #690: internal AI-assistant tooling — a read-only
check-server-statusskill, an enforced issue Status-label lifecycle, committed agent ground rules (single issue tracker, GitLab-MCP-only), and a multi-repocreate-releaseworkflow. No in-game effect.
V8.27.1
Features
- #651: colored mirrors are now named after their colour — "Red mirror", "Cyan mirror", etc. — instead of the generic "Mirror", so they can be told apart at a glance in the inventory and the Mirror Chest menu. Translated in all supported languages.
- #652: the "bonus obtained" message now shows your progress in the area, e.g. "Bonus obtained! (2/5)", so you can tell at a glance whether you have them all. Translated in all supported languages.
- #679: new
/lasers stats resetProgresscommands to wipe progress — for all players in one area, for one player across all areas, for one player in one area, or for everyone everywhere. A reset clears the targeted statistics and progression (records, victories, keys and bonuses, plus checkpoints when a whole player is reset) while keeping player inventories. Variants that affect other players or everyone require admin rights and aconfirmkeyword; resetting your own progress only needs edit rights. The area statistics menu's "clear" button now clears keys and bonuses for that area too, not just its statistics. Translated in all supported languages.
Fixes
- #658: copying a component or pasting an area schematic now preserves condition durations (the minimum time a condition must stay met and the minimum time its state is held), both for individual components and for the area's own settings; they were previously lost on copy.
- #662: in a race, moving on to the next level now teleports you to that level area's configured checkpoint instead of the level's corner, matching where you start level 1 and where you resume after reconnecting.
- #659: when a puzzle resets (the last player leaves the area), a Redstone Sensor is now forced back to its deactivated state even if a redstone signal is still powering it, so conditions based on it always start from a clean state on the next run.
- #679: server-wide statistics are now recomputed correctly after an area's statistics are cleared — the total time played is no longer reset to zero, and the "unique areas won" total keeps its meaning (the number of player/area victories) instead of switching to the number of distinct winners.
- #491: clicking to select a component is more reliable. A Cube Pressure Plate can now be removed by aiming at it — because the plate has no block of its own, the click used to land on the supporting floor and leave the plate behind. Breaking the block under a plate is now prevented, so a plate can no longer be left floating and unremovable. A cube that landed on a lever (or any non-solid block, where no barrier is created) can now be picked up by aiming at it. And left-clicking no longer selects a component hidden behind a solid block.
- selecting a rotatable component to open its rotation shortcut bar is now more reliable in play mode: a Mirror Support on a wall can be selected from the side (not only head-on), and a component such as a Laser Sender can be reached through a gap (e.g. a staircase hole). The selection still stops at solid blocks and never steals a right-click meant for a native block (a lever, a door…) standing in front of the component.
Technical changes
- #635 / #265: beta test server automation. Each push to
maindeploys the latest in-development build to the beta test server and posts an announcement to the#beta-testDiscord channel (changelog diff since the last release + server IPbeta.lasers-enigma.eu). The beta server is rebuilt as a sanitized mirror of production (world, config, plugins — keeping the in-development LasersEnigma and LE Play Server Utils builds) whenever a server pack is generated, runs withproxy-protocol: trueto match its behind-proxy setup (the public pack keepsfalse), and is tagged with a red[BETA]MOTD in the server list. - #641: the publicly distributed server pack now blanks the documentation assistant's address and access token so they are never shipped to third-party servers, while the official beta test server keeps a working
/puzzle doc. - #646: the LE Play levels export (now also including each room's parent — lobby or parent room) moved from the
buildLEPlayRoomsCsvdevelopment Gradle task to the live/. export csvcreator command; the Gradle task and its run configuration have been removed. - #655: anonymous bStats statistics now also report server-wide player engagement totals — actions performed, steps taken, time played, puzzle entries, distinct areas solved and unique bonuses obtained — alongside the number of distinct players who have played at least one puzzle.
- the AI tooling's GitLab operations (read issues and comments, create/edit issues, fetch Merge Request review comments) now run through the GitLab MCP server instead of custom Gradle tasks; the
gradle/gitlab-tasks.gradle.ktstasks (createIssue,editIssue,fetchMrComments) have been removed and the GitLab token moved from thegitlabTokenGradle property to theGITLAB_PERSONAL_ACCESS_TOKENenvironment variable. - new Issue management wiki page documenting the allowed labels and cardinality rules for GitLab issues.
- #680: generating the server pack no longer overwrites the beta test server's in-development LasersEnigma and LE Play Server Utils builds with the (older) production versions. The archive's jar-exclusion patterns were matching versioned names while play's backup carries the version-less deploy names, so both production jars were being bundled in and decompressed over the beta builds; the exclusion now uses those deploy names, shared with the wipe step so the two can no longer diverge.
- companion plugins can now veto an area resize: a new cancellable
PlayerTryToResizeAreaEventis fired right before a resize is applied (once it has passed LasersEnigma's own validation). Cancelling it aborts the resize — nothing is persisted, noAreaResizedEventis emitted — and the canceller's reason is shown to the player. Used by LE Play Server Utils to forbid resizes that would break its lobby-tree path uniqueness. - #679: a new
PlayerProgressResetEventis fired whenever progress is reset via/lasers stats resetProgress(or the area stats "clear" button) — once per affected player, or once with a null UUID for a server-wide reset — so companion plugins can invalidate any per-player progress they cache. Used by LE Play Server Utils to refresh portal completion displays.
V8.27.0
Features
- #579: copying and pasting now preserves the links between components, both when copying a whole area (clipboard / schematics) and when copying a single component. This applies to locks and their key chests, elevators and their call buttons, cube distributors and their creation buttons, laser solidifiers and their senders or concentrators, and conditional components and their condition target. Bonuses and leaderboards, which used to be skipped, are now copied as well.
Technical changes
- #606: every supported Minecraft version (1.19.4 → 1.21.x) is again covered by the standard releases and served from a single download link, instead of a separate legacy build for 1.19.4–1.20.4.
V8.26.1
Features
- #510: new competitive race builder — admins can now assemble a ready-to-run competitive event in their own world from published LasersEnigma puzzles, with no command blocks, no in-world buttons and no hand-wired transition logic.
- configure a build with
/lasers race: create a named build, add levels by name (autocompleted from the website catalog), reorder/remove them, pick players-per-copy (solo / duo / trio) and the number of side-by-side copies (1–100), all from a builder menu. /lasers race generate <name>validates the footprint, places the spawn and the first copy, then dispenses a wand that lets the admin define each level's exit teleporter in-world;/lasers race continue <name>replicates the wired-up copy across every other copy.- players discover available events with
/lasers race list, reach the spawn with/lasers race tp <name>, and lock a copy by walking into its airlock (SAS) with the right number of non-spectator players./lasers race start <name>opens a timed run with per-group chronos and a per-player sidebar showing every group's current level. - copies stay reserved for their group for the whole run: a player who logs off, dies or runs
tp <name>automatically resumes at their group's current level on next join, respawn ortp. Late joiners are auto-started. A run can be ended early with/lasers race stop <name>, which cancels it and sends everyone back to the spawn while leaving the build ready for anotherstart; a stuck run can also be cleared (wiping the structure back toDRAFT) with/lasers race reset <name> confirm. - past run times are queryable by anyone via
/lasers race results <name> [run] [page]; run history is preserved acrossstartcalls. /lasers race delete <name> confirmand/lasers race reset <name> confirmclean up the structure (teleporting any occupants out first) — the former drops the configuration and history, the latter keeps them for re-generation.
- configure a build with
- #586:
- placing a Mirror Chest now immediately opens its content edition menu, removing one click before you can configure the mirrors it provides.
- the color picker pages have been reorganized — page 1 now shows the white mirror followed by the three primary colors (red, green, blue); page 2 shows the three secondary colors (yellow, magenta, cyan) followed by the black mirror.
- #630:
- activated Emancipation Grids now render as a continuous wall of small stained-glass tiles aligned with the plane (replacing the previous moving line animation). Each tile tilts up to 90° around an in-plane axis as a player or a cube comes within 3 blocks of it, making the surface ripple where the threat is. When several effects are active, tiles slowly swap colours over time while preserving the overall colour proportions, keeping the wall visually alive.
- a low ambient sound is now played to players standing within 2 blocks of an active Emancipation Grid (per-player 10-second cooldown). Disable via the new
emancipation_grid_ambient_soundconfig flag. - placing an Emancipation Grid larger than 100 in-plane blocks is now rejected with a translated chat message.
- #611: while the rotation shortcut bar is open, right-clicking another rotatable component (mirror, laser sender, laser receiver, concentrator, gravitational sphere) within 5 blocks now re-targets the shortcut bar onto that component instead of closing it. When the new target is of the same type as the previous one, the rotation is applied to it in the same click.
Fixes
- #633: schematics whose name contains spaces or special characters (e.g.
Color Mixing #2,Bifröst) can be downloaded again with/lasers schematic downloadand added to a race with/lasers race addLevel. The download URL is now correctly percent-encoded, and tab-completion wraps names containing spaces in double quotes so they are inserted as a single argument. - #627: area leaderboards no longer show players who have only won a level in multi-player as record holders on the "fastest time", "fewest actions" and "fewest steps" rankings.
- #627: personal records for "fewest actions" and "fewest steps" are now correctly saved on every solo victory. Existing personal bests are repaired at server startup using the first solo victory of each player on each level.
- #629: plugin visual entities (Cube Pressure Plate displays, Emancipation Grid lines, laser beams, portals, area show outlines, rotation/resize previews) no longer leave duplicated phantoms behind after a server crash. Any phantom inherited from a previous server run is also cleaned up automatically at the next server start.
- many in-game messages that embed a value (command argument errors, area overlap/resize errors, component-info command feedback, key and lock hints, mirror/component rotation toggles, and component-cleanup warnings) now display that value correctly instead of a raw
{0}/{1}placeholder.
- #510: new competitive race builder — admins can now assemble a ready-to-run competitive event in their own world from published LasersEnigma puzzles, with no command blocks, no in-world buttons and no hand-wired transition logic.
V8.26.0
Features
- #536: new Emancipation Grid component — a Portal-inspired barrier that can destroy cubes, destroy portals, and either kill or teleport players who walk through it. Four independent behavior checkboxes with mutual exclusion between Death and Teleport, configurable through the component menu and shortcut bar.
V8.25.1
Features
- #618: when another player enters a puzzle while you are running it, you now receive a chat message telling you who entered and that your run will no longer be eligible for records.
Fixes
- #624: a cube sitting on a Cube Pressure Plate once again blocks lasers (and, for concentrator cubes, re-emits the absorbed laser in its facing direction).
- #625: rapidly re-pressing a Cube Creation Button while the cube was still appearing no longer leaves a stuck barrier block under the distributor.
- #626: a held cube can no longer pass through walls or ceilings — when something is in the way, the cube now hovers right in front of the obstacle instead of slipping behind it.
V8.25.0
Features
- #616: new Cube Pressure Plate component — a plugin-side pressure plate that activates when a cube lands on it (or, optionally, when a player walks on it). Powers the surrounding redstone like a vanilla plate, and integrates with the conditions system through a new "pressure plate" condition mode.
V8.24.0
Features
- #535: new Cube Distributor and Cube Creation Button components — distributors placed on a ceiling can dispense physical cubes (standard cubes that block lasers, or cube concentrators that re-emit a merged-color laser in their facing direction). Players can grab a cube, carry it in front of them, and drop it back to solve puzzles. Cubes fall under custom gravity, traverse plugin portals, and pistons cannot move them.
- Elevator Call Buttons and Cube Creation Buttons can now be triggered by a redstone signal in addition to right-clicking. Each rising edge of the signal presses the button once, behaving like a vanilla button.
Fixes
- #617: scheduled actions on a component (rotation, color, sphere resize) are now preserved when copying the component to your clipboard or saving an area as a schematic.
V8.23.2
Fixes
- #607:
- The Music Block song list is now sorted alphabetically, so next/previous song cycling behave the same everywhere.
- Editing a Music Block (next/previous song, toggle loop, toggle stop on exit) no longer starts the song while the block is not activated.
- Rapidly switching songs on a Music Block no longer leaves a previous song playing in the background, and the "stop on area exit" option once again stops every song the block has triggered.
- #607:
V8.23.1
Fixes
- #603: the edition shortcut bar now hides items that only work inside an area (place component, sync, copy, configure, stats) when you are standing outside an area.
- #598: Being alone as a spectator inside a puzzle area no longer slowly grows the server entity count. Server memory is now released cleanly when puzzle areas empty, keeping memory usage bounded over long uptime.
V8.23.0
Features
- #591: the
/lasersenigma stats areacommand is now available to all players, shows the best holder for every ranking criterion (time, steps, actions, bonus, victories, entries…), and accepts an optional criterion argument to display the top 10 for that criterion.
Fixes
- #600: the
/lasersenigma component colorand/lasersenigma component mirror placecommands now show a clear error when the targeted component refuses the chosen color (for example black on a filtering or reflecting sphere) instead of failing silently.
- #591: the
V8.22.3
Technical changes
- #597: faster documentation site updates with no downtime during deployment.
Fixes
- #588: Component entity duplicates no longer occur, including in spawn chunks and after a server crash.
- 533 Fix documentation website generation:
- Fix duplicate title showing on some documentation pages.
- Fix duplicate entries in the documentation sidebar where a category and its landing page were both listed.
- Fix raw
{width=... height=...}text leaking next to some images on documentation pages. - Move the Home page to the top of the documentation sidebar.
- Reduce documentation site weight by compressing wiki images and converting heavy GIF animations to MP4 video.
- Fix some documentation links jumping out to GitLab instead of navigating within the documentation site.
- Hide community puzzle solutions from the documentation site (they remain available on the GitLab wiki).
- Add a banner at the top of the documentation site promoting the public play server.
- Show live play server status (online players, MOTD) on the documentation home page.
V8.22.1
Fixes
- #589 Portal physics improvements:
- Walking or sprinting through a portal at low speed now feels natural — no more catapult, the speed you put in is the speed you get out.
- The horizontal momentum boost after a portal teleportation no longer occasionally fizzles out, so consecutive portal jumps reliably keep their flight.
- The in-game notification of new plugin versions now correctly fires whenever a newer release is available.
- Two floor portals placed flat on the ground now reliably yo-yo a falling player back and forth without occasionally getting stuck on landing.
- #589 Portal physics improvements:
V8.22.0
Features
- #583: Elevators now reliably reset to the ground floor when a puzzle is (re)activated, including after a server crash.
- #583: Admins can refresh the stored cage layout of an elevator with
/le component elevator resnapshot <x> <y> <z>or in a GUI button after redecorating it.
Fixes
- #583: Elevators no longer break blocks having metadata (redstone torches, redstone wire, levers, buttons, signs…) while moving between floors.
- #584: Deleting a Lock now cleanly removes its Key Chests, leaving no invisible leftover blocks and no phantom keys preventing recreation.
- #582: Music Block component menus open correctly again, and Music Blocks now use a newer version of the song-playback library (NoteBlockAPI 1.7.0), bringing upstream fixes and compatibility improvements.
Technical changes
- #588: Plugin memory usage no longer slowly grows over time — whether from players walking around puzzle areas, long-running puzzles with many mirrors, reflecting spheres and prisms, or lasers travelling through gravitational spheres — reducing GC pressure on busy servers.
- #588: Database queries no longer repeatedly reopen the connection behind the scenes, cutting memory allocations and CPU overhead on chunk loads and frequent lookups.
- #588: Loading chunks near puzzle areas no longer briefly stutters while the plugin cleans up leftover blocks from a previous server crash.
V8.21.0
Features
- #576:
/le stats areanow shows the name of the player who holds each record (best time, fewest steps, fewest actions, most bonus). - #577: Concentrators can now be selected as solidifier targets — when a solidifier targets an active concentrator, the laser the concentrator emits lays down colored glass just like a solidified laser sender does.
Fixes
- #578: Two lasers crossing on a solidifier now keep the first laser's glass color and filter the second laser instead of blending into a merged color; simultaneous arrivals still fuse as before.
- #580: Interactions with levers, buttons, doors, trapdoors, fence gates, chests, pressure plates and tripwires inside a puzzle area are now counted in the area action statistics.
- #581: A laser hitting the diagonal corner between two mirror blocks now always bounces back in every direction, and a laser striking the seam between two adjacent mirror blocks always reflects off the combined wall instead of disappearing.
- #576:
V8.18.5
Fixes
- #566: Walking into a portal is more forgiving — oblique, off-center and edge approaches reliably trigger teleportation.
- #566: A player always exits a portal perpendicular to its surface at the speed they entered with, so aerial trajectories are predictable regardless of entry angle.
- #566: Players always land at the exact center of the destination portal, so two portals facing each other produce a stable aerial loop that repeats identically.
- #566: Horizontal air drag no longer slows the player down during the flight between two portals, preventing aerial loops from decaying over successive bounces.
- #566: Small variations in entry speed are smoothed so consecutive portal jumps in the same setup land at the same spot.
- #566: The camera no longer rotates when traversing face-to-face portal pairs (opposite walls, floor↔ceiling, or a mirrored 45° loop), keeping the view stable during aerial loops.
- #566: 45° portals rotate the camera like vertical walls, so the view never tilts along the slope.
- #566: Switching to creative or spectator flight mid-jump now correctly ends the portal-induced physics boost.
