Skip to main content

Puzzle creators checklist

To design a puzzle room on the server, it's important to understand several things, to do things in the right order and to follow good practice.

Find or create a room template​

You can find a room template that fits your needs or create a new one.

Find an existing room template​

  • Either choose an existing room template: It's like a pre-built room ready to contain your puzzle. To browse existing room templates, you can use /. roomtemplate teleport "<room template name>" command.

  • Or choose an empty room template: Some room templates are almost empty. They only contains the door system but everything else will have to be built by you. To do this, choose one of the empty room templates (like "MEDIUM_EMPTY").

Create your own room template​

You can create your own room template: This will allow puzzle creators to use the same build. This is a good investment for the server future.

To do this:

  1. Copy paste an existing room template to avoid recreating the door systems.
  2. Get WorldEdit wooden axe (//wand)
  3. Select and existing room template build (using left click on a corner to start the selection and right click on the opposite corner to encompass the whole room template).
  4. Copy and paste it to an empty space.
  5. Modify the build as you like.
  6. Put green and red wool blocks in the minimum (with the minimum x, y and z) and maximum corner of the room like in other room templates.
  7. Register this build as a room template using /. roomtemplate add <template name> <minCorner x> <minCorner y> <minCorner z> <maxCorner x> <maxCorner y> <maxCorner z> [<spawn material>] [<portal material>] [<sub portal material>].

Please use an appropriate room template name following the nomenclature already in place.

Note that the spawn material represents where the player will appear when teleported in the puzzle. This parameter is optional and by default it is GLOWSTONE

Note that the portal material represents where the player will have to stand to get back to the lobby. This parameter is optional and by default it is SCULK_SHRIEKER

Note that the sub portal material represents where you want to create sub portals that can then allow to create sub rooms.

More information on room template command are available here.

Find an inactive portal and activate it​

Levels live inside the navigation tree (spawn → sub-lobbies → chapters → levels). To add a new level, find an inactive portal in the relevant chapter (or in the Community sub-lobby for community puzzles).

If there is no inactive portal in the Community sub-lobby, you can extend it using /. communityLobby increase. The Solo/Duo sub-lobbies and chapters are fixed-size hubs, populated with /. portal create and /. portal swapRoomHere.

To create a room from the room template, use /. portal activate <template name> "<room description>".

Create your puzzle​

To do a good puzzle quickly, we ended up identifying a few best practices:

Create an already solved puzzle at start​

This means you should always follow the trajectory of a laser emitter. Place components only in the path of an existing laser. The puzzle will already be solved, but you can change all that at the end.

Place colored concrete blocks​

Under each component, place colored concrete blocks in the same color as the component. This can be a great help to players. On the other hand, use white concrete under components whose color can be chosen by the players (mirrors, filtering spheres, reflecting spheres), otherwise you'll be giving the player too much of a clue.

No absolute coordinate​

When using command blocks, never use absolute coordinates. Relative coordinates should always be used instead. This is because, if a puzzle is downloaded (using the /puzzle download command) or moved (using the /clipboard <...> commands), the absolute coordinates will be wrong, whereas the relative coordinates will remain correct. To calculate relative coordinates, you can use the plugin relative coordinate calculator which is available on the server. How to use:

  • Grab a slime ball and do a left click on your origin block (Your command block, where your command gets executed).
  • After that do a right click on your final destination.
  • Then type in /getrelative. Now your relative coordinates get displayed in the chat.

Finalize your puzzle​

Instead of finalizing manually, you can run the semi-automated check workflow that covers the steps from "Finalize your puzzle" and "Configure your puzzle in the server" sections below.

  • Stand in the room and type /. room check to start the workflow.
  • The plugin will guide you through each check step by step. After each step, use /. room check continue to proceed to the next one.
  • If you want to abort the workflow at any time, use /. room check cancel.

This workflow helps you ensure nothing is forgotten (area configuration, door opening, difficulty, authors, tags, etc.) without having to remember every step yourself.

Shuffle your puzzle​

At the end, don't forget to change the orientation of the components, so that they're not solved as soon as the player enters. Pay particular attention to the fact that the orientation of the components is saved as soon as you have the laser-enigma menus open. So, even if you extract a mirror, its rotation will be preserved, and the next time a player insert a mirror into this component, it will return to exactly the same orientation. This means that, if you want players to retrieve mirrors from a chest, you'll need to change the mirror's rotation first (so that the puzzle isn't already solved) before extracting it from its support.

Area configuration​

Use Area configuration to define:

  • The player permissions (to allow or prevent player component interactions)
  • The victory condition (that are required for statistics computing)

Door opening​

Create a conditional redstone block and defines its condition to open the exit door. It should be at the start of the redstone system that is behind the door. There is usually a red concrete/wool block where this conditional redstone block should be placed.

Structure block​

If you want to reinitialize chests / pistons / levers you may want to use structure_block. Activate the structure blocks using a conditional redstone block that transforms into redstone when 0 player is inside.

The full reset trigger pattern is: a conditional command block whose command tests "players in area between 0 and 0" → its redstone output → the command blocks or structure blocks that actually reset the levers, chests, pistons, scoreboards and tags. The reset chain must fire automatically as soon as the room becomes empty so the puzzle is ready for the next visitor.

Scoreboards & native tags naming convention​

When your puzzle uses native Minecraft /scoreboard objectives or /tag tags driven from command blocks, follow this naming convention so two concurrent puzzles never clash on a shared name:

  • Mandatory: include the area id of this room in every objective or tag name.
  • Recommended: prefix or suffix the name with the player pseudo.
  • Optional: include the room name.

Minecraft caps objective names at 15 characters, so trade off in the priority order above. The area id of the current room is shown by /. room check in the dedicated step — copy it from there.

Repeat command blocks convention​

Every repeat command block in your puzzle must be set to "needs redstone" mode — never "always active".

Power each repeat command block from a conditional command block whose command tests "players in area between 1 and infinity". The repeat block then only ticks while at least one player is inside the area. An always-active repeat command block runs every server tick for as long as its chunk stays loaded, even when the room is empty, and the server pays that cost for nothing.

Display color wheel​

If your puzzle contains colors related logic, you can add colors wheel image on a wall using /. room colorWheel command. It can help players a lot.

Add Holograms​

You can use DecentHologram plugin to provide explanations and guidance. Its most useful commands are:

# Creates a hologram.
#
# <hologram> is the identifier of the hologram.
# - No space
# - Starts with the name of the room
# - Ends with a very short description of what the hologram tells
/dh create <hologram>

# Move a hologram
/dh h movehere <hologram>

# Add a line
/dh l add <hologram> 1 <text content>

# set a line
/dh l set <hologram> 1 <line number> <text content>

More information in their wiki

Configure your puzzle in the server​

Instead of configuring manually, you can run the semi-automated check workflow that covers the steps from "Finalize your puzzle" and "Configure your puzzle in the server" sections below.

  • Stand in the room and type /. room check to start the workflow.
  • The plugin will guide you through each check step by step. After each step, use /. room check continue to proceed to the next one.
  • If you want to abort the workflow at any time, use /. room check cancel.

This workflow helps you ensure nothing is forgotten (area configuration, door opening, difficulty, authors, tags, etc.) without having to remember every step yourself.

Room difficulty​

Define the room difficulty using the /. room setDifficulty <difficulty between 0.0 (easy) and 1.0 (mythic) > command in the puzzle room.

Room authors​

Define the room authors of the room using the /. room author <add | delete | set> <author name>.

Room tags​

Define your room tags using the /. room tag add <tag name> Every published room needs exactly one player-count tag among Solo, Duo and Trio. On Duo/Trio rooms, runs with up to 2/3 simultaneous players stay record-eligible (no "stats tainted" message within the threshold).

Order puzzle​

Place your puzzle in the right place on the server. This requires a good knowledge of the server's puzzles, so don't hesitate to ask others for advice. In the Community sub-lobby you can use the portal swap commands. For example, stand in the Community sub-lobby where you'd like to place your puzzle and type /. portal orderInsertHere "<name of your puzzle>". Inside the navigation tree (Solo/Duo chapters), ordering is driven by the portal path segment: use /. portal setOrderSegment <name|number> or /. portal insertOrderSegment <number> to position a level among its siblings.

Rename room​

You may want to rename your puzzle using /. room rename "new name" command.

Solution​

Use /puzzle solution command and upload screenshots of your puzzle solution.

Hint​

Add hints to your puzzle with /. room hint add "<hint text>".

Beta-tests​

You can not fully know how players will behave in front of your puzzle. Beta-testing is very useful and may lead you to modify your puzzle.

We do not have official beta-testers yet. Even so, you can ask on our discord server. You can also ask for random people on minecraft related discord/forums/... because it is a way to find people that does not know lasers-enigma yet.

Communicate​

On our discord, we have a #your-creations channel. Whatever your level, we would really like to discover your creations !

Support​

If you encounter a problem on our server you can:

  • Contact us on discord:
    • #user-support for most problems
    • #bug-report if you found a bug
    • #suggestions to suggest new features
  • Directly create a detailed issue here on gitlab.