Skip to main content

Emancipation Grid

Overview​

The Emancipation Grid is a Portal-inspired barrier with four independent behaviour checkboxes:

  • Destroy Cubes — destroys any cube that enters its AABB.
  • Destroy Portals — destroys the plugin portals previously placed by any player who walks through it.
  • Death — kills any player who walks through it.
  • Teleport to Area spawn — teleports any player who walks through it to the area's spawn point.

The grid is a conditional component (extends IDetectionComponent) so its effects only apply while its detection condition is met. When not activated, the grid is completely invisible to players.

Coherence rules (enforced by the configuration menu and the shortcut bar):

  • At least one of the four checkboxes must remain enabled at all times.
  • Death and Teleport to Area spawn are mutually exclusive — checking one automatically unchecks the other, with a translated chat notification so the side effect is observable.

How to place an Emancipation Grid​

  1. Open the main shortcut bar with the /lasers command.
  2. Select two corner blocks of the desired AABB. The grid must have at least one flat axis (one block deep on X, Y or Z). Placing a fully-volumetric grid (three axes with extent > 1) is rejected with a translated error message.
  3. Right-click with the Place component button in hand and pick Emancipation Grid.
  4. The grid is placed with the following defaults: Destroy Cubes and Destroy Portals checked, Death and Teleport to Area spawn unchecked.

The grid's AABB must always be strictly contained in the puzzle area and cannot overlap any other IAreaComponent (standard placement invariants).

The grid's in-plane surface (length × height of the two non-flat axes) is capped at 100 blocks — larger placements are rejected with a translated chat message. The cap matches the renderer's entity budget; pick a smaller AABB if you hit it.

How to edit an Emancipation Grid​

If the grid's edition shortcut bar is not already open, right-click on its volume to open it.

Via Shortcut bar​

  • Toggle Destroy Portals / Destroy Cubes / Teleport to Area spawn / Death — four hotbar buttons, one per option.
  • Inherited detection-component controls — change detection mode (MOD looper), adjust min/max, edit the held / activated tick delays.

Via Component Configuration menu​

The menu surfaces the four checkboxes in a 2×2 layout:

LeftRight
Row 1 — Passive destructionDestroy PortalsDestroy Cubes
Row 2 — Player-affecting effectsTeleport to Area spawnDeath

Plus the standard Conditions sub-menu for the inherited detection-component options.

Visual states​

  • Not activated: the grid is completely invisible — no perimeter hint, no pre-activation tell. It is the map maker's responsibility to signal a hidden conditional grid if desired (signs, corridor geometry, etc.).

  • Activated: every in-plane block of the grid carries a 2×2 cluster of small stained-glass tiles flush with the plane, forming a continuous coloured wall. Stained glass (rather than the concrete used by lasers) keeps the visualisation distinct from any laser beam crossing the same volume. Each block holds at least one tile of every active option; the remaining slots are filled round-robin from the active palette (so a 3-option grid sits at a 50/25/25 colour mix rather than 33/33/33, with Red over-represented when present). When two or three options are active, tiles slowly swap colours over time (~4 swaps per second per grid, one tile at a time) while preserving the overall colour proportions — the wall reads as alive without flickering:

    • Red — Death or Teleport to Area spawn (whichever is active).
    • Magenta — Destroy Cubes.
    • Blue — Destroy Portals.

    As a player or a cube comes within 3 blocks of a tile, the tile rotates progressively around an in-plane axis — vertical (Y) when the grid's plane contains the vertical axis (the common case: a wall), horizontal (X) on a strictly horizontal floor or ceiling grid. The angle scales linearly with proximity from 0° at 3 blocks down to 90° at half a block, then stays saturated at 90° below half a block so the final approach is stable. Distance for a player is measured against the player's full bounding box, not the foot location — crouching, jumping or standing flush against the grid all read as "really close" rather than artificially far. Each tile reacts independently to its own nearest threat, so the surface ripples around an approaching player while the rest of the wall stays flush.

    A low ambient sound is played to players standing within 2 blocks of an active grid (per-player 10 s cooldown, anti-overlap), mirroring the laser proximity sound. Toggle the emancipation_grid_ambient_sound config flag to disable it.

Interactions​

Cube interaction​

A cube whose movement is driven by any mechanism (player drop, player throw, Cube Distributor spawn, Gravitational Sphere, gravity fall) is destroyed when it enters the grid's AABB, provided Destroy Cubes is checked. A cube that was already inside the AABB at the moment the grid activates is also destroyed.

A cube held by a player who walks through the grid is dropped on the contact location before any other effect resolves, and is then destroyed by the same Destroy Cubes rule. This drop happens whenever the grid has Destroy Cubes, Death, or Teleport to Area spawn enabled. If only Destroy Portals is enabled, the held cube is not affected.

Player interaction​

A player walking through the grid:

  • Loses all plugin portals they had placed in this puzzle area, whenever Destroy Portals, Death, or Teleport to Area spawn is checked (death and teleport always imply portal loss).
  • Dies with the full vanilla death behaviour if Death is checked. The respawn point is the vanilla respawn point (bed if set, world spawn otherwise). Inventory is always kept, regardless of the vanilla keepInventory gamerule.
  • Is teleported to the puzzle area's spawn point if Teleport to Area spawn is checked. No vanilla-death side effects (no death screen, no XP drop, no hunger reset).

Players in editor or spectator mode are fully ignored — walking through has no effect on them.

A player already standing inside the AABB when the grid activates suffers the configured effect immediately (in-place activation), symmetrically with the cube rule.

Portal interaction​

When Destroy Portals is checked and the grid is activated, attempting to place a plugin portal whose placement ray traverses the grid's volume is rejected with a translated error message.

Laser interaction​

Lasers fly straight through the grid — the grid is transparent to laser beams (same convention as the Cube Pressure Plate's display).

Required area spawn for player-affecting effects​

When Death or Teleport to Area spawn is checked, the area must have a defined spawn point. The plugin enforces this in three places:

  • Placement / resize validation — placing or resizing the grid is rejected if its AABB would cover the area spawn point.
  • Spawn move validation — moving the area spawn into a grid that already has Death or Teleport enabled is rejected.
  • Toggle validation — enabling Death or Teleport on a grid whose AABB already covers the area spawn is rejected.

At runtime, if the area has no defined spawn point when Death or Teleport would trigger, the grid skips the player-affecting effect and sends a translated error message to the player. The other effects (Destroy Cubes / Destroy Portals) still apply normally.

Conditions integration​

The Emancipation Grid is a IDetectionComponent and can drive (or be driven by) the conditions system:

  • As a target of a DETECTION_SPECIFIC_ACTIVABLE_COMPONENT condition — any conditional component (Music Block, Cube Distributor, Elevator, …) can follow the grid's activation state directly.
  • As a consumer of any detection mode — the grid uses the standard min/max thresholds and supports all the detection modes shared with the other conditional components.

Troubleshooting, Common Issues and Community Feedback​

  • Placement rejected with "at least one flat axis" — pick a 2D shape (one block thick on X, Y, or Z) or a degenerate 1×1×N "barrier line".
  • Placement rejected with "covers the area spawn" — either move the grid, move the area spawn, or disable Death/Teleport before placing.
  • Toggling Death (or Teleport) is rejected — the grid's AABB currently covers the area spawn. Move one of them first.
  • Grid kills me on entry but I survive thanks to a totem — Death uses the full vanilla death pipeline, which includes totem behaviour. This is intentional.
  • No visible effect when activated — verify that the configured detection condition is actually met (the grid is invisible when not activated, by design).
  • Placement rejected with "surface exceeds the limit" — the AABB has more than 100 in-plane blocks. Pick a smaller AABB; the cap is a rendering ceiling and is not configurable.
  • Ambient sound too noticeable / not noticeable enough — set emancipation_grid_ambient_sound: false in config.yml to disable, or rebuild the plugin after tweaking the sound entry. Defaults to true.
  • Persistent issues: for unresolved issues, refer to our issue board.

We welcome your input to help improve this documentation:

  • Test our Minecraft server: Solve puzzles made by the Lasers-Enigma developers and the community. Refer to Lasers-Enigma.eu/Play.
  • Feedback: Submit suggestions or report issues through our issue board.