diff --git a/$buildDir/classes/java/main/drm_logo_x128.png b/$buildDir/classes/java/main/drm_logo_x128.png
new file mode 100644
index 0000000..63a9fc4
Binary files /dev/null and b/$buildDir/classes/java/main/drm_logo_x128.png differ
diff --git a/.gitignore b/.gitignore
index 2c770e0..f2cf39e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@ build
# other
eclipse
run
+/$buildDir/
diff --git a/build.gradle b/build.gradle
index 38570f3..e14cd54 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,66 +1,137 @@
-// For those who want the bleeding edge
-buildscript {
- repositories {
- jcenter()
- maven {
- name = "forge"
- url = "http://files.minecraftforge.net/maven"
+plugins {
+ id 'idea'
+ id 'java'
+ id 'com.github.johnrengelman.shadow' version '7.1.2'
+ id 'dev.architectury.architectury-pack200' version '0.1.3'
+ id 'gg.essential.loom' version '0.10.0.+'
+ id 'org.jetbrains.kotlin.jvm' version '1.6.21'
+ id 'net.kyori.blossom' version '1.3.0'
+}
+
+tasks.wrapper {
+ gradleVersion = '7.4'
+ // You can either download the binary-only version of Gradle (BIN) or
+ // the full version (with sources and documentation) of Gradle (ALL)
+ distributionType = Wrapper.DistributionType.ALL
+}
+version = '4.0.0'
+group = 'io.github.quantizr.DungeonRooms'
+archivesBaseName = 'Dungeon_Rooms'
+var mod_name = 'DRM'
+var mod_id = 'dungeonrooms'
+
+java {
+ toolchain.languageVersion.set(JavaLanguageVersion.of(8))
+}
+
+blossom {
+ replaceToken("@VER@", version)
+ replaceToken("@NAME@", mod_name)
+ replaceToken("@ID@", mod_id)
+}
+
+loom {
+ launchConfigs {
+ client {
+ arg('--tweakClass', 'cc.polyfrost.oneconfigwrapper.OneConfigWrapper')
}
}
- dependencies {
- classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
+ runs {
+ 'client' {
+ property('devauth.enabled','true')
+ client()
+ }
+ }
+ forge {
+ pack200Provider.set(new dev.architectury.pack200.java.Pack200Adapter())
}
}
-apply plugin: 'net.minecraftforge.gradle.forge'
-version = "3.3.2"
-group= "io.github.quantizr.DungeonRooms" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
-archivesBaseName = "Dungeon_Rooms"
-sourceCompatibility = targetCompatibility = 1.8
+sourceSets.main {
+ output.setResourcesDir(file('$buildDir/classes/java/main'))
+}
-tasks.withType(JavaCompile) {
- options.encoding = "UTF-8"
+
+repositories {
+ mavenCentral()
+ maven { url 'https://repo.polyfrost.cc/releases' }
+ maven { url 'https://jitpack.io' }
+ maven {url 'https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1'}
}
+configurations {
+ implementation.extendsFrom shadowImpl
+}
-sourceSets {
- main {
- output.resourcesDir = java.outputDir
- }
+
+test {
+ useJUnitPlatform()
}
-minecraft {
- version = "1.8.9-11.15.1.2318-1.8.9"
- runDir = "run"
+dependencies {
+ minecraft('com.mojang:minecraft:1.8.9')
+ mappings('de.oceanlabs.mcp:mcp_stable:22-1.8.9')
+ forge('net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9')
+
+ implementation 'org.jetbrains:annotations-java5:23.0.0'
+ implementation 'org.joml:joml:1.10.5'
+ implementation 'com.github.ben-manes.caffeine:caffeine:2.9.3'
- mappings = "stable_22"
+ modRuntimeOnly('me.djtheredstoner:DevAuth-forge-legacy:1.1.0')
+
+ compileOnly 'cc.polyfrost:oneconfig-1.8.9-forge:0.1.0-alpha+' // Should not be included in jar
+ implementation 'cc.polyfrost:oneconfig-wrapper-launchwrapper:1.0.0-alpha+' // Should be included in jar
}
+tasks.withType(JavaCompile) {
+ options.encoding = 'UTF-8'
+}
-jar {
- manifest.attributes(
- 'Main-Class': 'DungeonRoomsInstallerFrame'
- )
+tasks.withType(Jar) {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ archivesBaseName = 'drm'
+ manifest {
+ attributes['ModSide'] = 'CLIENT'
+ attributes['TweakOrder'] = '0'
+ attributes['TweakClass'] = 'cc.polyfrost.oneconfigwrapper.OneConfigWrapper'
+ attributes['ForceLoadAsMod'] = 'true'
+ attributes['FMLCorePluginContainsFMLMod'] = 'true'
+// this['TweakClass'] = 'org.spongepowered.asm.launch.MixinTweaker'
+// this['MixinConfigs'] = 'mixins.examplemod.json'
+ }
}
-processResources {
- // this will ensure that this task is redone when the versions change.
- inputs.property "version", project.version
- inputs.property "mcversion", project.minecraft.version
- // replace stuff in mcmod.info, nothing else
- from(sourceSets.main.resources.srcDirs) {
- include 'mcmod.info'
+tasks.shadowJar {
- // replace version and mcversion
- expand 'version':project.version, 'mcversion':project.minecraft.version
+ archiveFileName = jar.archiveFileName
+ relocate 'org.joml', 'io.github.quantizr.org.joml'
+ relocate 'com.github.benmanes.caffeine', 'io.github.quantizr.com.github.benmanes.caffeine'
+
+ dependencies {
+ include(dependency('org.joml:joml:..*'))
+ include(dependency('cc.polyfrost:oneconfig-wrapper-launchwrapper:..*'))
+ include(dependency('com.github.ben-manes.caffeine:caffeine:..*'))
}
+}
+
+
+tasks.named('remapJar') {
+ archiveClassifier = 'all'
+ from(tasks.shadowJar)
+ input = tasks.shadowJar.archiveFile
+}
+
- // copy everything else, thats not the mcmod.info
+tasks.assemble.dependsOn tasks.remapJar
+
+processResources {
+ inputs.property 'version', project.version
from(sourceSets.main.resources.srcDirs) {
- exclude 'mcmod.info'
+ duplicatesStrategy = 'include'
+ include 'mcmod.info'
+ expand 'version': project.version
}
-}
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..6c41dec
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,2 @@
+org.gradle.jvmargs=-Xmx2G
+loom.platform=forge
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 30d399d..41d9927 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a0c9444..b1159fc 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Tue Jan 26 23:06:02 PST 2021
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..64c5567
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,21 @@
+pluginManagement {
+ repositories {
+ mavenCentral()
+ gradlePluginPortal()
+ maven{ url "https://oss.sonatype.org/content/repositories/snapshots"}
+ maven{ url "https://maven.architectury.dev/"}
+ maven{ url "https://maven.fabricmc.net"}
+ maven{ url "https://maven.minecraftforge.net/"}
+ maven{ url "https://repo.spongepowered.org/maven/"}
+ maven{ url "https://repo.sk1er.club/repository/maven-releases/"}
+ }
+ resolutionStrategy {
+ eachPlugin {
+ if (requested.id.id == "gg.essential.loom") {
+ useModule("gg.essential:architectury-loom:${requested.version}")
+ }
+ }
+ }
+}
+
+rootProject.name = "Dungeon Rooms"
\ No newline at end of file
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/DungeonRooms.java b/src/main/java/io/github/quantizr/dungeonrooms/DungeonRooms.java
deleted file mode 100644
index ed5532d..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/DungeonRooms.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import io.github.quantizr.dungeonrooms.commands.RoomCommand;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.Waypoints;
-import io.github.quantizr.dungeonrooms.gui.WaypointsGUI;
-import io.github.quantizr.dungeonrooms.handlers.ConfigHandler;
-import io.github.quantizr.dungeonrooms.handlers.OpenLink;
-import io.github.quantizr.dungeonrooms.handlers.PacketHandler;
-import io.github.quantizr.dungeonrooms.handlers.TextRenderer;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.DungeonManager;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.RoomDetection;
-import io.github.quantizr.dungeonrooms.utils.Utils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.client.gui.ScaledResolution;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.client.settings.KeyBinding;
-import net.minecraft.event.ClickEvent;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.client.ClientCommandHandler;
-import net.minecraftforge.client.event.RenderGameOverlayEvent;
-import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.fml.client.registry.ClientRegistry;
-import net.minecraftforge.fml.common.Loader;
-import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.common.Mod.EventHandler;
-import net.minecraftforge.fml.common.event.FMLInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.InputEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
-import net.minecraftforge.fml.common.network.FMLNetworkEvent;
-import net.minecraftforge.fml.common.versioning.DefaultArtifactVersion;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.lwjgl.input.Keyboard;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.*;
-
-@Mod(modid = DungeonRooms.MODID, version = DungeonRooms.VERSION)
-public class DungeonRooms
-{
- public static final String MODID = "dungeonrooms";
- public static final String VERSION = "3.3.2";
-
- Minecraft mc = Minecraft.getMinecraft();
- public static Logger logger;
-
- public static JsonObject roomsJson;
- public static JsonObject waypointsJson;
- public static HashMap> ROOM_DATA = new HashMap<>();
-
- public static boolean usingSBPSecrets = false;
- public static KeyBinding[] keyBindings = new KeyBinding[3];
- public static String imageHotkeyOpen = "gui";
- static int tickAmount = 1;
-
- public static List textToDisplay = null;
- public static int textLocX = 50;
- public static int textLocY = 5;
-
- public static List motd = null;
- public static String configDir;
- public static boolean firstLogin = false;
-
- @EventHandler
- public void preInit(final FMLPreInitializationEvent event) {
- ClientCommandHandler.instance.registerCommand(new RoomCommand());
- configDir = event.getModConfigurationDirectory().toString();
-
- //initialize logger
- logger = LogManager.getLogger(DungeonRooms.class);
- Utils.setLogLevel(LogManager.getLogger(DungeonRooms.class), Level.INFO);
- }
-
- @EventHandler
- public void init(FMLInitializationEvent event) {
- long time1 = System.currentTimeMillis();
-
- //start room data loading executors first or else it will block later and slow down loading by ~200ms
- List paths = Utils.getAllPaths("catacombs");
- final ExecutorService executor = Executors.newFixedThreadPool(4); //don't need 8 threads cause it's just 1x1 that takes longest
- Future> future1x1 = executor.submit(() -> Utils.pathsToRoomData("1x1", paths));
- Future> future1x2 = executor.submit(() -> Utils.pathsToRoomData("1x2", paths));
- Future> future1x3 = executor.submit(() -> Utils.pathsToRoomData("1x3", paths));
- Future> future1x4 = executor.submit(() -> Utils.pathsToRoomData("1x4", paths));
- Future> future2x2 = executor.submit(() -> Utils.pathsToRoomData("2x2", paths));
- Future> futureLShape = executor.submit(() -> Utils.pathsToRoomData("L-shape", paths));
- Future> futurePuzzle = executor.submit(() -> Utils.pathsToRoomData("Puzzle", paths));
- Future> futureTrap = executor.submit(() -> Utils.pathsToRoomData("Trap", paths));
-
- //register classes
- MinecraftForge.EVENT_BUS.register(this);
- MinecraftForge.EVENT_BUS.register(new DungeonManager());
- MinecraftForge.EVENT_BUS.register(new RoomDetection());
- MinecraftForge.EVENT_BUS.register(new Waypoints());
-
- //reload config
- ConfigHandler.reloadConfig();
-
- //register keybindings
- keyBindings[0] = new KeyBinding("Open Room Images in DSG/SBP", Keyboard.KEY_O, "Dungeon Rooms Mod");
- keyBindings[1] = new KeyBinding("Open Waypoint Config Menu", Keyboard.KEY_P, "Dungeon Rooms Mod");
- keyBindings[2] = new KeyBinding("Show Waypoints in Practice Mode", Keyboard.KEY_I, "Dungeon Rooms Mod");
- for (KeyBinding keyBinding : keyBindings) {
- ClientRegistry.registerKeyBinding(keyBinding);
- }
-
- //get room and waypoint info
- try (BufferedReader roomsReader = new BufferedReader(new InputStreamReader(mc.getResourceManager()
- .getResource(new ResourceLocation("dungeonrooms", "dungeonrooms.json")).getInputStream()));
- BufferedReader waypointsReader = new BufferedReader(new InputStreamReader(mc.getResourceManager()
- .getResource(new ResourceLocation("dungeonrooms", "secretlocations.json")).getInputStream()))
- ) {
- Gson gson = new Gson();
- roomsJson = gson.fromJson(roomsReader, JsonObject.class);
- logger.info("DungeonRooms: Loaded dungeonrooms.json");
-
- waypointsJson = gson.fromJson(waypointsReader, JsonObject.class);
- logger.info("DungeonRooms: Loaded secretlocations.json");
- } catch (IOException e) {
- e.printStackTrace();
- }
-
-
- //set RoomData to futures - this will block if the rest of init was fast
- try {
- long time2 = System.currentTimeMillis();
- ROOM_DATA.put("1x1", future1x1.get());
- long time3 = System.currentTimeMillis();
- ROOM_DATA.put("1x2", future1x2.get());
- ROOM_DATA.put("1x3", future1x3.get());
- ROOM_DATA.put("1x4", future1x4.get());
- ROOM_DATA.put("2x2", future2x2.get());
- ROOM_DATA.put("L-shape", futureLShape.get());
- ROOM_DATA.put("Puzzle", futurePuzzle.get());
- ROOM_DATA.put("Trap", futureTrap.get());
- long time4 = System.currentTimeMillis();
- logger.debug("DungeonRooms: Time(ms) for init before get futures: " + (time2 - time1));
- logger.debug("DungeonRooms: Blocked Time(ms) for 1x1: " + (time3 - time2));
- logger.debug("DungeonRooms: Blocked Time(ms) remaining for other rooms: " + (time4 - time3));
- } catch (ExecutionException | InterruptedException e) {
- e.printStackTrace();
- }
- executor.shutdown();
- }
-
- @EventHandler
- public void postInit(final FMLPostInitializationEvent event) {
- usingSBPSecrets = Loader.isModLoaded("sbp");
- DungeonRooms.logger.info("DungeonRooms: SBP Dungeon Secrets detection: " + usingSBPSecrets);
- }
-
- /**
- * Modified from Danker's Skyblock Mod under the GNU General Public License v3.0
- * https://github.com/bowser0000/SkyblockMod/blob/master/LICENSE
- * @author bowser0000
- */
- @SubscribeEvent
- public void onServerConnect(FMLNetworkEvent.ClientConnectedToServerEvent event) {
- if (mc.getCurrentServerData() == null) return;
- if (mc.getCurrentServerData().serverIP.toLowerCase().contains("hypixel.")) {
- logger.info("DungeonRooms: Connecting to Hypixel...");
-
- //Packets are used in this mod solely to detect when the player picks up an item. No packets are modified or created.
- event.manager.channel().pipeline().addBefore("packet_handler", "drm_packet_handler", new PacketHandler());
- logger.info("DungeonRooms: Packet Handler added");
-
- new Thread(() -> {
- try {
- while (mc.thePlayer == null) {
- //Yes, I'm too lazy to code something proper so I'm busy-waiting, shut up. no :) -carmel
- //It usually waits for less than half a second
- Thread.sleep(100);
- }
- Thread.sleep(3000);
- if (mc.getCurrentServerData().serverIP.toLowerCase().contains("hypixel.")) {
- logger.info("DungeonRooms: Checking for conflicting keybindings...");
- Utils.checkForConflictingHotkeys();
-
- logger.info("DungeonRooms: Checking for updates...");
- URL url = new URL("https://api.github.com/repos/Quantizr/DungeonRoomsMod/releases/latest");
- URLConnection request = url.openConnection();
- request.connect();
- JsonParser json = new JsonParser();
- JsonObject latestRelease = json.parse(new InputStreamReader((InputStream) request.getContent())).getAsJsonObject();
-
- String latestTag = latestRelease.get("tag_name").getAsString();
- DefaultArtifactVersion currentVersion = new DefaultArtifactVersion(VERSION);
- DefaultArtifactVersion latestVersion = new DefaultArtifactVersion(latestTag.substring(1));
-
- if (currentVersion.compareTo(latestVersion) < 0) {
- String releaseURL = "https://github.com/Quantizr/DungeonRoomsMod/releases/latest";
- ChatComponentText update = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [UPDATE] ");
- update.setChatStyle(update.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, releaseURL)));
- mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Dungeon Rooms Mod is outdated. Please update to " + latestTag + ".\n").appendSibling(update));
- } else {
- logger.info("DungeonRooms: No update found");
- }
-
- logger.info("DungeonRooms: Getting MOTD...");
- url = new URL("https://gist.githubusercontent.com/Quantizr/01aca53e61cef5dfd08989fec600b204/raw/");
- BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
- String line;
- motd = new ArrayList<>();
- while ((line = in.readLine()) != null) {
- motd.add(line);
- }
- in.close();
- logger.info("DungeonRooms: MOTD has been checked");
- }
- } catch (IOException | InterruptedException e) {
- mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Dungeon Rooms: An error has occured. See logs for more details."));
- e.printStackTrace();
- }
-
- }).start();
- }
- }
-
- @SubscribeEvent
- public void onTick(TickEvent.ClientTickEvent event) {
- if (event.phase != TickEvent.Phase.START) return;
- EntityPlayerSP player = mc.thePlayer;
-
- tickAmount++;
- if (tickAmount % 20 == 0) {
- if (player != null) {
- Utils.checkForSkyblock();
- Utils.checkForCatacombs();
- tickAmount = 0;
- }
- }
- }
-
- @SubscribeEvent
- public void onKey(InputEvent.KeyInputEvent event) {
- EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
- if (keyBindings[0].isPressed()) {
- if (!Utils.inCatacombs) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this hotkey inside of a dungeon room"));
- return;
- }
- switch (imageHotkeyOpen) {
- case "gui":
- OpenLink.checkForLink("gui");
- break;
- case "dsg":
- OpenLink.checkForLink("dsg");
- break;
- case "sbp":
- OpenLink.checkForLink("sbp");
- break;
- default:
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: hotkeyOpen config value improperly set, do \"/room set \" to change the value"));
- break;
- }
- }
- if (keyBindings[1].isPressed()) {
- mc.addScheduledTask(() -> mc.displayGuiScreen(new WaypointsGUI()));
- }
- if (keyBindings[2].isPressed()) {
- if (Waypoints.enabled && !Waypoints.practiceModeOn) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Run \"/room toggle practice\" to enable Practice Mode."));
- } else if (!Waypoints.enabled && Waypoints.practiceModeOn) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Waypoints must be enabled for Practice Mode to work."));
- }
- }
- }
-
- @SubscribeEvent
- public void renderPlayerInfo(final RenderGameOverlayEvent.Post event) {
- if (event.type != RenderGameOverlayEvent.ElementType.ALL) return;
- if (Utils.inSkyblock) {
- if (textToDisplay != null && !textToDisplay.isEmpty()) {
- ScaledResolution scaledResolution = new ScaledResolution(mc);
- int y = 0;
- for (String line:textToDisplay) {
- int roomStringWidth = mc.fontRendererObj.getStringWidth(line);
- TextRenderer.drawText(mc, line, ((scaledResolution.getScaledWidth() * textLocX) / 100) - (roomStringWidth / 2),
- ((scaledResolution.getScaledHeight() * textLocY) / 100) + y, 1D, true);
- y += mc.fontRendererObj.FONT_HEIGHT;
- }
- }
- }
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/commands/RoomCommand.java b/src/main/java/io/github/quantizr/dungeonrooms/commands/RoomCommand.java
deleted file mode 100644
index 21c1e02..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/commands/RoomCommand.java
+++ /dev/null
@@ -1,614 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.commands;
-
-import com.google.gson.JsonObject;
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.DungeonManager;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.RoomDetection;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.Waypoints;
-import io.github.quantizr.dungeonrooms.gui.WaypointsGUI;
-import io.github.quantizr.dungeonrooms.handlers.ConfigHandler;
-import io.github.quantizr.dungeonrooms.handlers.OpenLink;
-import io.github.quantizr.dungeonrooms.utils.MapUtils;
-import io.github.quantizr.dungeonrooms.utils.Utils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.command.CommandBase;
-import net.minecraft.command.ICommandSender;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.MovingObjectPosition;
-import net.minecraft.world.World;
-
-import java.awt.*;
-import java.awt.datatransfer.StringSelection;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class RoomCommand extends CommandBase {
-
- @Override
- public String getCommandName() {
- return "room";
- }
-
- @Override
- public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName();
- }
-
- @Override
- public List getCommandAliases() {
- return Collections.singletonList("drm");
- }
-
- @Override
- public int getRequiredPermissionLevel() {
- return 0;
- }
-
-
- @Override
- public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
- if (args.length == 1) {
- return getListOfStringsMatchingLastWord(args, "help", "waypoints", "move", "toggle", "set", "discord");
- }
- if (args.length > 1) {
- if (args[0].equalsIgnoreCase("toggle")) {
- return getListOfStringsMatchingLastWord(args, "help", "gui", "waypointtext", "waypointboundingbox", "waypointbeacon");
- } else if (args[0].equalsIgnoreCase("set")) {
- return getListOfStringsMatchingLastWord(args, "gui", "dsg", "sbp");
- }
- }
- return null;
- }
-
- @Override
- public void processCommand(ICommandSender arg0, String[] arg1) {
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayer player = (EntityPlayer) arg0;
-
- if (arg1.length < 1) {
- if (!Utils.inCatacombs) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this command in dungeons or run \"/room help\" for additional options"));
- } else {
- if (DungeonManager.gameStage == 2) {
- for (String line : DungeonRooms.textToDisplay) {
- player.addChatMessage(new ChatComponentText(line));
- }
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN
- + "Dungeon Rooms: You can also run \"/room help\" for additional options"));
- } else {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this command while clearing rooms or run \"/room help\" for additional options"));
- }
- }
- } else {
- switch (arg1[0].toLowerCase()) {
- case "help":
- player.addChatMessage(new ChatComponentText("\n"
- + EnumChatFormatting.GOLD + "Dungeon Rooms Mod Version " + DungeonRooms.VERSION + "\n"
- + EnumChatFormatting.DARK_PURPLE + "Hotkeys: (Configurable in Controls Menu)\n"
- + EnumChatFormatting.AQUA + " " + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[1].getKeyCode()) + EnumChatFormatting.WHITE + " - Opens Secret Waypoints configuration GUI\n"
- + EnumChatFormatting.AQUA + " " + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[0].getKeyCode()) + EnumChatFormatting.WHITE + " - (old) Opens images of secret locations\n"
- + EnumChatFormatting.AQUA + " " + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[2].getKeyCode()) + EnumChatFormatting.WHITE + " - View waypoints in Practice Mode (\"/room toggle practice\")\n"
- + EnumChatFormatting.DARK_PURPLE + "Commands:\n"
- + EnumChatFormatting.AQUA + " /room" + EnumChatFormatting.WHITE + " - Tells you in chat what room you are standing in.\n"
- + EnumChatFormatting.AQUA + " /room help" + EnumChatFormatting.WHITE + " - Displays this message.\n"
- + EnumChatFormatting.AQUA + " /room waypoints" + EnumChatFormatting.WHITE + " - Opens Secret Waypoints config GUI, alternatively can be opened with hotkey\n"
- + EnumChatFormatting.AQUA + " /room move " + EnumChatFormatting.WHITE + " - Moves the GUI room name text to a coordinate. and are numbers between 0 and 100. Default is 50 for and 5 for .\n"
- + EnumChatFormatting.AQUA + " /room toggle [argument]" + EnumChatFormatting.WHITE + " - Run \"/room toggle help\" for full list of toggles.\n"
- + EnumChatFormatting.AQUA + " /room set " + EnumChatFormatting.WHITE + " - Configure whether the hotkey opens the selector GUI or directly goes to DSG/SBP.\n"
- + EnumChatFormatting.AQUA + " /room discord" + EnumChatFormatting.WHITE + " - Opens the Discord invite for this mod in your browser.\n" /* +
- + EnumChatFormatting.AQUA + " /room open" + EnumChatFormatting.WHITE + " - Opens the gui for opening either DSG or SBP.\n"
- + EnumChatFormatting.AQUA + " /room dsg" + EnumChatFormatting.WHITE + " - Directly opens DSG in the Discord client.\n"
- + EnumChatFormatting.AQUA + " /room sbp" + EnumChatFormatting.WHITE + " - Directly opens the SBP secrets (if you have the mod installed).\n" */
- ));
- break;
-
- case "gui":
- case "open":
- if (!Utils.inCatacombs) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this command in dungeons"));
- return;
- }
- OpenLink.checkForLink("gui");
- break;
-
- case "dsg":
- if (!Utils.inCatacombs) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this command in dungeons"));
- return;
- }
- OpenLink.checkForLink("dsg");
- break;
-
- case "sbp":
- if (!Utils.inCatacombs) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this command in dungeons"));
- return;
- }
- OpenLink.checkForLink("sbp");
- break;
-
- case "set":
- switch (arg1[1].toLowerCase()) {
- case "gui":
- DungeonRooms.imageHotkeyOpen = "gui";
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Hotkey has been set to open: GUI"));
- ConfigHandler.writeStringConfig("gui", "hotkeyOpen", "gui");
- break;
- case "dsg":
- DungeonRooms.imageHotkeyOpen = "dsg";
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Hotkey has been set to open: DSG"));
- ConfigHandler.writeStringConfig("gui", "hotkeyOpen", "dsg");
- break;
- case "sbp":
- DungeonRooms.imageHotkeyOpen = "sbp";
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Hotkey has been set to open: SBP"));
- ConfigHandler.writeStringConfig("gui", "hotkeyOpen", "sbp");
- break;
- default:
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Valid options are "));
- break;
- }
- break;
-
- case "wp":
- case "waypoint":
- case "waypoints":
- new Thread(() -> { mc.addScheduledTask(() -> mc.displayGuiScreen(new WaypointsGUI())); }).start();
- break;
-
- case "move":
- DungeonRooms.textLocX = Integer.parseInt(arg1[1]);
- DungeonRooms.textLocY = Integer.parseInt(arg1[2]);
- ConfigHandler.writeIntConfig("gui", "scaleX", DungeonRooms.textLocX);
- ConfigHandler.writeIntConfig("gui", "scaleY", DungeonRooms.textLocY);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Room GUI has been moved to " + arg1[1] + ", " + arg1[2]));
- break;
-
- case "toggle":
- String toggleHelp = "\n"
- + EnumChatFormatting.GOLD + " Dungeon Rooms Mod Toggle Commands:" + "\n"
- + EnumChatFormatting.AQUA + " /room toggle gui" + EnumChatFormatting.WHITE + " - Toggles displaying current room in gui.\n"
- + EnumChatFormatting.AQUA + " /room toggle motd" + EnumChatFormatting.WHITE + " - Toggles displaying the Welcome/MOTD message at the start of a dungeon run.\n"
- + EnumChatFormatting.AQUA + " /room toggle practice" + EnumChatFormatting.WHITE + " - Toggles Practice Mode, where waypoints are only displayed when holding down " + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[2].getKeyCode()) +"\".\n"
- + EnumChatFormatting.AQUA + " /room toggle waypoints" + EnumChatFormatting.WHITE + " - Toggles Waypoints, does the same thing as pressing \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[1].getKeyCode()) +"\" then clicking \"Waypoints\".\n"
- + EnumChatFormatting.AQUA + " /room toggle waypointtext" + EnumChatFormatting.WHITE + " - Toggles displaying waypoint names above waypoints.\n"
- + EnumChatFormatting.AQUA + " /room toggle waypointboundingbox" + EnumChatFormatting.WHITE + " - Toggles displaying the bounding box on waypoints.\n"
- + EnumChatFormatting.AQUA + " /room toggle waypointbeacon" + EnumChatFormatting.WHITE + " - Toggles displaying the beacon above waypoints.\n";
-
- if (arg1.length == 1) {
- player.addChatMessage(new ChatComponentText(toggleHelp));
- break;
- } else {
- switch (arg1[1].toLowerCase()) {
- case "gui":
- DungeonManager.guiToggled = !DungeonManager.guiToggled;
- ConfigHandler.writeBooleanConfig("toggles", "guiToggled", DungeonManager.guiToggled);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Display room names in GUI has been set to: " + DungeonManager.guiToggled));
- break;
-
- case "welcome":
- case "motd":
- DungeonManager.motdToggled = !DungeonManager.motdToggled;
- ConfigHandler.writeBooleanConfig("toggles", "motdToggled", DungeonManager.motdToggled);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Display Welcome/MOTD has been set to: " + DungeonManager.motdToggled));
- break;
-
- case "practice":
- case "practicemode":
- Waypoints.practiceModeOn = !Waypoints.practiceModeOn;
- ConfigHandler.writeBooleanConfig("waypoint", "practiceModeOn", Waypoints.practiceModeOn);
- if (Waypoints.practiceModeOn) {
- player.addChatMessage(new ChatComponentText("§eDungeon Rooms: Practice Mode has been enabled.\n"
- + "§e Waypoints will only show up while you are pressing \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[2].getKeyCode()) + "\".\n"
- + "§r (Hotkey is configurable in Minecraft Controls menu)"
- ));
- } else {
- player.addChatMessage(new ChatComponentText("§eDungeon Rooms: Practice Mode has been disabled."));
- }
- break;
-
- case "waypoint":
- case "waypoints":
- Waypoints.enabled = !Waypoints.enabled;
- ConfigHandler.writeBooleanConfig("waypoint", "waypointsToggled", Waypoints.enabled);
- if (Waypoints.enabled) {
- player.addChatMessage(new ChatComponentText("§eDungeon Rooms: Waypoints will now automatically show up when you enter a new dungeon room."));
- } else {
- player.addChatMessage(new ChatComponentText("§eDungeon Rooms: Waypoints have been disabled."));
- }
- break;
-
- case "text":
- case "waypointtext":
- Waypoints.showWaypointText = !Waypoints.showWaypointText;
- ConfigHandler.writeBooleanConfig("waypoint", "showWaypointText", Waypoints.showWaypointText);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Show Waypoint Text has been set to: " + Waypoints.showWaypointText));
- break;
-
- case "boundingbox":
- case "waypointboundingbox":
- Waypoints.showBoundingBox = !Waypoints.showBoundingBox;
- ConfigHandler.writeBooleanConfig("waypoint", "showBoundingBox", Waypoints.showBoundingBox);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Show Waypoint Bounding Box has been set to: " + Waypoints.showBoundingBox));
- break;
-
- case "beacon":
- case "waypointbeacon":
- Waypoints.showBeacon = !Waypoints.showBeacon;
- ConfigHandler.writeBooleanConfig("waypoint", "showBeacon", Waypoints.showBeacon);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Show Waypoint Beacon has been set to: " + Waypoints.showBeacon));
- break;
-
- /*
- case "dev":
- case "coord":
- AutoRoom.coordToggled = !AutoRoom.coordToggled;
- ConfigHandler.writeBooleanConfig("toggles", "coordToggled", AutoRoom.coordToggled);
- player.addChatMessage(new ChatComponentText("Display dev coords has been set to: " + AutoRoom.coordToggled));
- break;
- */
-
- case "override":
- Utils.dungeonOverride = !Utils.dungeonOverride;
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Force inCatacombs has been set to: " + Utils.dungeonOverride));
- break;
-
- case "help":
- default:
- player.addChatMessage(new ChatComponentText(toggleHelp));
- break;
- }
- }
- break;
-
- case "reload":
- ConfigHandler.reloadConfig();
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Reloaded config file"));
- break;
-
- case "discord":
- try {
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Opening Dungeon Rooms Discord invite in browser..."));
- Desktop.getDesktop().browse(new URI("https://discord.gg/7B5RbsArYK"));
- } catch (IOException | URISyntaxException e) {
- e.printStackTrace();
- }
- break;
-
- case "relative":
- if (!RoomDetection.roomDirection.equals("undefined") && RoomDetection.roomCorner != null) {
- if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.getBlockPos() != null) {
- BlockPos relativePos = MapUtils.actualToRelative(mc.objectMouseOver.getBlockPos(), RoomDetection.roomDirection, RoomDetection.roomCorner);
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: You are looking at relative blockPos: " + relativePos));
- }
- } else {
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Unable to get relative blockPos at this time."));
- }
- break;
-
- case "json":
- if (!Utils.inCatacombs && DungeonManager.gameStage != 2 && DungeonManager.gameStage != 3) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Use this command in dungeons"));
- return;
- }
- if (DungeonRooms.roomsJson.get(RoomDetection.roomName) != null) {
- JsonObject json = DungeonRooms.roomsJson.get(RoomDetection.roomName).getAsJsonObject();
- json.addProperty("name", RoomDetection.roomName); //add room name property
- player.addChatMessage(new ChatComponentText(json.toString()));
- }
- break;
-
- //return available information about a room
- case "roominfo":
- if (!Utils.inCatacombs || DungeonManager.gameStage != 2) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Not in room clearing phase of dungeons"));
- }
- if (DungeonManager.entranceMapCorners != null) {
- player.addChatMessage(new ChatComponentText("dev: entranceMapCorners = " + new ArrayList<>(Arrays.asList(DungeonManager.entranceMapCorners))));
- } else {
- player.addChatMessage(new ChatComponentText("dev: entranceMapCorners = null"));
- }
- if (DungeonManager.entrancePhysicalNWCorner != null) {
- player.addChatMessage(new ChatComponentText("dev: entrancePhysicalNWCorner = " + DungeonManager.entrancePhysicalNWCorner));
- } else {
- player.addChatMessage(new ChatComponentText("dev: entrancePhysicalNWCorner = null"));
- }
- player.addChatMessage(new ChatComponentText("dev: currentMapSegments = " + RoomDetection.currentMapSegments));
- player.addChatMessage(new ChatComponentText("dev: currentPhysicalSegments = " + RoomDetection.currentPhysicalSegments));
- player.addChatMessage(new ChatComponentText("dev: roomName = " + RoomDetection.roomName));
- player.addChatMessage(new ChatComponentText("dev: roomSize = " + RoomDetection.roomSize));
- player.addChatMessage(new ChatComponentText("dev: roomColor = " + RoomDetection.roomColor));
- player.addChatMessage(new ChatComponentText("dev: roomCategory = " + RoomDetection.roomCategory));
-
- player.addChatMessage(new ChatComponentText("dev: roomDirection = " + RoomDetection.roomDirection));
- if (RoomDetection.roomCorner != null) {
- player.addChatMessage(new ChatComponentText("dev: roomCorner = " + RoomDetection.roomCorner));
- } else {
- player.addChatMessage(new ChatComponentText("dev: roomCorner = null"));
- }
- break;
-
- //returns the list of BlockPos which were checked against ".skeleton" room data files before room was determined
- case "blocksused":
- if (!Utils.inCatacombs || DungeonManager.gameStage != 2) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Not in room clearing phase of dungeons"));
- }
- player.addChatMessage(new ChatComponentText(RoomDetection.blocksUsed.toString()));
- break;
-
- //The following is for adding new rooms
- case "add":
- World world = mc.theWorld;
- if (!Utils.inCatacombs || DungeonManager.gameStage != 2 || RoomDetection.roomDirection.equals("undefined") || RoomDetection.roomCorner == null) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Current dungeon room is undefined"));
- return;
- }
- switch (arg1[1].toLowerCase()) {
- case "chest":
- if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.getBlockPos() != null) {
- BlockPos viewingPos = MapUtils.actualToRelative(mc.objectMouseOver.getBlockPos(), RoomDetection.roomDirection, RoomDetection.roomCorner);
- if (world.getBlockState(mc.objectMouseOver.getBlockPos()).getBlock() == Blocks.chest) {
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Chest\",\n" +
- " \"category\":\"chest\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Chest\",\n" +
- " \"category\":\"chest\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"),
- null
- );
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at a Chest Secret"));
- }
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at anything"));
- }
- break;
- case "wither":
- if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.getBlockPos() != null) {
- BlockPos viewingPos = MapUtils.actualToRelative(mc.objectMouseOver.getBlockPos(), RoomDetection.roomDirection, RoomDetection.roomCorner);
- if (world.getBlockState(mc.objectMouseOver.getBlockPos()).getBlock() == Blocks.skull) {
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Wither Essence\",\n" +
- " \"category\":\"wither\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Wither Essence\",\n" +
- " \"category\":\"wither\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"),
- null
- );
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at a Wither Essence Secret"));
- }
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at anything"));
- }
- break;
- case "superboom":
- if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.getBlockPos() != null) {
- BlockPos viewingPos = MapUtils.actualToRelative(mc.objectMouseOver.getBlockPos(), RoomDetection.roomDirection, RoomDetection.roomCorner);
- if (world.getBlockState(mc.objectMouseOver.getBlockPos()).getBlock() == Blocks.stonebrick) {
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Superboom\",\n" +
- " \"category\":\"superboom\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Superboom\",\n" +
- " \"category\":\"superboom\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"),
- null
- );
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at a Superboom entrance"));
- }
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at anything"));
- }
- break;
- case "lever":
- if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.getBlockPos() != null) {
- BlockPos viewingPos = MapUtils.actualToRelative(mc.objectMouseOver.getBlockPos(), RoomDetection.roomDirection, RoomDetection.roomCorner);
- if (world.getBlockState(mc.objectMouseOver.getBlockPos()).getBlock() == Blocks.lever) {
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Lever\",\n" +
- " \"category\":\"lever\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Lever\",\n" +
- " \"category\":\"lever\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"),
- null
- );
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at a Lever"));
- }
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at anything"));
- }
- break;
- case "fairysoul":
- if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.getBlockPos() != null) {
- BlockPos viewingPos = MapUtils.actualToRelative(mc.objectMouseOver.getBlockPos().up(1), RoomDetection.roomDirection, RoomDetection.roomCorner);
- if (world.getBlockState(mc.objectMouseOver.getBlockPos().up(1)).getBlock() == Blocks.air) {
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"Fairy Soul\",\n" +
- " \"category\":\"fairysoul\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"Fairy Soul\",\n" +
- " \"category\":\"fairysoul\",\n" +
- " \"x\":" + viewingPos.getX() + ",\n" +
- " \"y\":" + viewingPos.getY() + ",\n" +
- " \"z\":" + viewingPos.getZ() + "\n" +
- "}"),
- null
- );
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at the block below a Fairy Soul"));
- }
- } else {
- player.addChatMessage(new ChatComponentText("You are not looking at anything"));
- }
- break;
- case "item":
- BlockPos playerPos = MapUtils.actualToRelative(new BlockPos(player.posX,player.posY,player.posZ), RoomDetection.roomDirection, RoomDetection.roomCorner);
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Item\",\n" +
- " \"category\":\"item\",\n" +
- " \"x\":" + playerPos.getX() + ",\n" +
- " \"y\":" + playerPos.getY() + ",\n" +
- " \"z\":" + playerPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Item\",\n" +
- " \"category\":\"item\",\n" +
- " \"x\":" + playerPos.getX() + ",\n" +
- " \"y\":" + playerPos.getY() + ",\n" +
- " \"z\":" + playerPos.getZ() + "\n" +
- "}"),
- null
- );
- break;
- case "entrance":
- BlockPos entrancePos = MapUtils.actualToRelative(new BlockPos(player.posX,player.posY + 1, player.posZ), RoomDetection.roomDirection, RoomDetection.roomCorner);
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Entrance\",\n" +
- " \"category\":\"entrance\",\n" +
- " \"x\":" + entrancePos.getX() + ",\n" +
- " \"y\":" + entrancePos.getY() + ",\n" +
- " \"z\":" + entrancePos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Entrance\",\n" +
- " \"category\":\"entrance\",\n" +
- " \"x\":" + entrancePos.getX() + ",\n" +
- " \"y\":" + entrancePos.getY() + ",\n" +
- " \"z\":" + entrancePos.getZ() + "\n" +
- "}"),
- null
- );
- break;
- case "bat":
- BlockPos batPos = MapUtils.actualToRelative(new BlockPos(player.posX,player.posY + 1, player.posZ), RoomDetection.roomDirection, RoomDetection.roomCorner);
- player.addChatMessage(new ChatComponentText("{\n" +
- " \"secretName\":\"# - Bat\",\n" +
- " \"category\":\"bat\",\n" +
- " \"x\":" + batPos.getX() + ",\n" +
- " \"y\":" + batPos.getY() + ",\n" +
- " \"z\":" + batPos.getZ() + "\n" +
- "}"));
- Toolkit.getDefaultToolkit()
- .getSystemClipboard()
- .setContents(
- new StringSelection("{\n" +
- " \"secretName\":\"# - Bat\",\n" +
- " \"category\":\"bat\",\n" +
- " \"x\":" + batPos.getX() + ",\n" +
- " \"y\":" + batPos.getY() + ",\n" +
- " \"z\":" + batPos.getZ() + "\n" +
- "}"),
- null
- );
- break;
- default:
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Valid options are "));
- break;
- }
- break;
-
- default:
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Run \"/room\" by itself to see the room name or run \"/room help\" for additional options"));
- }
- }
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/DungeonManager.java b/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/DungeonManager.java
deleted file mode 100644
index 6771ebd..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/DungeonManager.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.dungeons.catacombs;
-
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.utils.MapUtils;
-import io.github.quantizr.dungeonrooms.utils.Utils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.Vec3;
-import net.minecraftforge.client.event.ClientChatReceivedEvent;
-import net.minecraftforge.event.world.WorldEvent;
-import net.minecraftforge.fml.common.eventhandler.EventPriority;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
-
-import java.awt.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-public class DungeonManager {
- Minecraft mc = Minecraft.getMinecraft();
- public static int gameStage = 0; //0: Not in Dungeon, 1: Entrance/Not Started, 2: Room Clear, 3: Boss, 4: Done
-
- public static boolean guiToggled = true;
- public static boolean motdToggled = true;
-
- public static Integer[][] map;
- public static Point[] entranceMapCorners;
- public static Point entrancePhysicalNWCorner;
-
- public static int tickAmount = 0;
-
- long bloodTime = Long.MAX_VALUE;
-
- boolean oddRun = true; //if current run number is even or odd
-
- @SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true)
- public void onChat(ClientChatReceivedEvent event) {
- if (!Utils.inCatacombs) return;
- String message = event.message.getFormattedText();
-
- //gameStage set from 0 to 1 in the onTick function later
- if (message.startsWith("§e[NPC] §bMort§f: §rHere, I found this map when I first entered the dungeon.§r")) {
- gameStage = 2;
- DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
- } else if (message.startsWith("§r§c[BOSS] The Watcher§r§f: You have proven yourself. You may pass.§r")) {
- bloodTime = System.currentTimeMillis() + 5000; //5 seconds because additional messages might come through
- DungeonRooms.logger.info("DungeonRooms: bloodDone has been set to True");
- } else if (System.currentTimeMillis() > bloodTime && ((message.startsWith("§r§c[BOSS] ") && !message.contains(" The Watcher§r§f:")) || message.startsWith("§r§4[BOSS] "))) {
- if (gameStage != 3) {
- gameStage = 3;
- DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
-
- //this part mostly so /room json doesn't error out
- RoomDetection.resetCurrentRoom();
- RoomDetection.roomName = "Boss Room";
- RoomDetection.roomCategory = "General";
- //RoomDetection.newRoom() //uncomment to display Boss Room in gui
- }
- } else if (message.contains("§r§c☠ §r§eDefeated §r")) {
- gameStage = 4;
- DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
- RoomDetection.resetCurrentRoom();
- }
- }
-
- @SubscribeEvent
- public void onTick(TickEvent.ClientTickEvent event) {
- if (event.phase != TickEvent.Phase.START) return;
- EntityPlayerSP player = mc.thePlayer;
-
- if (!Utils.inCatacombs) return; //From this point forward, everything assumes that Utils.inCatacombs == true
- tickAmount++;
-
- if ((gameStage == 0 || gameStage == 1) && tickAmount % 20 == 0) {
-
- if (DungeonRooms.firstLogin) {
- DungeonRooms.firstLogin = false;
- mc.thePlayer.addChatMessage(new ChatComponentText("§d§l--- Dungeon Rooms Mod ---\n"
- + "§e This appears to be your first time using DRM v" + DungeonRooms.VERSION + ".\n"
- + "§e Press \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[1].getKeyCode())
- +"\" to configure Secret Waypoint settings, If you do not wish to use Waypoints, you can instead press \""
- + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[0].getKeyCode())
- +"\" while inside a dungeon room to view images of the secrets for that room.\n"
- + "§r (If you need help, join the Discord! Run \"/room discord\" to open the Discord invite.)\n"
- + "§d§l------------------------"
- ));
- }
-
- if (gameStage == 0) {
- Utils.checkForConflictingHotkeys();
- gameStage = 1;
- DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
- }
-
- Integer[][] map = MapUtils.updatedMap();
- if (map != null) {
- DungeonRooms.logger.warn("DungeonRooms: Run started but gameStage is not on 2");
- gameStage = 2;
- DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
- return;
- }
-
- if (gameStage == 1 && entrancePhysicalNWCorner == null) {
- if (!player.getPositionVector().equals(new Vec3(0.0D,0.0D,0.0D))) {
- //this point is calculated using math, not scanning, which may cause issues when reconnecting to a run
- entrancePhysicalNWCorner = MapUtils.getClosestNWPhysicalCorner(player.getPositionVector());
- DungeonRooms.logger.info("DungeonRooms: entrancePhysicalNWCorner has been set to " + entrancePhysicalNWCorner);
- }
- }
-
- if (DungeonRooms.textToDisplay == null && motdToggled) {
- DungeonRooms.logger.info("DungeonRooms: Updating MOTD on screen");
- if (oddRun || !guiToggled) { //load MOTD on odd runs
- if (DungeonRooms.motd != null) {
- if (!DungeonRooms.motd.isEmpty()) {
- DungeonRooms.textToDisplay = DungeonRooms.motd;
- }
- }
- }
- if (DungeonRooms.textToDisplay == null && guiToggled) { //if MOTD is empty or not odd run load default text
- DungeonRooms.textToDisplay = new ArrayList<>(Arrays.asList(
- "Dungeon Rooms: " + EnumChatFormatting.GREEN + "Press the hotkey \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[1].getKeyCode()) +"\" to configure",
- EnumChatFormatting.GREEN + " waypoint settings. Alternatively, press \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[0].getKeyCode()) + "\" while in a room",
- EnumChatFormatting.GREEN + "to view images of secret locations for that room.",
- "(You can change the keybinds in Minecraft controls menu)"
- ));
- }
- oddRun = !oddRun;
- }
-
- tickAmount = 0;
- }
- }
-
- @SubscribeEvent
- public void onWorldUnload(WorldEvent.Unload event) {
- Utils.inCatacombs = false;
- tickAmount = 0;
- gameStage = 0;
-
- map = null;
- entranceMapCorners = null;
- entrancePhysicalNWCorner = null;
- RoomDetection.entranceMapNullCount = 0;
-
- bloodTime = Long.MAX_VALUE;
-
- if (RoomDetection.stage2Executor != null) RoomDetection.stage2Executor.shutdown();
-
- Waypoints.allSecretsMap.clear();
-
- RoomDetection.resetCurrentRoom();
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/RoomDetection.java b/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/RoomDetection.java
deleted file mode 100644
index 20ddb82..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/RoomDetection.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.dungeons.catacombs;
-
-import com.google.gson.JsonObject;
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.utils.MapUtils;
-import io.github.quantizr.dungeonrooms.utils.RoomDetectionUtils;
-import io.github.quantizr.dungeonrooms.utils.Utils;
-import net.minecraft.block.Block;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.util.*;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
-
-import java.awt.*;
-import java.util.*;
-import java.util.List;
-import java.util.concurrent.*;
-
-import static io.github.quantizr.dungeonrooms.dungeons.catacombs.DungeonManager.*;
-
-public class RoomDetection {
- Minecraft mc = Minecraft.getMinecraft();
- static int stage2Ticks = 0;
-
- static ExecutorService stage2Executor;
-
- public static List currentMapSegments;
- public static List currentPhysicalSegments;
-
- public static String roomSize = "undefined";
- public static String roomColor = "undefined";
- public static String roomCategory = "undefined";
- public static String roomName = "undefined";
- public static String roomDirection = "undefined";
- public static Point roomCorner;
-
-
- public static HashSet currentScannedBlocks = new HashSet<>();
- public static HashMap blocksToCheck = new HashMap<>();
- public static int totalBlocksAvailableToCheck = 0;
- public static List blocksUsed = new ArrayList<>();
- static Future>> futureUpdatePossibleRooms;
- public static HashMap> possibleRooms;
-
- static long incompleteScan = 0;
- static long redoScan = 0;
-
- static int entranceMapNullCount = 0;
-
-
- @SubscribeEvent
- public void onTick(TickEvent.ClientTickEvent event) {
- if (event.phase != TickEvent.Phase.START) return;
- EntityPlayerSP player = mc.thePlayer;
-
- if (!Utils.inCatacombs) return;
-
- //From this point forward, everything assumes that Utils.inCatacombs == true
- if (gameStage == 2) { //Room clearing phase
- stage2Ticks++;
- if (stage2Ticks == 10) {
- stage2Ticks = 0;
- //start ExecutorService with one thread
- if (stage2Executor == null || stage2Executor.isTerminated()) {
- stage2Executor = Executors.newSingleThreadExecutor();
- DungeonRooms.logger.debug("DungeonRooms: New Single Thread Executor Started");
- }
- //set entranceMapCorners
- if (entranceMapCorners == null) {
- map = MapUtils.updatedMap();
- entranceMapCorners = MapUtils.entranceMapCorners(map);
- DungeonRooms.logger.info("DungeonRooms: Getting entrance map corners from hotbar map...");
- } else if (entranceMapCorners[0] == null || entranceMapCorners[1] == null) { //prevent crashes if hotbar map bugged
- DungeonRooms.logger.warn("DungeonRooms: Entrance room not found, hotbar map possibly bugged");
- entranceMapNullCount++;
- entranceMapCorners = null; //retry getting corners again next loop
- if (entranceMapNullCount == 8) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: Error with hotbar map, perhaps your texture pack is interfering with room detection?"));
- DungeonRooms.textToDisplay = new ArrayList<>(Collections.singletonList(
- "Dungeon Rooms: " + EnumChatFormatting.RED + "Hotbar map may be bugged"
- ));
- //gameStage = 4;
- //DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
- }
- } else if (entrancePhysicalNWCorner == null) {
- DungeonRooms.logger.warn("DungeonRooms: Entrance Room coordinates not found");
- //for when people dc and reconnect, or if initial check doesn't work
- Point playerMarkerPos = MapUtils.playerMarkerPos();
- if (playerMarkerPos != null) {
- Point closestNWMapCorner = MapUtils.getClosestNWMapCorner(playerMarkerPos, entranceMapCorners[0], entranceMapCorners[1]);
- if (MapUtils.getMapColor(playerMarkerPos, map).equals("green") && MapUtils.getMapColor(closestNWMapCorner, map).equals("green")) {
- if (!player.getPositionVector().equals(new Vec3(0.0D, 0.0D, 0.0D))) {
- entrancePhysicalNWCorner = MapUtils.getClosestNWPhysicalCorner(player.getPositionVector());
- DungeonRooms.logger.info("DungeonRooms: entrancePhysicalNWCorner has been set to " + entrancePhysicalNWCorner);
- }
- } else {
- DungeonRooms.textToDisplay = new ArrayList<>(Arrays.asList(
- "Dungeon Rooms: " + EnumChatFormatting.RED + "Entrance Room coordinates not found",
- EnumChatFormatting.RED + "Please go back into the middle of the Green Entrance Room."
- ));
- }
- }
- } else {
- Point currentPhysicalCorner = MapUtils.getClosestNWPhysicalCorner(player.getPositionVector());
- if (currentPhysicalSegments != null && !currentPhysicalSegments.contains(currentPhysicalCorner)) {
- //checks if current location is within the bounds of the last detected room
- resetCurrentRoom(); //only instance of resetting room other than leaving Dungeon
- } else if (incompleteScan != 0 && System.currentTimeMillis() > incompleteScan) {
- incompleteScan = 0;
- DungeonRooms.logger.info("DungeonRooms: Rescanning room...");
- raytraceBlocks();
- } else if (redoScan != 0 && System.currentTimeMillis() > redoScan) {
- redoScan = 0;
- DungeonRooms.logger.info("DungeonRooms: Clearing data and rescanning room...");
- possibleRooms = null;
- raytraceBlocks();
- }
-
- if (currentPhysicalSegments == null || currentMapSegments == null || roomSize.equals("undefined") || roomColor.equals("undefined")) {
- updateCurrentRoom();
- if (roomColor.equals("undefined")) {
- DungeonRooms.textToDisplay = new ArrayList<>(Collections.singletonList("Dungeon Rooms: "
- + EnumChatFormatting.RED + "Waiting for hotbar map to update..."));
- } else {
- switch (roomColor) {
- case "brown":
- case "purple":
- case "orange":
- raytraceBlocks();
- break;
- case "yellow":
- roomName = "Miniboss Room";
- newRoom();
- break;
- case "green":
- roomName = "Entrance Room";
- newRoom();
- break;
- case "pink":
- roomName = "Fairy Room";
- newRoom();
- break;
- case "red":
- roomName = "Blood Room";
- newRoom();
- break;
- default:
- roomName = "undefined";
- break;
- }
- }
- }
- }
- }
-
- //these run every tick while in room clearing phase
-
- if (futureUpdatePossibleRooms != null && futureUpdatePossibleRooms.isDone()) {
- try {
- possibleRooms = futureUpdatePossibleRooms.get();
- futureUpdatePossibleRooms = null;
-
- TreeSet possibleRoomsSet = new TreeSet<>();
-
- String tempDirection = "undefined";
-
- for (Map.Entry> entry : possibleRooms.entrySet()) {
- List possibleRoomList = entry.getValue();
- if (!possibleRoomList.isEmpty()) tempDirection = entry.getKey(); //get direction to be used if room identified
- possibleRoomsSet.addAll(possibleRoomList);
- }
-
-
- if (possibleRoomsSet.size() == 0) { //no match
- DungeonRooms.textToDisplay = new ArrayList<>(Arrays.asList(
- "Dungeon Rooms: " + EnumChatFormatting.RED + "No Matching Rooms Detected",
- EnumChatFormatting.RED + "This mod might not have data for this room.",
- EnumChatFormatting.WHITE + "Retrying every 5 seconds..."
- ));
- redoScan = System.currentTimeMillis() + 5000;
-
- } else if (possibleRoomsSet.size() == 1) { //room found
- roomName = possibleRoomsSet.first();
- roomDirection = tempDirection;
- roomCorner = MapUtils.getPhysicalCornerPos(roomDirection, currentPhysicalSegments);
- DungeonRooms.logger.info("DungeonRooms: 576 raytrace vectors sent, returning "
- + currentScannedBlocks.size() + " unique line-of-sight blocks, filtered down to "
- + totalBlocksAvailableToCheck + " blocks, out of which " + blocksUsed.size()
- + " blocks were used to uniquely identify " + roomName + ".");
- newRoom();
-
- } else { //too many matches
- DungeonRooms.textToDisplay = new ArrayList<>(Arrays.asList(
- "Dungeon Rooms: " + EnumChatFormatting.RED + "Unable to Determine Room Name",
- EnumChatFormatting.RED + "Not enough valid blocks were scanned, look at a more open area.",
- EnumChatFormatting.WHITE + "Retrying every second..."
- ));
-
- DungeonRooms.logger.debug("DungeonRooms: Possible rooms list = " + new ArrayList<>(possibleRoomsSet));
- incompleteScan = System.currentTimeMillis() + 1000;
- }
- } catch (ExecutionException | InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
-
-
- void updateCurrentRoom() {
- EntityPlayerSP player = mc.thePlayer;
- map = MapUtils.updatedMap();
- if (map == null) return;
- Point currentPhysicalCorner = MapUtils.getClosestNWPhysicalCorner(player.getPositionVector());
- Point currentMapCorner = MapUtils.physicalToMapCorner(currentPhysicalCorner, entrancePhysicalNWCorner, entranceMapCorners[0], entranceMapCorners[1]);
- roomColor = MapUtils.getMapColor(currentMapCorner, map);
- if (roomColor.equals("undefined")) return;
- currentMapSegments = MapUtils.neighboringSegments(currentMapCorner, map, entranceMapCorners[0], entranceMapCorners[1], new ArrayList<>());
- currentPhysicalSegments = new ArrayList<>();
- for (Point mapCorner : currentMapSegments) {
- currentPhysicalSegments.add(MapUtils.mapToPhysicalCorner(mapCorner, entrancePhysicalNWCorner, entranceMapCorners[0], entranceMapCorners[1]));
- }
- roomSize = MapUtils.roomSize(currentMapSegments);
- roomCategory = MapUtils.roomCategory(roomSize, roomColor);
- }
-
- public static void resetCurrentRoom() {
- DungeonRooms.textToDisplay = null;
- Waypoints.allFound = false;
-
- currentPhysicalSegments = null;
- currentMapSegments = null;
-
- roomSize = "undefined";
- roomColor = "undefined";
- roomCategory = "undefined";
- roomName = "undefined";
- roomDirection = "undefined";
- roomCorner = null;
-
- currentScannedBlocks = new HashSet<>();
- blocksToCheck = new HashMap<>();
- totalBlocksAvailableToCheck = 0;
- blocksUsed = new ArrayList<>();
- futureUpdatePossibleRooms = null;
- possibleRooms = null;
-
- incompleteScan = 0;
- redoScan = 0;
-
- Waypoints.secretNum = 0;
- }
-
- public static void newRoom() {
- if (!roomName.equals("undefined") && !roomCategory.equals("undefined")) {
- //update Waypoints info
- if (DungeonRooms.roomsJson.get(roomName) != null) {
- Waypoints.secretNum = DungeonRooms.roomsJson.get(roomName).getAsJsonObject().get("secrets").getAsInt();
- Waypoints.allSecretsMap.putIfAbsent(roomName, new ArrayList<>(Collections.nCopies(Waypoints.secretNum, true)));
- } else {
- Waypoints.secretNum = 0;
- Waypoints.allSecretsMap.putIfAbsent(roomName, new ArrayList<>(Collections.nCopies(0, true)));
- }
- Waypoints.secretsList = Waypoints.allSecretsMap.get(roomName);
-
- //update GUI text
- if (guiToggled) {
- List lineList = new ArrayList<>();
- String line = "Dungeon Rooms: You are in " + EnumChatFormatting.GREEN + roomCategory
- + EnumChatFormatting.WHITE + " - " + EnumChatFormatting.GREEN + roomName;
-
- if (DungeonRooms.roomsJson.get(roomName) != null) {
- JsonObject roomJson = DungeonRooms.roomsJson.get(roomName).getAsJsonObject();
- if (roomJson.get("fairysoul").getAsBoolean()) {
- line = line + EnumChatFormatting.WHITE + " - " + EnumChatFormatting.LIGHT_PURPLE + "Fairy Soul";
- }
- lineList.add(line);
-
- if (Waypoints.enabled && roomJson.get("secrets").getAsInt() != 0 && DungeonRooms.waypointsJson.get(roomName) == null) {
- lineList.add(EnumChatFormatting.RED + "No waypoints available");
- lineList.add(EnumChatFormatting.RED + "Press \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[0].getKeyCode()) +"\" to view images");
- }
- }
- DungeonRooms.textToDisplay = lineList;
- }
- }
- }
-
-
- void raytraceBlocks() {
- DungeonRooms.logger.debug("DungeonRooms: Raytracing visible blocks");
- long timeStart = System.currentTimeMillis();
-
- EntityPlayerSP player = mc.thePlayer;
-
- List vecList = RoomDetectionUtils.vectorsToRaytrace(24); //actually creates 24^2 = 576 raytrace vectors
-
- Vec3 eyes = new Vec3(player.posX, player.posY + (double)player.getEyeHeight(), player.posZ);
-
- for (Vec3 vec : vecList) {
- //The super fancy Minecraft built in raytracing function so that the mod only scan line of sight blocks!
- //This is the ONLY place where this mod accesses blocks in the physical map, and they are all within FOV
- MovingObjectPosition raytraceResult = player.getEntityWorld().rayTraceBlocks(eyes, vec, false,false, true);
-
- if (raytraceResult != null && raytraceResult.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
- //the following is filtering out blocks which we don't want for detection, note that these blocks are also line of sight
- BlockPos raytracedBlockPos = raytraceResult.getBlockPos();
- if (currentScannedBlocks.contains(raytracedBlockPos)) continue;
- currentScannedBlocks.add(raytracedBlockPos);
-
- if (!currentPhysicalSegments.contains(MapUtils.getClosestNWPhysicalCorner(raytracedBlockPos))) {
- continue; //scanned block is outside of current room
- }
-
- if (RoomDetectionUtils.blockPartOfDoorway(raytracedBlockPos)) {
- continue; //scanned block may be part of a corridor
- }
-
- IBlockState hitBlock = mc.theWorld.getBlockState(raytracedBlockPos);
- int identifier = Block.getIdFromBlock(hitBlock.getBlock()) * 100 + hitBlock.getBlock().damageDropped(hitBlock);
-
- if (RoomDetectionUtils.whitelistedBlocks.contains(identifier)) {
- blocksToCheck.put(raytracedBlockPos, identifier); //will be checked and filtered in getPossibleRooms()
- }
- }
- }
- DungeonRooms.logger.debug("DungeonRooms: Finished raytracing, amount of blocks to check = " + blocksToCheck.size());
- long timeFinish = System.currentTimeMillis();
- DungeonRooms.logger.debug("DungeonRooms: Time to raytrace and filter (in ms): " + (timeFinish - timeStart));
-
- if (futureUpdatePossibleRooms == null && stage2Executor != null && !stage2Executor.isTerminated()) { //start processing in new thread to avoid lag in case of complex scan
- DungeonRooms.logger.debug("DungeonRooms: Initializing Room Comparison Executor");
- futureUpdatePossibleRooms = getPossibleRooms();
- }
- }
-
- Future>> getPossibleRooms() {
- return stage2Executor.submit(() -> {
- long timeStart = System.currentTimeMillis();
- //load up hashmap
- HashMap> updatedPossibleRooms;
- List possibleDirections;
- if (possibleRooms == null) {
- DungeonRooms.logger.debug("DungeonRooms: No previous possible rooms list, creating new list...");
- //no previous scans have been done, entering all possible rooms and directions
- possibleDirections = MapUtils.possibleDirections(roomSize, currentMapSegments);
- updatedPossibleRooms = new HashMap<>();
- for (String direction : possibleDirections) {
- updatedPossibleRooms.put(direction, new ArrayList<>(DungeonRooms.ROOM_DATA.get(roomCategory).keySet()));
- }
- } else {
- //load info from previous scan
- DungeonRooms.logger.debug("DungeonRooms: Loading possible rooms from previous room scan...");
- updatedPossibleRooms = possibleRooms;
- possibleDirections = new ArrayList<>(possibleRooms.keySet());
- }
-
- //create HashMap of the points of the corners because they will be repeatedly used for each block
- HashMap directionCorners = new HashMap<>();
- for (String direction : possibleDirections) {
- directionCorners.put(direction, MapUtils.getPhysicalCornerPos(direction, currentPhysicalSegments));
- }
-
- DungeonRooms.logger.debug("DungeonRooms: directionCorners " + directionCorners.entrySet());
-
- List blocksChecked = new ArrayList<>();
- int doubleCheckedBlocks = 0;
-
- for (Map.Entry entry : blocksToCheck.entrySet()) {
- BlockPos blockPos = entry.getKey();
- DungeonRooms.logger.debug("DungeonRooms: BlockPos being checked " + blockPos);
- int combinedMatchingRooms = 0;
-
- for (String direction : possibleDirections) {
- //get specific id for the block to compare with ".skeleton" file room data
- BlockPos relative = MapUtils.actualToRelative(blockPos, direction, directionCorners.get(direction));
- long idToCheck = Utils.shortToLong((short) relative.getX(), (short) relative.getY(),
- (short) relative.getZ(), entry.getValue().shortValue());
-
- List matchingRooms = new ArrayList<>();
- //compare with each saved ".skeleton" room
- for (String roomName : updatedPossibleRooms.get(direction)) {
- int index = Arrays.binarySearch(DungeonRooms.ROOM_DATA.get(roomCategory).get(roomName), idToCheck);
- if (index > -1) {
- matchingRooms.add(roomName);
- }
- }
-
- //replace updatedPossibleRooms.get(direction) with the updated matchingRooms list
- combinedMatchingRooms += matchingRooms.size();
- updatedPossibleRooms.put(direction, matchingRooms);
-
- DungeonRooms.logger.debug("DungeonRooms: direction checked = " + direction + ", longID = " + idToCheck + ", relative = " + relative);
- DungeonRooms.logger.debug("DungeonRooms: updatedPossibleRooms size = " + updatedPossibleRooms.get(direction).size() + " for direction " + direction);
- }
- blocksChecked.add(blockPos);
-
- if (combinedMatchingRooms == 0) {
- DungeonRooms.logger.warn("DungeonRooms: No rooms match the input blocks after checking " + blocksChecked.size() + " blocks, returning");
- break;
- }
- if (combinedMatchingRooms == 1) {
- //scan 10 more blocks after 1 room remaining to double check
- if (doubleCheckedBlocks >= 10) {
- DungeonRooms.logger.debug("DungeonRooms: One room matches after checking " + blocksChecked.size() + " blocks");
- break;
- }
- doubleCheckedBlocks++;
- }
-
- DungeonRooms.logger.debug("DungeonRooms: " + combinedMatchingRooms + " possible rooms after checking " + blocksChecked.size() + " blocks");
-
- }
-
- if (blocksChecked.size() == blocksToCheck.size()) { //only print for this condition bc other conditions break to here
- DungeonRooms.logger.warn("DungeonRooms: Multiple rooms match after checking all " + blocksChecked.size() + " blocks");
- }
-
- blocksUsed.addAll(blocksChecked);
-
- //add blocksToCheck size to totalBlocksAvailableToCheck and clear blocksToCheck
- totalBlocksAvailableToCheck += blocksToCheck.size();
- blocksToCheck = new HashMap<>();
-
- long timeFinish = System.currentTimeMillis();
- DungeonRooms.logger.debug("DungeonRooms: Time to check blocks using thread (in ms): " + (timeFinish - timeStart));
-
- return updatedPossibleRooms;
- });
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/Waypoints.java b/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/Waypoints.java
deleted file mode 100644
index 63f7053..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/dungeons/catacombs/Waypoints.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.dungeons.catacombs;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.events.PacketEvent;
-import io.github.quantizr.dungeonrooms.utils.MapUtils;
-import io.github.quantizr.dungeonrooms.utils.Utils;
-import io.github.quantizr.dungeonrooms.utils.WaypointUtils;
-import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.culling.Frustum;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.item.EntityItem;
-import net.minecraft.init.Blocks;
-import net.minecraft.network.play.server.S0DPacketCollectItem;
-import net.minecraft.util.AxisAlignedBB;
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.StringUtils;
-import net.minecraftforge.client.event.ClientChatReceivedEvent;
-import net.minecraftforge.client.event.RenderWorldLastEvent;
-import net.minecraftforge.event.entity.player.PlayerInteractEvent;
-import net.minecraftforge.fml.client.FMLClientHandler;
-import net.minecraftforge.fml.common.eventhandler.EventPriority;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.InputEvent;
-
-import java.awt.*;
-import java.util.*;
-import java.util.List;
-
-public class Waypoints {
- public static boolean enabled = true;
-
- public static boolean showEntrance = true;
- public static boolean showSuperboom = true;
- public static boolean showSecrets = true;
- public static boolean showFairySouls = true;
- public static boolean showStonk = true;
- public static boolean sneakToDisable = true;
-
- public static boolean disableWhenAllFound = true;
- public static boolean allFound = false;
-
- public static boolean showWaypointText = true;
- public static boolean showBoundingBox = true;
- public static boolean showBeacon = true;
-
- public static boolean practiceModeOn = false;
-
- public static int secretNum = 0;
- public static int completedSecrets = 0;
-
- public static Map> allSecretsMap = new HashMap<>();
- public static List secretsList = new ArrayList<>(Arrays.asList(new Boolean[10]));
-
- static long lastSneakTime = 0;
-
- Frustum frustum = new Frustum();
-
- @SubscribeEvent
- public void onWorldRender(RenderWorldLastEvent event) {
- if (!enabled) return;
- if (practiceModeOn && !DungeonRooms.keyBindings[2].isKeyDown()) return;
- String roomName = RoomDetection.roomName;
- if (roomName.equals("undefined") || DungeonRooms.roomsJson.get(roomName) == null || secretsList == null) return;
- if (DungeonRooms.waypointsJson.get(roomName) != null) {
- JsonArray secretsArray = DungeonRooms.waypointsJson.get(roomName).getAsJsonArray();
- int arraySize = secretsArray.size();
- for(int i = 0; i < arraySize; i++) {
- JsonObject secretsObject = secretsArray.get(i).getAsJsonObject();
-
- boolean display = true;
- for(int j = 1; j <= secretNum; j++) {
- if (!secretsList.get(j-1)) {
- if (secretsObject.get("secretName").getAsString().substring(0,2).replaceAll("[\\D]", "").equals(String.valueOf(j))) {
- display = false;
- break;
- }
- }
- }
- if (!display) continue;
-
- if (disableWhenAllFound && allFound && !secretsObject.get("category").getAsString().equals("fairysoul")) continue;
-
- BlockPos relative = new BlockPos(secretsObject.get("x").getAsInt(), secretsObject.get("y").getAsInt(), secretsObject.get("z").getAsInt());
- BlockPos pos = MapUtils.relativeToActual(relative, RoomDetection.roomDirection, RoomDetection.roomCorner);
- Entity viewer = Minecraft.getMinecraft().getRenderViewEntity();
- frustum.setPosition(viewer.posX, viewer.posY, viewer.posZ);
- if (!frustum.isBoxInFrustum(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, 255, pos.getZ() + 1)){
- continue;
- }
-
-
- Color color;
- switch (secretsObject.get("category").getAsString()) {
- case "entrance":
- if (!showEntrance) continue;
- color = new Color(0, 255, 0);
- break;
- case "superboom":
- if (!showSuperboom) continue;
- color = new Color(255, 0, 0);
- break;
- case "chest":
- if (!showSecrets) continue;
- color = new Color(2, 213, 250);
- break;
- case "item":
- if (!showSecrets) continue;
- color = new Color(2, 64, 250);
- break;
- case "bat":
- if (!showSecrets) continue;
- color = new Color(142, 66, 0);
- break;
- case "wither":
- if (!showSecrets) continue;
- color = new Color(30, 30, 30);
- break;
- case "lever":
- if (!showSecrets) continue;
- color = new Color(250, 217, 2);
- break;
- case "fairysoul":
- if (!showFairySouls) continue;
- color = new Color(255, 85, 255);
- break;
- case "stonk":
- if (!showStonk) continue;
- color = new Color(146, 52, 235);
- break;
- default:
- color = new Color(190, 255, 252);
- }
-
- double viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * event.partialTicks;
- double viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * event.partialTicks;
- double viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * event.partialTicks;
-
- double x = pos.getX() - viewerX;
- double y = pos.getY() - viewerY;
- double z = pos.getZ() - viewerZ;
- double distSq = x*x + y*y + z*z;
-
- GlStateManager.disableDepth();
- GlStateManager.disableCull();
- if (showBoundingBox && frustum.isBoxInFrustum(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
- WaypointUtils.drawFilledBoundingBox(new AxisAlignedBB(x, y, z, x + 1, y + 1, z + 1), color, 0.4f);
- }
- GlStateManager.disableTexture2D();
- if (showBeacon && distSq > 5*5) WaypointUtils.renderBeaconBeam(x, y + 1, z, color.getRGB(), 0.25f, event.partialTicks);
- if (showWaypointText) WaypointUtils.renderWaypointText(secretsObject.get("secretName").getAsString(), pos.up(2), event.partialTicks);
- GlStateManager.disableLighting();
- GlStateManager.enableTexture2D();
- GlStateManager.enableDepth();
- GlStateManager.enableCull();
- }
- }
- }
-
-
- @SubscribeEvent(priority = EventPriority.HIGHEST)
- public void onChat(ClientChatReceivedEvent event) {
- if (!Utils.inCatacombs || !enabled) return;
- // Action Bar
- if (event.type == 2) {
- String[] actionBarSections = event.message.getUnformattedText().split(" {3,}");
-
- for (String section : actionBarSections) {
- if (section.contains("Secrets") && section.contains("/")) {
- String cleanedSection = StringUtils.stripControlCodes(section);
- String[] splitSecrets = cleanedSection.split("/");
-
- completedSecrets = Integer.parseInt(splitSecrets[0].replaceAll("[^0-9]", ""));
- int totalSecrets = Integer.parseInt(splitSecrets[1].replaceAll("[^0-9]", ""));
-
- allFound = (totalSecrets == secretNum && completedSecrets == secretNum);
- break;
- }
- }
- }
- }
-
- @SubscribeEvent
- public void onInteract(PlayerInteractEvent event) {
- if (!Utils.inCatacombs || !enabled) return;
- if (disableWhenAllFound && allFound) return;
-
- if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
- Block block = event.world.getBlockState(event.pos).getBlock();
- if (block != Blocks.chest && block != Blocks.skull) return;
- String roomName = RoomDetection.roomName;
- if (roomName.equals("undefined") || DungeonRooms.roomsJson.get(roomName) == null || secretsList == null) return;
- if (DungeonRooms.waypointsJson.get(roomName) != null) {
- JsonArray secretsArray = DungeonRooms.waypointsJson.get(roomName).getAsJsonArray();
- int arraySize = secretsArray.size();
- for(int i = 0; i < arraySize; i++) {
- JsonObject secretsObject = secretsArray.get(i).getAsJsonObject();
- if (secretsObject.get("category").getAsString().equals("chest") || secretsObject.get("category").getAsString().equals("wither")) {
- BlockPos relative = new BlockPos(secretsObject.get("x").getAsInt(), secretsObject.get("y").getAsInt(), secretsObject.get("z").getAsInt());
- BlockPos pos = MapUtils.relativeToActual(relative, RoomDetection.roomDirection, RoomDetection.roomCorner);
-
- if (pos.equals(event.pos)) {
- for(int j = 1; j <= secretNum; j++) {
- if (secretsObject.get("secretName").getAsString().substring(0,2).replaceAll("[\\D]", "").equals(String.valueOf(j))) {
- Waypoints.secretsList.set(j-1, false);
- Waypoints.allSecretsMap.replace(roomName, Waypoints.secretsList);
- DungeonRooms.logger.info("DungeonRooms: Detected " + secretsObject.get("category").getAsString() + " click, turning off waypoint for secret #" + j);
- break;
- }
- }
- }
- }
- }
- }
- }
- }
-
- @SubscribeEvent
- public void onReceivePacket(PacketEvent.ReceiveEvent event) {
- if (!Utils.inCatacombs || !enabled) return;
- if (disableWhenAllFound && allFound) return;
- Minecraft mc = Minecraft.getMinecraft();
-
- if (event.packet instanceof S0DPacketCollectItem) {
- S0DPacketCollectItem packet = (S0DPacketCollectItem) event.packet;
- Entity entity = mc.theWorld.getEntityByID(packet.getCollectedItemEntityID());
- if (entity instanceof EntityItem) {
- EntityItem item = (EntityItem) entity;
- entity = mc.theWorld.getEntityByID(packet.getEntityID());
- if (entity == null) return;
- String name = item.getEntityItem().getDisplayName();
- if (name.contains("Decoy") || name.contains("Defuse Kit") || name.contains("Dungeon Chest Key") ||
- name.contains("Healing VIII") || name.contains("Inflatable Jerry") || name.contains("Spirit Leap") ||
- name.contains("Training Weights") || name.contains("Trap") || name.contains("Treasure Talisman")) {
- if (!entity.getCommandSenderEntity().getName().equals(mc.thePlayer.getName())) {
- //Do nothing if someone else picks up the item in order to follow Hypixel rules
- return;
- }
- String roomName = RoomDetection.roomName;
- if (roomName.equals("undefined") || DungeonRooms.roomsJson.get(roomName) == null || secretsList == null) return;
- if (DungeonRooms.waypointsJson.get(roomName) != null) {
- JsonArray secretsArray = DungeonRooms.waypointsJson.get(roomName).getAsJsonArray();
- int arraySize = secretsArray.size();
- for(int i = 0; i < arraySize; i++) {
- JsonObject secretsObject = secretsArray.get(i).getAsJsonObject();
- if (secretsObject.get("category").getAsString().equals("item") || secretsObject.get("category").getAsString().equals("bat")) {
- BlockPos relative = new BlockPos(secretsObject.get("x").getAsInt(), secretsObject.get("y").getAsInt(), secretsObject.get("z").getAsInt());
- BlockPos pos = MapUtils.relativeToActual(relative, RoomDetection.roomDirection, RoomDetection.roomCorner);
-
- if (entity.getDistanceSq(pos) <= 36D) {
- for(int j = 1; j <= secretNum; j++) {
- if (secretsObject.get("secretName").getAsString().substring(0,2).replaceAll("[\\D]", "").equals(String.valueOf(j))) {
- if (!Waypoints.secretsList.get(j-1)) continue;
- Waypoints.secretsList.set(j-1, false);
- Waypoints.allSecretsMap.replace(roomName, Waypoints.secretsList);
- DungeonRooms.logger.info("DungeonRooms: " + entity.getCommandSenderEntity().getName() + " picked up " + StringUtils.stripControlCodes(name) + " from a " + secretsObject.get("category").getAsString() + " secret, turning off waypoint for secret #" + j);
- return;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
-
- //Disable waypoint within 4 blocks away on sneak
- @SubscribeEvent
- public void onKey(InputEvent.KeyInputEvent event) {
- if (!Utils.inCatacombs || !enabled || !sneakToDisable) return;
- EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
- if (FMLClientHandler.instance().getClient().gameSettings.keyBindSneak.isPressed()) {
- if (System.currentTimeMillis() - lastSneakTime < 500) { //check for two taps in under half a second
- String roomName = RoomDetection.roomName;
- if (roomName.equals("undefined") || DungeonRooms.roomsJson.get(roomName) == null || secretsList == null) return;
- if (DungeonRooms.waypointsJson.get(roomName) != null) {
- JsonArray secretsArray = DungeonRooms.waypointsJson.get(roomName).getAsJsonArray();
- int arraySize = secretsArray.size();
- for(int i = 0; i < arraySize; i++) {
- JsonObject secretsObject = secretsArray.get(i).getAsJsonObject();
- if (secretsObject.get("category").getAsString().equals("chest") || secretsObject.get("category").getAsString().equals("wither")
- || secretsObject.get("category").getAsString().equals("item") || secretsObject.get("category").getAsString().equals("bat")) {
- BlockPos relative = new BlockPos(secretsObject.get("x").getAsInt(), secretsObject.get("y").getAsInt(), secretsObject.get("z").getAsInt());
- BlockPos pos = MapUtils.relativeToActual(relative, RoomDetection.roomDirection, RoomDetection.roomCorner);
-
- if (player.getDistanceSq(pos) <= 16D) {
- for(int j = 1; j <= secretNum; j++) {
- if (secretsObject.get("secretName").getAsString().substring(0,2).replaceAll("[\\D]", "").equals(String.valueOf(j))) {
- if (!Waypoints.secretsList.get(j-1)) continue;
- Waypoints.secretsList.set(j-1, false);
- Waypoints.allSecretsMap.replace(roomName, Waypoints.secretsList);
- DungeonRooms.logger.info("DungeonRooms: Player sneaked near " + secretsObject.get("category").getAsString() + " secret, turning off waypoint for secret #" + j);
- return;
- }
- }
- }
- }
- }
- }
- }
- lastSneakTime = System.currentTimeMillis();
- }
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/gui/LinkGUI.java b/src/main/java/io/github/quantizr/dungeonrooms/gui/LinkGUI.java
deleted file mode 100644
index 5477752..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/gui/LinkGUI.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.gui;
-
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.RoomDetection;
-import io.github.quantizr.dungeonrooms.handlers.OpenLink;
-import io.github.quantizr.dungeonrooms.handlers.TextRenderer;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
-import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.client.gui.ScaledResolution;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.event.ClickEvent;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-
-
-public class LinkGUI extends GuiScreen {
-
- private GuiButton discordClient;
- private GuiButton discordBrowser;
- private GuiButton SBPSecrets;
- private GuiButton close;
-
- @Override
- public boolean doesGuiPauseGame() {
- return false;
- }
-
- @Override
- public void initGui() {
- super.initGui();
-
- ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
- int height = sr.getScaledHeight();
- int width = sr.getScaledWidth();
-
- discordClient = new GuiButton(0, width / 2 - 185, height / 6 + 96, 120, 20, "DSG Discord Client");
- discordBrowser = new GuiButton(1, width / 2 - 60, height / 6 + 96, 120, 20, "DSG Discord Browser");
- SBPSecrets = new GuiButton(2, width / 2 + 65, height / 6 + 96, 120, 20, "SBP Secrets Mod");
- close = new GuiButton(3, width / 2 - 60, height / 6 + 136, 120, 20, "Close");
-
- this.buttonList.add(discordClient);
- this.buttonList.add(discordBrowser);
- this.buttonList.add(SBPSecrets);
- this.buttonList.add(close);
- }
-
- @Override
- public void drawScreen(int mouseX, int mouseY, float partialTicks) {
- this.drawDefaultBackground();
- Minecraft mc = Minecraft.getMinecraft();
-
- String displayText;
- if (RoomDetection.roomName.equals("undefined")) {
- displayText = "Where would you like to view secrets for: " + EnumChatFormatting.RED + "undefined";
- } else {
- displayText = "Where would you like to view secrets for: " + EnumChatFormatting.GREEN + RoomDetection.roomName;
- }
- int displayWidth = mc.fontRendererObj.getStringWidth(displayText);
- TextRenderer.drawText(mc, displayText, width / 2 - displayWidth / 2, height / 6 + 56, 1D, false);
-
- String noteText = EnumChatFormatting.GRAY + "If you wish to have the hotkey go directly to DSG or SBP instead of this GUI run "
- + EnumChatFormatting.WHITE + "/room set ";
- int noteWidth = mc.fontRendererObj.getStringWidth(noteText);
- TextRenderer.drawText(mc, noteText, width / 2 - noteWidth / 2, (int) (height*0.9), 1D, false);
-
- super.drawScreen(mouseX, mouseY, partialTicks);
- }
-
- @Override
- public void actionPerformed(GuiButton button) {
- EntityPlayer player = Minecraft.getMinecraft().thePlayer;
- if (button == discordClient) {
- OpenLink.openDiscord("client");
- player.closeScreen();
- } else if (button == discordBrowser) {
- OpenLink.openDiscord("browser");
- player.closeScreen();
- } else if (button == SBPSecrets) {
- if (DungeonRooms.usingSBPSecrets) {
- OpenLink.openSBPSecrets();
- } else {
- String sbpURL = "https://discord.gg/2UjaFqfPwJ";
- ChatComponentText sbp = new ChatComponentText(EnumChatFormatting.YELLOW + "" + EnumChatFormatting.UNDERLINE + sbpURL);
- sbp.setChatStyle(sbp.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, sbpURL)));
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: You need theSkyblock Personalized (SBP) Mod for this feature, get it from ").appendSibling(sbp));
- }
- player.closeScreen();
- } else if (button == close) {
- player.closeScreen();
- }
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/gui/WaypointsGUI.java b/src/main/java/io/github/quantizr/dungeonrooms/gui/WaypointsGUI.java
deleted file mode 100644
index fb7343d..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/gui/WaypointsGUI.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.gui;
-
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.RoomDetection;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.Waypoints;
-import io.github.quantizr.dungeonrooms.handlers.ConfigHandler;
-import io.github.quantizr.dungeonrooms.handlers.TextRenderer;
-import io.github.quantizr.dungeonrooms.utils.Utils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
-import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.client.gui.ScaledResolution;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class WaypointsGUI extends GuiScreen {
-
- private GuiButton waypointsEnabled;
- private GuiButton practiceModeEnabled;
- private GuiButton showEntrance;
- private GuiButton showSuperboom;
- private GuiButton showSecrets;
- private GuiButton showFairySouls;
- private GuiButton showStonk;
- private GuiButton disableWhenAllFound;
- private GuiButton sneakToDisable;
- private GuiButton close;
-
- public static List secretButtonList = new ArrayList<>(Arrays.asList(new GuiButton[10]));
-
- private static boolean waypointGuiOpened = false;
-
- @Override
- public boolean doesGuiPauseGame() {
- return false;
- }
-
- @Override
- public void initGui() {
- super.initGui();
- waypointGuiOpened = true;
-
- ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
- int height = sr.getScaledHeight();
- int width = sr.getScaledWidth();
-
- waypointsEnabled = new GuiButton(0, (width / 2 - 100) + 0, height / 6 - 5, 200, 20, waypointBtnText());
- practiceModeEnabled = new GuiButton(1, (width / 2 - 100) - 110, height / 6 + 25, 200, 20, "Practice Mode: " + getOnOff(Waypoints.practiceModeOn));
- showEntrance = new GuiButton(2, (width / 2 - 100) + 110, height / 6 + 25, 200, 20, "Show Entrance Waypoints: " + getOnOff(Waypoints.showEntrance));
- showSuperboom = new GuiButton(3, (width / 2 - 100) - 110, height / 6 + 55, 200, 20, "Show Superboom Waypoints: " + getOnOff(Waypoints.showSuperboom));
- showSecrets = new GuiButton(4, (width / 2 - 100) + 110, height / 6 + 55, 200, 20, "Show Secret Waypoints: " + getOnOff(Waypoints.showSecrets));
- showFairySouls = new GuiButton(5, (width / 2 - 100) - 110, height / 6 + 85, 200, 20, "Show Fairy Soul Waypoints: " + getOnOff(Waypoints.showFairySouls));
- showStonk = new GuiButton(6, (width / 2 - 100) + 110, height / 6 + 85, 200, 20, "Show Stonk Waypoints: " + getOnOff(Waypoints.showStonk));
- sneakToDisable = new GuiButton(7, (width / 2 - 100) - 110, height / 6 + 115, 200, 20, "Double-Tap Sneak to Hide Nearby: " + getOnOff(Waypoints.sneakToDisable));
- disableWhenAllFound = new GuiButton(8, (width / 2 - 100) + 110, height / 6 + 115, 200, 20, "Disable when all secrets found: " + getOnOff(Waypoints.disableWhenAllFound));
- close = new GuiButton(9, width / 2 - 100, (height / 6) * 5, 200, 20, "Close");
-
- this.buttonList.add(waypointsEnabled);
- this.buttonList.add(practiceModeEnabled);
- this.buttonList.add(showEntrance);
- this.buttonList.add(showSuperboom);
- this.buttonList.add(showSecrets);
- this.buttonList.add(showFairySouls);
- this.buttonList.add(showStonk);
- this.buttonList.add(sneakToDisable);
- this.buttonList.add(disableWhenAllFound);
- this.buttonList.add(close);
-
- if (Utils.inCatacombs) {
- if (Waypoints.secretNum > 0) {
- if (Waypoints.secretNum <= 5) {
- for (int i = 1; i <= Waypoints.secretNum; i++) {
- int adjustPos = (-40 * (Waypoints.secretNum)) - 70 + (80 * i);
- secretButtonList.set(i - 1, new GuiButton(10 + i, (width / 2) + adjustPos, height / 6 + 170, 60, 20, i + ": " + getOnOff(Waypoints.secretsList.get(i - 1))));
- this.buttonList.add(secretButtonList.get(i - 1));
- }
- } else {
- for (int i = 1; i <= (int) Math.ceil((double) Waypoints.secretNum / 2); i++) {
- int adjustPos = (-40 * ((int) Math.ceil((double) Waypoints.secretNum / 2))) - 70 + (80 * i);
- secretButtonList.set(i - 1, new GuiButton(10 + i, (width / 2) + adjustPos, height / 6 + 170, 60, 20, i + ": " + getOnOff(Waypoints.secretsList.get(i - 1))));
- this.buttonList.add(secretButtonList.get(i - 1));
- }
- for (int i = (int) Math.ceil((double) Waypoints.secretNum / 2) + 1; i <= Waypoints.secretNum; i++) {
- int adjustPos = (-40 * (Waypoints.secretNum - (int) Math.ceil((double) Waypoints.secretNum / 2))) - 70 + (80 * (i-(int) Math.ceil((double) Waypoints.secretNum / 2)));
- secretButtonList.set(i - 1, new GuiButton(10 + i, (width / 2) + adjustPos, height / 6 + 200, 60, 20, i + ": " + getOnOff(Waypoints.secretsList.get(i - 1))));
- this.buttonList.add(secretButtonList.get(i - 1));
- }
- }
- }
- }
- }
-
- @Override
- public void drawScreen(int mouseX, int mouseY, float partialTicks) {
- this.drawDefaultBackground();
- Minecraft mc = Minecraft.getMinecraft();
-
- String text1 = "§lDungeon Room Waypoints:";
- int text1Width = mc.fontRendererObj.getStringWidth(text1);
- TextRenderer.drawText(mc, text1, width / 2 - text1Width / 2, height / 6 - 25, 1D, false);
-
- String text2 = "(Use at your own risk)";
- int text2Width = mc.fontRendererObj.getStringWidth(text2);
- TextRenderer.drawText(mc, EnumChatFormatting.GRAY + text2, width / 2 - text2Width / 2, height / 6 - 15, 1D, false);
-
- String text3 = "Toggle Room Specific Waypoints:";
- int text3Width = mc.fontRendererObj.getStringWidth(text3);
- TextRenderer.drawText(mc, text3, width / 2 - text3Width / 2, height / 6 + 140, 1D, false);
-
- String text4 = "(You can also press the # key matching the secret instead)";
- int text4Width = mc.fontRendererObj.getStringWidth(text4);
- TextRenderer.drawText(mc, EnumChatFormatting.GRAY + text4, width / 2 - text4Width / 2, height / 6 + 150, 1D, false);
-
-
- if (!Utils.inCatacombs) {
- String errorText = "Not in dungeons";
- int errorTextWidth = mc.fontRendererObj.getStringWidth(errorText);
- TextRenderer.drawText(mc, EnumChatFormatting.RED + errorText, width / 2 - errorTextWidth / 2, height / 6 + 170, 1D, false);
- } else if (Waypoints.secretNum == 0) {
- String errorText = "No secrets in this room";
- int errorTextWidth = mc.fontRendererObj.getStringWidth(errorText);
- TextRenderer.drawText(mc, EnumChatFormatting.RED + errorText, width / 2 - errorTextWidth / 2, height / 6 + 170, 1D, false);
- }
-
- super.drawScreen(mouseX, mouseY, partialTicks);
- }
-
- @Override
- public void actionPerformed(GuiButton button) {
- EntityPlayer player = Minecraft.getMinecraft().thePlayer;
- if (button == waypointsEnabled) {
- Waypoints.enabled = !Waypoints.enabled;
- ConfigHandler.writeBooleanConfig("toggles", "waypointsToggled", Waypoints.enabled);
- waypointsEnabled.displayString = waypointBtnText();
- if (Waypoints.enabled) {
- player.addChatMessage(new ChatComponentText("§eDungeon Rooms: Waypoints will now automatically show up when you enter a new dungeon room."));
- }
- } else if (button == practiceModeEnabled) {
- Waypoints.practiceModeOn = !Waypoints.practiceModeOn;
- ConfigHandler.writeBooleanConfig("waypoint", "practiceModeOn", Waypoints.practiceModeOn);
- practiceModeEnabled.displayString = "Practice Mode: " + getOnOff(Waypoints.practiceModeOn);
- if (Waypoints.practiceModeOn) {
- player.addChatMessage(new ChatComponentText("§eDungeon Rooms: Practice Mode has been enabled.\n"
- + "§e Waypoints will ONLY show up while you are pressing \"" + GameSettings.getKeyDisplayString(DungeonRooms.keyBindings[2].getKeyCode()) + "\".\n"
- + "§r (Hotkey is configurable in Minecraft Controls menu)"
- ));
- }
- } else if (button == showEntrance) {
- Waypoints.showEntrance = !Waypoints.showEntrance;
- ConfigHandler.writeBooleanConfig("waypoint", "showEntrance", Waypoints.showEntrance);
- showEntrance.displayString = "Show Entrance Waypoints: " + getOnOff(Waypoints.showEntrance);
- } else if (button == showSuperboom) {
- Waypoints.showSuperboom = !Waypoints.showSuperboom;
- ConfigHandler.writeBooleanConfig("waypoint", "showSuperboom", Waypoints.showSuperboom);
- showSuperboom.displayString = "Show Superboom Waypoints: " + getOnOff(Waypoints.showSuperboom);
- } else if (button == showSecrets) {
- Waypoints.showSecrets = !Waypoints.showSecrets;
- ConfigHandler.writeBooleanConfig("waypoint", "showSecrets", Waypoints.showSecrets);
- showSecrets.displayString = "Show Secret Waypoints: " + getOnOff(Waypoints.showSecrets);
- } else if (button == showFairySouls) {
- Waypoints.showFairySouls = !Waypoints.showFairySouls;
- ConfigHandler.writeBooleanConfig("waypoint", "showFairySouls", Waypoints.showFairySouls);
- showFairySouls.displayString = "Show Fairy Soul Waypoints: " + getOnOff(Waypoints.showFairySouls);
- } else if (button == showStonk) {
- Waypoints.showStonk = !Waypoints.showStonk;
- ConfigHandler.writeBooleanConfig("waypoint", "showStonk", Waypoints.showStonk);
- showStonk.displayString = "Show Stonk Waypoints: " + getOnOff(Waypoints.showStonk);
- } else if (button == sneakToDisable) {
- Waypoints.sneakToDisable = !Waypoints.sneakToDisable;
- ConfigHandler.writeBooleanConfig("waypoint", "sneakToDisable", Waypoints.sneakToDisable);
- sneakToDisable.displayString = "Double-Tap Sneak to Hide Nearby: " + getOnOff(Waypoints.sneakToDisable);
- } else if (button == disableWhenAllFound) {
- Waypoints.disableWhenAllFound = !Waypoints.disableWhenAllFound;
- ConfigHandler.writeBooleanConfig("waypoint", "disableWhenAllFound", Waypoints.disableWhenAllFound);
- disableWhenAllFound.displayString = "Disable when all secrets found: " + getOnOff(Waypoints.disableWhenAllFound);
- }
- else if (button == close) {
- player.closeScreen();
- }
-
- if (Utils.inCatacombs) {
- if (Waypoints.secretNum > 0) {
- for (int i = 1; i <= Waypoints.secretNum; i++) {
- if (button == secretButtonList.get(i-1)) {
- Waypoints.secretsList.set(i-1, !Waypoints.secretsList.get(i-1));
- if (!RoomDetection.roomName.equals("undefined")) {
- Waypoints.allSecretsMap.replace(RoomDetection.roomName, Waypoints.secretsList);
- }
- secretButtonList.get(i-1).displayString = i + ": " + getOnOff(Waypoints.secretsList.get(i - 1));
- break;
- }
- }
- }
- }
- }
-
- @Override
- public void onGuiClosed() {
- waypointGuiOpened = false;
- }
-
- @Override
- protected void keyTyped(char c, int keyCode) throws IOException
- {
- super.keyTyped(c, keyCode);
-
- if (waypointGuiOpened && Utils.inCatacombs) {
- if (Waypoints.secretNum > 0) {
- for (int i = 1; i <= Waypoints.secretNum; i++) {
- if (keyCode-1 == i) {
- Waypoints.secretsList.set(i - 1, !Waypoints.secretsList.get(i - 1));
- if (!RoomDetection.roomName.equals("undefined")) {
- Waypoints.allSecretsMap.replace(RoomDetection.roomName, Waypoints.secretsList);
- }
- secretButtonList.get(i - 1).displayString = i + ": " + getOnOff(Waypoints.secretsList.get(i - 1));
- break;
- }
- }
- }
- }
- }
-
- private static String waypointBtnText() {
- if (Waypoints.enabled){
- return EnumChatFormatting.GREEN + "§lWaypoints Enabled";
- } else {
- return EnumChatFormatting.RED + "§lWaypoints Disabled";
- }
- }
-
- private static String getOnOff(boolean bool) {
- if (bool){
- return EnumChatFormatting.GREEN + "On";
- } else {
- return EnumChatFormatting.RED + "Off";
- }
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/handlers/ConfigHandler.java b/src/main/java/io/github/quantizr/dungeonrooms/handlers/ConfigHandler.java
deleted file mode 100644
index ceb7c4e..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/handlers/ConfigHandler.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.handlers;
-
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.DungeonManager;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.Waypoints;
-import net.minecraftforge.common.config.ConfigCategory;
-import net.minecraftforge.common.config.Configuration;
-
-import java.io.File;
-
-public class ConfigHandler {
- public static Configuration config;
- private final static String file = "config/DungeonRooms.cfg";
-
- public static void init() {
- config = new Configuration(new File(file));
- try {
- config.load();
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- }
-
- public static int getInt(String category, String key) {
- config = new Configuration(new File(file));
- try {
- config.load();
- if (config.getCategory(category).containsKey(key)) {
- return config.get(category, key, 0).getInt();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- return 0;
- }
-
- public static double getDouble(String category, String key) {
- config = new Configuration(new File(file));
- try {
- config.load();
- if (config.getCategory(category).containsKey(key)) {
- return config.get(category, key, 0D).getDouble();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- return 0D;
- }
-
- public static String getString(String category, String key) {
- config = new Configuration(new File(file));
- try {
- config.load();
- if (config.getCategory(category).containsKey(key)) {
- return config.get(category, key, "").getString();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- return "";
- }
-
- public static boolean getBoolean(String category, String key) {
- config = new Configuration(new File(file));
- try {
- config.load();
- if (config.getCategory(category).containsKey(key)) {
- return config.get(category, key, false).getBoolean();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- return true;
- }
-
- public static void writeIntConfig(String category, String key, int value) {
- config = new Configuration(new File(file));
- try {
- config.load();
- int set = config.get(category, key, value).getInt();
- config.getCategory(category).get(key).set(value);
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- }
-
- public static void writeDoubleConfig(String category, String key, double value) {
- config = new Configuration(new File(file));
- try {
- config.load();
- double set = config.get(category, key, value).getDouble();
- config.getCategory(category).get(key).set(value);
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- }
-
- public static void writeStringConfig(String category, String key, String value) {
- config = new Configuration(new File(file));
- try {
- config.load();
- String set = config.get(category, key, value).getString();
- config.getCategory(category).get(key).set(value);
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- }
-
- public static void writeBooleanConfig(String category, String key, boolean value) {
- config = new Configuration(new File(file));
- try {
- config.load();
- boolean set = config.get(category, key, value).getBoolean();
- config.getCategory(category).get(key).set(value);
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- }
-
- public static boolean hasKey(String category, String key) {
- config = new Configuration(new File(file));
- try {
- config.load();
- if (!config.hasCategory(category)) return false;
- return config.getCategory(category).containsKey(key);
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- return false;
- }
-
- public static void deleteCategory(String category) {
- config = new Configuration(new File(file));
- try {
- config.load();
- if (config.hasCategory(category)) {
- config.removeCategory(new ConfigCategory(category));
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- config.save();
- }
- }
-
- public static void reloadConfig() {
- if (!hasKey("toggles", "guiToggled")) writeBooleanConfig("toggles", "guiToggled", true);
- if (!hasKey("toggles", "motdToggled")) writeBooleanConfig("toggles", "motdToggled", true);
- if (!hasKey("toggles", "waypointsToggled")) writeBooleanConfig("toggles", "waypointsToggled", true);
-
- if (!hasKey("waypoint", "showEntrance")) writeBooleanConfig("waypoint", "showEntrance", true);
- if (!hasKey("waypoint", "showSuperboom")) writeBooleanConfig("waypoint", "showSuperboom", true);
- if (!hasKey("waypoint", "showSecrets")) writeBooleanConfig("waypoint", "showSecrets", true);
- if (!hasKey("waypoint", "showFairySouls")) writeBooleanConfig("waypoint", "showFairySouls", true);
- if (!hasKey("waypoint", "showStonk")) writeBooleanConfig("waypoint", "showStonk", true);
- if (!hasKey("waypoint", "sneakToDisable")) writeBooleanConfig("waypoint", "sneakToDisable", true);
- if (!hasKey("waypoint", "disableWhenAllFound")) writeBooleanConfig("waypoint", "disableWhenAllFound", true);
-
- if (!hasKey("waypoint", "showWaypointText")) writeBooleanConfig("waypoint", "showWaypointText", true);
- if (!hasKey("waypoint", "showBoundingBox")) writeBooleanConfig("waypoint", "showBoundingBox", true);
- if (!hasKey("waypoint", "showBeacon")) writeBooleanConfig("waypoint", "showBeacon", true);
-
- if (!hasKey("waypoint", "practiceModeOn")) writeBooleanConfig("waypoint", "practiceModeOn", false);
-
- if (!hasKey("gui", "scaleX")) writeIntConfig("gui", "scaleX", 50);
- if (!hasKey("gui", "scaleY")) writeIntConfig("gui", "scaleY", 5);
- if (!hasKey("gui", "hotkeyOpen")) writeStringConfig("gui", "hotkeyOpen", "gui");
-
- //run special messages on first login
- if (!hasKey("drm", "version")) {
- writeStringConfig("drm", "version", DungeonRooms.VERSION);
- DungeonRooms.firstLogin = true;
- //writeBooleanConfig("toggles", "waypointsToggled", false);
- } else if (!getString("drm", "version").equals(DungeonRooms.VERSION)) {
- writeStringConfig("drm", "version", DungeonRooms.VERSION);
- /* //uncomment if major update in future requires firstLogin prompt to be displayed again
- DungeonRooms.firstLogin = true;
- writeBooleanConfig("toggles", "waypointsToggled", false);
- */
- }
-
- //AutoRoom.chatToggled = getBoolean("toggles", "chatToggled");
- DungeonManager.guiToggled = getBoolean("toggles", "guiToggled");
- DungeonManager.motdToggled = getBoolean("toggles", "motdToggled");
- //AutoRoom.coordToggled = getBoolean("toggles", "coordToggled");
- Waypoints.enabled = getBoolean("toggles", "waypointsToggled");
-
- Waypoints.showEntrance = getBoolean("waypoint", "showEntrance");
- Waypoints.showSuperboom = getBoolean("waypoint", "showSuperboom");
- Waypoints.showSecrets = getBoolean("waypoint", "showSecrets");
- Waypoints.showFairySouls = getBoolean("waypoint", "showFairySouls");
- Waypoints.showStonk = getBoolean("waypoint", "showStonk");
- Waypoints.sneakToDisable = getBoolean("waypoint", "sneakToDisable");
- Waypoints.disableWhenAllFound = getBoolean("waypoint", "disableWhenAllFound");
-
- Waypoints.showWaypointText = getBoolean("waypoint", "showWaypointText");
- Waypoints.showBoundingBox = getBoolean("waypoint", "showBoundingBox");
- Waypoints.showBeacon = getBoolean("waypoint", "showBeacon");
-
- Waypoints.practiceModeOn = getBoolean("waypoint", "practiceModeOn");
-
- DungeonRooms.textLocX = getInt("gui", "scaleX");
- DungeonRooms.textLocY = getInt("gui", "scaleY");
- DungeonRooms.imageHotkeyOpen = getString("gui", "hotkeyOpen");
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/handlers/OpenLink.java b/src/main/java/io/github/quantizr/dungeonrooms/handlers/OpenLink.java
deleted file mode 100644
index d14a8e8..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/handlers/OpenLink.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.handlers;
-
-import com.google.gson.JsonObject;
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.dungeons.catacombs.RoomDetection;
-import io.github.quantizr.dungeonrooms.gui.LinkGUI;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.event.ClickEvent;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraftforge.client.ClientCommandHandler;
-import net.minecraftforge.fml.client.FMLClientHandler;
-
-import java.awt.*;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-public class OpenLink {
-
- public static void checkForLink(String type){
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayerSP player = mc.thePlayer;
-
- if (RoomDetection.roomName.equals("undefined") || DungeonRooms.roomsJson.get(RoomDetection.roomName) == null) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: You do not appear to be in a detected Dungeon room right now."));
- return;
- }
-
- JsonObject roomJson = DungeonRooms.roomsJson.get(RoomDetection.roomName).getAsJsonObject();
- if (roomJson.get("dsg").getAsString().equals("null") && roomJson.get("sbp") == null) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: There are no channels/images for this room."));
- return;
- }
-
- switch (type) {
- case "gui":
- mc.addScheduledTask(() -> mc.displayGuiScreen(new LinkGUI()));
- break;
- case "dsg":
- OpenLink.openDiscord("client");
- break;
- case "sbp":
- if (DungeonRooms.usingSBPSecrets) {
- OpenLink.openSBPSecrets();
- } else {
- String sbpURL = "https://discord.gg/2UjaFqfPwJ";
- ChatComponentText sbp = new ChatComponentText(EnumChatFormatting.YELLOW + "" + EnumChatFormatting.UNDERLINE + sbpURL);
- sbp.setChatStyle(sbp.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, sbpURL)));
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: You need the SkyblockPersonalized (SBP) Mod for this feature, get it from ").appendSibling(sbp));
- }
- break;
- }
-
- }
-
- public static void openDiscord(String type) {
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayerSP player = mc.thePlayer;
-
- if (RoomDetection.roomName.equals("undefined") || DungeonRooms.roomsJson.get(RoomDetection.roomName) == null) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: You do not appear to be in a detected Dungeon room right now."));
- return;
- }
-
- JsonObject roomJson = DungeonRooms.roomsJson.get(RoomDetection.roomName).getAsJsonObject();
- if (roomJson.get("dsg").getAsString().equals("null")) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: There is no DSG channel for this room."));
- return;
- }
- try {
- if (type.equals("client")){
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Opening DSG Discord in Client..."));
- Desktop.getDesktop().browse(new URI("discord://" + roomJson.get("dsg").getAsString()));
- } else {
- player.addChatMessage(new ChatComponentText("Dungeon Rooms: Opening DSG Discord in Browser..."));
- Desktop.getDesktop().browse(new URI("https://discord.com" + roomJson.get("dsg").getAsString()));
- }
- } catch (IOException | URISyntaxException e) {
- e.printStackTrace();
- }
- }
-
- public static void openSBPSecrets() {
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayerSP player = mc.thePlayer;
-
- if (RoomDetection.roomName.equals("undefined") || DungeonRooms.roomsJson.get(RoomDetection.roomName) == null) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: You do not appear to be in a detected Dungeon room right now."));
- return;
- }
-
- JsonObject roomJson = DungeonRooms.roomsJson.get(RoomDetection.roomName).getAsJsonObject();
- if (roomJson.get("sbp") == null) {
- player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED
- + "Dungeon Rooms: There are no SBP images for this room."));
- return;
- }
- String name = roomJson.get("sbp").getAsString();
-
- String category = roomJson.get("category").getAsString();
- switch (category) {
- case "Puzzle":
- case "Trap":
- category = "puzzles";
- break;
- case "L-shape":
- category = "L";
- break;
- }
- ClientCommandHandler.instance.executeCommand(FMLClientHandler.instance().getClientPlayerEntity(), "/secretoverride " + category + " " + name);
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/handlers/PacketHandler.java b/src/main/java/io/github/quantizr/dungeonrooms/handlers/PacketHandler.java
deleted file mode 100644
index d91df16..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/handlers/PacketHandler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.handlers;
-
-import io.github.quantizr.dungeonrooms.events.PacketEvent;
-import io.netty.channel.ChannelDuplexHandler;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelPromise;
-import net.minecraft.network.Packet;
-import net.minecraftforge.common.MinecraftForge;
-
-public class PacketHandler extends ChannelDuplexHandler {
-
- @Override
- public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
- if (msg instanceof Packet) MinecraftForge.EVENT_BUS.post(new PacketEvent.ReceiveEvent((Packet) msg));
- super.channelRead(ctx, msg);
- }
-
- @Override
- public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
- if (msg instanceof Packet) MinecraftForge.EVENT_BUS.post(new PacketEvent.SendEvent((Packet) msg));
- super.write(ctx, msg, promise);
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/handlers/ScoreboardHandler.java b/src/main/java/io/github/quantizr/dungeonrooms/handlers/ScoreboardHandler.java
deleted file mode 100644
index 9d5764c..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/handlers/ScoreboardHandler.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.handlers;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import net.minecraft.client.Minecraft;
-import net.minecraft.scoreboard.Score;
-import net.minecraft.scoreboard.ScoreObjective;
-import net.minecraft.scoreboard.ScorePlayerTeam;
-import net.minecraft.scoreboard.Scoreboard;
-import net.minecraft.util.StringUtils;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-public class ScoreboardHandler {
- public static String cleanSB(String scoreboard) {
- char[] nvString = StringUtils.stripControlCodes(scoreboard).toCharArray();
- StringBuilder cleaned = new StringBuilder();
-
- for (char c : nvString) {
- if ((int) c > 20 && (int) c < 127) {
- cleaned.append(c);
- }
- }
-
- return cleaned.toString();
- }
-
- public static List getSidebarLines() {
- List lines = new ArrayList<>();
- if (Minecraft.getMinecraft().theWorld == null) return lines;
- Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard();
- if (scoreboard == null) return lines;
-
- ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1);
- if (objective == null) return lines;
-
- Collection scores = scoreboard.getSortedScores(objective);
- List list = scores.stream()
- .filter(input -> input != null && input.getPlayerName() != null && !input.getPlayerName()
- .startsWith("#"))
- .collect(Collectors.toList());
-
- if (list.size() > 15) {
- scores = Lists.newArrayList(Iterables.skip(list, scores.size() - 15));
- } else {
- scores = list;
- }
-
- for (Score score : scores) {
- ScorePlayerTeam team = scoreboard.getPlayersTeam(score.getPlayerName());
- lines.add(ScorePlayerTeam.formatPlayerName(team, score.getPlayerName()));
- }
-
- return lines;
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/handlers/TextRenderer.java b/src/main/java/io/github/quantizr/dungeonrooms/handlers/TextRenderer.java
deleted file mode 100644
index 93d8b5f..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/handlers/TextRenderer.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.handlers;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.Gui;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.util.StringUtils;
-
-public class TextRenderer extends Gui {
- public static void drawText(Minecraft mc, String text, int x, int y, double scale, boolean outline) {
- GlStateManager.pushMatrix();
- GlStateManager.scale(scale, scale, scale);
- y -= mc.fontRendererObj.FONT_HEIGHT;
- for (String line : text.split("\n")) {
- y += mc.fontRendererObj.FONT_HEIGHT * scale;
- if (outline) {
- String noColourLine = StringUtils.stripControlCodes(line);
- mc.fontRendererObj.drawString(noColourLine, (int) Math.round(x / scale) - 1, (int) Math.round(y / scale), 0x000000, false);
- mc.fontRendererObj.drawString(noColourLine, (int) Math.round(x / scale) + 1, (int) Math.round(y / scale), 0x000000, false);
- mc.fontRendererObj.drawString(noColourLine, (int) Math.round(x / scale), (int) Math.round(y / scale) - 1, 0x000000, false);
- mc.fontRendererObj.drawString(noColourLine, (int) Math.round(x / scale), (int) Math.round(y / scale) + 1, 0x000000, false);
- mc.fontRendererObj.drawString(line, (int) Math.round(x / scale), (int) Math.round(y / scale), 0xFFFFFF, false);
- } else {
- mc.fontRendererObj.drawString(line, (int) Math.round(x / scale), (int) Math.round(y / scale), 0xFFFFFF, true);
- }
- }
- GlStateManager.popMatrix();
- GlStateManager.color(1, 1, 1, 1);
- }
-}
-
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/utils/MapUtils.java b/src/main/java/io/github/quantizr/dungeonrooms/utils/MapUtils.java
deleted file mode 100644
index 2855b08..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/utils/MapUtils.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.utils;
-
-import net.minecraft.block.material.MapColor;
-import net.minecraft.client.Minecraft;
-import net.minecraft.init.Items;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.Vec3;
-import net.minecraft.util.Vec4b;
-import net.minecraft.world.storage.MapData;
-
-import java.awt.*;
-import java.util.*;
-import java.util.List;
-
-public class MapUtils {
-
- /**
- * Checks whether the Skyblock Dungeon Map is in the player's hotbar
- * @return whether the map exists
- */
- public static boolean mapExists() {
- Minecraft mc = Minecraft.getMinecraft();
- ItemStack mapSlot = mc.thePlayer.inventory.getStackInSlot(8); //check last slot where map should be
- if (mapSlot == null || mapSlot.getItem() != Items.filled_map || !mapSlot.hasDisplayName()) return false; //make sure it is a map, not SB Menu or Spirit Bow, etc
- return mapSlot.getDisplayName().contains("Magical Map");
- }
-
- /**
- * Reads the hotbar map and converts it into a 2D Integer array of RGB colors which can be used by the rest of the
- * code
- *
- * @return null if map not found, otherwise 128x128 Array of the RGB Integer colors of each point on the map
- */
- public static Integer[][] updatedMap() {
- if (!mapExists()) return null; //make sure map exists
- Minecraft mc = Minecraft.getMinecraft();
- ItemStack mapSlot = mc.thePlayer.inventory.getStackInSlot(8); //get map ItemStack
- MapData mapData = Items.filled_map.getMapData(mapSlot, mc.theWorld);
- if(mapData == null) return null;
- Integer[][] map = new Integer[128][128];
-
- //for loop code modified from net.minecraft.client.gui.MapItemRenderer.updateMapTexture()
- for (int i = 0; i < 16384; ++i) {
- int x = i % 128; //get x coordinate of pixel being read
- int y = i / 128; //get y coordinate of pixel being read
- int j = mapData.colors[i] & 255;
- int rgba;
- if (j / 4 == 0) {
- rgba = (i + i / 128 & 1) * 8 + 16 << 24;
- } else {
- rgba = MapColor.mapColorArray[j / 4].getMapColor(j & 3);
- }
- map[x][y] = rgba & 0x00FFFFFF; //get rgb value from rgba
- }
-
- return map;
- }
-
-
- /**
- * This function finds the coordinates of the NW and NE corners of the entrance room on the hotbar map. This is
- * later used to determine the size of the room grid on the hotbar map. Different floors have slightly different
- * pixel widths of the rooms, so it is important for the mod to be able to identify the location and size of various
- * portions of the room grid. Since all rooms within a floor are the same size on the hotbar map and since the
- * entrance room is always there on the hotbar map, we get two corners from the entrance room to determine the
- * scaling of the map as soon as the player enters.
- *
- * This function works by iterating through the map and looking for a green entrance room pixel. Once it finds one
- * and determines that the map pixel above is a blank spot, it checks for map pixels on the left and right side.
- *
- * @return `entranceMapCorners[0]` is the coordinate of the left NW corner and `entranceMapCorners[1]` is the
- * coordinate of the right NE corner
- */
- public static Point[] entranceMapCorners(Integer[][] map) {
- if (map == null) return null;
- Point[] corners = new Point[2];
-
- for (int x = 0; x < 128; x++) {
- for (int y = 0; y < 128; y++) {
- if (map[x][y] != null && map[x][y] == 31744 && map[x][y-1] != null && map[x][y-1] == 0) { //check for Green entrance room pixels and make sure row above is blank
- if (map[x - 1][y] != null && map[x - 1][y] == 0) {
- corners[0] = new Point(x, y); //Left corner
- } else if (map[x + 1][y] != null && map[x + 1][y] == 0) {
- corners[1] = new Point(x, y); //Right Corner
- }
- }
- }
- if (corners[0] != null && corners[1] != null) break;
- }
- return corners;
- }
-
- /**
- * @return the coordinate of the NW hotbar map corner closest to the coordinate provided
- */
- public static Point getClosestNWMapCorner(Point mapPos, Point leftCorner, Point rightCorner) {
- int roomWidthAndGap = rightCorner.x - leftCorner.x + 1 + 4; //+1 to count left corner block, +4 to account for gap between rooms
- Point origin = new Point(leftCorner.x % roomWidthAndGap, leftCorner.y % roomWidthAndGap);
-
- mapPos.x = mapPos.x + 2; //shift by 2 so room borders are evenly split
- mapPos.y = mapPos.y + 2;
-
- int x = mapPos.x - (mapPos.x % roomWidthAndGap) + origin.x; //round down to room size grid
- int y = mapPos.y - (mapPos.y % roomWidthAndGap) + origin.y;
-
- if (x > mapPos.x) x -= roomWidthAndGap; //make sure coordinates are being rounded down (in case origin value being too large)
- if (y > mapPos.y) y -= roomWidthAndGap;
-
- return new Point(x, y);
- }
-
- /**
- * Skyblock Dungeon maps are aligned to a 32x32 block wide grid, allowing for math only calculation of corners
- * @return the coordinate of the NW physical map corner closest to the coordinate provided
- */
- public static Point getClosestNWPhysicalCorner (Vec3 vectorPos) {
- Vec3 shiftedPos = vectorPos.addVector(0.5, 0, 0.5); //shift by 0.5 so room borders are evenly split
- shiftedPos = shiftedPos.addVector(8, 0, 8); //because Hypixel randomly shifted rooms in Skyblock 0.12.3
- int x = (int) (shiftedPos.xCoord - Math.floorMod((int) shiftedPos.xCoord, 32)); //room length 31, +1 to account for gap between rooms
- int z = (int) (shiftedPos.zCoord - Math.floorMod((int) shiftedPos.zCoord, 32));
-
- return new Point(x - 8 , z - 8); //-8 for same reason as above
- }
-
- public static Point getClosestNWPhysicalCorner (BlockPos blockPos) {
- return getClosestNWPhysicalCorner(new Vec3(blockPos.getX(), blockPos.getY(), blockPos.getZ()));
- }
-
- /**
- * @return the hotbar map coordinate corresponding to the physical map corner coordinate provided
- */
- public static Point physicalToMapCorner(Point physicalClosestCorner, Point physicalLeftCorner, Point leftCorner, Point rightCorner) {
- int roomWidthAndGap = rightCorner.x - leftCorner.x + 1 + 4; //+1 to count left corner block, +4 to account for gap between rooms
- int xShift = (physicalClosestCorner.x - physicalLeftCorner.x) / 32; //how many 1x1 grids away the closest corner is from entrance
- int yShift = (physicalClosestCorner.y - physicalLeftCorner.y) / 32;
-
- int x = leftCorner.x + (roomWidthAndGap * xShift); //translate grid distance to the map
- int y = leftCorner.y + (roomWidthAndGap * yShift);
-
- //this function can return a value outside of 0-127 which are the bounds of the map
- //must check bounds for any function using this
-
- return new Point(x, y);
- }
-
- /**
- * @return the physical map coordinate corresponding to the hotbar map corner coordinate provided
- */
- public static Point mapToPhysicalCorner(Point mapCorner, Point physicalLeftCorner, Point leftCorner, Point rightCorner) {
- int roomWidthAndGap = rightCorner.x - leftCorner.x + 1 + 4; //+1 to count left corner block, +4 to account for gap between rooms
- int xShift = (mapCorner.x - leftCorner.x) / roomWidthAndGap; //how many 1x1 grids away the closest corner is from entrance
- int yShift = (mapCorner.y - leftCorner.y) / roomWidthAndGap;
-
- int x = physicalLeftCorner.x + (32 * xShift); //translate grid distance to the physical
- int y = physicalLeftCorner.y + (32 * yShift);
-
- return new Point(x, y);
- }
-
- /**
- * @return the color of the coordinate on the map as a String
- */
- public static String getMapColor(Point point, Integer[][] map) {
- int x = point.x;
- int y = point.y;
-
- //physicalToMapCorner might be called when player is outside map zone e.g. boss room, returning a value outside
- //of the map coordinates which would otherwise call getMapColor to crash
- if (x < 0 || y < 0 || x > 127 || y > 127) {
- return "undefined";
- }
-
- if (map != null) {
- switch (map[x][y]) {
- case 7488283:
- return "brown";
- case 11685080:
- return "purple";
- case 15066419:
- return "yellow";
- case 31744:
- return "green";
- case 15892389:
- return "pink";
- case 14188339:
- return "orange";
- case 16711680:
- return "red";
- default: //includes default blank background color = 0 and any other possible map colors
- return "undefined";
- }
- }
- return "undefined";
- }
-
- /**
- * Checks a point on each side the room corner coordinate for either empty space or a connected segment, each new
- * segment is recursively checked until all neighboring segments have been added to a list
- *
- * @return a List of the coordinates of all segments of the same room as the corner coordinate provided
- */
- public static List neighboringSegments(Point originCorner, Integer[][] map, Point leftCorner, Point rightCorner, List list) {
- if (!list.contains(originCorner)) {
- list.add(originCorner);
- }
- if (!getMapColor(originCorner, map).equals("brown")) return list; //only continue if square is brown
-
- int roomWidth = rightCorner.x - leftCorner.x + 1; //+1 to count left corner block
-
-
- List pointsToCheck = new ArrayList<>();
- pointsToCheck.add(new Point(originCorner.x, originCorner.y - 1)); //up
- pointsToCheck.add(new Point(originCorner.x, originCorner.y + roomWidth)); //down
- pointsToCheck.add(new Point(originCorner.x - 1, originCorner.y)); //left
- pointsToCheck.add(new Point(originCorner.x + roomWidth, originCorner.y)); //right
-
- List pointsToTransform = new ArrayList<>(); //pointsToCheck +/- 4 to jump gap and calc correct closest NW corner
- pointsToTransform.add(new Point(originCorner.x, originCorner.y - 1 - 4)); //up
- pointsToTransform.add(new Point(originCorner.x, originCorner.y + roomWidth + 4)); //down
- pointsToTransform.add(new Point(originCorner.x -1 - 4, originCorner.y)); //left
- pointsToTransform.add(new Point(originCorner.x + roomWidth + 4, originCorner.y)); //right
-
- for (int i = 0; i < 4; i++) {
- if (getMapColor(pointsToCheck.get(i), map).equals("brown")) {
- Point newCorner = getClosestNWMapCorner(pointsToTransform.get(i), leftCorner, rightCorner);
-
- if (!list.contains(newCorner)) {
- list.add(newCorner);
- list = neighboringSegments(newCorner, map, leftCorner, rightCorner, list); //check for neighboring segments from the new point
- }
- }
- }
-
- return list;
- }
-
- /**
- * @return the size of the room given a the location of each room segment
- */
- public static String roomSize(List segments) {
- //accepts either map segments or physical segments, does not matter
- if (segments.size() == 1) return "1x1";
- if (segments.size() == 2) return "1x2";
-
- HashSet x = new HashSet<>();
- HashSet y = new HashSet<>();
- for(Point segment:segments) {
- x.add(segment.x);
- y.add(segment.y);
- }
- if (segments.size() == 3) {
- if (x.size() == 2 && y.size() == 2) return "L-shape";
- else return "1x3";
- }
- if (segments.size() == 4) {
- if (x.size() == 2 && y.size() == 2) return "2x2";
- else return "1x4";
- }
-
- return "undefined";
- }
-
- /**
- * @return the category of the room given size and color
- */
- public static String roomCategory(String roomSize, String roomColor) {
- if (roomSize.equals("1x1")) {
- switch (roomColor) {
- case "brown":
- return "1x1";
- case "purple":
- return "Puzzle";
- case "orange":
- return "Trap";
- case "green":
- case "red":
- case "pink":
- case "yellow":
- return "General";
- default:
- return "undefined";
- }
- } else {
- return roomSize;
- }
- }
-
- /**
- * @return the coordinate of the player marker on the map
- */
- public static Point playerMarkerPos() {
- if (!mapExists()) return null; //make sure map exists
- Minecraft mc = Minecraft.getMinecraft();
- ItemStack mapSlot = mc.thePlayer.inventory.getStackInSlot(8); //get map ItemStack
- MapData mapData = Items.filled_map.getMapData(mapSlot, mc.theWorld);
- if(mapData == null) return null;
- if (mapData.mapDecorations != null) {
- for (Map.Entry entry : mapData.mapDecorations.entrySet()) {
- if (entry.getValue().func_176110_a() == 1) { //player marker
- int x = entry.getValue().func_176112_b() / 2 + 64;
- int y = entry.getValue().func_176113_c() / 2 + 64;
- return new Point(x, y);
- }
- }
- }
- return null;
- }
-
- /**
- * @return the location of the furthest corner in a direction given a list of segments
- */
- public static Point getPhysicalCornerPos(String direction, List currentPhysicalSegments) {
- //For L-shapes, this will return the fourth corner as if it were a 2x2
- TreeSet xSet = new TreeSet<>(); //TreeSet removes duplicates and sorts increasing
- TreeSet ySet = new TreeSet<>();
- for(Point segment:currentPhysicalSegments) {
- xSet.add(segment.x);
- ySet.add(segment.y);
- }
-
- switch (direction) {
- case "NW":
- return new Point(xSet.first(), ySet.first());
- case "NE":
- return new Point(xSet.last() + 30, ySet.first());
- case "SE":
- return new Point(xSet.last() + 30, ySet.last() + 30);
- case "SW":
- return new Point(xSet.first(), ySet.last() + 30);
- }
- return null;
- }
-
- /**
- * Rooms such as L-shape rooms only have one possible direction, so it is much faster to only have to compare one
- * direction instead of rotating it 4 times. Similarly, rectangular shaped rooms have two possible directions,
- * saving time instead of rotating it 4 times. Square shaped rooms must be checked in all four directions.
- *
- * @return the possible rotation directions which need to be checked
- */
- public static List possibleDirections(String roomSize, List currentRoomSegments) {
- //can take physical or hotbar segments
- //eliminates two possibilities for rectangular rooms, three possibilities for L-shape
- List directions = new ArrayList<>();
- if (roomSize.equals("1x1") || roomSize.equals("2x2")) {
- directions.add("NW");
- directions.add("NE");
- directions.add("SE");
- directions.add("SW");
- } else {
- TreeSet xSet = new TreeSet<>(); //TreeSet removes duplicates and sorts increasing
- TreeSet ySet = new TreeSet<>();
- for(Point segment:currentRoomSegments) {
- xSet.add(segment.x);
- ySet.add(segment.y);
- }
- if (roomSize.equals("L-shape")) {
- List x = new ArrayList<>(xSet);
- List y = new ArrayList<>(ySet);
-
- if (!currentRoomSegments.contains(new Point(x.get(0), y.get(0)))) directions.add("SW");
- else if (!currentRoomSegments.contains(new Point(x.get(0), y.get(1)))) directions.add("SE");
- else if (!currentRoomSegments.contains(new Point(x.get(1), y.get(0)))) directions.add("NW");
- else if (!currentRoomSegments.contains(new Point(x.get(1), y.get(1)))) directions.add("NE");
-
- } else if (roomSize.startsWith("1x")) { //not 1x1 bc else statement earlier
- if (xSet.size() >= 2 && ySet.size() == 1) {
- directions.add("NW");
- directions.add("SE");
- } else if (xSet.size() == 1 && ySet.size() >= 2) {
- directions.add("NE");
- directions.add("SW");
- }
- }
- }
- return directions;
- }
-
- /**
- * @return the actual coordinate of a block given the relative coordinate
- */
- public static BlockPos actualToRelative(BlockPos actual, String cornerDirection, Point locationOfCorner) {
- double x = 0;
- double z = 0;
- switch (cornerDirection) {
- case "NW":
- x = actual.getX() - locationOfCorner.getX();
- z = actual.getZ() - locationOfCorner.getY(); //.getY in a point is the MC Z coord
- break;
- case "NE":
- x = actual.getZ() - locationOfCorner.getY();
- z = -(actual.getX() - locationOfCorner.getX());
- break;
- case "SE":
- x = -(actual.getX() - locationOfCorner.getX());
- z = -(actual.getZ() - locationOfCorner.getY());
- break;
- case "SW":
- x = -(actual.getZ() - locationOfCorner.getY());
- z = actual.getX() - locationOfCorner.getX();
- break;
- }
- return new BlockPos(x, actual.getY(), z);
- }
-
- /**
- * @return the relative coordinate of a block given the actual coordinate
- */
- public static BlockPos relativeToActual(BlockPos relative, String cornerDirection, Point locationOfCorner) {
- double x = 0;
- double z = 0;
- switch (cornerDirection) {
- case "NW":
- x = relative.getX() + locationOfCorner.getX();
- z = relative.getZ() + locationOfCorner.getY(); //.getY in a point is the MC Z coord
- break;
- case "NE":
- x = -(relative.getZ() - locationOfCorner.getX());
- z = relative.getX() + locationOfCorner.getY();
- break;
- case "SE":
- x = -(relative.getX() - locationOfCorner.getX());
- z = -(relative.getZ() - locationOfCorner.getY());
- break;
- case "SW":
- x = relative.getZ() + locationOfCorner.getX();
- z = -(relative.getX() - locationOfCorner.getY());
- break;
- }
- return new BlockPos(x, relative.getY(), z);
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/utils/Utils.java b/src/main/java/io/github/quantizr/dungeonrooms/utils/Utils.java
deleted file mode 100644
index 60aa1cd..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/utils/Utils.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.utils;
-
-import io.github.quantizr.dungeonrooms.DungeonRooms;
-import io.github.quantizr.dungeonrooms.handlers.ScoreboardHandler;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.settings.GameSettings;
-import net.minecraft.client.settings.KeyBinding;
-import net.minecraft.scoreboard.ScoreObjective;
-import net.minecraft.util.ChatComponentText;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.BaseConfiguration;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-
-import java.io.*;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.FileSystem;
-import java.nio.file.FileSystems;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.*;
-import java.util.stream.Stream;
-import java.util.zip.InflaterInputStream;
-
-public class Utils {
- public static boolean inSkyblock = false;
- public static boolean inCatacombs = false;
- public static boolean dungeonOverride = false;
-
- /**
- * Taken from Danker's Skyblock Mod under the GNU General Public License v3.0
- * https://github.com/bowser0000/SkyblockMod/blob/master/LICENSE
- * @author bowser0000
- */
- public static void checkForSkyblock() {
- if (dungeonOverride) {
- inSkyblock = true;
- return;
- }
- Minecraft mc = Minecraft.getMinecraft();
- if (mc != null && mc.theWorld != null && !mc.isSingleplayer()) {
- ScoreObjective scoreboardObj = mc.theWorld.getScoreboard().getObjectiveInDisplaySlot(1);
- if (scoreboardObj != null) {
- String scObjName = ScoreboardHandler.cleanSB(scoreboardObj.getDisplayName());
- if (scObjName.contains("SKYBLOCK")) {
- inSkyblock = true;
- return;
- }
- }
- }
- inSkyblock = false;
- }
-
- /**
- * Taken from Danker's Skyblock Mod under the GNU General Public License v3.0
- * https://github.com/bowser0000/SkyblockMod/blob/master/LICENSE
- * @author bowser0000
- */
- public static void checkForCatacombs() {
- if (dungeonOverride) {
- inCatacombs = true;
- return;
- }
- if (inSkyblock) {
- List scoreboard = ScoreboardHandler.getSidebarLines();
- for (String s : scoreboard) {
- String sCleaned = ScoreboardHandler.cleanSB(s);
- if (sCleaned.contains("The Catacombs")) {
- inCatacombs = true;
- return;
- }
- }
- }
- inCatacombs = false;
- }
-
-
- public static void checkForConflictingHotkeys() {
- Minecraft mc = Minecraft.getMinecraft();
- for (KeyBinding drmKeybind : DungeonRooms.keyBindings) {
- for (KeyBinding keybinding : mc.gameSettings.keyBindings) {
- if (drmKeybind.getKeyCode() != 0 && drmKeybind != keybinding && drmKeybind.getKeyCode() == keybinding.getKeyCode()) {
- mc.thePlayer.addChatMessage(new ChatComponentText("§d§l--- Dungeon Rooms Mod ---\n"
- + " §r§cThe hotkey \"" + GameSettings.getKeyDisplayString(drmKeybind.getKeyCode())
- + "\", which is used to " + drmKeybind.getKeyDescription() + ", has a conflict with a "
- + "keybinding from \"" + keybinding.getKeyCategory() + "\".\n §c§lPlease go into the "
- + "Minecraft Controls menu and change one of the keybindings.\n"
- + "§d§l------------------------"
- ));
- }
- }
- }
-
- }
-
- /**
- * @return List of the paths to every .skeleton room data file
- */
- public static List getAllPaths (String folderName) {
- List paths = new ArrayList<>();
- try {
- URI uri = DungeonRooms.class.getResource("/assets/dungeonrooms/" + folderName).toURI();
- Path Path;
- FileSystem fileSystem = null;
- if (uri.getScheme().equals("jar")) {
- fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap());
- Path = fileSystem.getPath("/assets/dungeonrooms/" + folderName);
- } else {
- Path = Paths.get(uri);
- }
- Stream walk = Files.walk(Path, 3);
- for (Iterator it = walk.iterator(); it.hasNext();) {
- Path path = it.next();
- String name = path.getFileName().toString();
- if (name.endsWith(".skeleton")) paths.add(path);
- }
- if (fileSystem != null) fileSystem.close();
- } catch (URISyntaxException | IOException e) {
- e.printStackTrace();
- }
- return paths;
- }
-
- /**
- * Converts the .skeleton files into a readable format.
- * @return room data as a hashmap
- */
- public static HashMap pathsToRoomData (String parentFolder, List allPaths) {
- HashMap allRoomData = new HashMap<>();
- try {
- for (Path path : allPaths) {
- if (!path.getParent().getFileName().toString().equals(parentFolder)) continue;
- String name = path.getFileName().toString();
- InputStream input = DungeonRooms.class.getResourceAsStream(path.toString());
- ObjectInputStream data = new ObjectInputStream(new InflaterInputStream(input));
- long[] roomData = (long[]) data.readObject();
- allRoomData.put(name.substring(0, name.length() - 9), roomData);
- DungeonRooms.logger.debug("DungeonRooms: Loaded " + name);
- }
- } catch (IOException | ClassNotFoundException e) {
- e.printStackTrace();
- }
- DungeonRooms.logger.info("DungeonRooms: Loaded " + allRoomData.size() + " " + parentFolder + " rooms");
- return allRoomData;
- }
-
- /**
- * Used to set the log level of just this mod
- */
- public static void setLogLevel(Logger logger, Level level) {
- final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- BaseConfiguration config = (BaseConfiguration) ctx.getConfiguration();
-
- LoggerConfig loggerConfig = config.getLoggerConfig(logger.getName());
- LoggerConfig specificConfig = loggerConfig;
-
- if (!loggerConfig.getName().equals(logger.getName())) {
- specificConfig = new LoggerConfig(logger.getName(), level, true);
- specificConfig.setParent(loggerConfig);
- config.addLogger(logger.getName(), specificConfig);
- }
- specificConfig.setLevel(level);
- ctx.updateLoggers();
- }
-
- /**
- * Packs block info into a single 8 byte primitive long. Normally, first pair of bytes will be x coordinate, second
- * pair will be y coordinate, third pair will be z coordinate, and last pair will be block id and metadata.
- * @return primitive long containing block info
- */
- public static long shortToLong(short a, short b, short c, short d) {
- return ((long)((a << 16) | (b & 0xFFFF)) << 32) | (((c << 16) | (d & 0xFFFF)) & 0xFFFFFFFFL);
- }
-
- /**
- * @return Array of four shorts containing the values stored in the long
- */
- public static short[] longToShort(long l) {
- return new short[]{(short) (l >> 48), (short) (l >> 32), (short) (l >> 16), (short) (l)};
- }
-}
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/utils/WaypointUtils.java b/src/main/java/io/github/quantizr/dungeonrooms/utils/WaypointUtils.java
deleted file mode 100644
index e613c00..0000000
--- a/src/main/java/io/github/quantizr/dungeonrooms/utils/WaypointUtils.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
- * Copyright 2021 Quantizr(_risk)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see .
- */
-
-package io.github.quantizr.dungeonrooms.utils;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.client.renderer.WorldRenderer;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.entity.Entity;
-import net.minecraft.util.*;
-import org.lwjgl.opengl.GL11;
-
-import java.awt.*;
-
-public class WaypointUtils {
- private static final ResourceLocation beaconBeam = new ResourceLocation("textures/entity/beacon_beam.png");
-
- /**
- * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
- * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
- * @author Moulberry
- */
- public static void renderBeaconBeam(double x, double y, double z, int rgb, float alphaMultiplier, float partialTicks) {
- int height = 300;
- int bottomOffset = 0;
- int topOffset = bottomOffset + height;
-
- Tessellator tessellator = Tessellator.getInstance();
- WorldRenderer worldrenderer = tessellator.getWorldRenderer();
-
- Minecraft.getMinecraft().getTextureManager().bindTexture(beaconBeam);
- GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F);
- GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F);
- GlStateManager.disableLighting();
- GlStateManager.enableCull();
- GlStateManager.enableTexture2D();
- GlStateManager.tryBlendFuncSeparate(770, 1, 1, 0);
- GlStateManager.enableBlend();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
-
- double time = Minecraft.getMinecraft().theWorld.getTotalWorldTime() + (double)partialTicks;
- double d1 = MathHelper.func_181162_h(-time * 0.2D - (double)MathHelper.floor_double(-time * 0.1D));
-
- float r = ((rgb >> 16) & 0xFF) / 255f;
- float g = ((rgb >> 8) & 0xFF) / 255f;
- float b = (rgb & 0xFF) / 255f;
- double d2 = time * 0.025D * -1.5D;
- double d4 = 0.5D + Math.cos(d2 + 2.356194490192345D) * 0.2D;
- double d5 = 0.5D + Math.sin(d2 + 2.356194490192345D) * 0.2D;
- double d6 = 0.5D + Math.cos(d2 + (Math.PI / 4D)) * 0.2D;
- double d7 = 0.5D + Math.sin(d2 + (Math.PI / 4D)) * 0.2D;
- double d8 = 0.5D + Math.cos(d2 + 3.9269908169872414D) * 0.2D;
- double d9 = 0.5D + Math.sin(d2 + 3.9269908169872414D) * 0.2D;
- double d10 = 0.5D + Math.cos(d2 + 5.497787143782138D) * 0.2D;
- double d11 = 0.5D + Math.sin(d2 + 5.497787143782138D) * 0.2D;
- double d14 = -1.0D + d1;
- double d15 = (double)(height) * 2.5D + d14;
- worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
- worldrenderer.pos(x + d4, y + topOffset, z + d5).tex(1.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d4, y + bottomOffset, z + d5).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d6, y + bottomOffset, z + d7).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d6, y + topOffset, z + d7).tex(0.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d10, y + topOffset, z + d11).tex(1.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d10, y + bottomOffset, z + d11).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d8, y + bottomOffset, z + d9).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d8, y + topOffset, z + d9).tex(0.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d6, y + topOffset, z + d7).tex(1.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d6, y + bottomOffset, z + d7).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d10, y + bottomOffset, z + d11).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d10, y + topOffset, z + d11).tex(0.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d8, y + topOffset, z + d9).tex(1.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- worldrenderer.pos(x + d8, y + bottomOffset, z + d9).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d4, y + bottomOffset, z + d5).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
- worldrenderer.pos(x + d4, y + topOffset, z + d5).tex(0.0D, d15).color(r, g, b, alphaMultiplier).endVertex();
- tessellator.draw();
-
- GlStateManager.disableCull();
- double d12 = -1.0D + d1;
- double d13 = height + d12;
-
- worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
- worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.2D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.2D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.2D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.2D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.8D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.8D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.8D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.8D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.2D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.2D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.8D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.8D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.8D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.8D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.2D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
- worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.2D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMultiplier).endVertex();
- tessellator.draw();
- }
-
- /**
- * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
- * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
- * @author Moulberry
- */
- public static void drawFilledBoundingBox(AxisAlignedBB aabb, Color c, float alphaMultiplier) {
- GlStateManager.enableBlend();
- GlStateManager.disableLighting();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
- GlStateManager.disableTexture2D();
-
- Tessellator tessellator = Tessellator.getInstance();
- WorldRenderer worldrenderer = tessellator.getWorldRenderer();
-
- GlStateManager.color(c.getRed()/255f, c.getGreen()/255f, c.getBlue()/255f, c.getAlpha()/255f*alphaMultiplier);
-
- //vertical
- worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
- worldrenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
- tessellator.draw();
- worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
- worldrenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
- tessellator.draw();
-
-
- GlStateManager.color(c.getRed()/255f*0.8f, c.getGreen()/255f*0.8f, c.getBlue()/255f*0.8f, c.getAlpha()/255f*alphaMultiplier);
-
- //x
- worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
- worldrenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
- tessellator.draw();
- worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
- worldrenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
- tessellator.draw();
-
-
- GlStateManager.color(c.getRed()/255f*0.9f, c.getGreen()/255f*0.9f, c.getBlue()/255f*0.9f, c.getAlpha()/255f*alphaMultiplier);
- //z
- worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
- worldrenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
- tessellator.draw();
- worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
- worldrenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
- worldrenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
- tessellator.draw();
- GlStateManager.enableTexture2D();
- GlStateManager.disableBlend();
- }
-
- /**
- * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
- * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
- * @author Moulberry
- */
- public static void renderWaypointText(String str, BlockPos loc, float partialTicks) {
- GlStateManager.alphaFunc(516, 0.1F);
-
- GlStateManager.pushMatrix();
-
- Entity viewer = Minecraft.getMinecraft().getRenderViewEntity();
- double viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * partialTicks;
- double viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * partialTicks;
- double viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * partialTicks;
-
- double x = loc.getX() + 0.5 - viewerX;
- double y = loc.getY() - viewerY - viewer.getEyeHeight();
- double z = loc.getZ() + 0.5 - viewerZ;
-
- double distSq = x*x + y*y + z*z;
- double dist = Math.sqrt(distSq);
- if(distSq > 144) {
- x *= 12/dist;
- y *= 12/dist;
- z *= 12/dist;
- }
- GlStateManager.translate(x, y, z);
- GlStateManager.translate(0, viewer.getEyeHeight(), 0);
-
- drawNametag(str);
-
- GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
- GlStateManager.rotate(Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F);
- GlStateManager.translate(0, -0.25f, 0);
- GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F);
- GlStateManager.rotate(Minecraft.getMinecraft().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
-
- drawNametag(EnumChatFormatting.YELLOW.toString()+Math.round(dist)+"m");
-
- GlStateManager.popMatrix();
-
- GlStateManager.disableLighting();
- }
-
- /**
- * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
- * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
- * @author Moulberry
- */
- public static void drawNametag(String str) {
- FontRenderer fontrenderer = Minecraft.getMinecraft().fontRendererObj;
- float f = 1.6F;
- float f1 = 0.016666668F * f;
- GlStateManager.pushMatrix();
- GL11.glNormal3f(0.0F, 1.0F, 0.0F);
- GlStateManager.rotate(-Minecraft.getMinecraft().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
- GlStateManager.rotate(Minecraft.getMinecraft().getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F);
- GlStateManager.scale(-f1, -f1, f1);
- GlStateManager.disableLighting();
- GlStateManager.depthMask(false);
- GlStateManager.disableDepth();
- GlStateManager.enableBlend();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
- Tessellator tessellator = Tessellator.getInstance();
- WorldRenderer worldrenderer = tessellator.getWorldRenderer();
- int i = 0;
-
- int j = fontrenderer.getStringWidth(str) / 2;
- GlStateManager.disableTexture2D();
- worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
- worldrenderer.pos(-j - 1, -1 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- worldrenderer.pos(-j - 1, 8 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- worldrenderer.pos(j + 1, 8 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- worldrenderer.pos(j + 1, -1 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- tessellator.draw();
- GlStateManager.enableTexture2D();
- fontrenderer.drawString(str, -fontrenderer.getStringWidth(str) / 2, i, 553648127);
- GlStateManager.depthMask(true);
-
- fontrenderer.drawString(str, -fontrenderer.getStringWidth(str) / 2, i, -1);
-
- GlStateManager.enableDepth();
- GlStateManager.enableBlend();
- GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
- GlStateManager.popMatrix();
- }
-
-}
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/ChatTransmitter.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/ChatTransmitter.kt
new file mode 100644
index 0000000..872a422
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/ChatTransmitter.kt
@@ -0,0 +1,71 @@
+package io.github.quantizr.dungeonrooms
+
+
+import net.minecraft.client.Minecraft
+import net.minecraft.util.ChatComponentText
+import net.minecraft.util.IChatComponent
+import net.minecraftforge.client.event.ClientChatReceivedEvent
+import net.minecraftforge.common.MinecraftForge
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
+import java.util.*
+import java.util.concurrent.ConcurrentLinkedQueue
+
+/**
+ * Taken from dg-LTS under the GNU General Public License v3.0
+ * https://github.com/dg-continuum/dg-LTS
+ * @author kingstefan26
+ */
+class ChatTransmitter {
+
+ @SubscribeEvent
+ fun onTick(clientTickEvent: ClientTickEvent) {
+ if (clientTickEvent.phase != TickEvent.Phase.START && Minecraft.getMinecraft().thePlayer == null) return
+ if (!receiveQueue.isEmpty()) {
+ val event = ClientChatReceivedEvent(1.toByte(), receiveQueue.poll())
+ MinecraftForge.EVENT_BUS.post(event)
+ if (!event.isCanceled) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(event.message)
+ }
+ }
+ }
+
+ companion object {
+ const val PREFIX = "DungeonRooms: "
+ var receiveQueue: Queue = ConcurrentLinkedQueue()
+ fun addToQueue(chat: String, noDupe: Boolean) {
+ addToQueue(ChatComponentText(chat.replace("@", "§")), noDupe)
+ }
+
+ @JvmOverloads
+ fun addToQueue(chat: ChatComponentText, noDupe: Boolean = false) {
+ if (noDupe && receiveQueue.stream().anyMatch { it == chat }) return
+ receiveQueue.add(chat)
+ }
+ @JvmOverloads
+ fun addToQueue(chat: IChatComponent) {
+ receiveQueue.add(chat)
+ }
+
+ @JvmStatic
+ fun addToQueue(s: String) {
+ addToQueue(s, false)
+ }
+
+ @JvmStatic
+ fun addToQueueWPrefix(s: String) {
+ addToQueue(PREFIX + s, false)
+ }
+
+ @JvmStatic
+ fun sendDebugChat(iChatComponent: IChatComponent) {
+ if (DRMConfig.debug) addToQueue(iChatComponent as ChatComponentText)
+ }
+
+ @JvmStatic
+ fun sendDebugChat(text: String?) {
+ sendDebugChat(ChatComponentText(text))
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/DRMConfig.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/DRMConfig.kt
new file mode 100644
index 0000000..e77729d
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/DRMConfig.kt
@@ -0,0 +1,121 @@
+package io.github.quantizr.dungeonrooms
+
+import cc.polyfrost.oneconfig.config.Config
+import cc.polyfrost.oneconfig.config.annotations.*
+import cc.polyfrost.oneconfig.config.core.OneKeyBind
+import cc.polyfrost.oneconfig.config.data.InfoType
+import cc.polyfrost.oneconfig.config.data.Mod
+import cc.polyfrost.oneconfig.config.data.ModType
+import cc.polyfrost.oneconfig.libs.universal.UKeyboard.KEY_I
+import cc.polyfrost.oneconfig.libs.universal.UKeyboard.KEY_NONE
+import cc.polyfrost.oneconfig.libs.universal.UKeyboard.KEY_O
+import cc.polyfrost.oneconfig.libs.universal.UKeyboard.KEY_P
+import io.github.quantizr.dungeonrooms.ChatTransmitter.Companion.addToQueue
+
+object DRMConfig :
+ Config(Mod("DungeonsRoomsMod", ModType.SKYBLOCK, "/assets/dungeonrooms/logo.png"), DungeonRooms.MODID + ".json") {
+
+ fun init(){
+ initialize()
+ addListener("practiceModeOn") {
+ addToQueue(
+ """
+ §eDungeon Rooms: Practice Mode has been enabled.
+ §e Waypoints will ONLY show up while you are pressing ${practiceModeKeyBind.display}
+ §r (Hotkey is configurable in Minecraft Controls menu)
+ """.trimIndent()
+ )
+ }
+ }
+
+ @Switch(name = "Display Room Names In Gui", subcategory = "General")
+ var guiToggled = true
+
+ @Switch(name = "Display Welcome/MOTD", subcategory = "General")
+ var motdToggled = true
+
+ @KeyBind(name = "Quick Access Gui Key", subcategory = "General")
+ var waypointGuiKey = OneKeyBind(KEY_P)
+
+ @KeyBind(name = "Force Refresh RoomDetection (Map Data)", subcategory = "General")
+ var refreshMapKeybind = OneKeyBind(KEY_NONE)
+
+ @Dropdown(name = "Secret Image Provider", options = ["gui", "dsg", "sbp"], subcategory = "Secret Images")
+ var imageHotkeyOpen = 0
+
+ @KeyBind(name = "Keybinding For Opening Room Images From DSG/SBP", size = 2, subcategory = "Secret Images")
+ var openSecretImages = OneKeyBind(KEY_O)
+
+ @Switch(name = "Debug mode", subcategory = "Debug")
+ var debug = false
+
+ @Switch(name = "Waypoints Enabled", category = "Waypoints", subcategory = "Preferences", size = 2)
+ var waypointsEnabled = true
+
+ @Switch(name = "Double-Tap Sneak To Hide Nearby", category = "Waypoints", subcategory = "Preferences")
+ var sneakToDisable = true
+
+ @Switch(name = "Disable When All Secrets Found", category = "Waypoints", subcategory = "Preferences")
+ var disableWhenAllFound = true
+
+ @Switch(name = "Enable Pathfinding To Waypoints", subcategory = "Pathfinding", category = "Waypoints")
+ var pathfindingEnabled = true
+
+ @Slider(name = "Pathfinding Refresh Rate (In Ticks)", min = 1f, max = 40f, category = "Waypoints", subcategory = "Pathfinding")
+ var pathfindingRefreshRate: Int = 20
+
+ @Dropdown(
+ description = "Select pathfinding algorithm",
+ name = "Pathfinding Algorithm",
+ options = ["THETA* (recommended)", "A* Diagonal", "A* Fine-Grid"],
+ subcategory = "Pathfinding",
+ category = "Waypoints"
+ )
+ var secretPathfindStrategy = 0
+
+ @Info(
+ text = "See waypoints when the key is pressed, useful for practice.",
+ category = "Waypoints",
+ subcategory = "Practice Mode",
+ size = 2,
+ type = InfoType.INFO
+ )
+ var dummy = false
+
+ @KeyBind(name = "Keybinding For Practice Mode", category = "Waypoints", subcategory = "Practice Mode")
+ var practiceModeKeyBind = OneKeyBind(KEY_I)
+
+ @Switch(name = "Practice Mode", category = "Waypoints", subcategory = "Practice Mode")
+ var practiceModeOn = false
+
+ @Checkbox(name = "Show Entrance Waypoints", category = "Waypoints", subcategory = "Visibility")
+ var showEntrance = true
+
+ @Checkbox(name = "Show Superboom Waypoints", category = "Waypoints", subcategory = "Visibility")
+ var showSuperboom = true
+
+ @Checkbox(name = "Show Secret Waypoints", category = "Waypoints", subcategory = "Visibility")
+ var showSecrets = true
+
+ @Checkbox(name = "Show Fairy Soul Waypoints", category = "Waypoints", subcategory = "Visibility")
+ var showFairySouls = true
+
+ @Checkbox(name = "Show Stonk Waypoints", category = "Waypoints", subcategory = "Visibility")
+ var showStonk = true
+
+ @Switch(name = "Show Waypoint Text", category = "Waypoints", subcategory = "Appearance")
+ var showWaypointText = true
+
+ @Switch(name = "Show Bounding Box", category = "Waypoints", subcategory = "Appearance")
+ var showBoundingBox = true
+
+ @Switch(name = "Show Beacon", category = "Waypoints", subcategory = "Appearance")
+ var showBeacon = true
+
+ @Slider(name = "Offset x", min = 0F, max = 100F, subcategory = "Hud")
+ var textLocX = 50
+
+ @Slider(name = "Offset y", min = 0F, max = 100F, subcategory = "Hud")
+ var textLocY = 5
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/DungeonRooms.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/DungeonRooms.kt
new file mode 100644
index 0000000..49ead31
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/DungeonRooms.kt
@@ -0,0 +1,262 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder
+import com.google.gson.Gson
+import com.google.gson.JsonObject
+import io.github.quantizr.dungeonrooms.commands.RoomCommand
+import io.github.quantizr.dungeonrooms.dungeons.DungeonManager
+import io.github.quantizr.dungeonrooms.dungeons.RoomDetection
+import io.github.quantizr.dungeonrooms.dungeons.Waypoints
+import io.github.quantizr.dungeonrooms.dungeons.data.meta.SecretMetaData
+import io.github.quantizr.dungeonrooms.gui.WaypointsGUI
+import io.github.quantizr.dungeonrooms.handlers.OpenLink.checkForLink
+import io.github.quantizr.dungeonrooms.handlers.PacketHandler
+import io.github.quantizr.dungeonrooms.handlers.TextRenderer.drawText
+import io.github.quantizr.dungeonrooms.test.PathfindTest
+import io.github.quantizr.dungeonrooms.utils.BlockCache
+import io.github.quantizr.dungeonrooms.utils.Utils
+import io.github.quantizr.dungeonrooms.utils.Utils.checkForCatacombs
+import io.github.quantizr.dungeonrooms.utils.Utils.checkForSkyblock
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.ScaledResolution
+import net.minecraft.event.ClickEvent
+import net.minecraft.util.ChatComponentText
+import net.minecraft.util.EnumChatFormatting
+import net.minecraftforge.client.ClientCommandHandler
+import net.minecraftforge.client.event.RenderGameOverlayEvent
+import net.minecraftforge.common.MinecraftForge
+import net.minecraftforge.fml.common.Loader
+import net.minecraftforge.fml.common.Mod
+import net.minecraftforge.fml.common.event.FMLInitializationEvent
+import net.minecraftforge.fml.common.event.FMLPostInitializationEvent
+import net.minecraftforge.fml.common.event.FMLPreInitializationEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.InputEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
+import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientConnectedToServerEvent
+import net.minecraftforge.fml.common.versioning.DefaultArtifactVersion
+import org.apache.commons.io.IOUtils
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
+import java.io.File
+import java.io.IOException
+import java.net.URL
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+
+@Mod(modid = DungeonRooms.MODID, version = DungeonRooms.VERSION)
+class DungeonRooms {
+ val mc: Minecraft = Minecraft.getMinecraft()
+ val motd: MutableList = ArrayList()
+ var textToDisplay: List = emptyList()
+ private var tickAmount = 1
+
+ @Mod.EventHandler
+ fun preInit(event: FMLPreInitializationEvent) {
+ ClientCommandHandler.instance.registerCommand(RoomCommand())
+
+ //initialize logger
+ logger = LogManager.getLogger(instance::class.java)
+// if(debug) Utils.setLogLevel(LogManager.getLogger(DungeonRooms::class.java), Level.DEBUG)
+ }
+
+ val roomDetection = RoomDetection()
+ val roomDataLoader = RoomDataLoader()
+ val dungeonManager = DungeonManager()
+ val waypoints = Waypoints()
+
+
+ private fun isFirstLaunch(): Boolean{
+ val controlfile = File(System.getProperty("user.dir") + File.separator + "drmFirstLaunchControlFile")
+
+ if(!controlfile.exists()){
+ controlfile.createNewFile()
+ return true
+ }
+ return false
+ }
+
+ @Mod.EventHandler
+ fun init(event: FMLInitializationEvent?) {
+
+ DRMConfig.init()
+ roomDataLoader.startAsyncLoad()
+ firstLogin = isFirstLaunch()
+
+ //register classes
+ MinecraftForge.EVENT_BUS.register(this)
+ MinecraftForge.EVENT_BUS.register(BlockCache)
+
+ MinecraftForge.EVENT_BUS.register(ChatTransmitter())
+ MinecraftForge.EVENT_BUS.register(dungeonManager)
+ MinecraftForge.EVENT_BUS.register(roomDetection)
+ MinecraftForge.EVENT_BUS.register(waypoints)
+ if (DRMConfig.debug) MinecraftForge.EVENT_BUS.register(PathfindTest())
+
+ roomDataLoader.blockTillLoad()
+
+ Thread {
+ try {
+ logger.info("DungeonRooms: Checking for updates...")
+ val gson = Gson()
+ val thaobject = gson.fromJson(
+ IOUtils.toString(URL("https://api.github.com/repos/Quantizr/DungeonRoomsMod/releases/latest")),
+ JsonObject::class.java
+ )
+ val latestTag = thaobject.get("tag_name").asString
+ val currentVersion = DefaultArtifactVersion(VERSION)
+ val latestVersion = DefaultArtifactVersion(latestTag.substring(1))
+ if (currentVersion < latestVersion) {
+ val releaseURL = "https://github.com/Quantizr/DungeonRoomsMod/releases/latest"
+ val update = ChatComponentText("${EnumChatFormatting.GREEN}${EnumChatFormatting.BOLD} [UPDATE] ")
+ update.chatStyle.chatClickEvent = ClickEvent(ClickEvent.Action.OPEN_URL, releaseURL)
+ ChatTransmitter.addToQueue(
+ ChatComponentText("${EnumChatFormatting.RED}Dungeon Rooms Mod is outdated. Please update to $latestTag.").appendSibling(
+ update
+ )
+ )
+ } else {
+ logger.info("DungeonRooms: No update found")
+ }
+
+ logger.info("DungeonRooms: Getting MOTD...")
+ val motdText =
+ IOUtils.toString(URL("https://gist.githubusercontent.com/Quantizr/01aca53e61cef5dfd08989fec600b204/raw/"))
+ motd.addAll(motdText.split(System.lineSeparator()))
+ logger.info("DungeonRooms: MOTD has been checked")
+
+ } catch (e: IOException) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: An error has occured. See logs for more details.")
+ e.printStackTrace()
+ } catch (e: InterruptedException) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: An error has occured. See logs for more details.")
+ e.printStackTrace()
+ }
+ }.start()
+ }
+
+ @Mod.EventHandler
+ fun postInit(event: FMLPostInitializationEvent?) {
+ usingSBPSecrets = Loader.isModLoaded("sbp")
+ logger.info("DungeonRooms: SBP Dungeon Secrets detection: $usingSBPSecrets")
+ }
+
+ fun getJsonSecretList(): Pair>? {
+ if (roomDetection.roomName == "undefined") return null
+
+ val room = roomDataLoader.roomData[roomDetection.roomName] ?: return null
+
+ return Pair(room.id, room.secrets.toList())
+ }
+
+ /**
+ * Modified from Danker's Skyblock Mod under the GNU General Public License v3.0
+ * https://github.com/bowser0000/SkyblockMod/blob/master/LICENSE
+ * @author bowser0000
+ */
+ @SubscribeEvent
+ fun onServerConnect(event: ClientConnectedToServerEvent) {
+ if (mc.currentServerData == null) return
+ if (!mc.currentServerData.serverIP.lowercase().contains("hypixel.")) return
+
+ logger.info("DungeonRooms: Connecting to Hypixel...")
+ // Packets are used in this mod solely to detect when the player picks up an item. No packets are modified or created.
+ event.manager.channel().pipeline().addBefore("packet_handler", "drm_packet_handler", PacketHandler())
+ logger.info("DungeonRooms: Packet Handler added")
+ }
+
+ @SubscribeEvent
+ fun onTick(event: ClientTickEvent) {
+ if (event.phase != TickEvent.Phase.START) return
+ tickAmount++
+ if (tickAmount % 20 == 0) {
+ if (mc.thePlayer != null) {
+ checkForSkyblock()
+ checkForCatacombs()
+ tickAmount = 0
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onKey(event: InputEvent.KeyInputEvent?) {
+ when {
+ DRMConfig.openSecretImages.isActive -> {
+ if (!Utils.inCatacombs) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: Use this hotkey inside of a dungeon room")
+ return
+ }
+ when (DRMConfig.imageHotkeyOpen) {
+ 0 -> checkForLink("gui")
+ 1 -> checkForLink("dsg")
+ 2 -> checkForLink("sbp")
+ else -> ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: hotkeyOpen config value improperly set, do \"/room set \" to change the value")
+ }
+ }
+ DRMConfig.waypointGuiKey.isActive -> {
+ mc.addScheduledTask { mc.displayGuiScreen(WaypointsGUI()) }
+ }
+ DRMConfig.practiceModeKeyBind.isActive -> {
+ if (DRMConfig.waypointsEnabled && !DRMConfig.practiceModeOn) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: Run \"/room toggle practice\" to enable Practice Mode.")
+
+ } else if (!DRMConfig.waypointsEnabled && DRMConfig.practiceModeOn) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: Waypoints must be enabled for Practice Mode to work.")
+
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun renderPlayerInfo(event: RenderGameOverlayEvent.Post) {
+ if (event.type != RenderGameOverlayEvent.ElementType.ALL) return
+ if (!Utils.inSkyblock) return
+ if (textToDisplay.isNotEmpty()) {
+ val scaledResolution = ScaledResolution(mc)
+ var y = 0
+ for (line in textToDisplay) {
+ val roomStringWidth = mc.fontRendererObj.getStringWidth(line)
+ drawText(
+ mc, line, scaledResolution.scaledWidth * DRMConfig.textLocX / 100 - roomStringWidth / 2,
+ scaledResolution.scaledHeight * DRMConfig.textLocY / 100 + y, 1.0, true
+ )
+ y += mc.fontRendererObj.FONT_HEIGHT
+ }
+ }
+ }
+
+
+ companion object {
+ @Mod.Instance
+ @JvmStatic
+ lateinit var instance: DungeonRooms
+ private set
+
+ const val MODID = "@ID@"
+ const val VERSION = "@VER@"
+ lateinit var logger: Logger
+ var usingSBPSecrets = false
+ private set
+
+ var firstLogin = false
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/RoomDataLoader.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/RoomDataLoader.kt
new file mode 100644
index 0000000..307b293
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/RoomDataLoader.kt
@@ -0,0 +1,170 @@
+package io.github.quantizr.dungeonrooms
+
+import com.google.gson.Gson
+import com.google.gson.JsonArray
+import com.google.gson.JsonObject
+import io.github.quantizr.dungeonrooms.dungeons.data.meta.DungeonRoom
+import io.github.quantizr.dungeonrooms.dungeons.data.meta.RoomMetaData
+import io.github.quantizr.dungeonrooms.dungeons.data.meta.SecretMetaData
+import io.github.quantizr.dungeonrooms.utils.Utils
+import java.io.InputStreamReader
+import java.util.HashMap
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.Future
+
+class RoomDataLoader {
+
+ companion object {
+ const val roomDataPath = "/assets/dungeonrooms/dungeonrooms.json"
+ const val secretLocPath = "/assets/dungeonrooms/secretlocations.json"
+ }
+
+ private var executor: ExecutorService = Executors.newFixedThreadPool(4)
+
+ // debug info
+ private var blockedTime: Long = 0
+ private var blockedTimeFor1x1: Long = 0
+ private var asyncLoadStart: Long = 0
+ private var asyncLoadTime: Long = 0
+
+ // the actual data exposed to the world
+ var ROOM_DATA = HashMap>()
+ lateinit var roomData: Map
+
+ // temporary vars used while loading the data
+ private lateinit var future1x1: Future>
+ private lateinit var future1x2: Future>
+ private lateinit var future1x3: Future>
+ private lateinit var future1x4: Future>
+ private lateinit var future2x2: Future>
+ private lateinit var futureLShape: Future>
+ private lateinit var futurePuzzle: Future>
+ private lateinit var futureTrap: Future>
+
+ private lateinit var roomsJson: JsonObject
+ private lateinit var waypointsJson: JsonObject
+
+ fun startAsyncLoad(){
+ asyncLoadStart = System.currentTimeMillis()
+
+ // load the room skeletons
+ val paths = Utils.getAllPaths("catacombs")
+ future1x1 = executor.submit> { Utils.pathsToRoomData("1x1", paths) }
+ future1x2 = executor.submit> { Utils.pathsToRoomData("1x2", paths) }
+ future1x3 = executor.submit> { Utils.pathsToRoomData("1x3", paths) }
+ future1x4 = executor.submit> { Utils.pathsToRoomData("1x4", paths) }
+ future2x2 = executor.submit> { Utils.pathsToRoomData("2x2", paths) }
+ futureLShape = executor.submit> { Utils.pathsToRoomData("L-shape", paths) }
+ futurePuzzle = executor.submit> { Utils.pathsToRoomData("Puzzle", paths) }
+ futureTrap = executor.submit> { Utils.pathsToRoomData("Trap", paths) }
+
+ // get room and waypoint info
+ executor.submit {
+ val gson = Gson()
+ this::class.java.getResourceAsStream(roomDataPath)
+ .use { fis ->
+ fis?.let {
+ InputStreamReader(fis).use { yas ->
+ roomsJson = gson.fromJson(yas, JsonObject::class.java)
+ DungeonRooms.logger.info("DungeonRooms: Loaded dungeonrooms.json")
+ }
+ }
+ }
+ this::class.java.getResourceAsStream(secretLocPath)
+ .use { fis ->
+ fis?.let {
+ InputStreamReader(fis).use { yas ->
+ waypointsJson = gson.fromJson(yas, JsonObject::class.java)
+ DungeonRooms.logger.info("DungeonRooms: Loaded secretlocations.json")
+ }
+ }
+ }
+
+ constructRooms()
+ }
+ }
+
+ fun blockTillLoad() {
+ // set RoomData to futures - this will block if the rest of init was fast
+ try {
+ val oneByOneStart = System.currentTimeMillis()
+ ROOM_DATA["1x1"] = future1x1.get()
+
+ val restOfRoomsStart = System.currentTimeMillis()
+ ROOM_DATA["1x2"] = future1x2.get()
+ ROOM_DATA["1x3"] = future1x3.get()
+ ROOM_DATA["1x4"] = future1x4.get()
+ ROOM_DATA["2x2"] = future2x2.get()
+ ROOM_DATA["L-shape"] = futureLShape.get()
+ ROOM_DATA["Puzzle"] = futurePuzzle.get()
+ ROOM_DATA["Trap"] = futureTrap.get()
+
+ this.asyncLoadTime = oneByOneStart - asyncLoadStart
+ this.blockedTimeFor1x1 = restOfRoomsStart - oneByOneStart
+ this.blockedTime = System.currentTimeMillis() - restOfRoomsStart
+
+ } catch (e: ExecutionException) {
+ e.printStackTrace()
+ } catch (e: InterruptedException) {
+ e.printStackTrace()
+ }
+
+ DungeonRooms.logger.debug("DungeonRooms: Time(ms) for init before get futures: $asyncLoadTime")
+ DungeonRooms.logger.debug("DungeonRooms: Blocked Time(ms) for 1x1: $blockedTimeFor1x1")
+ DungeonRooms.logger.debug("DungeonRooms: Blocked Time(ms) remaining for other rooms: $blockedTime")
+
+ executor.shutdown()
+ }
+
+
+ private fun deconstructRoomData(): Map {
+
+ val tmpMap = HashMap()
+
+ roomsJson.entrySet().forEach {(name, element) ->
+ if(element is JsonObject && element.has("category")) {
+ val roomData = RoomMetaData(element.get("category").asString, element.get("secrets").asInt, element.get("fairysoul").asBoolean, element.get("dsg").asString, if(element.has("sbp")) element.get("sbp").asString else "null")
+ tmpMap[name] = roomData
+ }
+ }
+
+ return tmpMap
+ }
+
+ private fun deconstructSecretLocationMetadata(): Map> {
+
+ val tmp = HashMap>()
+
+ waypointsJson.entrySet().forEach { (name, element) ->
+ if(element is JsonArray) {
+
+ val secrets = element.map { it.asJsonObject }.map{ SecretMetaData(it.get("secretName").asString, it.get("category").asString, it.get("x").asInt, it.get("y").asInt, it.get("z").asInt) }.toTypedArray()
+
+ tmp[name] = secrets
+ }
+ }
+
+ return tmp
+ }
+
+
+ private fun constructRooms(){
+ val roomMetaData = deconstructRoomData()
+ val secretMetaData = deconstructSecretLocationMetadata()
+
+ val tmp = HashMap()
+
+ secretMetaData.forEach { (secretName, secrets) ->
+ roomMetaData.forEach { (metaName, meta) ->
+ if(secretName == metaName) {
+ tmp[secretName] = DungeonRoom(secretName, meta, secrets)
+ }
+ }
+ }
+ println("Example room data: ${tmp["Perch-2"]}")
+ roomData = tmp
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/commands/RoomCommand.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/commands/RoomCommand.kt
new file mode 100644
index 0000000..4079a65
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/commands/RoomCommand.kt
@@ -0,0 +1,573 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.commands
+
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.ChatTransmitter
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.dungeons.DungeonManager
+import io.github.quantizr.dungeonrooms.dungeons.DungeonRunStage
+import io.github.quantizr.dungeonrooms.gui.WaypointsGUI
+import io.github.quantizr.dungeonrooms.handlers.OpenLink
+import io.github.quantizr.dungeonrooms.utils.MapUtils
+import io.github.quantizr.dungeonrooms.utils.Utils
+import net.minecraft.client.Minecraft
+import net.minecraft.command.CommandBase
+import net.minecraft.command.ICommandSender
+import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.init.Blocks
+import net.minecraft.util.BlockPos
+import net.minecraft.util.ChatComponentText
+import net.minecraft.util.EnumChatFormatting
+import net.minecraft.util.MovingObjectPosition
+import net.minecraft.world.World
+import java.awt.Desktop
+import java.awt.Toolkit
+import java.awt.datatransfer.StringSelection
+import java.io.IOException
+import java.net.URI
+import java.net.URISyntaxException
+
+class RoomCommand : CommandBase() {
+ override fun getCommandName(): String {
+ return "room"
+ }
+
+ override fun getCommandUsage(arg0: ICommandSender): String {
+ return "/$commandName"
+ }
+
+ override fun getCommandAliases(): List {
+ return listOf("drm")
+ }
+
+ override fun getRequiredPermissionLevel(): Int {
+ return 0
+ }
+
+ override fun addTabCompletionOptions(sender: ICommandSender, args: Array, pos: BlockPos): List? {
+ if (args.size == 1) {
+ return getListOfStringsMatchingLastWord(args, "help", "waypoints", "move", "toggle", "set", "discord")
+ }
+ if (args.size > 1) {
+ if (args[0].equals("toggle", ignoreCase = true)) {
+ return getListOfStringsMatchingLastWord(
+ args,
+ "help",
+ "gui",
+ "waypointtext",
+ "waypointboundingbox",
+ "waypointbeacon"
+ )
+ } else if (args[0].equals("set", ignoreCase = true)) {
+ return getListOfStringsMatchingLastWord(args, "gui", "dsg", "sbp")
+ }
+ }
+ return null
+ }
+
+ override fun processCommand(arg0: ICommandSender, arg1: Array) {
+ val mc = Minecraft.getMinecraft()
+ val player = arg0 as EntityPlayer
+ if (arg1.isEmpty()) {
+ if (!Utils.inCatacombs) {
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Use this command in dungeons or run \"/room help\" for additional options"
+ )
+
+ } else {
+ if (DungeonRooms.instance.dungeonManager.gameStage == DungeonRunStage.RoomClear) {
+ DungeonRooms.instance.textToDisplay.forEach { ChatTransmitter.addToQueue(it) }
+
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.GREEN}Dungeon Rooms: You can also run \"/room help\" for additional options"
+ )
+
+ } else {
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Use this command while clearing rooms or run \"/room help\" for additional options"
+ )
+
+ }
+ }
+ } else {
+ when (arg1[0].lowercase()) {
+ "help" -> ChatTransmitter.addToQueue(
+ """
+ ${EnumChatFormatting.GOLD}Dungeon Rooms Mod Version ${DungeonRooms.VERSION}
+ ${EnumChatFormatting.DARK_PURPLE}Hotkeys: (Configurable in Controls Menu)
+ ${EnumChatFormatting.AQUA} ${DRMConfig.waypointGuiKey.display}${EnumChatFormatting.WHITE} - Opens Secret Waypoints configuration GUI
+ ${EnumChatFormatting.AQUA} ${DRMConfig.openSecretImages.display}${EnumChatFormatting.WHITE} - (old) Opens images of secret locations
+ ${EnumChatFormatting.AQUA} ${DRMConfig.practiceModeKeyBind.display}${EnumChatFormatting.WHITE} - View waypoints in Practice Mode ("/room toggle practice")
+ ${EnumChatFormatting.DARK_PURPLE}Commands:
+ ${EnumChatFormatting.AQUA} /room${EnumChatFormatting.WHITE} - Tells you in chat what room you are standing in.
+ ${EnumChatFormatting.AQUA} /room help${EnumChatFormatting.WHITE} - Displays this message.
+ ${EnumChatFormatting.AQUA} /room waypoints${EnumChatFormatting.WHITE} - Opens Secret Waypoints config GUI, alternatively can be opened with hotkey
+ ${EnumChatFormatting.AQUA} /room move ${EnumChatFormatting.WHITE} - Moves the GUI room name text to a coordinate. and are numbers between 0 and 100. Default is 50 for and 5 for .
+ ${EnumChatFormatting.AQUA} /room toggle [argument]${EnumChatFormatting.WHITE} - Run "/room toggle help" for full list of toggles.
+ ${EnumChatFormatting.AQUA} /room set ${EnumChatFormatting.WHITE} - Configure whether the hotkey opens the selector GUI or directly goes to DSG/SBP.
+ ${EnumChatFormatting.AQUA} /room discord${EnumChatFormatting.WHITE} - Opens the Discord invite for this mod in your browser.
+ """.trimIndent()
+ )
+
+ "gui", "open" -> {
+ if (!Utils.inCatacombs) {
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Use this command in dungeons"
+ )
+ return
+ }
+ OpenLink.checkForLink("gui")
+ }
+
+ "dsg" -> {
+ if (!Utils.inCatacombs) {
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Use this command in dungeons"
+ )
+ return
+ }
+ OpenLink.checkForLink("dsg")
+ }
+
+ "sbp" -> {
+ if (!Utils.inCatacombs) {
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Use this command in dungeons"
+ )
+ return
+ }
+ OpenLink.checkForLink("sbp")
+ }
+
+ "set" -> when (arg1[1].lowercase()) {
+ "gui" -> {
+ DRMConfig.imageHotkeyOpen = 0
+ ChatTransmitter.addToQueue("Dungeon Rooms: Hotkey has been set to open: GUI")
+ }
+
+ "dsg" -> {
+ DRMConfig.imageHotkeyOpen = 1
+ ChatTransmitter.addToQueue("Dungeon Rooms: Hotkey has been set to open: DSG")
+ }
+
+ "sbp" -> {
+ DRMConfig.imageHotkeyOpen = 2
+ ChatTransmitter.addToQueue("Dungeon Rooms: Hotkey has been set to open: SBP")
+ }
+
+ else -> ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Valid options are "
+ )
+
+ }
+
+ "wp", "waypoint", "waypoints" -> Thread { mc.addScheduledTask { mc.displayGuiScreen(WaypointsGUI()) } }.start()
+ "move" -> {
+ DRMConfig.textLocX = arg1[1].toInt()
+ DRMConfig.textLocY = arg1[2].toInt()
+ ChatTransmitter.addToQueue("Dungeon Rooms: Room GUI has been moved to ${arg1[1]}, ${arg1[2]}")
+ }
+
+ "toggle" -> {
+ val toggleHelp = """
+ ${EnumChatFormatting.GOLD} Dungeon Rooms Mod Toggle Commands:
+ ${EnumChatFormatting.AQUA} /room toggle gui${EnumChatFormatting.WHITE} - Toggles displaying current room in gui.
+ ${EnumChatFormatting.AQUA} /room toggle motd${EnumChatFormatting.WHITE} - Toggles displaying the Welcome/MOTD message at the start of a dungeon run.
+ ${EnumChatFormatting.AQUA} /room toggle practice${EnumChatFormatting.WHITE} - Toggles Practice Mode, where waypoints are only displayed when holding down ${
+ DRMConfig.practiceModeKeyBind.display
+ }".${EnumChatFormatting.AQUA} /room toggle waypoints${EnumChatFormatting.WHITE} - Toggles Waypoints, does the same thing as pressing "${
+ DRMConfig.waypointGuiKey.display
+ }" then clicking "Waypoints".
+ ${EnumChatFormatting.AQUA} /room toggle waypointtext${EnumChatFormatting.WHITE} - Toggles displaying waypoint names above waypoints.
+ ${EnumChatFormatting.AQUA} /room toggle waypointboundingbox${EnumChatFormatting.WHITE} - Toggles displaying the bounding box on waypoints.
+ ${EnumChatFormatting.AQUA} /room toggle waypointbeacon${EnumChatFormatting.WHITE} - Toggles displaying the beacon above waypoints.
+ """.trimIndent()
+ if (arg1.size == 1) {
+ ChatTransmitter.addToQueue(toggleHelp)
+ } else {
+ when (arg1[1].lowercase()) {
+ "gui" -> {
+ DRMConfig.guiToggled = !DRMConfig.guiToggled
+ ChatTransmitter.addToQueue("Dungeon Rooms: Display room names in GUI has been set to: " + DRMConfig.guiToggled)
+ }
+
+ "welcome", "motd" -> {
+ DRMConfig.motdToggled = !DRMConfig.motdToggled
+ ChatTransmitter.addToQueue("Dungeon Rooms: Display Welcome/MOTD has been set to: " + DRMConfig.motdToggled)
+ }
+
+ "practice", "practicemode" -> {
+ DRMConfig.practiceModeOn = !DRMConfig.practiceModeOn
+ if (DRMConfig.practiceModeOn) {
+ ChatTransmitter.addToQueue(
+ """
+ §eDungeon Rooms: Practice Mode has been enabled.
+ §e Waypoints will only show up while you are pressing "${
+ DRMConfig.practiceModeKeyBind.display
+ }".
+ §r (Hotkey is configurable in Minecraft Controls menu)
+ """.trimIndent()
+ )
+
+ } else {
+ ChatTransmitter.addToQueue("§eDungeon Rooms: Practice Mode has been disabled.")
+ }
+ }
+
+ "waypoint", "waypoints" -> {
+ DRMConfig.waypointsEnabled = !DRMConfig.waypointsEnabled
+ if (DRMConfig.waypointsEnabled) {
+ ChatTransmitter.addToQueue("§eDungeon Rooms: Waypoints will now automatically show up when you enter a new dungeon room.")
+ } else {
+ ChatTransmitter.addToQueue("§eDungeon Rooms: Waypoints have been disabled.")
+ }
+ }
+
+ "text", "waypointtext" -> {
+ DRMConfig.showWaypointText = !DRMConfig.showWaypointText
+ ChatTransmitter.addToQueue("Dungeon Rooms: Show Waypoint Text has been set to: " + DRMConfig.showWaypointText)
+ }
+
+ "boundingbox", "waypointboundingbox" -> {
+ DRMConfig.showBoundingBox = !DRMConfig.showBoundingBox
+ ChatTransmitter.addToQueue("Dungeon Rooms: Show Waypoint Bounding Box has been set to: " + DRMConfig.showBoundingBox)
+ }
+
+ "beacon", "waypointbeacon" -> {
+ DRMConfig.showBeacon = !DRMConfig.showBeacon
+ ChatTransmitter.addToQueue("Dungeon Rooms: Show Waypoint Beacon has been set to: " + DRMConfig.showBeacon)
+ }
+
+ "override" -> {
+ Utils.dungeonOverride = !Utils.dungeonOverride
+ ChatTransmitter.addToQueue("Dungeon Rooms: Force inCatacombs has been set to: " + Utils.dungeonOverride)
+ }
+
+ "help" -> ChatTransmitter.addToQueue(toggleHelp)
+ else -> ChatTransmitter.addToQueue(toggleHelp)
+ }
+ }
+ }
+
+ "discord" -> try {
+ ChatTransmitter.addToQueue("Dungeon Rooms: Opening Dungeon Rooms Discord invite in browser...")
+ Desktop.getDesktop().browse(URI("https://discord.gg/7B5RbsArYK"))
+ } catch (e: IOException) {
+ e.printStackTrace()
+ } catch (e: URISyntaxException) {
+ e.printStackTrace()
+ }
+
+ "relative" -> if (DungeonRooms.instance.roomDetection.roomDirection != "undefined" && DungeonRooms.instance.roomDetection.roomCorner != null) {
+ if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.blockPos != null) {
+ val relativePos = MapUtils.actualToRelative(
+ mc.objectMouseOver.blockPos,
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ ChatTransmitter.addToQueue("Dungeon Rooms: You are looking at relative blockPos: $relativePos")
+ }
+ } else {
+ ChatTransmitter.addToQueue("Dungeon Rooms: Unable to get relative blockPos at this time.")
+ }
+
+ "json" -> {
+ if (!Utils.inCatacombs && DungeonRooms.instance.dungeonManager.gameStage != DungeonRunStage.RoomClear && DungeonRooms.instance.dungeonManager.gameStage != DungeonRunStage.Boss) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: Use this command in dungeons")
+ return
+ }
+ val room = DungeonRooms.instance.roomDataLoader.roomData[DungeonRooms.instance.roomDetection.roomName]
+
+ if(room != null){
+ ChatTransmitter.addToQueue(room.toString())
+ }
+ }
+
+ "roominfo" -> {
+ if (!Utils.inCatacombs || DungeonRooms.instance.dungeonManager.gameStage != DungeonRunStage.RoomClear) {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: Not in room clearing phase of dungeons")
+ }
+ if (DungeonManager.entranceMapCorners != null) {
+ ChatTransmitter.addToQueue("dev: entranceMapCorners = ${listOf(DungeonManager.entranceMapCorners)}")
+
+ } else {
+ ChatTransmitter.addToQueue("dev: entranceMapCorners = null")
+ }
+ if (DungeonManager.entrancePhysicalNWCorner != null) {
+ ChatTransmitter.addToQueue("dev: entrancePhysicalNWCorner = ${DungeonManager.entrancePhysicalNWCorner}")
+ } else {
+ ChatTransmitter.addToQueue("dev: entrancePhysicalNWCorner = null")
+ }
+ ChatTransmitter.addToQueue("dev: currentMapSegments = ${DungeonRooms.instance.roomDetection.currentMapSegments}")
+ ChatTransmitter.addToQueue("dev: currentPhysicalSegments = ${DungeonRooms.instance.roomDetection.currentPhysicalSegments}")
+ ChatTransmitter.addToQueue("dev: roomName = ${DungeonRooms.instance.roomDetection.roomName}")
+ ChatTransmitter.addToQueue("dev: roomSize = ${DungeonRooms.instance.roomDetection.roomSize}")
+ ChatTransmitter.addToQueue("dev: roomColor = ${DungeonRooms.instance.roomDetection.roomColor}")
+ ChatTransmitter.addToQueue("dev: roomCategory = ${DungeonRooms.instance.roomDetection.roomCategory}")
+ ChatTransmitter.addToQueue("dev: roomDirection = ${DungeonRooms.instance.roomDetection.roomDirection}")
+ if (DungeonRooms.instance.roomDetection.roomCorner != null) {
+ ChatTransmitter.addToQueue("dev: roomCorner = " + DungeonRooms.instance.roomDetection.roomCorner)
+ } else {
+ ChatTransmitter.addToQueue("dev: roomCorner = null")
+ }
+ }
+
+ "blocksused" -> {
+ if (!Utils.inCatacombs || DungeonRooms.instance.dungeonManager.gameStage != DungeonRunStage.RoomClear) {
+ player.addChatMessage(
+ ChatComponentText("${EnumChatFormatting.RED}Dungeon Rooms: Not in room clearing phase of dungeons")
+ )
+ }
+ ChatTransmitter.addToQueue(DungeonRooms.instance.roomDetection.blocksUsed.toString())
+ }
+
+ "add" -> {
+ val world: World = mc.theWorld
+ if (!Utils.inCatacombs || DungeonRooms.instance.dungeonManager.gameStage != DungeonRunStage.RoomClear || DungeonRooms.instance.roomDetection.roomDirection == "undefined" || DungeonRooms.instance.roomDetection.roomCorner == null) {
+ player.addChatMessage(
+ ChatComponentText(
+ "${EnumChatFormatting.RED}Dungeon Rooms: Current dungeon room is undefined"
+ )
+ )
+ return
+ }
+ when (arg1[1].lowercase()) {
+ "chest" -> if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.blockPos != null) {
+ val viewingPos = MapUtils.actualToRelative(
+ mc.objectMouseOver.blockPos,
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ if (world.getBlockState(mc.objectMouseOver.blockPos).block === Blocks.chest) {
+ player.addChatMessage(
+ ChatComponentText(
+ """{
+ "secretName":"# - Chest",
+ "category":"chest",
+ "x":${viewingPos.x},
+ "y":${viewingPos.y},
+ "z":${viewingPos.z}
+ }"""
+ )
+ )
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{
+ "secretName":"# - Chest",
+ "category":"chest",
+ "x":${viewingPos.x},
+ "y":${viewingPos.y},
+ "z":${viewingPos.z}
+ }""".trimIndent()
+ ),
+ null
+ )
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at a Chest Secret")
+ }
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at anything")
+ }
+
+ "wither" -> if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.blockPos != null) {
+ val viewingPos = MapUtils.actualToRelative(
+ mc.objectMouseOver.blockPos,
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ if (world.getBlockState(mc.objectMouseOver.blockPos).block === Blocks.skull) {
+ player.addChatMessage(
+ ChatComponentText(
+ """{ "secretName":"# - Wither Essence", "category":"wither", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ )
+ )
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"# - Wither Essence", "category":"wither", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ ),
+ null
+ )
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at a Wither Essence Secret")
+ }
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at anything")
+ }
+
+ "superboom" -> if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.blockPos != null) {
+ val viewingPos = MapUtils.actualToRelative(
+ mc.objectMouseOver.blockPos,
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ if (world.getBlockState(mc.objectMouseOver.blockPos).block === Blocks.stonebrick) {
+ player.addChatMessage(
+ ChatComponentText(
+ """{ "secretName":"# - Superboom", "category":"superboom", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ )
+ )
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"# - Superboom", "category":"superboom", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ ),
+ null
+ )
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at a Superboom entrance")
+ }
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at anything")
+ }
+
+ "lever" -> if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.blockPos != null) {
+ val viewingPos = MapUtils.actualToRelative(
+ mc.objectMouseOver.blockPos,
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ if (world.getBlockState(mc.objectMouseOver.blockPos).block === Blocks.lever) {
+ player.addChatMessage(
+ ChatComponentText(
+ """{ "secretName":"# - Lever", "category":"lever", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ )
+ )
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"# - Lever", "category":"lever", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ ),
+ null
+ )
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at a Lever")
+ }
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at anything")
+ }
+
+ "fairysoul" -> if (mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && mc.objectMouseOver.blockPos != null) {
+ val viewingPos = MapUtils.actualToRelative(
+ mc.objectMouseOver.blockPos.up(1),
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ if (world.getBlockState(mc.objectMouseOver.blockPos.up(1)).block === Blocks.air) {
+ ChatTransmitter.addToQueue(
+ """{ "secretName":"Fairy Soul", "category":"fairysoul", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ )
+
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"Fairy Soul", "category":"fairysoul", "x":${viewingPos.x}, "y":${viewingPos.y}, "z":${viewingPos.z}}"""
+ ),
+ null
+ )
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at the block below a Fairy Soul")
+ }
+ } else {
+ ChatTransmitter.addToQueue("You are not looking at anything")
+ }
+
+ "item" -> {
+ val playerPos = MapUtils.actualToRelative(
+ BlockPos(player.posX, player.posY, player.posZ),
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ ChatTransmitter.addToQueue(
+ """{ "secretName":"# - Item", "category":"item", "x":${playerPos.x}, "y":${playerPos.y}, "z":${playerPos.z}}"""
+ )
+
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"# - Item", "category":"item", "x":${playerPos.x}, "y":${playerPos.y}, "z":${playerPos.z}}"""
+ ),
+ null
+ )
+ }
+
+ "entrance" -> {
+ val entrancePos = MapUtils.actualToRelative(
+ BlockPos(player.posX, player.posY + 1, player.posZ),
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ ChatTransmitter.addToQueue(
+ """{ "secretName":"# - Entrance", "category":"entrance", "x":${entrancePos.x}, "y":${entrancePos.y}, "z":${entrancePos.z}}"""
+ )
+
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"# - Entrance", "category":"entrance", "x":${entrancePos.x}, "y":${entrancePos.y}, "z":${entrancePos.z}}"""
+ ),
+ null
+ )
+ }
+
+ "bat" -> {
+ val batPos = MapUtils.actualToRelative(
+ BlockPos(player.posX, player.posY + 1, player.posZ),
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ ChatTransmitter.addToQueue(
+ """{ "secretName":"# - Bat", "category":"bat", "x":${batPos.x}, "y":${batPos.y}, "z":${batPos.z}}"""
+ )
+
+ Toolkit.getDefaultToolkit()
+ .systemClipboard
+ .setContents(
+ StringSelection(
+ """{ "secretName":"# - Bat", "category":"bat", "x":${batPos.x}, "y":${batPos.y}, "z":${batPos.z}}"""
+ ),
+ null
+ )
+ }
+
+ else -> ChatTransmitter.addToQueue(
+ EnumChatFormatting.RED
+ .toString() + "Dungeon Rooms: Valid options are "
+ )
+
+ }
+ }
+
+ else -> ChatTransmitter.addToQueue(
+ EnumChatFormatting.RED
+ .toString() + "Dungeon Rooms: Run \"/room\" by itself to see the room name or run \"/room help\" for additional options"
+ )
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/DungeonManager.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/DungeonManager.kt
new file mode 100644
index 0000000..fc47651
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/DungeonManager.kt
@@ -0,0 +1,171 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.dungeons
+
+import io.github.quantizr.dungeonrooms.ChatTransmitter
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.DungeonRooms.Companion.instance
+import io.github.quantizr.dungeonrooms.pathfinding.CachedPathFinder
+import io.github.quantizr.dungeonrooms.utils.MapUtils
+import io.github.quantizr.dungeonrooms.utils.Utils
+import net.minecraft.client.Minecraft
+import net.minecraft.util.EnumChatFormatting
+import net.minecraft.util.Vec3
+import net.minecraftforge.client.event.ClientChatReceivedEvent
+import net.minecraftforge.event.world.WorldEvent
+import net.minecraftforge.fml.common.eventhandler.EventPriority
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
+import java.awt.Point
+import java.util.*
+
+class DungeonManager {
+ val mc: Minecraft = Minecraft.getMinecraft()
+ private var bloodTime = Long.MAX_VALUE
+ private var oddRun = true //if current run number is even or odd
+ @SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true)
+ fun onChat(event: ClientChatReceivedEvent) {
+ if (!Utils.inCatacombs) return
+ val message = event.message.formattedText
+
+ //gameStage set from 0 to 1 in the onTick function later
+ if (message.startsWith("§e[NPC] §bMort§f: §rHere, I found this map when I first entered the dungeon.§r")) {
+ gameStage = DungeonRunStage.RoomClear
+ DungeonRooms.logger.info("DungeonRooms: gameStage set to $gameStage")
+ } else if (message.startsWith("§r§c[BOSS] The Watcher§r§f: You have proven yourself. You may pass.§r")) {
+ bloodTime = System.currentTimeMillis() + 5000 //5 seconds because additional messages might come through
+ DungeonRooms.logger.info("DungeonRooms: bloodDone has been set to True")
+ } else if (System.currentTimeMillis() > bloodTime && (message.startsWith("§r§c[BOSS] ") && !message.contains(" The Watcher§r§f:") || message.startsWith(
+ "§r§4[BOSS] "
+ ))
+ ) {
+ if (gameStage != DungeonRunStage.RoomClear) {
+ gameStage = DungeonRunStage.RoomClear
+ DungeonRooms.logger.info("DungeonRooms: gameStage set to $gameStage")
+
+ //this part mostly so /room json doesn't error out
+ instance.roomDetection.resetCurrentRoom()
+ instance.roomDetection.roomName = "Boss Room"
+ instance.roomDetection.roomCategory = "General"
+ //RoomDetection.newRoom() //uncomment to display Boss Room in gui
+ }
+ } else if (message.contains("§r§c☠ §r§eDefeated §r")) {
+ gameStage = DungeonRunStage.Boss
+ DungeonRooms.logger.info("DungeonRooms: gameStage set to $gameStage")
+ instance.roomDetection.resetCurrentRoom()
+ }
+ }
+
+ @SubscribeEvent
+ fun onTick(event: ClientTickEvent) {
+ if (event.phase != TickEvent.Phase.START) return
+ val player = mc.thePlayer
+ if (!Utils.inCatacombs) return //From this point forward, everything assumes that Utils.inCatacombs == true
+ tickAmount++
+ if ((gameStage == DungeonRunStage.NotInDungeon || gameStage == DungeonRunStage.NotStarted) && tickAmount % 20 == 0) {
+ if (DungeonRooms.firstLogin) {
+ DungeonRooms.firstLogin = false
+ ChatTransmitter.addToQueue(
+ """
+ §d§l--- Dungeon Rooms Mod ---
+ §e This appears to be your first time using DRM v${DungeonRooms.VERSION}.
+ §e Press "${DRMConfig.waypointGuiKey.display}" to configure Secret Waypoint settings, If you do not wish to use Waypoints, you can instead press "${DRMConfig.openSecretImages.display}" while inside a dungeon room to view images of the secrets for that room.
+ §r (If you need help, join the Discord! Run "/room discord" to open the Discord invite.)
+ §d§l------------------------
+ """.trimIndent()
+ )
+
+ }
+ if (gameStage == DungeonRunStage.NotInDungeon) {
+ gameStage = DungeonRunStage.NotStarted
+ DungeonRooms.logger.info("DungeonRooms: gameStage set to $gameStage")
+ }
+ if (MapUtils.updatedMap() != null) {
+ DungeonRooms.logger.warn("DungeonRooms: Run started but gameStage is not on 2")
+ gameStage = DungeonRunStage.RoomClear
+ DungeonRooms.logger.info("DungeonRooms: gameStage set to $gameStage")
+ return
+ }
+ if (gameStage == DungeonRunStage.NotStarted && entrancePhysicalNWCorner == null) {
+ if (player.positionVector != Vec3(0.0, 0.0, 0.0)) {
+ //this point is calculated using math, not scanning, which may cause issues when reconnecting to a run
+ entrancePhysicalNWCorner = MapUtils.getClosestNWPhysicalCorner(player.positionVector)
+ DungeonRooms.logger.info("DungeonRooms: entrancePhysicalNWCorner has been set to $entrancePhysicalNWCorner")
+ }
+ }
+ if (DRMConfig.motdToggled) {
+ DungeonRooms.logger.info("DungeonRooms: Updating MOTD on screen")
+ if (oddRun || !DRMConfig.guiToggled) { // load MOTD on odd runs
+ if (instance.motd.isNotEmpty()) {
+ instance.textToDisplay = instance.motd
+ }
+ }
+ if (DRMConfig.guiToggled) { //if MOTD is empty or not odd run load default text
+ instance.textToDisplay = ArrayList(
+ listOf(
+ "Dungeon Rooms: ${EnumChatFormatting.GREEN}Press the hotkey \"${
+ DRMConfig.waypointGuiKey.display
+ }\" to configure",
+ "${EnumChatFormatting.GREEN}waypoint settings. Alternatively, press \"${
+ DRMConfig.openSecretImages.display
+ }\" while in a room",
+ "${EnumChatFormatting.GREEN}to view images of secret locations for that room.",
+ "(You can change the keybinds in Minecraft controls menu)"
+ )
+ )
+ }
+ oddRun = !oddRun
+ }
+ tickAmount = 0
+ }
+ }
+
+ @SubscribeEvent
+ fun onWorldUnload(event: WorldEvent.Unload?) {
+ Utils.inCatacombs = false
+ tickAmount = 0
+ gameStage = DungeonRunStage.NotInDungeon
+ map = null
+ entranceMapCorners = null
+ entrancePhysicalNWCorner = null
+ instance.roomDetection.entranceMapNullCount = 0
+ bloodTime = Long.MAX_VALUE
+ instance.roomDetection.stage2Executor.shutdown()
+ instance.waypoints.allSecretsMap.clear()
+ instance.roomDetection.resetCurrentRoom()
+ }
+
+ var gameStage = DungeonRunStage.NotInDungeon
+
+ companion object {
+// @JvmField
+// var gameStage = 0 //0: Not in Dungeon, 1: Entrance/Not Started, 2: Room Clear, 3: Boss, 4: Done
+
+ @JvmField
+ var map: Array>? = null
+
+ @JvmField
+ var entranceMapCorners: Array? = null
+
+ @JvmField
+ var entrancePhysicalNWCorner: Point? = null
+ var tickAmount = 0
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/DungeonRunStage.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/DungeonRunStage.kt
new file mode 100644
index 0000000..2fe21b8
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/DungeonRunStage.kt
@@ -0,0 +1,5 @@
+package io.github.quantizr.dungeonrooms.dungeons
+
+enum class DungeonRunStage {
+ NotInDungeon, NotStarted, RoomClear, Boss, Done
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/RoomDetection.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/RoomDetection.kt
new file mode 100644
index 0000000..da3570c
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/RoomDetection.kt
@@ -0,0 +1,589 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.dungeons
+
+import io.github.quantizr.dungeonrooms.ChatTransmitter
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.dungeons.data.room.RoomColor
+import io.github.quantizr.dungeonrooms.dungeons.data.room.RoomSize
+import io.github.quantizr.dungeonrooms.gui.WaypointsGUI
+import io.github.quantizr.dungeonrooms.handlers.OpenLink
+import io.github.quantizr.dungeonrooms.utils.MapUtils
+import io.github.quantizr.dungeonrooms.utils.RoomDetectionUtils
+import io.github.quantizr.dungeonrooms.utils.Utils
+import net.minecraft.block.Block
+import net.minecraft.client.Minecraft
+import net.minecraft.util.BlockPos
+import net.minecraft.util.EnumChatFormatting
+import net.minecraft.util.MovingObjectPosition
+import net.minecraft.util.Vec3
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.InputEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
+import java.awt.Point
+import java.util.*
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.Future
+
+class RoomDetection {
+ val mc: Minecraft = Minecraft.getMinecraft()
+
+ @SubscribeEvent
+ fun onKey(event: InputEvent.KeyInputEvent?) {
+ when {
+ DRMConfig.refreshMapKeybind.isActive -> {
+ entranceMapNullCount = 0
+ stage2Ticks = 0
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onTick(event: ClientTickEvent) {
+ if (event.phase != TickEvent.Phase.START) return
+ if (!Utils.inCatacombs) return
+
+ // From this point forward, everything assumes that Utils.inCatacombs == true
+ if (DungeonRooms.instance.dungeonManager.gameStage != DungeonRunStage.RoomClear) return
+
+ // Room clearing phase
+ stage2Ticks++
+ if (stage2Ticks == 10) {
+ stage2Ticks = 0
+ //start ExecutorService with one thread
+ if (stage2Executor.isTerminated) {
+ DungeonRooms.logger.info("DungeonRooms: New Single Thread Executor Started")
+ stage2Executor = Executors.newSingleThreadExecutor()
+ }
+ //set entranceMapCorners
+ if (DungeonManager.entranceMapCorners == null) {
+ DungeonManager.map = MapUtils.updatedMap()
+ DungeonManager.entranceMapCorners = MapUtils.entranceMapCorners(DungeonManager.map)
+ DungeonRooms.logger.info("DungeonRooms: Getting entrance map corners from hotbar map...")
+ } else if (DungeonManager.entranceMapCorners!![0] == null || DungeonManager.entranceMapCorners!![1] == null) { //prevent crashes if hotbar map bugged
+ DungeonRooms.logger.warn("DungeonRooms: Entrance room not found, hotbar map possibly bugged")
+ entranceMapNullCount++
+ DungeonManager.entranceMapCorners = null // retry getting corners again next loop
+ if (entranceMapNullCount == 8) {
+ ChatTransmitter.addToQueue(
+ "${EnumChatFormatting.RED}DungeonRooms: Error with hotbar map, perhaps your texture pack is interfering with room detection?"
+ )
+ DungeonRooms.instance.textToDisplay = ArrayList(
+ listOf(
+ "Dungeon Rooms: ${EnumChatFormatting.RED}Hotbar map may be bugged"
+ )
+ )
+ //gameStage = 4;
+ //DungeonRooms.logger.info("DungeonRooms: gameStage set to " + gameStage);
+ }
+ } else if (DungeonManager.entrancePhysicalNWCorner == null) {
+ DungeonRooms.logger.warn("DungeonRooms: Entrance Room coordinates not found")
+ // for when people dc and reconnect, or if initial check doesn't work
+ val playerMarkerPos = MapUtils.playerMarkerPos()
+ if (playerMarkerPos != null) {
+ val closestNWMapCorner = MapUtils.getClosestNWMapCorner(
+ playerMarkerPos,
+ DungeonManager.entranceMapCorners!![0]!!,
+ DungeonManager.entranceMapCorners!![1]!!
+ )
+ if (MapUtils.getMapColor(playerMarkerPos, DungeonManager.map) == RoomColor.GREEN
+ && MapUtils.getMapColor(closestNWMapCorner, DungeonManager.map) == RoomColor.GREEN
+ ) {
+ if (mc.thePlayer.positionVector != Vec3(0.0, 0.0, 0.0)) {
+ DungeonManager.entrancePhysicalNWCorner =
+ MapUtils.getClosestNWPhysicalCorner(mc.thePlayer.positionVector)
+ DungeonRooms.logger.info("DungeonRooms: entrancePhysicalNWCorner has been set to ${DungeonManager.entrancePhysicalNWCorner}")
+ }
+ } else {
+ DungeonRooms.instance.textToDisplay = ArrayList(
+ listOf(
+ "Dungeon Rooms: ${EnumChatFormatting.RED}Entrance Room coordinates not found",
+ "${EnumChatFormatting.RED}Please go back into the middle of the Green Entrance Room."
+ )
+ )
+ }
+ }
+ } else {
+ val currentPhysicalCorner = MapUtils.getClosestNWPhysicalCorner(mc.thePlayer.positionVector)
+ if (!currentPhysicalSegments.contains(currentPhysicalCorner)) {
+ // checks if current location is within the bounds of the last detected room
+ resetCurrentRoom() // only instance of resetting room other than leaving Dungeon
+ } else if (incompleteScan != 0L && System.currentTimeMillis() > incompleteScan) {
+ incompleteScan = 0
+ DungeonRooms.logger.info("DungeonRooms: Rescanning room...")
+ raytraceBlocks()
+ } else if (redoScan != 0L && System.currentTimeMillis() > redoScan) {
+ redoScan = 0
+ DungeonRooms.logger.info("DungeonRooms: Clearing data and rescanning room...")
+ thaPossibleRooms = null
+ raytraceBlocks()
+ }
+ if (roomSize == RoomSize.undefined || roomColor == RoomColor.UNDEFINED) {
+ updateCurrentRoom()
+ if (roomColor == RoomColor.UNDEFINED) {
+ DungeonRooms.instance.textToDisplay = ArrayList(
+ listOf(
+ "Dungeon Rooms: ${EnumChatFormatting.RED}Waiting for hotbar map to update..."
+ )
+ )
+ } else {
+ when (roomColor) {
+ RoomColor.BROWN, RoomColor.PURPLE, RoomColor.ORANGE -> raytraceBlocks()
+ RoomColor.YELLOW -> {
+ roomName = "Miniboss Room"
+ newRoom()
+ }
+
+ RoomColor.GREEN -> {
+ roomName = "Entrance Room"
+ newRoom()
+ }
+
+ RoomColor.PINK -> {
+ roomName = "Fairy Room"
+ newRoom()
+ }
+
+ RoomColor.RED -> {
+ roomName = "Blood Room"
+ newRoom()
+ }
+
+ else -> roomName = "undefined"
+ }
+ }
+ }
+ }
+ }
+
+ // these run every tick while in room clearing phase
+ if (futureUpdatePossibleRooms != null && futureUpdatePossibleRooms!!.isDone) {
+ thaPossibleRooms = futureUpdatePossibleRooms!!.get()
+ futureUpdatePossibleRooms = null
+ val possibleRoomsSet = TreeSet()
+ var tempDirection = "undefined"
+ for ((key, possibleRoomList) in thaPossibleRooms!!) {
+ if (possibleRoomList.isNotEmpty()) {
+ tempDirection =
+ key // get direction to be used if room identified
+ possibleRoomsSet.addAll(possibleRoomList)
+ }
+ }
+ when (possibleRoomsSet.size) {
+ // no match
+ 0 -> {
+ DungeonRooms.instance.textToDisplay = listOf(
+ "Dungeon Rooms: ${EnumChatFormatting.RED}No Matching Rooms Detected",
+ "${EnumChatFormatting.RED}This mod might not have data for this room.",
+ "${EnumChatFormatting.WHITE}Retrying every 5 seconds..."
+ )
+
+ redoScan = System.currentTimeMillis() + 5000
+ }
+ //room found
+ 1 -> {
+ roomName = possibleRoomsSet.first()
+ roomDirection = tempDirection
+ roomCorner = MapUtils.getPhysicalCornerPos(roomDirection, currentPhysicalSegments)
+ DungeonRooms.logger.info(
+ "DungeonRooms: 576 raytrace vectors sent, returning ${currentScannedBlocks.size} unique line-of-sight blocks, filtered down to $totalBlocksAvailableToCheck blocks, out of which ${blocksUsed.size} blocks were used to uniquely identify $roomName."
+ )
+ newRoom()
+ }
+ // too many matches
+ else -> {
+ DungeonRooms.instance.textToDisplay = listOf(
+ "Dungeon Rooms: ${EnumChatFormatting.RED}Unable to Determine Room Name",
+ "${EnumChatFormatting.RED}Not enough valid blocks were scanned, look at a more open area.",
+ "${EnumChatFormatting.WHITE}Retrying every second..."
+ )
+
+ DungeonRooms.logger.info("DungeonRooms: Possible rooms list = ${ArrayList(possibleRoomsSet)}")
+ incompleteScan = System.currentTimeMillis() + 1000
+ }
+ }
+ }
+ }
+
+ private fun updateCurrentRoom() {
+ DungeonManager.map = MapUtils.updatedMap()
+ if (DungeonManager.map == null) {
+ return
+ }
+ val currentPhysicalCorner = MapUtils.getClosestNWPhysicalCorner(mc.thePlayer.positionVector)
+ val currentMapCorner = MapUtils.physicalToMapCorner(
+ currentPhysicalCorner,
+ DungeonManager.entrancePhysicalNWCorner!!,
+ DungeonManager.entranceMapCorners!![0]!!,
+ DungeonManager.entranceMapCorners!![1]!!
+ )
+ roomColor = MapUtils.getMapColor(currentMapCorner, DungeonManager.map)
+ if (roomColor == RoomColor.UNDEFINED) {
+ println("DungeonRooms: Room color is undefined")
+ return
+ }
+ currentMapSegments = MapUtils.neighboringSegments(
+ currentMapCorner,
+ DungeonManager.map,
+ DungeonManager.entranceMapCorners!![0]!!,
+ DungeonManager.entranceMapCorners!![1]!!,
+ ArrayList()
+ )
+ currentPhysicalSegments = ArrayList()
+ for (mapCorner in currentMapSegments) {
+ currentPhysicalSegments.add(
+ MapUtils.mapToPhysicalCorner(
+ mapCorner,
+ DungeonManager.entrancePhysicalNWCorner!!,
+ DungeonManager.entranceMapCorners!![0]!!,
+ DungeonManager.entranceMapCorners!![1]!!
+ )
+ )
+ }
+ roomSize = MapUtils.roomSize(currentMapSegments)
+ roomCategory = MapUtils.roomCategory(roomSize, roomColor)
+ }
+
+ private fun raytraceBlocks() {
+ DungeonRooms.logger.info("DungeonRooms: Raytracing visible blocks")
+ val timeStart = System.currentTimeMillis()
+
+ val player = mc.thePlayer
+ val eyes = Vec3(player.posX, player.posY + player.getEyeHeight().toDouble(), player.posZ)
+
+ val blocksToCheck = HashMap().also { blocksToCheck ->
+ // create a list of vectors to check
+ RoomDetectionUtils.vectorsToRaytrace(24)
+ // raytrace block
+ .map { player.entityWorld.rayTraceBlocks(eyes, it, false, false, true) }
+
+ // filter out entities/nulls
+ .filter { Objects.nonNull(it) }
+ .filter { it.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK }
+
+ // get block position
+ .map { it.blockPos }
+ .forEach { raytracedBlockPos ->
+ if (!currentScannedBlocks.contains(raytracedBlockPos)) {
+ currentScannedBlocks.add(raytracedBlockPos)
+ // scanned block is outside of current room
+ if (currentPhysicalSegments.contains(MapUtils.getClosestNWPhysicalCorner(raytracedBlockPos))) {
+ // scanned block may be part of a corridor
+ if (!RoomDetectionUtils.blockPartOfDoorway(raytracedBlockPos)) {
+ val hitBlock = mc.theWorld.getBlockState(raytracedBlockPos)
+ val identifier =
+ Block.getIdFromBlock(hitBlock.block) * 100 + hitBlock.block.damageDropped(hitBlock)
+ if (RoomDetectionUtils.whitelistedBlocks.contains(identifier)) {
+ blocksToCheck[raytracedBlockPos] =
+ identifier // will be checked and filtered in getPossibleRooms()
+ }
+ }
+ }
+ }
+
+ }
+ }
+ DungeonRooms.logger.info("DungeonRooms: Finished raytracing, amount of blocks to check: ${blocksToCheck.size}")
+ DungeonRooms.logger.info("DungeonRooms: Time to raytrace and filter (in ms): ${System.currentTimeMillis() - timeStart}")
+
+ if (futureUpdatePossibleRooms == null && !stage2Executor.isTerminated) {
+ // start processing in new thread to avoid lag in case of complex scan
+ DungeonRooms.logger.info("DungeonRooms: Initializing Room Comparison Executor")
+
+ val timeStart = System.currentTimeMillis()
+ // Load up hashmap
+ val updatedPossibleRooms: HashMap>?
+ val possibleDirections: List
+ if (thaPossibleRooms != null) {
+ // load info from previous scan
+ DungeonRooms.logger.info("DungeonRooms: Loading possible rooms from previous room scan...")
+ updatedPossibleRooms = thaPossibleRooms
+ possibleDirections = ArrayList(thaPossibleRooms!!.keys)
+
+ } else {
+ DungeonRooms.logger.info("DungeonRooms: No previous possible rooms list, creating new list...")
+ // no previous scans have been done, entering all possible rooms and directions
+ possibleDirections = MapUtils.possibleDirections(roomSize, currentMapSegments)
+ updatedPossibleRooms = HashMap()
+ for (direction in possibleDirections) {
+ updatedPossibleRooms[direction] =
+ ArrayList(DungeonRooms.instance.roomDataLoader.ROOM_DATA[roomCategory]?.keys ?: emptyList())
+ }
+ }
+
+ //create HashMap of the points of the corners because they will be repeatedly used for each block
+ val directionCorners = HashMap()
+ for (direction in possibleDirections) {
+ val physicalCornerPos = MapUtils.getPhysicalCornerPos(direction, currentPhysicalSegments)
+ if (physicalCornerPos != null) {
+ directionCorners[direction] = physicalCornerPos
+ }
+ }
+ DungeonRooms.logger.info("DungeonRooms: directionCorners " + directionCorners.entries)
+ val blocksChecked: MutableList = ArrayList()
+ var doubleCheckedBlocks = 0
+ for ((pos, blck) in blocksToCheck) {
+ DungeonRooms.logger.info("DungeonRooms: BlockPos being checked $pos")
+ var combinedMatchingRooms = 0
+ for (direction in possibleDirections) {
+ //get specific id for the block to compare with ".skeleton" file room data
+ val relative = MapUtils.actualToRelative(pos, direction, directionCorners[direction]!!)
+ val idToCheck = Utils.shortToLong(
+ relative.x.toShort(),
+ relative.y.toShort(),
+ relative.z.toShort(),
+ blck.toShort()
+ )
+ val matchingRooms: MutableList = ArrayList()
+ // compare with each saved ".skeleton" room
+ for (roomName in updatedPossibleRooms!![direction]!!) {
+ val index = DungeonRooms.instance.roomDataLoader.ROOM_DATA[roomCategory]!![roomName]?.let {
+ Arrays.binarySearch(
+ it, idToCheck
+ )
+ }
+ if (index != null) {
+ if (index > -1) {
+ matchingRooms.add(roomName)
+ }
+ }
+ }
+
+ //replace updatedPossibleRooms.get(direction) with the updated matchingRooms list
+ combinedMatchingRooms += matchingRooms.size
+ updatedPossibleRooms[direction] = matchingRooms
+ DungeonRooms.logger.info("DungeonRooms: direction checked = $direction, longID = $idToCheck, relative = $relative")
+ DungeonRooms.logger.info("DungeonRooms: updatedPossibleRooms size = ${updatedPossibleRooms[direction]!!.size} for direction $direction")
+ }
+ blocksChecked.add(pos)
+
+ when (combinedMatchingRooms) {
+ 0 -> {
+ DungeonRooms.logger.warn("DungeonRooms: No rooms match the input blocks after checking ${blocksChecked.size} blocks, returning")
+ break
+ }
+
+ 1 -> {
+ // scan 10 more blocks after 1 room remaining to double-check
+ if (doubleCheckedBlocks >= 10) {
+ DungeonRooms.logger.info("DungeonRooms: One room matches after checking " + blocksChecked.size + " blocks")
+ break
+ }
+ doubleCheckedBlocks++
+ }
+ }
+ DungeonRooms.logger.info("DungeonRooms: $combinedMatchingRooms possible rooms after checking ${blocksChecked.size} blocks")
+ }
+
+ // only print for this condition bc other conditions break to here
+ if (blocksChecked.size == blocksToCheck.size) {
+ DungeonRooms.logger.warn("DungeonRooms: Multiple rooms match after checking all ${blocksChecked.size} blocks")
+ }
+ blocksUsed.addAll(blocksChecked)
+
+ // add blocksToCheck size to totalBlocksAvailableToCheck and clear blocksToCheck
+ totalBlocksAvailableToCheck += blocksToCheck.size
+ DungeonRooms.logger.info("DungeonRooms: Time to check blocks using thread (in ms): ${System.currentTimeMillis() - timeStart}")
+
+ futureUpdatePossibleRooms = calculatePossibleRooms(blocksToCheck)
+ }
+ }
+
+ private fun calculatePossibleRooms(thaBlocksToCheck: Map): Future>> {
+ return stage2Executor.submit>?> {
+ try {
+ val timeStart = System.currentTimeMillis()
+ // Load up hashmap
+ val updatedPossibleRooms: HashMap>?
+ val possibleDirections: List
+ if (thaPossibleRooms != null) {
+ // load info from previous scan
+ DungeonRooms.logger.info("DungeonRooms: Loading possible rooms from previous room scan...")
+ updatedPossibleRooms = thaPossibleRooms
+ possibleDirections = ArrayList(thaPossibleRooms!!.keys)
+ } else {
+ DungeonRooms.logger.info("DungeonRooms: No previous possible rooms list, creating new list...")
+ // no previous scans have been done, entering all possible rooms and directions
+ possibleDirections = MapUtils.possibleDirections(roomSize, currentMapSegments)
+ updatedPossibleRooms = HashMap()
+ for (direction in possibleDirections) {
+ updatedPossibleRooms[direction] =
+ ArrayList(DungeonRooms.instance.roomDataLoader.ROOM_DATA[roomCategory]?.keys ?: emptyList())
+ }
+ }
+
+ //create HashMap of the points of the corners because they will be repeatedly used for each block
+ val directionCorners = HashMap()
+ for (direction in possibleDirections) {
+ val physicalCornerPos = MapUtils.getPhysicalCornerPos(direction, currentPhysicalSegments)
+ if (physicalCornerPos != null) {
+ directionCorners[direction] = physicalCornerPos
+ }
+ }
+ DungeonRooms.logger.info("DungeonRooms: directionCorners ${directionCorners.entries}")
+ val blocksChecked: MutableList = ArrayList()
+ var doubleCheckedBlocks = 0
+ for ((pos, blck) in thaBlocksToCheck) {
+ DungeonRooms.logger.info("DungeonRooms: BlockPos being checked $pos")
+ var combinedMatchingRooms = 0
+ for (direction in possibleDirections) {
+ //get specific id for the block to compare with ".skeleton" file room data
+ val relative = MapUtils.actualToRelative(pos, direction, directionCorners[direction]!!)
+ val idToCheck = Utils.shortToLong(
+ relative.x.toShort(),
+ relative.y.toShort(),
+ relative.z.toShort(),
+ blck.toShort()
+ )
+ val matchingRooms: MutableList = ArrayList()
+ // compare with each saved ".skeleton" room
+ for (roomName in updatedPossibleRooms!![direction]!!) {
+ val index = DungeonRooms.instance.roomDataLoader.ROOM_DATA[roomCategory]!![roomName]?.let {
+ Arrays.binarySearch(
+ it, idToCheck
+ )
+ }
+ if (index != null) {
+ if (index > -1) {
+ matchingRooms.add(roomName)
+ }
+ }
+ }
+
+ //replace updatedPossibleRooms.get(direction) with the updated matchingRooms list
+ combinedMatchingRooms += matchingRooms.size
+ updatedPossibleRooms[direction] = matchingRooms
+ DungeonRooms.logger.info("DungeonRooms: direction checked = $direction, longID = $idToCheck, relative = $relative")
+ DungeonRooms.logger.info("DungeonRooms: updatedPossibleRooms size = ${updatedPossibleRooms[direction]!!.size} for direction $direction")
+ }
+ blocksChecked.add(pos)
+ if (combinedMatchingRooms == 0) {
+ DungeonRooms.logger.warn("DungeonRooms: No rooms match the input blocks after checking ${blocksChecked.size} blocks, returning")
+ break
+ }
+ if (combinedMatchingRooms == 1) {
+ // scan 10 more blocks after 1 room remaining to double-check
+ if (doubleCheckedBlocks >= 10) {
+ DungeonRooms.logger.info("DungeonRooms: One room matches after checking ${blocksChecked.size} blocks")
+ break
+ }
+ doubleCheckedBlocks++
+ }
+ DungeonRooms.logger.info("DungeonRooms: $combinedMatchingRooms possible rooms after checking ${blocksChecked.size} blocks")
+ }
+
+ // only print for this condition bc other conditions break to here
+ if (blocksChecked.size == thaBlocksToCheck.size) {
+ DungeonRooms.logger.warn("DungeonRooms: Multiple rooms match after checking all ${blocksChecked.size} blocks")
+ }
+ blocksUsed.addAll(blocksChecked)
+
+ // add blocksToCheck size to totalBlocksAvailableToCheck and clear blocksToCheck
+ totalBlocksAvailableToCheck += thaBlocksToCheck.size
+ val timeFinish = System.currentTimeMillis()
+ DungeonRooms.logger.info("DungeonRooms: Time to check blocks using thread (in ms): ${timeFinish - timeStart}")
+ return@submit updatedPossibleRooms
+ } catch (e: Exception) {
+ DungeonRooms.logger.error("DungeonRooms: Error in Room Comparison Executor", e)
+ e.printStackTrace()
+ return@submit HashMap>()
+ }
+ }
+ }
+
+ var stage2Executor: ExecutorService = Executors.newSingleThreadExecutor()
+
+ private var stage2Ticks = 0
+ var currentMapSegments: List = ArrayList()
+ var currentPhysicalSegments: MutableList = ArrayList()
+ var roomSize = RoomSize.undefined
+ var roomColor = RoomColor.UNDEFINED
+ var roomCategory = "undefined"
+ var roomName = "undefined"
+ var roomDirection = "undefined"
+ var roomCorner: Point? = null
+ private var currentScannedBlocks = HashSet()
+ private var totalBlocksAvailableToCheck = 0
+ var blocksUsed: MutableList = ArrayList()
+ private var futureUpdatePossibleRooms: Future>>? = null
+ private var thaPossibleRooms: HashMap>? = null
+ private var incompleteScan = 0L
+ private var redoScan = 0L
+ var entranceMapNullCount = 0
+ fun resetCurrentRoom() {
+ DungeonRooms.instance.textToDisplay = emptyList()
+ DungeonRooms.instance.waypoints.allFound = false
+ currentPhysicalSegments = emptyList().toMutableList()
+ currentMapSegments = emptyList()
+ roomSize = RoomSize.undefined
+ roomColor = RoomColor.UNDEFINED
+ roomCategory = "undefined"
+ roomName = "undefined"
+ roomDirection = "undefined"
+ roomCorner = null
+ currentScannedBlocks = HashSet()
+ totalBlocksAvailableToCheck = 0
+ blocksUsed = ArrayList()
+ futureUpdatePossibleRooms = null
+ thaPossibleRooms = null
+ incompleteScan = 0
+ redoScan = 0
+ DungeonRooms.instance.waypoints.secretCount = 0
+ DungeonRooms.instance.waypoints.donePathfindFutures.clear()
+
+ }
+
+ private fun newRoom() {
+ if (roomName == "undefined" || roomCategory == "undefined") return
+ // update Waypoints info
+ val roomJson = DungeonRooms.instance.roomDataLoader.roomData[roomName]
+ if (roomJson != null) {
+ DungeonRooms.instance.waypoints.secretCount = roomJson.data.secrets
+ DungeonRooms.instance.waypoints.allSecretsMap.putIfAbsent(roomName, ArrayList(Collections.nCopies(DungeonRooms.instance.waypoints.secretCount, true)))
+ } else {
+ DungeonRooms.instance.waypoints.secretCount = 0
+ DungeonRooms.instance.waypoints.allSecretsMap.putIfAbsent(roomName, ArrayList(Collections.nCopies(0, true)))
+ }
+
+ DungeonRooms.instance.waypoints.allSecretsMap[roomName]?.let {
+ DungeonRooms.instance.waypoints.secretCompletionList = it.toMutableList()
+ }
+
+
+ //update GUI text
+ if (DRMConfig.guiToggled) {
+ val lineList: MutableList = ArrayList()
+ val roomJson = DungeonRooms.instance.roomDataLoader.roomData[roomName]
+ if (roomJson != null) {
+ var line = "Dungeon Rooms: You are in ${EnumChatFormatting.GREEN}$roomCategory${EnumChatFormatting.WHITE} - ${EnumChatFormatting.GREEN}$roomName"
+ if (roomJson.data.fairysoul) {
+ line += "${EnumChatFormatting.WHITE} - ${EnumChatFormatting.LIGHT_PURPLE}Fairy Soul"
+ }
+ lineList.add(line)
+ } else if (DRMConfig.waypointsEnabled){
+ lineList.add("${EnumChatFormatting.RED}No waypoints available")
+ lineList.add("${EnumChatFormatting.RED}Press \"${DRMConfig.openSecretImages.display}\" to view images")
+ }
+ DungeonRooms.instance.textToDisplay = lineList
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/Waypoints.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/Waypoints.kt
new file mode 100644
index 0000000..a53b115
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/Waypoints.kt
@@ -0,0 +1,442 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.dungeons
+
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.events.PacketEvent.ReceiveEvent
+import io.github.quantizr.dungeonrooms.pathfinding.CachedPathFinder
+import io.github.quantizr.dungeonrooms.pathfinding.PfPath
+import io.github.quantizr.dungeonrooms.utils.MapUtils
+import io.github.quantizr.dungeonrooms.utils.Utils
+import io.github.quantizr.dungeonrooms.utils.WaypointUtils
+import kotlinx.coroutines.Deferred
+import net.minecraft.client.Minecraft
+import net.minecraft.client.renderer.GlStateManager
+import net.minecraft.client.renderer.culling.Frustum
+import net.minecraft.entity.item.EntityItem
+import net.minecraft.init.Blocks
+import net.minecraft.network.play.server.S0DPacketCollectItem
+import net.minecraft.util.AxisAlignedBB
+import net.minecraft.util.BlockPos
+import net.minecraft.util.StringUtils
+import net.minecraftforge.client.event.ClientChatReceivedEvent
+import net.minecraftforge.client.event.RenderWorldLastEvent
+import net.minecraftforge.event.entity.player.PlayerInteractEvent
+import net.minecraftforge.fml.client.FMLClientHandler
+import net.minecraftforge.fml.common.eventhandler.EventPriority
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.InputEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import org.joml.Vector3i
+import java.awt.Color
+import java.util.concurrent.ConcurrentHashMap
+
+class Waypoints {
+ private var frustum = Frustum()
+ private var completedSecrets = 0
+
+ val cachedPathFinder = CachedPathFinder()
+
+ var allFound = false
+ var secretCount = 0
+ var allSecretsMap: MutableMap?> = HashMap()
+ var secretCompletionList: MutableList = ArrayList(BooleanArray(10).toList())
+
+ private var tickCounter = 0
+
+
+ // user loc <-> pfjob
+ // this is used as a "last result cache",
+ // since new the player is moving, and we want to save the last processed path
+ val donePathfindFutures: MutableMap = HashMap()
+
+
+ @SubscribeEvent
+ fun onTick(event: TickEvent.ClientTickEvent) {
+ if (event.phase != TickEvent.Phase.START) return
+ if (!DRMConfig.waypointsEnabled) return
+ if (!DRMConfig.pathfindingEnabled) return
+ if (DRMConfig.practiceModeOn && !DRMConfig.practiceModeKeyBind.isActive) return
+ if (DRMConfig.disableWhenAllFound && allFound) return
+
+ updateFinishedFutures()
+ tickCounter++
+ if (tickCounter % DRMConfig.pathfindingRefreshRate != 0) return
+ tickCounter = 0
+
+ val (_, secretList) = DungeonRooms.instance.getJsonSecretList() ?: return
+
+ secretList.stream()
+ .filter { it.category == "chest" || it.category == "wither" || it.category == "item" || it.category == "bat" }
+
+ // make sure the secret is not done / and only target the first secret in the chain
+ .filter { secret ->
+ val nmbr = getSecretNumber(secret.secretName)
+ nmbr in (1..secretCount) && secretCompletionList[nmbr - 1]
+ }
+ .forEach {
+ val pos = getSecretPos(it.x, it.y, it.z)
+ val scrtLoc = Vector3i(pos.x, pos.y, pos.z)
+ cachedPathFinder.createPathAsync(
+ Vector3i(
+ Minecraft.getMinecraft().thePlayer.posX.toInt(),
+ Minecraft.getMinecraft().thePlayer.posY.toInt(),
+ Minecraft.getMinecraft().thePlayer.posZ.toInt()
+ ),
+ scrtLoc,
+ id = it.secretName,
+ lockProcessingThisTarget = true
+ ) { path ->
+ donePathfindFutures[scrtLoc] = path
+ }
+ }
+
+
+ }
+
+
+ private fun updateFinishedFutures(){
+ // remove cached pathfind jobs that are leading to done secrets
+ val (_, secretList) = DungeonRooms.instance.getJsonSecretList() ?: return
+ secretList.stream()
+ .filter { secret ->
+ val nmbr = getSecretNumber(secret.secretName)
+ nmbr in (1..secretCount) && !secretCompletionList[nmbr - 1]
+ }
+
+ // for each completed secret
+ .forEach {
+ // remove competed secrets from display
+
+ donePathfindFutures
+ .filter { (_, job) -> job.id == it.secretName }
+ .forEach { (loc, _) -> donePathfindFutures.remove(loc) }
+
+ }
+
+ }
+
+
+ @SubscribeEvent
+ fun onWorldRender(event: RenderWorldLastEvent) {
+ if (!DRMConfig.waypointsEnabled) return
+ if (DRMConfig.practiceModeOn && !DRMConfig.practiceModeKeyBind.isActive) return
+ if (DRMConfig.disableWhenAllFound && allFound) return
+
+ if(DRMConfig.pathfindingEnabled){
+ donePathfindFutures.forEach { (_, points) ->
+ WaypointUtils.drawLinesVec3(points.path, Color(255, 0, 0, 255), Color(0, 255, 0, 255), 2.0f, event.partialTicks, true)
+ }
+ }
+
+ val (_, secretList) = DungeonRooms.instance.getJsonSecretList() ?: return
+ val viewer = Minecraft.getMinecraft().renderViewEntity
+ frustum.setPosition(viewer.posX, viewer.posY, viewer.posZ)
+
+ secretList.stream()
+ // don't render fairy souls
+ .filter { it.category != "fairysoul" }
+
+ // make sure the secret is not done
+ .filter { secret ->
+ val nmbr = getSecretNumber(secret.secretName)
+ nmbr in (1..secretCount) && secretCompletionList[nmbr - 1]
+ }
+
+ // make sure we are looking at it
+ .filter {
+ val pos = getSecretPos(it.x, it.y, it.z)
+ frustum.isBoxInFrustum(
+ pos.x.toDouble(),
+ pos.y.toDouble(),
+ pos.z.toDouble(),
+ (pos.x + 1).toDouble(),
+ 255.0,
+ (pos.z + 1).toDouble()
+ )
+ }
+
+ // render the beacon-text
+ .forEach {
+ val pos = getSecretPos(it.x, it.y, it.z)
+ val color = when (it.category) {
+ "entrance" -> {
+ if (!DRMConfig.showEntrance) return@forEach
+ Color(0, 255, 0)
+ }
+
+ "superboom" -> {
+ if (!DRMConfig.showSuperboom) return@forEach
+ Color(255, 0, 0)
+ }
+
+ "chest" -> {
+ if (!DRMConfig.showSecrets) return@forEach
+ Color(2, 213, 250)
+ }
+
+ "item" -> {
+ if (!DRMConfig.showSecrets) return@forEach
+ Color(2, 64, 250)
+ }
+
+ "bat" -> {
+ if (!DRMConfig.showSecrets) return@forEach
+ Color(142, 66, 0)
+ }
+
+ "wither" -> {
+ if (!DRMConfig.showSecrets) return@forEach
+ Color(30, 30, 30)
+ }
+
+ "lever" -> {
+ if (!DRMConfig.showSecrets) return@forEach
+ Color(250, 217, 2)
+ }
+
+ "fairysoul" -> {
+ if (!DRMConfig.showFairySouls) return@forEach
+ Color(255, 85, 255)
+ }
+
+ "stonk" -> {
+ if (!DRMConfig.showStonk) return@forEach
+ Color(146, 52, 235)
+ }
+
+ else -> Color(190, 255, 252)
+ }
+ val viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * event.partialTicks
+ val viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * event.partialTicks
+ val viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * event.partialTicks
+ val x = pos.x - viewerX
+ val y = pos.y - viewerY
+ val z = pos.z - viewerZ
+ val distSq = x * x + y * y + z * z
+ GlStateManager.disableDepth()
+ GlStateManager.disableCull()
+ if (DRMConfig.showBoundingBox && frustum.isBoxInFrustum(
+ pos.x.toDouble(),
+ pos.y.toDouble(),
+ pos.z.toDouble(),
+ (pos.x + 1).toDouble(),
+ (pos.y + 1).toDouble(),
+ (pos.z + 1).toDouble()
+ )
+ ) {
+ WaypointUtils.drawFilledBoundingBox(AxisAlignedBB(x, y, z, x + 1, y + 1, z + 1), color, 0.4f)
+ }
+ GlStateManager.disableTexture2D()
+ if (DRMConfig.showBeacon && distSq > 5 * 5) {
+ WaypointUtils.renderBeaconBeam(
+ x,
+ y + 1,
+ z,
+ color.rgb,
+ 0.25f,
+ event.partialTicks
+ )
+ }
+ if (DRMConfig.showWaypointText) {
+ WaypointUtils.renderWaypointText(
+ it.secretName,
+ pos.up(2),
+ event.partialTicks
+ )
+ }
+ GlStateManager.disableLighting()
+ GlStateManager.enableTexture2D()
+ GlStateManager.enableDepth()
+ GlStateManager.enableCull()
+ }
+ }
+
+ @SubscribeEvent(priority = EventPriority.HIGHEST)
+ fun onChat(event: ClientChatReceivedEvent) {
+ if (!Utils.inCatacombs || !DRMConfig.waypointsEnabled) return
+ // Action Bar
+ if (event.type.toInt() != 2) return
+ event.message.unformattedText.split(" {3,}".toRegex()).forEach { section ->
+ if (section.contains("Secrets") && section.contains("/")) {
+ val cleanedSection = StringUtils.stripControlCodes(section)
+ val splitSecrets = cleanedSection.split("/")
+ completedSecrets = splitSecrets[0].replace("[^0-9]".toRegex(), "").toInt()
+ val totalSecrets = splitSecrets[1].replace("[^0-9]".toRegex(), "").toInt()
+ allFound = totalSecrets == secretCount && completedSecrets == secretCount
+ return
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onInteract(event: PlayerInteractEvent) {
+ if (!Utils.inCatacombs || !DRMConfig.waypointsEnabled) return
+ if (DRMConfig.disableWhenAllFound && allFound) return
+ if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) return
+ val block = event.world.getBlockState(event.pos).block
+ if (block != Blocks.chest && block != Blocks.skull) return
+
+
+ val (roomId, secretList) = DungeonRooms.instance.getJsonSecretList() ?: return
+
+ secretList.stream()
+ .filter { it.category == "chest" || it.category == "wither" }
+ .filter { getSecretPos(it.x, it.y, it.z) == event.pos }
+ .filter { getSecretNumber(it.secretName) in (1..secretCount) }
+ .forEach {
+ val nmbr = getSecretNumber(it.secretName)
+ secretCompletionList[nmbr - 1] = false
+ allSecretsMap.replace(roomId, secretCompletionList)
+ DungeonRooms.logger.info("DungeonRooms: Detected ${it.category} click, turning off waypoint for secret #$nmbr")
+ }
+ }
+
+ @SubscribeEvent
+ fun onReceivePacket(event: ReceiveEvent) {
+ if (!Utils.inCatacombs || !DRMConfig.waypointsEnabled) return
+ if (DRMConfig.disableWhenAllFound && allFound) return
+
+ if (event.packet !is S0DPacketCollectItem) return
+ val packet = event.packet as S0DPacketCollectItem
+
+ val mc = Minecraft.getMinecraft()
+ var entity = mc.theWorld.getEntityByID(packet.collectedItemEntityID) ?: return
+ if (entity !is EntityItem) return
+ val item = entity // smart casting shat itself and I have to use this
+ entity = mc.theWorld.getEntityByID(packet.entityID) ?: return
+ val name = item.entityItem.displayName
+ if (!name.contains("Decoy") &&
+ !name.contains("Defuse Kit") &&
+ !name.contains("Dungeon Chest Key") &&
+ !name.contains("Healing VIII") &&
+ !name.contains("Inflatable Jerry") &&
+ !name.contains("Spirit Leap") &&
+ !name.contains("Training Weights") &&
+ !name.contains("Trap") &&
+ !name.contains("Treasure Talisman")
+ ) {
+ return
+ }
+ if (entity.commandSenderEntity.name != mc.thePlayer.name) {
+ // Do nothing if someone else picks up the item in order to follow Hypixel rules (laugh haha lol)
+ return
+ }
+
+ val (roomId, secretList) = DungeonRooms.instance.getJsonSecretList() ?: return
+
+ secretList.stream()
+ .filter { it.category == "item" || it.category == "bat" } // only bats and items
+ .filter { entity.getDistanceSq(getSecretPos(it.x, it.y, it.z)) <= 36 } // within 6 blocks
+
+ // map the secret name to the secret number, so we don't recalc it every time
+ .map { secret ->
+ Pair(secret, getSecretNumber(secret.secretName))
+ }
+
+ // get current secret
+ .filter { (_, nmbr) ->
+ nmbr in (1..secretCount)
+ }
+
+ // check if secret is already found
+ .filter { (_, nmbr) ->
+ secretCompletionList[nmbr - 1]
+ }
+
+ // finish the secret
+ .forEach { (secret, nmbr) ->
+ secretCompletionList[nmbr - 1] = false
+ allSecretsMap.replace(roomId, secretCompletionList)
+ DungeonRooms.logger.info(
+ "DungeonRooms: ${entity.commandSenderEntity.name} picked up ${
+ StringUtils.stripControlCodes(
+ name
+ )
+ } from a ${secret.category} secret, turning off waypoint for secret #$nmbr"
+ )
+ return@forEach
+ }
+
+ }
+
+ private fun getSecretPos(x: Int, y: Int, z: Int): BlockPos {
+ return MapUtils.relativeToActual(
+ BlockPos(x, y, z),
+ DungeonRooms.instance.roomDetection.roomDirection,
+ DungeonRooms.instance.roomDetection.roomCorner!!
+ )
+ }
+
+
+ private fun getSecretNumber(secretName: String): Int {
+ val substring = secretName.substring(0, 2).replace("\\D".toRegex(), "")
+ return try {
+ substring.toInt()
+ } catch (e: NumberFormatException) {
+ 0
+ }
+ }
+
+ private var lastSneakTime: Long = 0
+
+ // Disable waypoint within 4 blocks away on sneak
+ @SubscribeEvent
+ fun onKey(event: InputEvent.KeyInputEvent?) {
+ if (!Utils.inCatacombs || !DRMConfig.waypointsEnabled || !DRMConfig.sneakToDisable) return
+ if (!FMLClientHandler.instance().client.gameSettings.keyBindSneak.isPressed) return
+
+ val tmp = lastSneakTime // use temp value cuz we want to update the time at the start and not the end
+ lastSneakTime = System.currentTimeMillis()
+
+ // check for two taps in under half a second
+ if ((System.currentTimeMillis() - tmp) >= 500) return
+
+ val player = Minecraft.getMinecraft().thePlayer
+
+
+ val (roomId, secretList) = DungeonRooms.instance.getJsonSecretList() ?: return
+
+ secretList.stream()
+ .filter { it.category == "chest" || it.category == "wither" || it.category == "item" || it.category == "bat" }
+ .filter { player.getDistanceSq(getSecretPos(it.x, it.y, it.z)) <= 16 } // within 4 blocks
+
+ // map the secret name to the secret number, so we don't recalc it every time
+ .map { secret -> Pair(secret, getSecretNumber(secret.secretName)) }
+
+ // get current secret
+ .filter { (_, nmbr) ->
+ nmbr in (1..secretCount)
+ }
+
+ // check if secret is already found
+ .filter { (_, nmbr) ->
+ secretCompletionList[nmbr - 1]
+ }
+
+ // finish the secret
+ .forEach { (secret, nmbr) ->
+ secretCompletionList[nmbr - 1] = false
+ allSecretsMap.replace(roomId, secretCompletionList)
+ DungeonRooms.logger.info("DungeonRooms: Player sneaked near ${secret.category} secret, turning off waypoint for secret #$nmbr")
+ return@forEach
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/DungeonRoom.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/DungeonRoom.kt
new file mode 100644
index 0000000..c47b911
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/DungeonRoom.kt
@@ -0,0 +1,3 @@
+package io.github.quantizr.dungeonrooms.dungeons.data.meta
+
+data class DungeonRoom(val id: String, val data: RoomMetaData, val secrets: Array)
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/RoomMetaData.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/RoomMetaData.kt
new file mode 100644
index 0000000..578898f
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/RoomMetaData.kt
@@ -0,0 +1,3 @@
+package io.github.quantizr.dungeonrooms.dungeons.data.meta
+
+data class RoomMetaData(val category: String, val secrets: Int, val fairysoul: Boolean, val dgs: String, val sbp: String)
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/SecretMetaData.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/SecretMetaData.kt
new file mode 100644
index 0000000..07dbef4
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/meta/SecretMetaData.kt
@@ -0,0 +1,3 @@
+package io.github.quantizr.dungeonrooms.dungeons.data.meta
+
+data class SecretMetaData(val secretName: String, val category: String, val x: Int, val y: Int, val z: Int)
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/room/RoomColor.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/room/RoomColor.kt
new file mode 100644
index 0000000..557ef5a
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/room/RoomColor.kt
@@ -0,0 +1,5 @@
+package io.github.quantizr.dungeonrooms.dungeons.data.room
+
+enum class RoomColor {
+ BROWN, PURPLE, ORANGE, YELLOW, GREEN, PINK, RED, UNDEFINED
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/room/RoomSize.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/room/RoomSize.kt
new file mode 100644
index 0000000..c58e1d3
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/dungeons/data/room/RoomSize.kt
@@ -0,0 +1,5 @@
+package io.github.quantizr.dungeonrooms.dungeons.data.room
+
+enum class RoomSize {
+ `1x1`, `1x2`, `1x3`, `1x4`, `2x2`, `L-shape`, undefined
+}
\ No newline at end of file
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/events/PacketEvent.java b/src/main/kotlin/io/github/quantizr/dungeonrooms/events/PacketEvent.kt
similarity index 55%
rename from src/main/java/io/github/quantizr/dungeonrooms/events/PacketEvent.java
rename to src/main/kotlin/io/github/quantizr/dungeonrooms/events/PacketEvent.kt
index 19d4d22..42c7bce 100644
--- a/src/main/java/io/github/quantizr/dungeonrooms/events/PacketEvent.java
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/events/PacketEvent.kt
@@ -15,12 +15,11 @@
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*/
+package io.github.quantizr.dungeonrooms.events
-package io.github.quantizr.dungeonrooms.events;
-
-import net.minecraft.network.Packet;
-import net.minecraftforge.fml.common.eventhandler.Cancelable;
-import net.minecraftforge.fml.common.eventhandler.Event;
+import net.minecraft.network.Packet
+import net.minecraftforge.fml.common.eventhandler.Cancelable
+import net.minecraftforge.fml.common.eventhandler.Event
/**
* Taken from Skytils under the GNU Affero General Public License v3.0
@@ -28,32 +27,22 @@
* @author My-Name-Is-Jeff (lily)
*/
@Cancelable
-public class PacketEvent extends Event {
-
- public Direction direction;
- public Packet> packet;
+open class PacketEvent(@JvmField var packet: Packet<*>) : Event() {
+ var direction: Direction? = null
- public PacketEvent(Packet> packet) {
- this.packet = packet;
- }
-
- public static class ReceiveEvent extends PacketEvent {
- public ReceiveEvent(Packet> packet) {
- super(packet);
- this.direction = Direction.INBOUND;
+ class ReceiveEvent(packet: Packet<*>) : PacketEvent(packet) {
+ init {
+ direction = Direction.INBOUND
}
}
- public static class SendEvent extends PacketEvent {
- public SendEvent(Packet> packet) {
- super(packet);
- this.direction = Direction.OUTBOUND;
+ class SendEvent(packet: Packet<*>) : PacketEvent(packet) {
+ init {
+ direction = Direction.OUTBOUND
}
}
- enum Direction {
- INBOUND,
- OUTBOUND
+ enum class Direction {
+ INBOUND, OUTBOUND
}
-
}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/gui/LinkGUI.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/gui/LinkGUI.kt
new file mode 100644
index 0000000..4922fe4
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/gui/LinkGUI.kt
@@ -0,0 +1,101 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.gui
+
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.handlers.OpenLink
+import io.github.quantizr.dungeonrooms.handlers.TextRenderer
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.GuiButton
+import net.minecraft.client.gui.GuiScreen
+import net.minecraft.client.gui.ScaledResolution
+import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.event.ClickEvent
+import net.minecraft.util.ChatComponentText
+import net.minecraft.util.EnumChatFormatting
+
+class LinkGUI : GuiScreen() {
+ private var discordClient: GuiButton? = null
+ private var discordBrowser: GuiButton? = null
+ private var SBPSecrets: GuiButton? = null
+ private var close: GuiButton? = null
+ override fun doesGuiPauseGame(): Boolean {
+ return false
+ }
+
+ override fun initGui() {
+ super.initGui()
+ val sr = ScaledResolution(Minecraft.getMinecraft())
+ val height = sr.scaledHeight
+ val width = sr.scaledWidth
+ discordClient = GuiButton(0, width / 2 - 185, height / 6 + 96, 120, 20, "DSG Discord Client")
+ discordBrowser = GuiButton(1, width / 2 - 60, height / 6 + 96, 120, 20, "DSG Discord Browser")
+ SBPSecrets = GuiButton(2, width / 2 + 65, height / 6 + 96, 120, 20, "SBP Secrets Mod")
+ close = GuiButton(3, width / 2 - 60, height / 6 + 136, 120, 20, "Close")
+ buttonList.add(discordClient)
+ buttonList.add(discordBrowser)
+ buttonList.add(SBPSecrets)
+ buttonList.add(close)
+ }
+
+ override fun drawScreen(mouseX: Int, mouseY: Int, partialTicks: Float) {
+ drawDefaultBackground()
+ val mc = Minecraft.getMinecraft()
+ val displayText: String
+ displayText = if (DungeonRooms.instance.roomDetection.roomName == "undefined") {
+ "Where would you like to view secrets for: ${EnumChatFormatting.RED}undefined"
+ } else {
+ "Where would you like to view secrets for: ${EnumChatFormatting.GREEN}${DungeonRooms.instance.roomDetection.roomName}"
+ }
+ val displayWidth = mc.fontRendererObj.getStringWidth(displayText)
+ TextRenderer.drawText(mc, displayText, width / 2 - displayWidth / 2, height / 6 + 56, 1.0, false)
+ val noteText =
+ ("${EnumChatFormatting.GRAY}If you wish to have the hotkey go directly to DSG or SBP instead of this GUI run ${EnumChatFormatting.WHITE}/room set ")
+ val noteWidth = mc.fontRendererObj.getStringWidth(noteText)
+ TextRenderer.drawText(mc, noteText, width / 2 - noteWidth / 2, (height * 0.9).toInt(), 1.0, false)
+ super.drawScreen(mouseX, mouseY, partialTicks)
+ }
+
+ public override fun actionPerformed(button: GuiButton) {
+ val player: EntityPlayer = Minecraft.getMinecraft().thePlayer
+ if (button === discordClient) {
+ OpenLink.openDiscord("client")
+ player.closeScreen()
+ } else if (button === discordBrowser) {
+ OpenLink.openDiscord("browser")
+ player.closeScreen()
+ } else if (button === SBPSecrets) {
+ if (DungeonRooms.usingSBPSecrets) {
+ OpenLink.openSBPSecrets()
+ } else {
+ val sbpURL = "https://discord.gg/2UjaFqfPwJ"
+ val sbp =
+ ChatComponentText(EnumChatFormatting.YELLOW.toString() + "" + EnumChatFormatting.UNDERLINE + sbpURL)
+ sbp.chatStyle = sbp.chatStyle.setChatClickEvent(ClickEvent(ClickEvent.Action.OPEN_URL, sbpURL))
+ player.addChatMessage(
+ ChatComponentText(
+ "${EnumChatFormatting.RED}Dungeon Rooms: You need theSkyblock Personalized (SBP) Mod for this feature, get it from "
+ ).appendSibling(sbp)
+ )
+ }
+ player.closeScreen()
+ } else if (button === close) {
+ player.closeScreen()
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/gui/WaypointsGUI.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/gui/WaypointsGUI.kt
new file mode 100644
index 0000000..d533f06
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/gui/WaypointsGUI.kt
@@ -0,0 +1,335 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.gui
+
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.handlers.TextRenderer
+import io.github.quantizr.dungeonrooms.utils.Utils
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.GuiButton
+import net.minecraft.client.gui.GuiScreen
+import net.minecraft.client.gui.ScaledResolution
+import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.util.ChatComponentText
+import net.minecraft.util.EnumChatFormatting
+import java.io.IOException
+import java.util.*
+import kotlin.math.ceil
+
+class WaypointsGUI : GuiScreen() {
+ private var waypointsEnabled: GuiButton? = null
+ private var practiceModeEnabled: GuiButton? = null
+ private var showEntrance: GuiButton? = null
+ private var showSuperboom: GuiButton? = null
+ private var showSecrets: GuiButton? = null
+ private var showFairySouls: GuiButton? = null
+ private var showStonk: GuiButton? = null
+ private var disableWhenAllFound: GuiButton? = null
+ private var sneakToDisable: GuiButton? = null
+ private var close: GuiButton? = null
+ override fun doesGuiPauseGame(): Boolean {
+ return false
+ }
+
+ override fun initGui() {
+ super.initGui()
+ waypointGuiOpened = true
+ val sr = ScaledResolution(Minecraft.getMinecraft())
+ val height = sr.scaledHeight
+ val width = sr.scaledWidth
+ waypointsEnabled = GuiButton(0, width / 2 - 100 + 0, height / 6 - 5, 200, 20, waypointBtnText())
+ practiceModeEnabled = GuiButton(
+ 1,
+ width / 2 - 100 - 110,
+ height / 6 + 25,
+ 200,
+ 20,
+ "Practice Mode: " + getOnOff(DRMConfig.practiceModeOn)
+ )
+ showEntrance = GuiButton(
+ 2,
+ width / 2 - 100 + 110,
+ height / 6 + 25,
+ 200,
+ 20,
+ "Show Entrance Waypoints: " + getOnOff(DRMConfig.showEntrance)
+ )
+ showSuperboom = GuiButton(
+ 3,
+ width / 2 - 100 - 110,
+ height / 6 + 55,
+ 200,
+ 20,
+ "Show Superboom Waypoints: " + getOnOff(DRMConfig.showSuperboom)
+ )
+ showSecrets = GuiButton(
+ 4,
+ width / 2 - 100 + 110,
+ height / 6 + 55,
+ 200,
+ 20,
+ "Show Secret Waypoints: " + getOnOff(DRMConfig.showSecrets)
+ )
+ showFairySouls = GuiButton(
+ 5,
+ width / 2 - 100 - 110,
+ height / 6 + 85,
+ 200,
+ 20,
+ "Show Fairy Soul Waypoints: " + getOnOff(DRMConfig.showFairySouls)
+ )
+ showStonk = GuiButton(
+ 6,
+ width / 2 - 100 + 110,
+ height / 6 + 85,
+ 200,
+ 20,
+ "Show Stonk Waypoints: " + getOnOff(DRMConfig.showStonk)
+ )
+ sneakToDisable = GuiButton(
+ 7,
+ width / 2 - 100 - 110,
+ height / 6 + 115,
+ 200,
+ 20,
+ "Double-Tap Sneak to Hide Nearby: " + getOnOff(DRMConfig.sneakToDisable)
+ )
+ disableWhenAllFound = GuiButton(
+ 8,
+ width / 2 - 100 + 110,
+ height / 6 + 115,
+ 200,
+ 20,
+ "Disable when all secrets found: " + getOnOff(DRMConfig.disableWhenAllFound)
+ )
+ close = GuiButton(9, width / 2 - 100, height / 6 * 5, 200, 20, "Close")
+ buttonList.add(waypointsEnabled)
+ buttonList.add(practiceModeEnabled)
+ buttonList.add(showEntrance)
+ buttonList.add(showSuperboom)
+ buttonList.add(showSecrets)
+ buttonList.add(showFairySouls)
+ buttonList.add(showStonk)
+ buttonList.add(sneakToDisable)
+ buttonList.add(disableWhenAllFound)
+ buttonList.add(close)
+ if (Utils.inCatacombs) {
+ if (DungeonRooms.instance.waypoints.secretCount > 0) {
+ if (DungeonRooms.instance.waypoints.secretCount <= 5) {
+ for (i in 1..DungeonRooms.instance.waypoints.secretCount) {
+ val adjustPos = -40 * DungeonRooms.instance.waypoints.secretCount - 70 + 80 * i
+ secretButtonList[i - 1] = GuiButton(
+ 10 + i, width / 2 + adjustPos, height / 6 + 170, 60, 20, "$i: " + getOnOff(
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ )
+ )
+ buttonList.add(secretButtonList[i - 1])
+ }
+ } else {
+ for (i in 1..ceil(DungeonRooms.instance.waypoints.secretCount.toDouble() / 2).toInt()) {
+ val adjustPos = -40 * ceil(DungeonRooms.instance.waypoints.secretCount.toDouble() / 2).toInt() - 70 + 80 * i
+ secretButtonList[i - 1] = GuiButton(
+ 10 + i, width / 2 + adjustPos, height / 6 + 170, 60, 20, "$i: " + getOnOff(
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ )
+ )
+ buttonList.add(secretButtonList[i - 1])
+ }
+ for (i in (ceil((DungeonRooms.instance.waypoints.secretCount / 2).toDouble()) + 1).toInt() .. DungeonRooms.instance.waypoints.secretCount) {
+ val adjustPos = -40 * (DungeonRooms.instance.waypoints.secretCount - ceil(DungeonRooms.instance.waypoints.secretCount.toDouble() / 2)
+ .toInt()) - 70 + 80 * (i - ceil(DungeonRooms.instance.waypoints.secretCount.toDouble() / 2).toInt())
+ secretButtonList[i - 1] = GuiButton(
+ 10 + i, width / 2 + adjustPos, height / 6 + 200, 60, 20, "$i: " + getOnOff(
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ )
+ )
+ buttonList.add(secretButtonList[i - 1])
+ }
+ }
+ }
+ }
+ }
+
+ override fun drawScreen(mouseX: Int, mouseY: Int, partialTicks: Float) {
+ drawDefaultBackground()
+ val mc = Minecraft.getMinecraft()
+ val text1 = "§lDungeon Room Waypoints:"
+ val text1Width = mc.fontRendererObj.getStringWidth(text1)
+ TextRenderer.drawText(mc, text1, width / 2 - text1Width / 2, height / 6 - 25, 1.0, false)
+ val text2 = "(Use at your own risk)"
+ val text2Width = mc.fontRendererObj.getStringWidth(text2)
+ TextRenderer.drawText(
+ mc,
+ EnumChatFormatting.GRAY.toString() + text2,
+ width / 2 - text2Width / 2,
+ height / 6 - 15,
+ 1.0,
+ false
+ )
+ val text3 = "Toggle Room Specific Waypoints:"
+ val text3Width = mc.fontRendererObj.getStringWidth(text3)
+ TextRenderer.drawText(mc, text3, width / 2 - text3Width / 2, height / 6 + 140, 1.0, false)
+ val text4 = "(You can also press the # key matching the secret instead)"
+ val text4Width = mc.fontRendererObj.getStringWidth(text4)
+ TextRenderer.drawText(
+ mc,
+ EnumChatFormatting.GRAY.toString() + text4,
+ width / 2 - text4Width / 2,
+ height / 6 + 150,
+ 1.0,
+ false
+ )
+ if (!Utils.inCatacombs) {
+ val errorText = "Not in dungeons"
+ val errorTextWidth = mc.fontRendererObj.getStringWidth(errorText)
+ TextRenderer.drawText(
+ mc,
+ EnumChatFormatting.RED.toString() + errorText,
+ width / 2 - errorTextWidth / 2,
+ height / 6 + 170,
+ 1.0,
+ false
+ )
+ } else if (DungeonRooms.instance.waypoints.secretCount == 0) {
+ val errorText = "No secrets in this room"
+ val errorTextWidth = mc.fontRendererObj.getStringWidth(errorText)
+ TextRenderer.drawText(
+ mc,
+ EnumChatFormatting.RED.toString() + errorText,
+ width / 2 - errorTextWidth / 2,
+ height / 6 + 170,
+ 1.0,
+ false
+ )
+ }
+ super.drawScreen(mouseX, mouseY, partialTicks)
+ }
+
+ public override fun actionPerformed(button: GuiButton) {
+ val player: EntityPlayer = Minecraft.getMinecraft().thePlayer
+ if (button === waypointsEnabled) {
+ DRMConfig.waypointsEnabled = !DRMConfig.waypointsEnabled
+ waypointsEnabled!!.displayString = waypointBtnText()
+ if (DRMConfig.waypointsEnabled) {
+ player.addChatMessage(ChatComponentText("§eDungeon Rooms: Waypoints will now automatically show up when you enter a new dungeon room."))
+ }
+ } else if (button === practiceModeEnabled) {
+ DRMConfig.practiceModeOn = !DRMConfig.practiceModeOn
+ practiceModeEnabled!!.displayString = "Practice Mode: " + getOnOff(DRMConfig.practiceModeOn)
+ if (DRMConfig.practiceModeOn) {
+ player.addChatMessage(
+ ChatComponentText(
+ """
+ §eDungeon Rooms: Practice Mode has been enabled.
+ §e Waypoints will ONLY show up while you are pressing "${
+ DRMConfig.practiceModeKeyBind.display
+ }".
+ §r (Hotkey is configurable in Minecraft Controls menu)
+ """.trimIndent()
+ )
+ )
+ }
+ } else if (button === showEntrance) {
+ DRMConfig.showEntrance = !DRMConfig.showEntrance
+ showEntrance!!.displayString = "Show Entrance Waypoints: " + getOnOff(DRMConfig.showEntrance)
+ } else if (button === showSuperboom) {
+ DRMConfig.showSuperboom = !DRMConfig.showSuperboom
+ showSuperboom!!.displayString = "Show Superboom Waypoints: " + getOnOff(DRMConfig.showSuperboom)
+ } else if (button === showSecrets) {
+ DRMConfig.showSecrets = !DRMConfig.showSecrets
+ showSecrets!!.displayString = "Show Secret Waypoints: " + getOnOff(DRMConfig.showSecrets)
+ } else if (button === showFairySouls) {
+ DRMConfig.showFairySouls = !DRMConfig.showFairySouls
+ showFairySouls!!.displayString = "Show Fairy Soul Waypoints: " + getOnOff(DRMConfig.showFairySouls)
+ } else if (button === showStonk) {
+ DRMConfig.showStonk = !DRMConfig.showStonk
+ showStonk!!.displayString = "Show Stonk Waypoints: " + getOnOff(DRMConfig.showStonk)
+ } else if (button === sneakToDisable) {
+ DRMConfig.sneakToDisable = !DRMConfig.sneakToDisable
+ sneakToDisable!!.displayString = "Double-Tap Sneak to Hide Nearby: " + getOnOff(DRMConfig.sneakToDisable)
+ } else if (button === disableWhenAllFound) {
+ DRMConfig.disableWhenAllFound = !DRMConfig.disableWhenAllFound
+ disableWhenAllFound!!.displayString =
+ "Disable when all secrets found: " + getOnOff(DRMConfig.disableWhenAllFound)
+ } else if (button === close) {
+ player.closeScreen()
+ }
+ if (Utils.inCatacombs) {
+ if (DungeonRooms.instance.waypoints.secretCount > 0) {
+ for (i in 1..DungeonRooms.instance.waypoints.secretCount) {
+ if (button === secretButtonList[i - 1]) {
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1] = !DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ if (DungeonRooms.instance.roomDetection.roomName != "undefined") {
+ DungeonRooms.instance.waypoints.allSecretsMap.replace(DungeonRooms.instance.roomDetection.roomName, DungeonRooms.instance.waypoints.secretCompletionList)
+ }
+ secretButtonList[i - 1].displayString = "$i: " + getOnOff(
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ )
+ break
+ }
+ }
+ }
+ }
+ }
+
+ override fun onGuiClosed() {
+ waypointGuiOpened = false
+ }
+
+ @Throws(IOException::class)
+ override fun keyTyped(c: Char, keyCode: Int) {
+ super.keyTyped(c, keyCode)
+ if (waypointGuiOpened && Utils.inCatacombs) {
+ if (DungeonRooms.instance.waypoints.secretCount > 0) {
+ for (i in 1..DungeonRooms.instance.waypoints.secretCount) {
+ if (keyCode - 1 == i) {
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1] = !DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ if (DungeonRooms.instance.roomDetection.roomName != "undefined") {
+ DungeonRooms.instance.waypoints.allSecretsMap.replace(DungeonRooms.instance.roomDetection.roomName, DungeonRooms.instance.waypoints.secretCompletionList)
+ }
+ secretButtonList[i - 1].displayString = "$i: " + getOnOff(
+ DungeonRooms.instance.waypoints.secretCompletionList!![i - 1]
+ )
+ break
+ }
+ }
+ }
+ }
+ }
+
+ companion object {
+ var secretButtonList: MutableList = ArrayList(listOf(*arrayOfNulls(10)))
+ private var waypointGuiOpened = false
+ private fun waypointBtnText(): String {
+ return if (DRMConfig.waypointsEnabled) {
+ EnumChatFormatting.GREEN.toString() + "§lWaypoints Enabled"
+ } else {
+ EnumChatFormatting.RED.toString() + "§lWaypoints Disabled"
+ }
+ }
+
+ private fun getOnOff(bool: Boolean): String {
+ return if (bool) {
+ EnumChatFormatting.GREEN.toString() + "On"
+ } else {
+ EnumChatFormatting.RED.toString() + "Off"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/OpenLink.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/OpenLink.kt
new file mode 100644
index 0000000..437af38
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/OpenLink.kt
@@ -0,0 +1,107 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.handlers
+
+import io.github.quantizr.dungeonrooms.ChatTransmitter
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.gui.LinkGUI
+import net.minecraft.client.Minecraft
+import net.minecraft.event.ClickEvent
+import net.minecraft.util.ChatComponentText
+import net.minecraft.util.EnumChatFormatting
+import net.minecraftforge.client.ClientCommandHandler
+import net.minecraftforge.fml.client.FMLClientHandler
+import java.awt.Desktop
+import java.io.IOException
+import java.net.URI
+import java.net.URISyntaxException
+
+object OpenLink {
+ @JvmStatic
+ fun checkForLink(type: String?) {
+ val mc = Minecraft.getMinecraft()
+
+ DungeonRooms.instance.roomDataLoader.roomData[DungeonRooms.instance.roomDetection.roomName]?.let {
+ if (it.data.dgs == "null" && it.data.sbp == "null") {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: There are no channels/images for this room.")
+ return
+ }
+ }
+
+ when (type) {
+ "gui" -> mc.addScheduledTask { mc.displayGuiScreen(LinkGUI()) }
+ "dsg" -> openDiscord("client")
+ "sbp" -> if (DungeonRooms.usingSBPSecrets) {
+ openSBPSecrets()
+ } else {
+ val sbpURL = "https://discord.gg/2UjaFqfPwJ"
+ val sbp = ChatComponentText("${EnumChatFormatting.YELLOW}${EnumChatFormatting.UNDERLINE}$sbpURL")
+ sbp.chatStyle = sbp.chatStyle.setChatClickEvent(ClickEvent(ClickEvent.Action.OPEN_URL, sbpURL))
+ val thacomponent = ChatComponentText(
+ "${EnumChatFormatting.RED}Dungeon Rooms: You need the SkyblockPersonalized (SBP) Mod for this feature, get it from "
+ ).appendSibling(sbp)
+ ChatTransmitter.addToQueue(thacomponent)
+ }
+ }
+ }
+
+ fun openDiscord(type: String) {
+ val mc = Minecraft.getMinecraft()
+ val player = mc.thePlayer
+
+ val room = DungeonRooms.instance.roomDataLoader.roomData[DungeonRooms.instance.roomDetection.roomName] ?: return
+
+ if (room.data.dgs == "null") {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: There is no DSG channel for this room.")
+ return
+ }
+ try {
+ if (type == "client") {
+ player.addChatMessage(ChatComponentText("Dungeon Rooms: Opening DSG Discord in Client..."))
+ Desktop.getDesktop().browse(URI("discord://" + room.data.dgs))
+ } else {
+ player.addChatMessage(ChatComponentText("Dungeon Rooms: Opening DSG Discord in Browser..."))
+ Desktop.getDesktop().browse(URI("https://discord.com" + room.data.dgs))
+ }
+ } catch (e: IOException) {
+ e.printStackTrace()
+ } catch (e: URISyntaxException) {
+ e.printStackTrace()
+ }
+ }
+
+ fun openSBPSecrets() {
+
+ val room = DungeonRooms.instance.roomDataLoader.roomData[DungeonRooms.instance.roomDetection.roomName] ?: return
+
+ if (room.data.sbp == "null") {
+ ChatTransmitter.addToQueue("${EnumChatFormatting.RED}Dungeon Rooms: There are no SBP images for this room.")
+ return
+ }
+ val name = room.data.sbp
+ var category = room.data.category
+ when (category) {
+ "Puzzle", "Trap" -> category = "puzzles"
+ "L-shape" -> category = "L"
+ }
+ ClientCommandHandler.instance.executeCommand(
+ FMLClientHandler.instance().clientPlayerEntity,
+ "/secretoverride $category $name"
+ )
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/PacketHandler.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/PacketHandler.kt
new file mode 100644
index 0000000..10677ba
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/PacketHandler.kt
@@ -0,0 +1,40 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.handlers
+
+import io.github.quantizr.dungeonrooms.events.PacketEvent.ReceiveEvent
+import io.github.quantizr.dungeonrooms.events.PacketEvent.SendEvent
+import io.netty.channel.ChannelDuplexHandler
+import io.netty.channel.ChannelHandlerContext
+import io.netty.channel.ChannelPromise
+import net.minecraft.network.Packet
+import net.minecraftforge.common.MinecraftForge
+
+class PacketHandler : ChannelDuplexHandler() {
+ @Throws(Exception::class)
+ override fun channelRead(ctx: ChannelHandlerContext, msg: Any) {
+ if (msg is Packet<*>) MinecraftForge.EVENT_BUS.post(ReceiveEvent(msg))
+ super.channelRead(ctx, msg)
+ }
+
+ @Throws(Exception::class)
+ override fun write(ctx: ChannelHandlerContext, msg: Any, promise: ChannelPromise) {
+ if (msg is Packet<*>) MinecraftForge.EVENT_BUS.post(SendEvent(msg))
+ super.write(ctx, msg, promise)
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/ScoreboardHandler.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/ScoreboardHandler.kt
new file mode 100644
index 0000000..7344494
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/ScoreboardHandler.kt
@@ -0,0 +1,66 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.handlers
+
+import com.google.common.collect.Iterables
+import com.google.common.collect.Lists
+import net.minecraft.client.Minecraft
+import net.minecraft.scoreboard.Score
+import net.minecraft.scoreboard.ScorePlayerTeam
+import net.minecraft.util.StringUtils
+import java.util.stream.Collectors
+
+object ScoreboardHandler {
+ @JvmStatic
+ fun cleanSB(scoreboard: String?): String {
+ val nvString = StringUtils.stripControlCodes(scoreboard).toCharArray()
+ val cleaned = StringBuilder()
+ for (c in nvString) {
+ if (c.code in 21..126) {
+ cleaned.append(c)
+ }
+ }
+ return cleaned.toString()
+ }
+
+ @JvmStatic
+ val sidebarLines: List
+ get() {
+ val lines: MutableList = ArrayList()
+ if (Minecraft.getMinecraft().theWorld == null) return lines
+ val scoreboard = Minecraft.getMinecraft().theWorld.scoreboard ?: return lines
+ val objective = scoreboard.getObjectiveInDisplaySlot(1) ?: return lines
+ var scores = scoreboard.getSortedScores(objective)
+ val list = scores.stream()
+ .filter { input: Score? ->
+ input != null && input.playerName != null && !input.playerName
+ .startsWith("#")
+ }
+ .collect(Collectors.toList())
+ scores = if (list.size > 15) {
+ Lists.newArrayList(Iterables.skip(list, scores.size - 15))
+ } else {
+ list
+ }
+ for (score in scores) {
+ val team = scoreboard.getPlayersTeam(score.playerName)
+ lines.add(ScorePlayerTeam.formatPlayerName(team, score.playerName))
+ }
+ return lines
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/TextRenderer.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/TextRenderer.kt
new file mode 100644
index 0000000..f45335d
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/handlers/TextRenderer.kt
@@ -0,0 +1,73 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.handlers
+
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.Gui
+import net.minecraft.client.renderer.GlStateManager
+import net.minecraft.util.StringUtils
+import kotlin.math.roundToInt
+
+object TextRenderer : Gui() {
+ @JvmStatic
+ fun drawText(mc: Minecraft, text: String, x: Int, yy: Int, scale: Double, outline: Boolean) {
+ var y = yy
+ GlStateManager.pushMatrix()
+ GlStateManager.scale(scale, scale, scale)
+ y -= mc.fontRendererObj.FONT_HEIGHT
+ for (line in text.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) {
+ y += (mc.fontRendererObj.FONT_HEIGHT * scale).toInt()
+ if (outline) {
+ val noColourLine = StringUtils.stripControlCodes(line)
+ mc.fontRendererObj.drawString(
+ noColourLine, ((x / scale).roundToInt() - 1).toFloat(), (y / scale).roundToInt()
+ .toFloat(), 0x000000, false
+ )
+ mc.fontRendererObj.drawString(
+ noColourLine, ((x / scale).roundToInt() + 1).toFloat(), (y / scale).roundToInt()
+ .toFloat(), 0x000000, false
+ )
+ mc.fontRendererObj.drawString(
+ noColourLine,
+ (x / scale).roundToInt().toFloat(),
+ ((y / scale).roundToInt() - 1).toFloat(),
+ 0x000000,
+ false
+ )
+ mc.fontRendererObj.drawString(
+ noColourLine,
+ (x / scale).roundToInt().toFloat(),
+ ((y / scale).roundToInt() + 1).toFloat(),
+ 0x000000,
+ false
+ )
+ mc.fontRendererObj.drawString(
+ line, (x / scale).roundToInt().toFloat(), (y / scale).roundToInt()
+ .toFloat(), 0xFFFFFF, false
+ )
+ } else {
+ mc.fontRendererObj.drawString(
+ line, (x / scale).roundToInt().toFloat(), (y / scale).roundToInt()
+ .toFloat(), 0xFFFFFF, true
+ )
+ }
+ }
+ GlStateManager.popMatrix()
+ GlStateManager.color(1f, 1f, 1f, 1f)
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/BlockedChecker.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/BlockedChecker.kt
new file mode 100644
index 0000000..252bab4
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/BlockedChecker.kt
@@ -0,0 +1,5 @@
+package io.github.quantizr.dungeonrooms.pathfinding
+
+interface BlockedChecker {
+ fun isBlocked(x: Int, y: Int, z: Int): Boolean
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/CachedPathFinder.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/CachedPathFinder.kt
new file mode 100644
index 0000000..570f939
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/CachedPathFinder.kt
@@ -0,0 +1,146 @@
+package io.github.quantizr.dungeonrooms.pathfinding
+
+import com.github.benmanes.caffeine.cache.Caffeine
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.CachedAlgBuilder
+import io.github.quantizr.dungeonrooms.test.PathfindTest
+import io.github.quantizr.dungeonrooms.utils.BlockCache
+import kotlinx.coroutines.*
+import net.minecraft.client.Minecraft
+import net.minecraft.init.Blocks
+import net.minecraft.util.AxisAlignedBB
+import net.minecraft.util.BlockPos
+import org.joml.Vector3d
+import org.joml.Vector3i
+import java.util.*
+import java.util.concurrent.ConcurrentHashMap
+import kotlin.math.floor
+
+
+class CachedPathFinder {
+
+ private val algBuilder = CachedAlgBuilder(this)
+
+ private val pathfindCache = Caffeine.newBuilder()
+ .maximumSize(500)
+ .build { job: PfJob ->
+ val stat = algBuilder.buildPfAlg(job.to)
+ val now = System.nanoTime()
+ stat.pathfind(job)
+ if (DRMConfig.debug) {
+ PathfindTest.textToDisplay = listOf("Pathfinding took: ${(System.nanoTime() - now) / 1000000}ms")
+ }
+ return@build PfPath(job.id, stat.route)
+ }
+
+ val defaultAccessor: BlockedChecker = object : BlockedChecker {
+ val playerWidth = 0.3f
+ val preBuilt = Blocks.stone.getStateFromMeta(2)
+
+ private val cache = Caffeine.newBuilder()
+ .maximumSize(250_000)
+ .build { key: Vector3i ->
+ if(Minecraft.getMinecraft().theWorld == null) return@build null
+ val wX = key.x / 2.0f
+ val wY = key.y / 2.0f
+ val wZ = key.z / 2.0f
+ val bb = AxisAlignedBB.fromBounds(
+ (wX - playerWidth).toDouble(),
+ wY.toDouble(),
+ (wZ - playerWidth).toDouble(),
+ (wX + playerWidth).toDouble(),
+ (wY + 1.9f).toDouble(),
+ (wZ + playerWidth).toDouble()
+ )
+
+ val i = floor(bb.minX).toInt()
+ val j = floor(bb.maxX + 1.0).toInt()
+ val k = floor(bb.minY).toInt()
+ val l = floor(bb.maxY + 1.0).toInt()
+ val i1 = floor(bb.minZ).toInt()
+ val j1 = floor(bb.maxZ + 1.0).toInt()
+ val blockPos = BlockPos.MutableBlockPos()
+ val list = ArrayList()
+ for (k1 in i until j) {
+ for (l1 in i1 until j1) {
+ for (i2 in k - 1 until l) {
+ blockPos[k1, i2] = l1
+ val blockState = BlockCache.getBlockState(blockPos) ?: return@build true
+ if (blockState.block.material.blocksMovement()) {
+ if (!blockState.block.isFullCube || i2 != k - 1) {
+ if (blockState != preBuilt) {
+ if (blockState.block.isFullCube) {
+ return@build true
+ }
+ try {
+ blockState.block.addCollisionBoxesToList(
+ Minecraft.getMinecraft().theWorld,
+ blockPos,
+ blockState,
+ bb,
+ list,
+ null
+ )
+ } catch (e: Exception) {
+ return@build true
+ }
+ if (list.isNotEmpty()) {
+ return@build true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return@build false
+ }
+
+ override fun isBlocked(x: Int, y: Int, z: Int): Boolean {
+ return cache[Vector3i(x, y, z)]!!
+ }
+
+ }
+
+ private val scope = CoroutineScope(Dispatchers.Default)
+
+ fun destroy() {
+ scope.cancel()
+ pathfindCache.invalidateAll()
+ algBuilder.destroy()
+ }
+
+ private val currProcesed: MutableMap = ConcurrentHashMap()
+
+ /**
+ * [lockProcessingThisTarget] if true prevents multiple pathfinds from being processed at the same time
+ * to one destination
+ */
+ fun createPathAsync(
+ start: Vector3i,
+ target: Vector3i,
+ room: BlockedChecker = defaultAccessor,
+ id: String = UUID.randomUUID().toString(),
+ lockProcessingThisTarget: Boolean = false,
+ callback: (PfPath) -> Unit = {}
+ ) {
+ if(lockProcessingThisTarget) {
+ if (currProcesed[target] == true) {
+ return
+ }
+ currProcesed[target] = true
+ }
+ scope.async {
+ val path = pathfindCache[PfJob(
+ start,
+ Vector3d(target).add(.5, .5, .5),
+ room,
+ id
+ )]!!
+ callback(path)
+ if(lockProcessingThisTarget) currProcesed[target] = false
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/PfJob.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/PfJob.kt
new file mode 100644
index 0000000..0164b39
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/PfJob.kt
@@ -0,0 +1,6 @@
+package io.github.quantizr.dungeonrooms.pathfinding
+
+import org.joml.Vector3d
+import org.joml.Vector3i
+
+data class PfJob(val from: Vector3i, val to: Vector3d, val room: BlockedChecker, val id: String)
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/PfPath.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/PfPath.kt
new file mode 100644
index 0000000..941ca56
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/PfPath.kt
@@ -0,0 +1,6 @@
+package io.github.quantizr.dungeonrooms.pathfinding
+
+import org.joml.Vector3d
+import java.util.*
+
+data class PfPath(val id: String, val path: LinkedList)
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/AStarUtil.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/AStarUtil.kt
new file mode 100644
index 0000000..318eb0c
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/AStarUtil.kt
@@ -0,0 +1,48 @@
+package io.github.quantizr.dungeonrooms.pathfinding.algorithms
+
+import net.minecraft.util.MathHelper
+import org.joml.Vector3d
+import org.joml.Vector3i
+import java.util.*
+import kotlin.math.sqrt
+
+object AStarUtil {
+ class Node(val coordinate: Vector3i) {
+ var f = Float.MAX_VALUE
+ var g = Float.MAX_VALUE
+ var cacheMarker = 0
+
+ var parent: Node? = null
+ }
+
+ fun reconstructPath(current: Node): LinkedList {
+ val route = LinkedList()
+ var curr: Node? = current
+ while (curr!!.parent != null) {
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ curr = curr.parent
+ }
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ return route
+ }
+
+ fun distSq(x: Float, y: Float, z: Float): Float {
+ return MathHelper.sqrt_float(x * x + y * y + z * z)
+ }
+
+ fun distSq(x: Int, y: Int, z: Int): Float {
+ return sqrt((x * x + y * y + z * z).toDouble()).toFloat()
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/CachedAlgBuilder.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/CachedAlgBuilder.kt
new file mode 100644
index 0000000..10dcbbc
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/CachedAlgBuilder.kt
@@ -0,0 +1,34 @@
+package io.github.quantizr.dungeonrooms.pathfinding.algorithms
+
+import com.github.benmanes.caffeine.cache.Caffeine
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.pathfinding.CachedPathFinder
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.impl.AStarCornerCut
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.impl.AStarFineGrid
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.impl.ThetaStar
+import org.joml.Vector3d
+import java.time.Duration
+
+class CachedAlgBuilder(val parent: CachedPathFinder) {
+ // since we pathfind to the same destination and the world does not change,
+ // we can cache open nodes in the A* family of algorithms
+ private val cache = Caffeine.newBuilder()
+ .maximumSize(11)
+ .expireAfterWrite(Duration.ofMinutes(2))
+ .build { _: Vector3d ->
+ return@build when (DRMConfig.secretPathfindStrategy) {
+ 0 -> ThetaStar(parent.defaultAccessor)
+ 1 -> AStarCornerCut(parent.defaultAccessor)
+ 2 -> AStarFineGrid(parent.defaultAccessor)
+ else -> ThetaStar(parent.defaultAccessor)
+ }
+ }
+
+ fun buildPfAlg(destination: Vector3d): IPathfinderAlgorithm {
+ return cache.get(destination)!!
+ }
+
+ fun destroy() {
+ cache.invalidateAll()
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/IPathfinderAlgorithm.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/IPathfinderAlgorithm.kt
new file mode 100644
index 0000000..882667a
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/IPathfinderAlgorithm.kt
@@ -0,0 +1,18 @@
+package io.github.quantizr.dungeonrooms.pathfinding.algorithms
+
+import io.github.quantizr.dungeonrooms.pathfinding.BlockedChecker
+import io.github.quantizr.dungeonrooms.pathfinding.PfJob
+import org.joml.Vector3d
+import org.joml.Vector3i
+import java.util.*
+
+
+abstract class IPathfinderAlgorithm(open val roomAccessor: BlockedChecker) {
+ var route = LinkedList()
+ protected set
+
+ abstract fun pathfind(from: Vector3i, to:Vector3d, timeout: Float = 2000f): Boolean
+ fun pathfind(job: PfJob): Boolean {
+ return pathfind(job.from, job.to)
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/AStarCornerCut.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/AStarCornerCut.kt
new file mode 100644
index 0000000..423eda5
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/AStarCornerCut.kt
@@ -0,0 +1,182 @@
+package io.github.quantizr.dungeonrooms.pathfinding.algorithms.impl
+
+import io.github.quantizr.dungeonrooms.pathfinding.BlockedChecker
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.AStarUtil.Node
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.IPathfinderAlgorithm
+import net.minecraft.util.AxisAlignedBB
+import net.minecraft.util.MathHelper
+import org.joml.Vector3d
+import org.joml.Vector3i
+import java.util.*
+
+class AStarCornerCut(private val room: BlockedChecker) : IPathfinderAlgorithm(room) {
+ private var dx: Int = 0
+ private var dy: Int = 0
+ private var dz: Int = 0
+
+
+ private lateinit var destinationBB: AxisAlignedBB
+ private val nodeMap: MutableMap = HashMap()
+
+
+ private val open = PriorityQueue(
+ Comparator.comparing { a: Node? -> a?.f ?: Float.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.x ?: Int.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.y ?: Int.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.z ?: Int.MAX_VALUE }
+ )
+
+
+ private var lastSx = 0
+ private var lastSy = 0
+ private var lastSz = 0
+
+ private var pfindIdx = 0
+
+
+ private fun openNode(x: Int, y: Int, z: Int): Node {
+ val cord = Vector3i(x, y, z)
+ return nodeMap.getOrPut(cord) {
+ Node(cord)
+ }
+ }
+
+ private fun distSq(x: Float, y: Float, z: Float): Float {
+ return MathHelper.sqrt_float(x * x + y * y + z * z)
+ }
+
+
+ override fun pathfind(from: Vector3i, to: Vector3d, timeout: Float): Boolean {
+ dx = (to.x * 2).toInt()
+ dy = (to.y * 2).toInt()
+ dz = (to.z * 2).toInt()
+ destinationBB = AxisAlignedBB.fromBounds(
+ (dx - 2).toDouble(),
+ (dy - 2).toDouble(),
+ (dz - 2).toDouble(),
+ (dx + 2).toDouble(),
+ (dy + 2).toDouble(),
+ (dz + 2).toDouble()
+ )
+
+ pfindIdx++
+ if (lastSx != (from.x * 2)
+ || lastSy != (from.y * 2)
+ || lastSz != (from.z * 2)
+ ) {
+ open.clear()
+ }
+ lastSx = (from.x * 2)
+ lastSy = (from.y * 2)
+ lastSz = (from.z * 2)
+
+ val startNode = openNode(dx, dy, dz)
+ val goalNode = openNode(lastSx, lastSy, lastSz)
+ if (goalNode.parent != null) {
+ val route = LinkedList()
+ var curr: Node? = goalNode
+ while (curr!!.parent != null) {
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ curr = curr.parent
+ }
+ route.addLast(Vector3d(curr.coordinate.x / 2.0, curr.coordinate.y / 2.0 + 0.1, curr.coordinate.z / 2.0))
+ this.route = route
+ return true
+ }
+ startNode.g = 0f
+ startNode.f = 0f
+ goalNode.g = Int.MAX_VALUE.toFloat()
+ goalNode.f = Int.MAX_VALUE.toFloat()
+ open.add(startNode)
+
+ val end = System.currentTimeMillis() + timeout
+
+ while (!open.isEmpty()) {
+ if (System.currentTimeMillis() > end) {
+ return false
+ }
+ val n = open.poll()
+ if (n != null) {
+ if (n.cacheMarker == pfindIdx) continue
+ n.cacheMarker = pfindIdx
+ }
+ if (n === goalNode) {
+ // route = reconstructPath(startNode)
+ val route = LinkedList()
+ var curr: Node? = goalNode
+ while (curr!!.parent != null) {
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ curr = curr.parent
+ }
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ this.route = route
+ return true
+ }
+ for (z in -1..1) {
+ for (y in -1..1) {
+ for (x in -1..1) {
+ if (x == 0 && y == 0 && z == 0) continue
+ val neighbor = openNode(
+ n?.coordinate!!.x + x, n.coordinate.y + y, n.coordinate.z + z
+ )
+
+ // check blocked.
+ if (!(destinationBB.minX <= neighbor.coordinate.x
+ && neighbor.coordinate.x <= destinationBB.maxX
+ && destinationBB.minY <= neighbor.coordinate.y
+ && neighbor.coordinate.y <= destinationBB.maxY
+ && destinationBB.minZ <= neighbor.coordinate.z
+ && neighbor.coordinate.z <= destinationBB.maxZ // near destination
+ ||
+ !roomAccessor.isBlocked(neighbor.coordinate.x, neighbor.coordinate.y, neighbor.coordinate.z)
+ )
+ ) { // not blocked
+ continue
+ }
+ if (neighbor.cacheMarker == pfindIdx) continue
+ val gScore =
+ n.g.plus(
+ MathHelper.sqrt_float((x * x + y * y + z * z).toFloat())
+ ) // altho it's sq, it should be fine
+ if (gScore < neighbor.g) {
+ neighbor.parent = n
+ neighbor.g = gScore
+ neighbor.f = gScore + distSq(
+ (goalNode.coordinate.x - neighbor.coordinate.x).toFloat(),
+ (goalNode.coordinate.y - neighbor.coordinate.y).toFloat(),
+ (goalNode.coordinate.z - neighbor.coordinate.z).toFloat()
+ )
+ open.add(neighbor)
+ } else if (neighbor.cacheMarker != pfindIdx) {
+ neighbor.f = gScore + distSq(
+ (goalNode.coordinate.x - neighbor.coordinate.x).toFloat(),
+ (goalNode.coordinate.y - neighbor.coordinate.y).toFloat(),
+ (goalNode.coordinate.z - neighbor.coordinate.z).toFloat()
+ )
+ open.add(neighbor)
+ }
+ }
+ }
+ }
+ }
+ return true
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/AStarFineGrid.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/AStarFineGrid.kt
new file mode 100644
index 0000000..d5adce4
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/AStarFineGrid.kt
@@ -0,0 +1,173 @@
+package io.github.quantizr.dungeonrooms.pathfinding.algorithms.impl
+
+import io.github.quantizr.dungeonrooms.pathfinding.BlockedChecker
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.AStarUtil
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.AStarUtil.Node
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.IPathfinderAlgorithm
+import net.minecraft.util.AxisAlignedBB
+import net.minecraft.util.EnumFacing
+import net.minecraft.util.MathHelper
+import org.joml.Vector3d
+import org.joml.Vector3i
+import java.util.*
+
+class AStarFineGrid(room: BlockedChecker) : IPathfinderAlgorithm(room) {
+ var dx: Int = 0
+ var dy: Int = 0
+ var dz: Int = 0
+
+
+ private lateinit var destinationBB: AxisAlignedBB
+ private val nodeMap: MutableMap = HashMap()
+
+ private val open = PriorityQueue(
+ Comparator.comparing { a: Node? -> a?.f ?: Float.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.x ?: Int.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.y ?: Int.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.z ?: Int.MAX_VALUE }
+ )
+
+ var lastSx = 0
+ var lastSy = 0
+ var lastSz = 0
+
+
+ override fun pathfind(from: Vector3i, to: Vector3d, timeout: Float): Boolean {
+ pfindIdx++
+
+ dx = (to.x * 2).toInt()
+ dy = (to.y * 2).toInt()
+ dz = (to.z * 2).toInt()
+ destinationBB = AxisAlignedBB.fromBounds(
+ (dx - 2).toDouble(),
+ (dy - 2).toDouble(),
+ (dz - 2).toDouble(),
+ (dx + 2).toDouble(),
+ (dy + 2).toDouble(),
+ (dz + 2).toDouble()
+ )
+
+ if (lastSx != from.x * 2 || lastSy != from.y * 2 || lastSz != from.z * 2
+ ) open.clear()
+ lastSx = from.x * 2
+ lastSy = from.y * 2
+ lastSz = from.z * 2
+ val startNode = openNode(dx, dy, dz)
+ val goalNode = openNode(lastSx, lastSy, lastSz)
+ startNode.g = 0f
+ startNode.f = 0f
+ goalNode.g = Int.MAX_VALUE.toFloat()
+ goalNode.f = Int.MAX_VALUE.toFloat()
+ if (goalNode.parent != null) {
+ val route = LinkedList()
+ var curr: Node? = goalNode
+ while (curr!!.parent != null) {
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ curr = curr.parent
+ }
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ this.route = route
+ return true
+ }
+ open.add(startNode)
+ val end = System.currentTimeMillis() + timeout
+ while (!open.isEmpty()) {
+ if (System.currentTimeMillis() > end) {
+ return false
+ }
+ val n = open.poll()
+ if (n != null) {
+ if (n.cacheMarker == pfindIdx) continue
+ n.cacheMarker = pfindIdx
+ if (n === goalNode) {
+ val route = LinkedList()
+ var curr: Node? = goalNode
+ while (curr!!.parent != null) {
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ curr = curr.parent
+ }
+ route.addLast(
+ Vector3d(
+ curr.coordinate.x / 2.0,
+ curr.coordinate.y / 2.0 + 0.1,
+ curr.coordinate.z / 2.0
+ )
+ )
+ this.route = route
+ return true
+ }
+ }
+ for (value in EnumFacing.VALUES) {
+ val neighbor = openNode(
+ n!!.coordinate.x + value.frontOffsetX,
+ n.coordinate.y + value.frontOffsetY,
+ n.coordinate.z + value.frontOffsetZ
+ )
+
+ // check blocked.
+ if (destinationBB.minX <= neighbor.coordinate.x
+ && neighbor.coordinate.x <= destinationBB.maxX
+ && destinationBB.minY <= neighbor.coordinate.y
+ && neighbor.coordinate.y <= destinationBB.maxY
+ && destinationBB.minZ <= neighbor.coordinate.z
+ && neighbor.coordinate.z <= destinationBB.maxZ // near destination
+ || !roomAccessor.isBlocked(
+ neighbor.coordinate.x,
+ neighbor.coordinate.y,
+ neighbor.coordinate.z
+ )
+ ) {
+ val gScore = n.g + 1
+ val distSq = AStarUtil.distSq(
+ (goalNode.coordinate.x - neighbor.coordinate.x).toFloat(),
+ (goalNode.coordinate.y - neighbor.coordinate.y).toFloat(),
+ (goalNode.coordinate.z - neighbor.coordinate.z).toFloat()
+ )
+ if (gScore < neighbor.g) {
+ neighbor.parent = n
+ neighbor.g = gScore
+ neighbor.f = gScore + distSq
+ open.add(neighbor)
+ } else if (neighbor.cacheMarker != pfindIdx) {
+ neighbor.f = gScore + distSq
+ open.add(neighbor)
+ }
+ }
+ // not blocked
+ }
+ }
+ return true
+ }
+
+ private var pfindIdx = 0
+
+
+ private fun openNode(x: Int, y: Int, z: Int): Node {
+ val coordinate = Vector3i(x, y, z)
+ var node = nodeMap[coordinate]
+ if (node == null) {
+ node = Node(coordinate)
+ nodeMap[coordinate] = node
+ }
+ return node
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/ThetaStar.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/ThetaStar.kt
new file mode 100644
index 0000000..7fc86fe
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/pathfinding/algorithms/impl/ThetaStar.kt
@@ -0,0 +1,187 @@
+package io.github.quantizr.dungeonrooms.pathfinding.algorithms.impl
+
+import io.github.quantizr.dungeonrooms.pathfinding.BlockedChecker
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.AStarUtil
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.AStarUtil.Node
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.AStarUtil.reconstructPath
+import io.github.quantizr.dungeonrooms.pathfinding.algorithms.IPathfinderAlgorithm
+import net.minecraft.util.AxisAlignedBB
+import net.minecraft.util.EnumFacing
+import org.joml.Vector3d
+import org.joml.Vector3f
+import org.joml.Vector3i
+import java.util.*
+
+class ThetaStar(room: BlockedChecker) : IPathfinderAlgorithm(room) {
+ private var dx: Int = 0
+ private var dy: Int = 0
+ private var dz: Int = 0
+
+
+ private lateinit var destinationBB: AxisAlignedBB
+ private val nodeMap: MutableMap = HashMap()
+
+ private val open = PriorityQueue(
+ Comparator.comparing { a: Node? -> a?.f ?: Float.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.x ?: Int.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.y ?: Int.MAX_VALUE }
+ .thenComparing { _, a: Node? -> a?.coordinate?.z ?: Int.MAX_VALUE }
+ )
+
+ private var lastSx = 0
+ private var lastSy = 0
+ private var lastSz = 0
+
+ private var cacheMarker = 0
+
+ private fun openNode(x: Int, y: Int, z: Int): Node {
+ val coordinate = Vector3i(x, y, z)
+ return nodeMap.computeIfAbsent(coordinate) { Node(coordinate) }
+ }
+
+ /**
+ * raytrace and check if the path is blocked along the way
+ */
+ private fun lineofsight(a: Node?, b: Node?): Boolean {
+ if (a == null || b == null) return false
+ val s = Vector3f(a.coordinate)
+ val e = Vector3f(b.coordinate)
+ val dd = Vector3f()
+ e.sub(s, dd)
+ val len = dd.length()
+ dd.normalize()
+
+ var d = 0
+ while (d <= len) {
+ val x = s.x().toInt()
+ val y = s.y().toInt()
+ val z = s.z().toInt()
+ if (roomAccessor.isBlocked(x, y, z)) return false
+ if (roomAccessor.isBlocked(x + 1, y, z + 1)) return false
+ if (roomAccessor.isBlocked(x - 1, y, z - 1)) return false
+ if (roomAccessor.isBlocked(x + 1, y, z - 1)) return false
+ if (roomAccessor.isBlocked(x - 1, y, z + 1)) return false
+ s.add(dd)
+ d += 1
+ }
+ return true
+
+ }
+
+ override fun pathfind(from: Vector3i, to: Vector3d, timeout: Float): Boolean {
+ cacheMarker++
+
+ dx = (to.x * 2).toInt()
+ dy = (to.y * 2).toInt()
+ dz = (to.z * 2).toInt()
+ destinationBB = AxisAlignedBB.fromBounds(
+ (dx - 2).toDouble(),
+ (dy - 2).toDouble(),
+ (dz - 2).toDouble(),
+ (dx + 2).toDouble(),
+ (dy + 2).toDouble(),
+ (dz + 2).toDouble()
+ )
+
+ val i = from.x * 2
+ val i1 = from.y * 2
+ val i2 = from.z * 2
+ if (lastSx != i || lastSy != i1 || lastSz != i2) {
+ open.clear()
+ }
+ lastSx = i
+ lastSy = i1
+ lastSz = i2
+ if (roomAccessor.isBlocked(lastSx, lastSy, lastSz)) return false
+ val startNode = openNode(dx, dy, dz)
+ val goalNode = openNode(lastSx, lastSy, lastSz)
+ startNode.g = 0f
+ startNode.f = 0f
+ goalNode.g = Float.MAX_VALUE
+ goalNode.f = Float.MAX_VALUE
+ if (goalNode.parent != null) {
+ this.route = reconstructPath(goalNode)
+ return true
+ }
+ open.add(startNode)
+ val end = System.currentTimeMillis() + timeout
+ while (!open.isEmpty()) {
+ if (System.currentTimeMillis() > end) {
+ return false
+ }
+ val n = open.poll()
+
+
+ if (n != null) {
+ if (n.cacheMarker == cacheMarker) {
+ continue
+ }
+ n.cacheMarker = cacheMarker
+ }
+
+ if (n === goalNode) {
+ this.route = reconstructPath(goalNode)
+ return true
+ }
+ for (value in EnumFacing.VALUES) {
+ n!!
+ val neighbor = openNode(
+ n.coordinate.x + value.frontOffsetX,
+ n.coordinate.y + value.frontOffsetY,
+ n.coordinate.z + value.frontOffsetZ
+ )
+
+ if (destinationBB.minX <= neighbor.coordinate.x
+ && neighbor.coordinate.x <= destinationBB.maxX
+ && destinationBB.minY <= neighbor.coordinate.y
+ && neighbor.coordinate.y <= destinationBB.maxY
+ && destinationBB.minZ <= neighbor.coordinate.z
+ && neighbor.coordinate.z <= destinationBB.maxZ
+ || !roomAccessor.isBlocked(
+ neighbor.coordinate.x,
+ neighbor.coordinate.y,
+ neighbor.coordinate.z
+ )
+ ) {
+ if (neighbor.cacheMarker != cacheMarker) {
+ var flag = false
+ val distSq = AStarUtil.distSq(
+ goalNode.coordinate.x - neighbor.coordinate.x,
+ goalNode.coordinate.y - neighbor.coordinate.y,
+ goalNode.coordinate.z - neighbor.coordinate.z
+ )
+ val parent = n.parent
+ if (parent != null) {
+ val tempGScore = parent.g + AStarUtil.distSq(
+ parent.coordinate.x - neighbor.coordinate.x,
+ parent.coordinate.y - neighbor.coordinate.y,
+ parent.coordinate.z - neighbor.coordinate.z
+ )
+ if (tempGScore < neighbor.g && lineofsight(parent, neighbor)) {
+ neighbor.parent = parent
+ neighbor.g = tempGScore
+ neighbor.f = tempGScore + distSq
+ open.add(neighbor)
+ flag = true
+ }
+ }
+ if (!flag) {
+ val gScore = n.g + 1
+ if (gScore < neighbor.g) {
+ neighbor.parent = n
+ neighbor.g = gScore
+ neighbor.f = gScore + distSq
+ open.add(neighbor)
+ } else if (neighbor.cacheMarker != cacheMarker) {
+ neighbor.f = neighbor.g + distSq
+ open.add(neighbor)
+ }
+ }
+ }
+ }
+ }
+ }
+ return true
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/test/PathfindTest.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/test/PathfindTest.kt
new file mode 100644
index 0000000..20c9cfd
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/test/PathfindTest.kt
@@ -0,0 +1,87 @@
+package io.github.quantizr.dungeonrooms.test
+
+import io.github.quantizr.dungeonrooms.DRMConfig
+import io.github.quantizr.dungeonrooms.handlers.TextRenderer
+import io.github.quantizr.dungeonrooms.pathfinding.CachedPathFinder
+import io.github.quantizr.dungeonrooms.pathfinding.PfPath
+import io.github.quantizr.dungeonrooms.utils.WaypointUtils
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.ScaledResolution
+import net.minecraftforge.client.event.RenderGameOverlayEvent
+import net.minecraftforge.client.event.RenderWorldLastEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import org.joml.Vector3i
+import java.awt.Color
+
+
+class PathfindTest {
+
+ val pathFinder: CachedPathFinder = CachedPathFinder()
+
+ companion object {
+ var textToDisplay: List = emptyList()
+ }
+
+ private val donePathfindFutures: MutableMap = HashMap()
+
+ @SubscribeEvent
+ fun onTick(event: TickEvent.ClientTickEvent) {
+ if (event.phase != TickEvent.Phase.START || Minecraft.getMinecraft().thePlayer == null) return
+ if (!Minecraft.getMinecraft().isSingleplayer || !DRMConfig.debug) return
+
+ val locs = listOf(Vector3i(10, 6, 10), Vector3i(10, 6, 15))
+
+ for (loc in locs) {
+ pathFinder.createPathAsync(
+ Vector3i(
+ Minecraft.getMinecraft().thePlayer.posX.toInt(),
+ Minecraft.getMinecraft().thePlayer.posY.toInt(),
+ Minecraft.getMinecraft().thePlayer.posZ.toInt()
+ ),
+ loc,
+ lockProcessingThisTarget = true
+ ) {
+ donePathfindFutures[loc] = it
+ }
+
+ }
+ }
+
+ @SubscribeEvent
+ fun onWorldRender(event: RenderWorldLastEvent) {
+ if (!Minecraft.getMinecraft().isSingleplayer || !DRMConfig.debug) return
+ donePathfindFutures.forEach { (_, points) ->
+ WaypointUtils.drawLinesVec3(
+ points.path,
+ Color(255, 0, 0, 255),
+ Color(0, 255, 0, 255),
+ 2.0f,
+ event.partialTicks,
+ true
+ )
+ }
+ }
+
+
+ @SubscribeEvent
+ fun renderPlayerInfo(event: RenderGameOverlayEvent.Post) {
+ if (event.type != RenderGameOverlayEvent.ElementType.ALL) return
+ if (!Minecraft.getMinecraft().isSingleplayer || !DRMConfig.debug) return
+ val mc = Minecraft.getMinecraft()
+ if (textToDisplay.isNotEmpty()) {
+ val scaledResolution = ScaledResolution(mc)
+ var y = 0
+ for (line in textToDisplay) {
+ val roomStringWidth = mc.fontRendererObj.getStringWidth(line)
+ TextRenderer.drawText(
+ mc, line, scaledResolution.scaledWidth * DRMConfig.textLocX / 100 - roomStringWidth / 2,
+ scaledResolution.scaledHeight * DRMConfig.textLocY / 100 + y, 1.0, true
+ )
+ y += mc.fontRendererObj.FONT_HEIGHT
+ }
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/BlockCache.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/BlockCache.kt
new file mode 100644
index 0000000..f0cf140
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/BlockCache.kt
@@ -0,0 +1,49 @@
+package io.github.quantizr.dungeonrooms.utils
+
+import com.github.benmanes.caffeine.cache.Caffeine
+import net.minecraft.block.Block
+import net.minecraft.block.state.IBlockState
+import net.minecraft.client.Minecraft
+import net.minecraft.util.BlockPos
+import net.minecraftforge.event.world.WorldEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import org.joml.Vector3d
+import org.joml.Vector3i
+import java.time.Duration
+
+object BlockCache {
+ private val cache = Caffeine.newBuilder()
+ .maximumSize(30_000)
+ .build { key: BlockPos? ->
+ Minecraft.getMinecraft().theWorld.getBlockState(key)
+ }
+
+ @SubscribeEvent
+ fun onWorldLoad(e: WorldEvent.Load?) {
+ cache.invalidateAll()
+ }
+
+ fun getBlockState(pos: Vector3d): IBlockState? {
+ return cache[BlockPos(pos.x, pos.y, pos.z)]
+ }
+
+ fun getBlockState(pos: BlockPos, skip: Boolean = false): IBlockState? {
+ if(skip){
+ return Minecraft.getMinecraft().theWorld.getBlockState(pos)
+ }
+ return cache[pos]
+ }
+
+ fun getBlockState(pos: Vector3i): IBlockState? {
+ return cache[BlockPos(pos.x, pos.y, pos.z)]
+ }
+
+ fun getBlock(pos: Vector3i): Block {
+ return cache[BlockPos(pos.x, pos.y, pos.z)]!!.block
+ }
+
+ fun getBlock(pos: BlockPos): Block {
+ return cache[pos]!!.block
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/DungeonRoomInfoRegistry.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/DungeonRoomInfoRegistry.kt
new file mode 100755
index 0000000..5d1a7e9
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/DungeonRoomInfoRegistry.kt
@@ -0,0 +1,45 @@
+package io.github.quantizr.dungeonrooms.utils
+
+import com.google.gson.Gson
+import com.google.gson.JsonObject
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import org.apache.commons.io.IOUtils
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
+import java.io.*
+import java.util.*
+
+object DungeonRoomInfoRegistry {
+ val logger: Logger = LogManager.getLogger("DungeonRoomInfoRegistry")
+
+ val thing: MutableSet = HashSet()
+
+
+ @JvmStatic
+ fun loadAll(dir: File) {
+ val gson = Gson()
+
+ val lines = IOUtils.readLines(
+ Objects.requireNonNull(
+ DungeonRooms::class.java.getResourceAsStream("/roomdataindex.txt")
+ )
+ )
+ for (name in lines) {
+ if (name.endsWith(".json")) {
+ try {
+ DungeonRooms::class.java.getResourceAsStream("/$name")
+ .use { fis ->
+ fis?.let {
+ InputStreamReader(fis).use { yas ->
+ thing.add(gson.fromJson(yas, JsonObject::class.java))
+ }
+ }
+ }
+ } catch (e: Exception) {
+ logger.error(name)
+ e.printStackTrace()
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/MapUtils.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/MapUtils.kt
new file mode 100644
index 0000000..1590725
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/MapUtils.kt
@@ -0,0 +1,448 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.utils
+
+import io.github.quantizr.dungeonrooms.dungeons.data.room.RoomColor
+import io.github.quantizr.dungeonrooms.dungeons.data.room.RoomSize
+import net.minecraft.block.material.MapColor
+import net.minecraft.client.Minecraft
+import net.minecraft.init.Items
+import net.minecraft.util.BlockPos
+import net.minecraft.util.Vec3
+import java.awt.Point
+import java.util.*
+
+object MapUtils {
+ /**
+ * Checks whether the Skyblock Dungeon Map is in the player's hotbar
+ * @return whether the map exists
+ */
+ fun mapExists(): Boolean {
+ val mc = Minecraft.getMinecraft()
+ val mapSlot = mc.thePlayer.inventory.getStackInSlot(8) //check last slot where map should be
+ return if (mapSlot == null || mapSlot.item !== Items.filled_map || !mapSlot.hasDisplayName()) false else mapSlot.displayName.contains(
+ "Magical Map"
+ ) //make sure it is a map, not SB Menu or Spirit Bow, etc
+ }
+
+ /**
+ * Reads the hotbar map and converts it into a 2D Integer array of RGB colors which can be used by the rest of the
+ * code
+ *
+ * @return null if map not found, otherwise 128x128 Array of the RGB Integer colors of each point on the map
+ */
+ fun updatedMap(): Array>? {
+ if (!mapExists()) return null //make sure map exists
+ val mc = Minecraft.getMinecraft()
+ val mapSlot = mc.thePlayer.inventory.getStackInSlot(8) //get map ItemStack
+ val mapData = Items.filled_map.getMapData(mapSlot, mc.theWorld) ?: return null
+ val map = Array(128) { arrayOfNulls(128) }
+
+ //for loop code modified from net.minecraft.client.gui.MapItemRenderer.updateMapTexture()
+ for (i in 0..16383) {
+ val x = i % 128 //get x coordinate of pixel being read
+ val y = i / 128 //get y coordinate of pixel being read
+ val j = mapData.colors[i].toInt() and 255
+ var rgba: Int
+ rgba = if (j / 4 == 0) {
+ (i + i / 128 and 1) * 8 + 16 shl 24
+ } else {
+ MapColor.mapColorArray[j / 4].getMapColor(j and 3)
+ }
+ map[x][y] = rgba and 0x00FFFFFF //get rgb value from rgba
+ }
+ return map
+ }
+
+ /**
+ * This function finds the coordinates of the NW and NE corners of the entrance room on the hotbar map. This is
+ * later used to determine the size of the room grid on the hotbar map. Different floors have slightly different
+ * pixel widths of the rooms, so it is important for the mod to be able to identify the location and size of various
+ * portions of the room grid. Since all rooms within a floor are the same size on the hotbar map and since the
+ * entrance room is always there on the hotbar map, we get two corners from the entrance room to determine the
+ * scaling of the map as soon as the player enters.
+ *
+ * This function works by iterating through the map and looking for a green entrance room pixel. Once it finds one
+ * and determines that the map pixel above is a blank spot, it checks for map pixels on the left and right side.
+ *
+ * @return `entranceMapCorners[0]` is the coordinate of the left NW corner and `entranceMapCorners[1]` is the
+ * coordinate of the right NE corner
+ */
+ fun entranceMapCorners(map: Array>?): Array? {
+ if (map == null) return null
+ val corners = arrayOfNulls(2)
+ for (x in 0..127) {
+ for (y in 0..127) {
+ if (map[x][y] != null && map[x][y] == 31744 && map[x][y - 1] != null && map[x][y - 1] == 0) { //check for Green entrance room pixels and make sure row above is blank
+ if (map[x - 1][y] != null && map[x - 1][y] == 0) {
+ corners[0] = Point(x, y) //Left corner
+ } else if (map[x + 1][y] != null && map[x + 1][y] == 0) {
+ corners[1] = Point(x, y) //Right Corner
+ }
+ }
+ }
+ if (corners[0] != null && corners[1] != null) break
+ }
+ return corners
+ }
+
+ /**
+ * @return the coordinate of the NW hotbar map corner closest to the coordinate provided
+ */
+ fun getClosestNWMapCorner(mapPos: Point, leftCorner: Point, rightCorner: Point): Point {
+ val roomWidthAndGap =
+ rightCorner.x - leftCorner.x + 1 + 4 //+1 to count left corner block, +4 to account for gap between rooms
+ val origin = Point(leftCorner.x % roomWidthAndGap, leftCorner.y % roomWidthAndGap)
+ mapPos.x = mapPos.x + 2 //shift by 2 so room borders are evenly split
+ mapPos.y = mapPos.y + 2
+ var x = mapPos.x - mapPos.x % roomWidthAndGap + origin.x //round down to room size grid
+ var y = mapPos.y - mapPos.y % roomWidthAndGap + origin.y
+ if (x > mapPos.x) x -= roomWidthAndGap //make sure coordinates are being rounded down (in case origin value being too large)
+ if (y > mapPos.y) y -= roomWidthAndGap
+ return Point(x, y)
+ }
+
+ /**
+ * Skyblock Dungeon maps are aligned to a 32x32 block wide grid, allowing for math only calculation of corners
+ * @return the coordinate of the NW physical map corner closest to the coordinate provided
+ */
+ fun getClosestNWPhysicalCorner(vectorPos: Vec3): Point {
+ var shiftedPos = vectorPos.addVector(0.5, 0.0, 0.5) //shift by 0.5 so room borders are evenly split
+ shiftedPos = shiftedPos.addVector(8.0, 0.0, 8.0) //because Hypixel randomly shifted rooms in Skyblock 0.12.3
+ val x = (shiftedPos.xCoord - Math.floorMod(
+ shiftedPos.xCoord.toInt(),
+ 32
+ )).toInt() //room length 31, +1 to account for gap between rooms
+ val z = (shiftedPos.zCoord - Math.floorMod(shiftedPos.zCoord.toInt(), 32)).toInt()
+ return Point(x - 8, z - 8) //-8 for same reason as above
+ }
+
+ fun getClosestNWPhysicalCorner(blockPos: BlockPos): Point {
+ return getClosestNWPhysicalCorner(Vec3(blockPos.x.toDouble(), blockPos.y.toDouble(), blockPos.z.toDouble()))
+ }
+
+ /**
+ * @return the hotbar map coordinate corresponding to the physical map corner coordinate provided
+ */
+ fun physicalToMapCorner(
+ physicalClosestCorner: Point,
+ physicalLeftCorner: Point,
+ leftCorner: Point,
+ rightCorner: Point
+ ): Point {
+ val roomWidthAndGap =
+ rightCorner.x - leftCorner.x + 1 + 4 //+1 to count left corner block, +4 to account for gap between rooms
+ val xShift =
+ (physicalClosestCorner.x - physicalLeftCorner.x) / 32 //how many 1x1 grids away the closest corner is from entrance
+ val yShift = (physicalClosestCorner.y - physicalLeftCorner.y) / 32
+ val x = leftCorner.x + roomWidthAndGap * xShift //translate grid distance to the map
+ val y = leftCorner.y + roomWidthAndGap * yShift
+
+ //this function can return a value outside of 0-127 which are the bounds of the map
+ //must check bounds for any function using this
+ return Point(x, y)
+ }
+
+ /**
+ * @return the physical map coordinate corresponding to the hotbar map corner coordinate provided
+ */
+ fun mapToPhysicalCorner(mapCorner: Point, physicalLeftCorner: Point, leftCorner: Point, rightCorner: Point): Point {
+ val roomWidthAndGap =
+ rightCorner.x - leftCorner.x + 1 + 4 //+1 to count left corner block, +4 to account for gap between rooms
+ val xShift =
+ (mapCorner.x - leftCorner.x) / roomWidthAndGap //how many 1x1 grids away the closest corner is from entrance
+ val yShift = (mapCorner.y - leftCorner.y) / roomWidthAndGap
+ val x = physicalLeftCorner.x + 32 * xShift //translate grid distance to the physical
+ val y = physicalLeftCorner.y + 32 * yShift
+ return Point(x, y)
+ }
+
+ /**
+ * @return the color of the coordinate on the map as a String
+ */
+ fun getMapColor(point: Point, map: Array>?): RoomColor {
+ val x = point.x
+ val y = point.y
+
+ //physicalToMapCorner might be called when player is outside map zone e.g. boss room, returning a value outside
+ // the map coordinates which would otherwise call getMapColor to crash
+ if (x < 0 || y < 0 || x > 127 || y > 127) {
+ return RoomColor.UNDEFINED
+ }
+ return if (map != null) {
+ when (map[x][y]) {
+ 7488283 -> RoomColor.BROWN
+ 11685080 -> RoomColor.PURPLE
+ 15066419 -> RoomColor.YELLOW
+ 31744 -> RoomColor.GREEN
+ 15892389 -> RoomColor.PINK
+ 14188339 -> RoomColor.ORANGE
+ 16711680 -> RoomColor.RED
+ else -> RoomColor.UNDEFINED
+ }
+ } else RoomColor.UNDEFINED
+ }
+
+ /**
+ * Checks a point on each side the room corner coordinate for either empty space or a connected segment, each new
+ * segment is recursively checked until all neighboring segments have been added to a list
+ *
+ * @return a List of the coordinates of all segments of the same room as the corner coordinate provided
+ */
+ fun neighboringSegments(
+ originCorner: Point,
+ map: Array>?,
+ leftCorner: Point,
+ rightCorner: Point,
+ list: MutableList
+ ): MutableList {
+ var list = list
+ if (!list.contains(originCorner)) {
+ list.add(originCorner)
+ }
+ if (getMapColor(originCorner, map) != RoomColor.BROWN) return list //only continue if square is brown
+ val roomWidth = rightCorner.x - leftCorner.x + 1 //+1 to count left corner block
+ val pointsToCheck: MutableList = ArrayList()
+ pointsToCheck.add(Point(originCorner.x, originCorner.y - 1)) //up
+ pointsToCheck.add(Point(originCorner.x, originCorner.y + roomWidth)) //down
+ pointsToCheck.add(Point(originCorner.x - 1, originCorner.y)) //left
+ pointsToCheck.add(Point(originCorner.x + roomWidth, originCorner.y)) //right
+ val pointsToTransform: MutableList =
+ ArrayList() //pointsToCheck +/- 4 to jump gap and calc correct closest NW corner
+ pointsToTransform.add(Point(originCorner.x, originCorner.y - 1 - 4)) //up
+ pointsToTransform.add(Point(originCorner.x, originCorner.y + roomWidth + 4)) //down
+ pointsToTransform.add(Point(originCorner.x - 1 - 4, originCorner.y)) //left
+ pointsToTransform.add(Point(originCorner.x + roomWidth + 4, originCorner.y)) //right
+ for (i in 0..3) {
+ if (getMapColor(pointsToCheck[i], map) == RoomColor.BROWN) {
+ val newCorner = getClosestNWMapCorner(pointsToTransform[i], leftCorner, rightCorner)
+ if (!list.contains(newCorner)) {
+ list.add(newCorner)
+ list = neighboringSegments(
+ newCorner,
+ map,
+ leftCorner,
+ rightCorner,
+ list
+ ) //check for neighboring segments from the new point
+ }
+ }
+ }
+ return list
+ }
+
+ /**
+ * @return the size of the room given a location of each room segment
+ */
+ fun roomSize(segments: List): RoomSize {
+ //accepts either map segments or physical segments, does not matter
+ if (segments.size == 1) return RoomSize.`1x1`
+ if (segments.size == 2) return RoomSize.`1x2`
+ val x = HashSet()
+ val y = HashSet()
+ for (segment in segments) {
+ x.add(segment.x)
+ y.add(segment.y)
+ }
+ if (segments.size == 3) {
+ return if (x.size == 2 && y.size == 2) RoomSize.`L-shape` else RoomSize.`1x3`
+ }
+ return if (segments.size == 4) {
+ if (x.size == 2 && y.size == 2) RoomSize.`2x2` else RoomSize.`1x4`
+ } else RoomSize.undefined
+ }
+
+ /**
+ * @return the category of the room given size and color
+ */
+ fun roomCategory(roomSize: RoomSize, roomColor: RoomColor): String {
+ return if (roomSize == RoomSize.`1x1`) {
+ when (roomColor) {
+ RoomColor.BROWN -> "1x1"
+ RoomColor.PURPLE -> "Puzzle"
+ RoomColor.ORANGE -> "Trap"
+ RoomColor.GREEN, RoomColor.RED, RoomColor.PINK, RoomColor.YELLOW -> "General"
+ else -> "undefined"
+ }
+ } else {
+ roomSize.toString()
+ }
+ }
+
+ /**
+ * @return the coordinate of the player marker on the map
+ */
+ fun playerMarkerPos(): Point? {
+ if (!mapExists()) return null // make sure map exists
+ val mc = Minecraft.getMinecraft()
+ val mapSlot = mc.thePlayer.inventory.getStackInSlot(8) // get map ItemStack
+ val mapData = Items.filled_map.getMapData(mapSlot, mc.theWorld) ?: return null
+ if (mapData.mapDecorations != null) {
+ for ((_, value) in mapData.mapDecorations) {
+ if (value.func_176110_a().toInt() == 1) { // player marker
+ val x = value.func_176112_b() / 2 + 64
+ val y = value.func_176113_c() / 2 + 64
+ return Point(x, y)
+ }
+ }
+ }
+ return null
+ }
+
+ /**
+ * @return the location of the furthest corner in a direction given a list of segments
+ */
+ fun getPhysicalCornerPos(direction: String?, currentPhysicalSegments: List): Point? {
+ // For L-shapes, this will return the fourth corner as if it were a 2x2
+ val xSet = TreeSet() // TreeSet removes duplicates and sorts increasing
+ val ySet = TreeSet()
+ for (segment in currentPhysicalSegments) {
+ xSet.add(segment.x)
+ ySet.add(segment.y)
+ }
+ when (direction) {
+ "NW" -> return Point(xSet.first(), ySet.first())
+ "NE" -> return Point(xSet.last() + 30, ySet.first())
+ "SE" -> return Point(xSet.last() + 30, ySet.last() + 30)
+ "SW" -> return Point(xSet.first(), ySet.last() + 30)
+ }
+ return null
+ }
+
+ /**
+ * Rooms such as L-shape rooms only have one possible direction, so it is much faster to only have to compare one
+ * direction instead of rotating it 4 times. Similarly, rectangular shaped rooms have two possible directions,
+ * saving time instead of rotating it 4 times. Square shaped rooms must be checked in all four directions.
+ *
+ * @return the possible rotation directions which need to be checked
+ */
+ fun possibleDirections(roomSize: RoomSize, currentRoomSegments: List): List {
+ //can take physical or hotbar segments
+ //eliminates two possibilities for rectangular rooms, three possibilities for L-shape
+ val directions: MutableList = ArrayList()
+ if (roomSize == RoomSize.`1x1` || roomSize == RoomSize.`2x2`) {
+ directions.add("NW")
+ directions.add("NE")
+ directions.add("SE")
+ directions.add("SW")
+ } else {
+ val xSet = TreeSet() //TreeSet removes duplicates and sorts increasing
+ val ySet = TreeSet()
+ for (segment in currentRoomSegments) {
+ xSet.add(segment.x)
+ ySet.add(segment.y)
+ }
+ if (roomSize == RoomSize.`L-shape`) {
+ val x: List = ArrayList(xSet)
+ val y: List = ArrayList(ySet)
+ if (!currentRoomSegments.contains(
+ Point(
+ x[0],
+ y[0]
+ )
+ )
+ ) directions.add("SW") else if (!currentRoomSegments.contains(
+ Point(
+ x[0], y[1]
+ )
+ )
+ ) directions.add("SE") else if (!currentRoomSegments.contains(
+ Point(
+ x[1],
+ y[0]
+ )
+ )
+ ) directions.add("NW") else if (!currentRoomSegments.contains(
+ Point(
+ x[1], y[1]
+ )
+ )
+ ) directions.add("NE")
+ } else if (roomSize.toString().startsWith("1x")) { //not 1x1 bc else statement earlier
+ if (xSet.size >= 2 && ySet.size == 1) {
+ directions.add("NW")
+ directions.add("SE")
+ } else if (xSet.size == 1 && ySet.size >= 2) {
+ directions.add("NE")
+ directions.add("SW")
+ }
+ }
+ }
+ return directions
+ }
+
+ /**
+ * @return the actual coordinate of a block given the relative coordinate
+ */
+ fun actualToRelative(actual: BlockPos, cornerDirection: String?, locationOfCorner: Point): BlockPos {
+ var x = 0.0
+ var z = 0.0
+ when (cornerDirection) {
+ "NW" -> {
+ x = actual.x - locationOfCorner.getX()
+ z = actual.z - locationOfCorner.getY() //.getY in a point is the MC Z coord
+ }
+
+ "NE" -> {
+ x = actual.z - locationOfCorner.getY()
+ z = -(actual.x - locationOfCorner.getX())
+ }
+
+ "SE" -> {
+ x = -(actual.x - locationOfCorner.getX())
+ z = -(actual.z - locationOfCorner.getY())
+ }
+
+ "SW" -> {
+ x = -(actual.z - locationOfCorner.getY())
+ z = actual.x - locationOfCorner.getX()
+ }
+ }
+ return BlockPos(x, actual.y.toDouble(), z)
+ }
+
+ /**
+ * @return the relative coordinate of a block given the actual coordinate
+ */
+ fun relativeToActual(relative: BlockPos, cornerDirection: String?, locationOfCorner: Point): BlockPos {
+ var x = 0.0
+ var z = 0.0
+ when (cornerDirection) {
+ "NW" -> {
+ x = relative.x + locationOfCorner.getX()
+ z = relative.z + locationOfCorner.getY() //.getY in a point is the MC Z coord
+ }
+
+ "NE" -> {
+ x = -(relative.z - locationOfCorner.getX())
+ z = relative.x + locationOfCorner.getY()
+ }
+
+ "SE" -> {
+ x = -(relative.x - locationOfCorner.getX())
+ z = -(relative.z - locationOfCorner.getY())
+ }
+
+ "SW" -> {
+ x = relative.z + locationOfCorner.getX()
+ z = -(relative.x - locationOfCorner.getY())
+ }
+ }
+ return BlockPos(x, relative.y.toDouble(), z)
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/io/github/quantizr/dungeonrooms/utils/RoomDetectionUtils.java b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/RoomDetectionUtils.kt
similarity index 50%
rename from src/main/java/io/github/quantizr/dungeonrooms/utils/RoomDetectionUtils.java
rename to src/main/kotlin/io/github/quantizr/dungeonrooms/utils/RoomDetectionUtils.kt
index 881719e..12c1ffc 100644
--- a/src/main/java/io/github/quantizr/dungeonrooms/utils/RoomDetectionUtils.java
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/RoomDetectionUtils.kt
@@ -15,21 +15,19 @@
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*/
+package io.github.quantizr.dungeonrooms.utils
-package io.github.quantizr.dungeonrooms.utils;
+import net.minecraft.client.Minecraft
+import net.minecraft.util.BlockPos
+import net.minecraft.util.MathHelper
+import net.minecraft.util.Vec3
+import kotlin.math.abs
+import kotlin.math.atan
+import kotlin.math.tan
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.MathHelper;
-import net.minecraft.util.Vec3;
-
-import java.util.*;
-import java.util.List;
-
-public class RoomDetectionUtils {
- public static final double DEG_TO_RAD = Math.PI / 180.0;
- public static final double RAD_TO_DEG = 180.0 / Math.PI;
+object RoomDetectionUtils {
+ private const val DEG_TO_RAD = Math.PI / 180.0
+ private const val RAD_TO_DEG = 180.0 / Math.PI
/**
* This is a variation of Minecraft's Entity.getVectorForRotation but Minecraft and I seem to interpret yaw and
@@ -37,12 +35,12 @@ public class RoomDetectionUtils {
*
* @return vector corresponding to a rotation
*/
- public static Vec3 getVectorFromRotation(float yaw, float pitch) {
- float f = MathHelper.cos(-yaw * (float) DEG_TO_RAD - (float) Math.PI);
- float f1 = MathHelper.sin(-yaw * (float) DEG_TO_RAD - (float) Math.PI);
- float f2 = -MathHelper.cos(-pitch * (float) DEG_TO_RAD);
- float f3 = MathHelper.sin(-pitch * (float) DEG_TO_RAD);
- return new Vec3( f1 * f2, f3, f * f2);
+ private fun getVectorFromRotation(yaw: Float, pitch: Float): Vec3 {
+ val f = MathHelper.cos(-yaw * DEG_TO_RAD.toFloat() - Math.PI.toFloat())
+ val f1 = MathHelper.sin(-yaw * DEG_TO_RAD.toFloat() - Math.PI.toFloat())
+ val f2 = -MathHelper.cos(-pitch * DEG_TO_RAD.toFloat())
+ val f3 = MathHelper.sin(-pitch * DEG_TO_RAD.toFloat())
+ return Vec3((f1 * f2).toDouble(), f3.toDouble(), (f * f2).toDouble())
}
/**
@@ -54,37 +52,35 @@ public static Vec3 getVectorFromRotation(float yaw, float pitch) {
*
* @return a List of vectors which are within the player's FOV
*/
- public static List vectorsToRaytrace (int vectorQuantity) {
+ fun vectorsToRaytrace(vectorQuantity: Int): List {
//real # of vectors is vectorQuantity^2
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayerSP player = mc.thePlayer;
- List vectorList = new ArrayList<>();
+ val mc = Minecraft.getMinecraft()
+ val player = mc.thePlayer
+ val vectorList: MutableList = ArrayList()
//get vector location of player's eyes
- Vec3 eyes = new Vec3(player.posX, player.posY + (double)player.getEyeHeight(), player.posZ);
- float aspectRatio = (float) mc.displayWidth / (float) mc.displayHeight;
+ val eyes = Vec3(player.posX, player.posY + player.getEyeHeight().toDouble(), player.posZ)
+ val aspectRatio = mc.displayWidth.toFloat() / mc.displayHeight.toFloat()
//Vertical FOV: Minecraft FOV setting multiplied by FOV modifier (sprinting, speed effect, etc)
- double fovV = mc.gameSettings.fovSetting * mc.thePlayer.getFovModifier();
+ val fovV = (mc.gameSettings.fovSetting * mc.thePlayer.fovModifier).toDouble()
//Horizontal FOV: Thanks Minecraft for being weird and making it this complicated to calculate
- double fovH = Math.atan(aspectRatio * Math.tan(fovV * DEG_TO_RAD / 2)) * 2 * RAD_TO_DEG;
-
- float verticalSpacing = (float) (fovV * 0.8 / vectorQuantity); // * 0.8 to leave some boundary space
- float horizontalSpacing = (float) (fovH * 0.9 / vectorQuantity); // * 0.9 to leave some boundary space
-
- float playerYaw = player.rotationYaw;
- float playerPitch = player.rotationPitch;
-
+ val fovH = atan(aspectRatio * tan(fovV * DEG_TO_RAD / 2)) * 2 * RAD_TO_DEG
+ val verticalSpacing = (fovV * 0.8 / vectorQuantity).toFloat() // * 0.8 to leave some boundary space
+ val horizontalSpacing = (fovH * 0.9 / vectorQuantity).toFloat() // * 0.9 to leave some boundary space
+ var playerYaw = player.rotationYaw
+ var playerPitch = player.rotationPitch
if (mc.gameSettings.thirdPersonView == 2) {
//dumb but easy method of modifying vector direction if player is in reverse 3rd person
//does not account for the increased 3rd person FOV, but all vectors are within player view so who cares
- playerYaw = playerYaw + 180.0F;
- playerPitch = -playerPitch;
+ playerYaw += 180.0f
+ playerPitch = -playerPitch
}
-
- for (float h = (float) -(vectorQuantity - 1) / 2; h <= (float) (vectorQuantity - 1) / 2; h++) {
- for (float v = (float) -(vectorQuantity - 1) / 2; v <= (float) (vectorQuantity - 1) / 2; v++) {
- float yaw = h * horizontalSpacing;
- float pitch = v * verticalSpacing;
+ var h = -(vectorQuantity - 1).toFloat() / 2
+ while (h <= (vectorQuantity - 1).toFloat() / 2) {
+ var v = -(vectorQuantity - 1).toFloat() / 2
+ while (v <= (vectorQuantity - 1).toFloat() / 2) {
+ val yaw = h * horizontalSpacing
+ val pitch = v * verticalSpacing
/*
yaw and pitch are evenly spread out, but yaw needs to be scaled because MC FOV stretching weird.
@@ -92,47 +88,49 @@ public static List vectorsToRaytrace (int vectorQuantity) {
"/ (Math.abs(v/(vectorQuantity))+1)" because Higher FOVs do not stretch out the corners of the screen as
much as the rest of the screen, which would otherwise cause corner vectors to be outside FOV
*/
- float yawScaled = yaw * ((playerPitch*playerPitch/8100)+1) / (Math.abs(v/(vectorQuantity))+1);
+ val yawScaled = yaw * (playerPitch * playerPitch / 8100 + 1) / (abs(v / vectorQuantity) + 1)
//turn rotation into vector
- Vec3 direction = getVectorFromRotation(yawScaled + playerYaw, pitch + playerPitch);
+ val direction = getVectorFromRotation(yawScaled + playerYaw, pitch + playerPitch)
//add the new direction vector * 64 (meaning when the vector is raytraced, it will return the first
// block up to 64 blocks away) to the eyes vector to create the vector which will be raytraced
- vectorList.add(eyes.addVector(direction.xCoord * 64, direction.yCoord * 64, direction.zCoord * 64));
+ vectorList.add(eyes.addVector(direction.xCoord * 64, direction.yCoord * 64, direction.zCoord * 64))
+ v++
}
+ h++
}
- return vectorList;
+ return vectorList
}
/**
* list of whitelisted blocks which the raytraced blocks will be filtered with
*/
- public static HashSet whitelistedBlocks = new HashSet<>(Arrays.asList(
- //These are the blocks which are stored in the ".skeleton" files
- 100, //Stone
- 103, //Diorite
- 104, //Polished Diorite
- 105, //Andesite
- 106, //Polished Andesite
- 200, //Grass
- 300, //Dirt
- 301, //Coarse Dirt
- 400, //Cobblestone
- 700, //Bedrock
- 1800, //Oak Leaves
- 3507, //Gray Wool
- 4300, //Double Stone Slab
- 4800, //Mossy Cobblestone
- 8200, //Clay
- 9800, //Stone Bricks
- 9801, //Mossy Stone Bricks
- 9803, //Chiseled Stone Bricks
- 15907, //Gray Stained Clay
- 15909, //Cyan Stained Clay
+ var whitelistedBlocks = HashSet(
+ mutableListOf( //These are the blocks which are stored in the ".skeleton" files
+ 100, //Stone
+ 103, //Diorite
+ 104, //Polished Diorite
+ 105, //Andesite
+ 106, //Polished Andesite
+ 200, //Grass
+ 300, //Dirt
+ 301, //Coarse Dirt
+ 400, //Cobblestone
+ 700, //Bedrock
+ 1800, //Oak Leaves
+ 3507, //Gray Wool
+ 4300, //Double Stone Slab
+ 4800, //Mossy Cobblestone
+ 8200, //Clay
+ 9800, //Stone Bricks
+ 9801, //Mossy Stone Bricks
+ 9803, //Chiseled Stone Bricks
+ 15907, //Gray Stained Clay
+ 15909, //Cyan Stained Clay
15915 //Black Stained Clay
- ));
-
+ )
+ )
/**
* Checks if a block is part of a doorway (assuming the room is a 1x1), meaning that for larger rooms such as 2x2s,
@@ -141,23 +139,19 @@ public static List vectorsToRaytrace (int vectorQuantity) {
*
* @return whether a block would be part of a doorway.
*/
- public static boolean blockPartOfDoorway(BlockPos blockToCheck) {
+ fun blockPartOfDoorway(blockToCheck: BlockPos): Boolean {
//will also return true for blocks in the middle of rooms where there would be a doorway if it were a 1x1
- if (blockToCheck.getY() < 66 || blockToCheck.getY() > 73) return false;
-
- int relX = Math.floorMod((blockToCheck.getX() - 8), 32);
- int relZ = Math.floorMod((blockToCheck.getZ() - 8), 32);
-
- if (relX >= 13 && relX <= 17) {
- if (relZ <= 2) return true;
- if (relZ >= 28) return true;
+ if (blockToCheck.y < 66 || blockToCheck.y > 73) return false
+ val relX = Math.floorMod(blockToCheck.x - 8, 32)
+ val relZ = Math.floorMod(blockToCheck.z - 8, 32)
+ if (relX in 13..17) {
+ if (relZ <= 2) return true
+ if (relZ >= 28) return true
}
-
- if (relZ >= 13 && relZ <= 17) {
- if (relX <= 2) return true;
- if (relX >= 28) return true;
+ if (relZ in 13..17) {
+ if (relX <= 2) return true
+ if (relX >= 28) return true
}
-
- return false;
+ return false
}
-}
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/Utils.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/Utils.kt
new file mode 100644
index 0000000..adb7e57
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/Utils.kt
@@ -0,0 +1,177 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.utils
+
+import io.github.quantizr.dungeonrooms.DungeonRooms
+import io.github.quantizr.dungeonrooms.handlers.ScoreboardHandler.cleanSB
+import io.github.quantizr.dungeonrooms.handlers.ScoreboardHandler.sidebarLines
+import net.minecraft.client.Minecraft
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
+import org.apache.logging.log4j.core.LoggerContext
+import org.apache.logging.log4j.core.config.BaseConfiguration
+import org.apache.logging.log4j.core.config.LoggerConfig
+import java.io.File
+import java.io.ObjectInputStream
+import java.net.URI
+import java.nio.file.*
+import java.util.*
+import java.util.stream.Stream
+import java.util.zip.InflaterInputStream
+import kotlin.collections.ArrayList
+import kotlin.collections.HashMap
+
+object Utils {
+ @JvmField
+ var inSkyblock = false
+
+ @JvmField
+ var inCatacombs = false
+ var dungeonOverride = false
+
+ /**
+ * Taken from Danker's Skyblock Mod under the GNU General Public License v3.0
+ * https://github.com/bowser0000/SkyblockMod/blob/master/LICENSE
+ * @author bowser0000
+ */
+ @JvmStatic
+ fun checkForSkyblock() {
+ if (dungeonOverride) {
+ inSkyblock = true
+ return
+ }
+ val mc = Minecraft.getMinecraft()
+ if (mc?.theWorld != null && !mc.isSingleplayer) {
+ val scoreboardObj = mc.theWorld.scoreboard.getObjectiveInDisplaySlot(1)
+ if (scoreboardObj != null) {
+ val scObjName = cleanSB(scoreboardObj.displayName)
+ if (scObjName.contains("SKYBLOCK")) {
+ inSkyblock = true
+ return
+ }
+ }
+ }
+ inSkyblock = false
+ }
+
+ /**
+ * Taken from Danker's Skyblock Mod under the GNU General Public License v3.0
+ * https://github.com/bowser0000/SkyblockMod/blob/master/LICENSE
+ * @author bowser0000
+ */
+ @JvmStatic
+ fun checkForCatacombs() {
+ if (dungeonOverride) {
+ inCatacombs = true
+ return
+ }
+ if (inSkyblock) {
+ val scoreboard = sidebarLines
+ for (s in scoreboard) {
+ val sCleaned = cleanSB(s)
+ if (sCleaned.contains("The Catacombs")) {
+ inCatacombs = true
+ return
+ }
+ }
+ }
+ inCatacombs = false
+ }
+
+
+ fun yas(){
+
+ }
+
+ /**
+ * @return List of the paths to every .skeleton room data file
+ */
+ @JvmStatic
+ fun getAllPaths(folderName: String): List {
+ return ArrayList().also { paths ->
+ val uri: URI = this::class.java.getResource("/assets/dungeonrooms/$folderName").toURI()
+ val myPath: Path = if (uri.scheme.equals("jar")) {
+ val fileSystem: FileSystem =
+ FileSystems.newFileSystem(uri, emptyMap())
+ fileSystem.getPath("/assets/dungeonrooms/$folderName")
+ } else {
+ Paths.get(uri)
+ }
+
+ Files.walk(myPath, 3)
+ .filter { p: Path -> p.toString().endsWith(".skeleton") }
+ .forEach { p: Path -> paths.add(p) }
+ }
+ }
+
+ /**
+ * Converts the .skeleton files into a readable format.
+ * @return room data as a hashmap
+ */
+ fun pathsToRoomData(parentFolder: String, allPaths: List): HashMap {
+ val allRoomData = HashMap()
+
+ for (path in allPaths) {
+ if (path.parent.fileName.toString() == parentFolder) {
+ val name = path.fileName.toString()
+ val file = "/assets" + path.toString().split("assets")[1]
+ val input = DungeonRooms::instance::class.java.getResourceAsStream(file)
+ val data = ObjectInputStream(InflaterInputStream(input))
+ val roomData = data.readObject() as LongArray
+ allRoomData[name.replace(".skeleton", "")] = roomData
+ DungeonRooms.logger.debug("DungeonRooms: Loaded $name")
+ }
+ }
+ DungeonRooms.logger.info("DungeonRooms: Loaded ${allRoomData.size} $parentFolder rooms")
+ return allRoomData
+ }
+
+ /**
+ * Used to set the log level of just this mod
+ */
+ fun setLogLevel(logger: Logger, level: Level?) {
+ val ctx = LogManager.getContext(false) as LoggerContext
+ val config = ctx.configuration as BaseConfiguration
+ val loggerConfig = config.getLoggerConfig(logger.name)
+ var specificConfig = loggerConfig
+ if (loggerConfig.name != logger.name) {
+ specificConfig = LoggerConfig(logger.name, level, true)
+ specificConfig.parent = loggerConfig
+ config.addLogger(logger.name, specificConfig)
+ }
+ specificConfig.level = level
+ ctx.updateLoggers()
+ }
+
+ /**
+ * Packs block info into a single 8 byte primitive long. Normally, first a pair of bytes will be x coordinate, second
+ * pair will be y coordinate, third pair will be z coordinate, and last pair will be block id and metadata.
+ * @return primitive long containing block info
+ */
+ fun shortToLong(a: Short, b: Short, c: Short, d: Short): Long {
+ return (a.toInt() shl 16 or (b.toInt() and 0xFFFF)).toLong() shl 32 or ((c.toInt() shl 16 or (d.toInt() and 0xFFFF)).toLong() and 0xFFFFFFFFL)
+ }
+
+ /**
+ * @return Array of four shorts containing the values stored in the long
+ */
+ fun longToShort(l: Long): ShortArray {
+ return shortArrayOf((l shr 48).toShort(), (l shr 32).toShort(), (l shr 16).toShort(), l.toShort())
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/WaypointUtils.kt b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/WaypointUtils.kt
new file mode 100644
index 0000000..7fe0cf4
--- /dev/null
+++ b/src/main/kotlin/io/github/quantizr/dungeonrooms/utils/WaypointUtils.kt
@@ -0,0 +1,334 @@
+/*
+ * Dungeon Rooms Mod - Secret Waypoints for Hypixel Skyblock Dungeons
+ * Copyright 2021 Quantizr(_risk)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+package io.github.quantizr.dungeonrooms.utils
+
+import io.github.quantizr.dungeonrooms.test.PathfindTest
+import net.minecraft.client.Minecraft
+import net.minecraft.client.renderer.GlStateManager
+import net.minecraft.client.renderer.Tessellator
+import net.minecraft.client.renderer.vertex.DefaultVertexFormats
+import net.minecraft.util.*
+import org.joml.Vector3d
+import org.lwjgl.opengl.GL11
+import java.awt.Color
+import kotlin.math.cos
+import kotlin.math.roundToInt
+import kotlin.math.sin
+import kotlin.math.sqrt
+
+object WaypointUtils {
+ private val beaconBeam = ResourceLocation("textures/entity/beacon_beam.png")
+
+ /**
+ * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
+ * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
+ * @author Moulberry
+ */
+ fun renderBeaconBeam(x: Double, y: Double, z: Double, rgb: Int, alphaMultiplier: Float, partialTicks: Float) {
+ val height = 300
+ val bottomOffset = 0
+ val topOffset = bottomOffset + height
+ val tessellator = Tessellator.getInstance()
+ val worldrenderer = tessellator.worldRenderer
+ Minecraft.getMinecraft().textureManager.bindTexture(beaconBeam)
+ GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0f)
+ GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0f)
+ GlStateManager.disableLighting()
+ GlStateManager.enableCull()
+ GlStateManager.enableTexture2D()
+ GlStateManager.tryBlendFuncSeparate(770, 1, 1, 0)
+ GlStateManager.enableBlend()
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0)
+ val time = Minecraft.getMinecraft().theWorld.totalWorldTime + partialTicks.toDouble()
+ val d1 = MathHelper.func_181162_h(-time * 0.2 - MathHelper.floor_double(-time * 0.1).toDouble())
+ val r = (rgb shr 16 and 0xFF) / 255f
+ val g = (rgb shr 8 and 0xFF) / 255f
+ val b = (rgb and 0xFF) / 255f
+ val d2 = time * 0.025 * -1.5
+ val d4 = 0.5 + cos(d2 + 2.356194490192345) * 0.2
+ val d5 = 0.5 + sin(d2 + 2.356194490192345) * 0.2
+ val d6 = 0.5 + cos(d2 + Math.PI / 4.0) * 0.2
+ val d7 = 0.5 + sin(d2 + Math.PI / 4.0) * 0.2
+ val d8 = 0.5 + cos(d2 + 3.9269908169872414) * 0.2
+ val d9 = 0.5 + sin(d2 + 3.9269908169872414) * 0.2
+ val d10 = 0.5 + cos(d2 + 5.497787143782138) * 0.2
+ val d11 = 0.5 + sin(d2 + 5.497787143782138) * 0.2
+ val d14 = -1.0 + d1
+ val d15 = height.toDouble() * 2.5 + d14
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR)
+ worldrenderer.pos(x + d4, y + topOffset, z + d5).tex(1.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d4, y + bottomOffset, z + d5).tex(1.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d6, y + bottomOffset, z + d7).tex(0.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d6, y + topOffset, z + d7).tex(0.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d10, y + topOffset, z + d11).tex(1.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d10, y + bottomOffset, z + d11).tex(1.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d8, y + bottomOffset, z + d9).tex(0.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d8, y + topOffset, z + d9).tex(0.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d6, y + topOffset, z + d7).tex(1.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d6, y + bottomOffset, z + d7).tex(1.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d10, y + bottomOffset, z + d11).tex(0.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d10, y + topOffset, z + d11).tex(0.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d8, y + topOffset, z + d9).tex(1.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ worldrenderer.pos(x + d8, y + bottomOffset, z + d9).tex(1.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d4, y + bottomOffset, z + d5).tex(0.0, d14).color(r, g, b, 1.0f).endVertex()
+ worldrenderer.pos(x + d4, y + topOffset, z + d5).tex(0.0, d15).color(r, g, b, alphaMultiplier).endVertex()
+ tessellator.draw()
+ GlStateManager.disableCull()
+ val d12 = -1.0 + d1
+ val d13 = height + d12
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR)
+ worldrenderer.pos(x + 0.2, y + topOffset, z + 0.2).tex(1.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.2, y + bottomOffset, z + 0.2).tex(1.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.8, y + bottomOffset, z + 0.2).tex(0.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.8, y + topOffset, z + 0.2).tex(0.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.8, y + topOffset, z + 0.8).tex(1.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.8, y + bottomOffset, z + 0.8).tex(1.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.2, y + bottomOffset, z + 0.8).tex(0.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.2, y + topOffset, z + 0.8).tex(0.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.8, y + topOffset, z + 0.2).tex(1.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.8, y + bottomOffset, z + 0.2).tex(1.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.8, y + bottomOffset, z + 0.8).tex(0.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.8, y + topOffset, z + 0.8).tex(0.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.2, y + topOffset, z + 0.8).tex(1.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ worldrenderer.pos(x + 0.2, y + bottomOffset, z + 0.8).tex(1.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.2, y + bottomOffset, z + 0.2).tex(0.0, d12).color(r, g, b, 0.25f).endVertex()
+ worldrenderer.pos(x + 0.2, y + topOffset, z + 0.2).tex(0.0, d13).color(r, g, b, 0.25f * alphaMultiplier)
+ .endVertex()
+ tessellator.draw()
+ }
+
+ /**
+ * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
+ * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
+ * @author Moulberry
+ */
+ fun drawFilledBoundingBox(aabb: AxisAlignedBB, c: Color, alphaMultiplier: Float) {
+ GlStateManager.enableBlend()
+ GlStateManager.disableLighting()
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0)
+ GlStateManager.disableTexture2D()
+ val tessellator = Tessellator.getInstance()
+ val worldrenderer = tessellator.worldRenderer
+ GlStateManager.color(c.red / 255f, c.green / 255f, c.blue / 255f, c.alpha / 255f * alphaMultiplier)
+
+ //vertical
+ worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION)
+ worldrenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex()
+ tessellator.draw()
+ worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION)
+ worldrenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex()
+ tessellator.draw()
+ GlStateManager.color(
+ c.red / 255f * 0.8f,
+ c.green / 255f * 0.8f,
+ c.blue / 255f * 0.8f,
+ c.alpha / 255f * alphaMultiplier
+ )
+
+ //x
+ worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION)
+ worldrenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex()
+ tessellator.draw()
+ worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION)
+ worldrenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex()
+ tessellator.draw()
+ GlStateManager.color(
+ c.red / 255f * 0.9f,
+ c.green / 255f * 0.9f,
+ c.blue / 255f * 0.9f,
+ c.alpha / 255f * alphaMultiplier
+ )
+ //z
+ worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION)
+ worldrenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex()
+ tessellator.draw()
+ worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION)
+ worldrenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex()
+ worldrenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex()
+ tessellator.draw()
+ GlStateManager.enableTexture2D()
+ GlStateManager.disableBlend()
+ }
+
+ /**
+ * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
+ * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
+ * @author Moulberry
+ */
+ fun renderWaypointText(str: String?, loc: BlockPos, partialTicks: Float) {
+ GlStateManager.alphaFunc(516, 0.1f)
+ GlStateManager.pushMatrix()
+ val viewer = Minecraft.getMinecraft().renderViewEntity
+ val viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * partialTicks
+ val viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * partialTicks
+ val viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * partialTicks
+ var x = loc.x + 0.5 - viewerX
+ var y = loc.y - viewerY - viewer.eyeHeight
+ var z = loc.z + 0.5 - viewerZ
+ val distSq = x * x + y * y + z * z
+ val dist = sqrt(distSq)
+ if (distSq > 144) {
+ x *= 12 / dist
+ y *= 12 / dist
+ z *= 12 / dist
+ }
+ GlStateManager.translate(x, y, z)
+ GlStateManager.translate(0f, viewer.eyeHeight, 0f)
+ drawNametag(str)
+ GlStateManager.rotate(-Minecraft.getMinecraft().renderManager.playerViewY, 0.0f, 1.0f, 0.0f)
+ GlStateManager.rotate(Minecraft.getMinecraft().renderManager.playerViewX, 1.0f, 0.0f, 0.0f)
+ GlStateManager.translate(0f, -0.25f, 0f)
+ GlStateManager.rotate(-Minecraft.getMinecraft().renderManager.playerViewX, 1.0f, 0.0f, 0.0f)
+ GlStateManager.rotate(Minecraft.getMinecraft().renderManager.playerViewY, 0.0f, 1.0f, 0.0f)
+ drawNametag(EnumChatFormatting.YELLOW.toString() + dist.roundToInt() + "m")
+ GlStateManager.popMatrix()
+ GlStateManager.disableLighting()
+ }
+
+ /**
+ * Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
+ * https://github.com/Moulberry/NotEnoughUpdates/blob/master/LICENSE
+ * @author Moulberry
+ */
+ fun drawNametag(str: String?) {
+ val fontrenderer = Minecraft.getMinecraft().fontRendererObj
+ val f = 1.6f
+ val f1 = 0.016666668f * f
+ GlStateManager.pushMatrix()
+ GL11.glNormal3f(0.0f, 1.0f, 0.0f)
+ GlStateManager.rotate(-Minecraft.getMinecraft().renderManager.playerViewY, 0.0f, 1.0f, 0.0f)
+ GlStateManager.rotate(Minecraft.getMinecraft().renderManager.playerViewX, 1.0f, 0.0f, 0.0f)
+ GlStateManager.scale(-f1, -f1, f1)
+ GlStateManager.disableLighting()
+ GlStateManager.depthMask(false)
+ GlStateManager.disableDepth()
+ GlStateManager.enableBlend()
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0)
+ val tessellator = Tessellator.getInstance()
+ val worldrenderer = tessellator.worldRenderer
+ val i = 0
+ val j = fontrenderer.getStringWidth(str) / 2
+ GlStateManager.disableTexture2D()
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR)
+ worldrenderer.pos((-j - 1).toDouble(), (-1 + i).toDouble(), 0.0).color(0.0f, 0.0f, 0.0f, 0.25f).endVertex()
+ worldrenderer.pos((-j - 1).toDouble(), (8 + i).toDouble(), 0.0).color(0.0f, 0.0f, 0.0f, 0.25f).endVertex()
+ worldrenderer.pos((j + 1).toDouble(), (8 + i).toDouble(), 0.0).color(0.0f, 0.0f, 0.0f, 0.25f).endVertex()
+ worldrenderer.pos((j + 1).toDouble(), (-1 + i).toDouble(), 0.0).color(0.0f, 0.0f, 0.0f, 0.25f).endVertex()
+ tessellator.draw()
+ GlStateManager.enableTexture2D()
+ fontrenderer.drawString(str, -fontrenderer.getStringWidth(str) / 2, i, 553648127)
+ GlStateManager.depthMask(true)
+ fontrenderer.drawString(str, -fontrenderer.getStringWidth(str) / 2, i, -1)
+ GlStateManager.enableDepth()
+ GlStateManager.enableBlend()
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f)
+ GlStateManager.popMatrix()
+ }
+
+
+ fun getTotalLength(pos: List): Long {
+ var total = 0.0
+ for (i in 0 until pos.size - 1) {
+ total += pos[i].distance(pos[i + 1])
+ }
+ return total.toLong()
+ }
+
+ fun drawLinesVec3(
+ poses: List,
+ colour: Color,
+ colorMax: Color,
+ thickness: Float,
+ partialTicks: Float,
+ depth: Boolean
+ ) {
+ val render = Minecraft.getMinecraft().renderViewEntity
+ val worldRenderer = Tessellator.getInstance().worldRenderer
+ val realX = render.lastTickPosX + (render.posX - render.lastTickPosX) * partialTicks
+ val realY = render.lastTickPosY + (render.posY - render.lastTickPosY) * partialTicks
+ val realZ = render.lastTickPosZ + (render.posZ - render.lastTickPosZ) * partialTicks
+ GlStateManager.pushMatrix()
+ GlStateManager.translate(-realX, -realY, -realZ)
+ GlStateManager.disableTexture2D()
+ GlStateManager.disableLighting()
+ GL11.glDisable(GL11.GL_TEXTURE_2D)
+ GlStateManager.enableBlend()
+ GlStateManager.disableAlpha()
+ GL11.glLineWidth(thickness)
+ if (!depth) {
+ GlStateManager.disableDepth()
+ GlStateManager.depthMask(false)
+ }
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0)
+
+ GlStateManager.color(1f, 1f, 1f, 1f)
+ worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION_COLOR)
+
+
+ val totalLength = getTotalLength(poses)
+ for (pos in poses) {
+ // mix two color based on distance in a gradient
+
+ var progress = (totalLength - pos.x) / totalLength
+ if(progress < 0) progress = 0.0
+ val r = ((colorMax.red + ((colour.red - colorMax.red) * progress)).toFloat() / 255.0f)
+ val g = ((colorMax.green + ((colour.green - colorMax.green) * progress)).toFloat() / 255.0f)
+ val b = ((colorMax.blue + ((colour.blue - colorMax.blue) * progress)).toFloat() / 255.0f)
+ val a = ((colorMax.alpha + ((colour.alpha - colorMax.alpha) * progress)).toFloat() / 255.0f)
+
+ worldRenderer.pos(pos.x, pos.y, pos.z).color(r, g, b, a).endVertex()
+ }
+ Tessellator.getInstance().draw()
+ GlStateManager.translate(realX, realY, realZ)
+ GlStateManager.disableBlend()
+ GlStateManager.enableAlpha()
+ GlStateManager.enableTexture2D()
+ if (!depth) {
+ GlStateManager.enableDepth()
+ GlStateManager.depthMask(true)
+ }
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f)
+ GlStateManager.popMatrix()
+ GL11.glLineWidth(1f)
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/00d66020-b34e-429d-9fd3-696bc15cfce2.json b/src/main/resources/dgroomdata/00d66020-b34e-429d-9fd3-696bc15cfce2.json
new file mode 100644
index 0000000..9d751d7
--- /dev/null
+++ b/src/main/resources/dgroomdata/00d66020-b34e-429d-9fd3-696bc15cfce2.json
@@ -0,0 +1,1672 @@
+{
+ "isUserMade": false,
+ "shape": 1,
+ "color": 63,
+ "blocks": [
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 159,
+ 159,
+ 159,
+ 159,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 1,
+ 1,
+ 98,
+ 98,
+ 159,
+ 159,
+ 159,
+ 159,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 144,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 0,
+ 144,
+ 144,
+ 0,
+ 98,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 50,
+ 0,
+ 0,
+ 0,
+ 17,
+ 0,
+ 0,
+ 18,
+ 18,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 136,
+ 5,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 0,
+ 5,
+ 134,
+ 0,
+ 0,
+ 0,
+ 0,
+ 5,
+ 136,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 1,
+ 134,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 98,
+ 98,
+ 98,
+ 1,
+ 98,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 51,
+ 109,
+ 109,
+ 109,
+ 109,
+ 109,
+ 51,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 50,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 144,
+ 0,
+ 0,
+ 0,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 4,
+ 48,
+ 4,
+ 4,
+ 4,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 48,
+ 4,
+ 48,
+ 48,
+ 48,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 144,
+ 0,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 144,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ]
+ ],
+ "uuid": "00d66020-b34e-429d-9fd3-696bc15cfce2",
+ "name": "red-green",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "chest-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 16,
+ "y": 5,
+ "z": 2
+ },
+ "secretType": "CHEST",
+ "preRequisite": [
+ "door-1:open"
+ ]
+ },
+ "door-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 15,
+ "y": 7,
+ "z": 8
+ },
+ {
+ "x": 15,
+ "y": 6,
+ "z": 8
+ },
+ {
+ "x": 15,
+ "y": 5,
+ "z": 8
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 8
+ },
+ {
+ "x": 16,
+ "y": 7,
+ "z": 8
+ },
+ {
+ "x": 16,
+ "y": 6,
+ "z": 8
+ },
+ {
+ "x": 16,
+ "y": 5,
+ "z": 8
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 8
+ },
+ {
+ "x": 17,
+ "y": 7,
+ "z": 8
+ },
+ {
+ "x": 17,
+ "y": 6,
+ "z": 8
+ },
+ {
+ "x": 17,
+ "y": 5,
+ "z": 8
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 8
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-1:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "lever-1": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 16,
+ "y": -9,
+ "z": 2
+ },
+ "preRequisite": [],
+ "triggering": "door-1"
+ },
+ "lever-2": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 16,
+ "y": 15,
+ "z": 28
+ },
+ "preRequisite": [],
+ "triggering": "door-2"
+ },
+ "door-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 15,
+ "y": -6,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": -7,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": -8,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": -9,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": -6,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": -7,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": -8,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": -9,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": -6,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": -7,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": -8,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": -9,
+ "z": 29
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-2:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "itemdrop-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 16,
+ "y": -9,
+ "z": 30
+ },
+ "secretType": "ITEM_DROP",
+ "preRequisite": []
+ },
+ "itemdrop-2": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 29,
+ "y": 7,
+ "z": 18
+ },
+ "secretType": "ITEM_DROP",
+ "preRequisite": [
+ "superboom-1:open"
+ ]
+ },
+ "crypt-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 6,
+ "y": 14,
+ "z": 20
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "z": 20
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "z": 20
+ },
+ {
+ "x": 7,
+ "y": 13,
+ "z": 20
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 20
+ },
+ {
+ "x": 8,
+ "y": 13,
+ "z": 20
+ },
+ {
+ "x": 6,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "z": 21
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 7,
+ "y": 13,
+ "z": 21
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 8,
+ "y": 13,
+ "z": 21
+ },
+ {
+ "x": 6,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 7,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 8,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 6,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "z": 23
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 7,
+ "y": 13,
+ "z": 23
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 8,
+ "y": 13,
+ "z": 23
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "crypt-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 24,
+ "y": 14,
+ "z": 20
+ },
+ {
+ "x": 24,
+ "y": 13,
+ "z": 20
+ },
+ {
+ "x": 25,
+ "y": 14,
+ "z": 20
+ },
+ {
+ "x": 25,
+ "y": 13,
+ "z": 20
+ },
+ {
+ "x": 26,
+ "y": 14,
+ "z": 20
+ },
+ {
+ "x": 26,
+ "y": 13,
+ "z": 20
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 24,
+ "y": 13,
+ "z": 21
+ },
+ {
+ "x": 25,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 25,
+ "y": 13,
+ "z": 21
+ },
+ {
+ "x": 26,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 26,
+ "y": 13,
+ "z": 21
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 24,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 25,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 25,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 26,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 26,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 24,
+ "y": 13,
+ "z": 23
+ },
+ {
+ "x": 25,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 25,
+ "y": 13,
+ "z": 23
+ },
+ {
+ "x": 26,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 26,
+ "y": 13,
+ "z": 23
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "superboom-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 25,
+ "y": 9,
+ "z": 17
+ },
+ {
+ "x": 25,
+ "y": 8,
+ "z": 17
+ },
+ {
+ "x": 25,
+ "y": 7,
+ "z": 17
+ },
+ {
+ "x": 25,
+ "y": 9,
+ "z": 18
+ },
+ {
+ "x": 25,
+ "y": 8,
+ "z": 18
+ },
+ {
+ "x": 25,
+ "y": 7,
+ "z": 18
+ },
+ {
+ "x": 25,
+ "y": 9,
+ "z": 19
+ },
+ {
+ "x": 25,
+ "y": 8,
+ "z": 19
+ },
+ {
+ "x": 25,
+ "y": 7,
+ "z": 19
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "BreakableWall"
+ }
+ },
+ "totalSecrets": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/01949106-2ddc-4601-9b4c-e934f5d373a6.json b/src/main/resources/dgroomdata/01949106-2ddc-4601-9b4c-e934f5d373a6.json
new file mode 100644
index 0000000..baedf79
--- /dev/null
+++ b/src/main/resources/dgroomdata/01949106-2ddc-4601-9b4c-e934f5d373a6.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,1,1,0,0,0,0,0,0,0,139,1,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,69,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,159,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,1,139,0,0,0,0,0,0,0,1,139,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,101,101,101,98,1,1,50,0,0,0,0,0,50,1,1,109,101,101,101,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,0,0,0,0,98,98,1,0,0,0,0,0,139,98,98,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,159,144,0,0,0,0,0,98,98,1,0,0,0,0,0,139,98,109,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,109,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,144,0,0,0,0,98,98,0,0,0,0,0,0,0,109,98,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,-1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,109,109,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,-1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,-1,0,0,0,0,0,109,98,0,0,0,0,0,0,18,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,0,0,0,0,0,109,98,139,0,0,0,0,0,139,98,98,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,50,0,0,0,0,98,98,1,0,0,0,0,0,139,98,98,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,101,101,101,98,1,1,50,0,0,0,0,0,50,1,1,98,101,101,101,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,50,0,0,0,0,139,139,0,0,0,0,0,0,0,139,1,50,0,0,0,50,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,50,0,0,0,0,1,139,0,0,0,0,0,0,0,139,1,50,0,0,0,50,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"01949106-2ddc-4601-9b4c-e934f5d373a6","name":"Redstone-key","processorId":"default","properties":{},"mechanics":{"key-slot":{"secretPoint":{"x":24,"y":-2,"z":28},"preRequisite":["door-1:open","redstone-key:found"],"mechType":"Dummy"},"chest-1":{"mechType":"Secret","secretPoint":{"x":8,"y":-8,"z":29},"secretType":"CHEST","preRequisite":["door-2:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":4,"y":0,"z":6},"preRequisite":["crypt-1:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":21,"y":4,"z":25},{"x":21,"y":3,"z":25},{"x":21,"y":2,"z":25},{"x":21,"y":1,"z":25},{"x":21,"y":0,"z":25},{"x":21,"y":-1,"z":25},{"x":21,"y":4,"z":26},{"x":21,"y":3,"z":26},{"x":21,"y":2,"z":26},{"x":21,"y":1,"z":26},{"x":21,"y":0,"z":26},{"x":21,"y":-1,"z":26},{"x":21,"y":4,"z":27},{"x":21,"y":3,"z":27},{"x":21,"y":2,"z":27},{"x":21,"y":1,"z":27},{"x":21,"y":0,"z":27},{"x":21,"y":-1,"z":27}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"door-2":{"secretPoint":{"offsetPointList":[{"x":8,"y":-2,"z":19},{"x":8,"y":-2,"z":20},{"x":8,"y":-2,"z":21},{"x":8,"y":-2,"z":22}]},"preRequisite":["key-slot:click"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":26,"y":-1,"z":26},"secretType":"ITEM_DROP","preRequisite":["door-1:open"]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":4,"y":0,"z":25},{"x":4,"y":-1,"z":25},{"x":5,"y":0,"z":25},{"x":5,"y":-1,"z":25},{"x":6,"y":0,"z":25},{"x":6,"y":-1,"z":25},{"x":7,"y":0,"z":25},{"x":7,"y":-1,"z":25},{"x":4,"y":0,"z":26},{"x":4,"y":-1,"z":26},{"x":5,"y":0,"z":26},{"x":5,"y":-1,"z":26},{"x":6,"y":0,"z":26},{"x":6,"y":-1,"z":26},{"x":7,"y":0,"z":26},{"x":7,"y":-1,"z":26},{"x":4,"y":0,"z":27},{"x":4,"y":-1,"z":27},{"x":5,"y":0,"z":27},{"x":5,"y":-1,"z":27},{"x":6,"y":0,"z":27},{"x":6,"y":-1,"z":27},{"x":7,"y":0,"z":27},{"x":7,"y":-1,"z":27}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":23,"y":-2,"z":19},{"x":23,"y":-3,"z":19},{"x":24,"y":-2,"z":19},{"x":24,"y":-3,"z":19},{"x":25,"y":-2,"z":19},{"x":25,"y":-3,"z":19},{"x":23,"y":-2,"z":20},{"x":23,"y":-3,"z":20},{"x":24,"y":-2,"z":20},{"x":24,"y":-3,"z":20},{"x":25,"y":-2,"z":20},{"x":25,"y":-3,"z":20},{"x":23,"y":-2,"z":21},{"x":23,"y":-3,"z":21},{"x":24,"y":-2,"z":21},{"x":24,"y":-3,"z":21},{"x":25,"y":-2,"z":21},{"x":25,"y":-3,"z":21},{"x":23,"y":-2,"z":22},{"x":23,"y":-3,"z":22},{"x":24,"y":-2,"z":22},{"x":24,"y":-3,"z":22},{"x":25,"y":-2,"z":22},{"x":25,"y":-3,"z":22}]},"preRequisite":[],"mechType":"Tomb"},"redstone-key":{"mechType":"Secret","secretPoint":{"x":5,"y":0,"z":11},"secretType":"ESSENCE","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":23,"y":-2,"z":10},{"x":23,"y":-3,"z":10},{"x":24,"y":-2,"z":10},{"x":24,"y":-3,"z":10},{"x":25,"y":-2,"z":10},{"x":25,"y":-3,"z":10},{"x":23,"y":-2,"z":11},{"x":23,"y":-3,"z":11},{"x":24,"y":-2,"z":11},{"x":24,"y":-3,"z":11},{"x":25,"y":-2,"z":11},{"x":25,"y":-3,"z":11},{"x":23,"y":-2,"z":12},{"x":23,"y":-3,"z":12},{"x":24,"y":-2,"z":12},{"x":24,"y":-3,"z":12},{"x":25,"y":-2,"z":12},{"x":25,"y":-3,"z":12},{"x":23,"y":-2,"z":13},{"x":23,"y":-3,"z":13},{"x":24,"y":-2,"z":13},{"x":24,"y":-3,"z":13},{"x":25,"y":-2,"z":13},{"x":25,"y":-3,"z":13}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":0,"z":5},{"x":5,"y":-1,"z":5},{"x":6,"y":0,"z":5},{"x":6,"y":-1,"z":5},{"x":7,"y":0,"z":5},{"x":7,"y":-1,"z":5},{"x":8,"y":0,"z":5},{"x":8,"y":-1,"z":5},{"x":5,"y":0,"z":6},{"x":5,"y":-1,"z":6},{"x":6,"y":0,"z":6},{"x":6,"y":-1,"z":6},{"x":7,"y":0,"z":6},{"x":7,"y":-1,"z":6},{"x":8,"y":0,"z":6},{"x":8,"y":-1,"z":6},{"x":5,"y":0,"z":7},{"x":5,"y":-1,"z":7},{"x":6,"y":0,"z":7},{"x":6,"y":-1,"z":7},{"x":7,"y":0,"z":7},{"x":7,"y":-1,"z":7},{"x":8,"y":0,"z":7},{"x":8,"y":-1,"z":7}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":0,"z":18},{"x":5,"y":-1,"z":18},{"x":5,"y":-2,"z":18},{"x":5,"y":0,"z":19},{"x":5,"y":-1,"z":19},{"x":5,"y":-2,"z":19},{"x":5,"y":0,"z":20},{"x":5,"y":-1,"z":20},{"x":5,"y":-2,"z":20}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/02b94b9a-8990-446a-993a-9b59de987b16.json b/src/main/resources/dgroomdata/02b94b9a-8990-446a-993a-9b59de987b16.json
new file mode 100644
index 0000000..2497da0
--- /dev/null
+++ b/src/main/resources/dgroomdata/02b94b9a-8990-446a-993a-9b59de987b16.json
@@ -0,0 +1,1468 @@
+{
+ "isUserMade": false,
+ "shape": 1,
+ "color": 63,
+ "blocks": [
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 98,
+ 139,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 5,
+ 164,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 5,
+ 164,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 125,
+ 125,
+ 126,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 0,
+ 139,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 1,
+ 1,
+ 126,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 98,
+ 98,
+ 98,
+ 44,
+ 44,
+ 44,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 162,
+ 162,
+ 162,
+ 162,
+ 1,
+ 50,
+ 1,
+ 98,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 98,
+ 98,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 139,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 139,
+ 109,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 139,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 139,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 139,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 98,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 139,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 4,
+ 4,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 126,
+ 126,
+ 98,
+ 0,
+ 139,
+ 139,
+ 0,
+ 0,
+ 139,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 109,
+ 109,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 5,
+ 5,
+ 126,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 139,
+ 139,
+ 5,
+ 5,
+ 139,
+ 139,
+ 50,
+ 98,
+ 98,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 5,
+ 5,
+ 98,
+ 98,
+ 159,
+ 159,
+ 159,
+ 159,
+ 159,
+ 159,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 139,
+ 139,
+ 164,
+ 164,
+ 139,
+ 139,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 139,
+ 98,
+ 44,
+ 44,
+ 98,
+ 98,
+ 44,
+ 44,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 139,
+ 139,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 44,
+ 44,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 44,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 44,
+ 44,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 139,
+ 139,
+ 0,
+ 0,
+ 139,
+ 139,
+ 0,
+ 98,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 139,
+ 139,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ]
+ ],
+ "uuid": "02b94b9a-8990-446a-993a-9b59de987b16",
+ "name": "Golden-oasis",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "chest-2": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 13,
+ "y": -7,
+ "z": 24
+ },
+ "secretType": "CHEST",
+ "preRequisite": [
+ "door-2:open"
+ ]
+ },
+ "key-slot": {
+ "secretPoint": {
+ "x": 11,
+ "y": 1,
+ "z": 4
+ },
+ "preRequisite": [
+ "door-1:open",
+ "redstone-key:found"
+ ],
+ "mechType": "Dummy"
+ },
+ "chest-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 14,
+ "y": -7,
+ "z": 26
+ },
+ "secretType": "CHEST",
+ "preRequisite": [
+ "door-2:open"
+ ]
+ },
+ "lever-1": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 30,
+ "y": 1,
+ "z": 26
+ },
+ "preRequisite": [],
+ "triggering": "door-1"
+ },
+ "door-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 5,
+ "y": 2,
+ "z": 12
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "z": 12
+ },
+ {
+ "x": 5,
+ "y": 0,
+ "z": 12
+ },
+ {
+ "x": 5,
+ "y": -1,
+ "z": 12
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "z": 12
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "z": 12
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "z": 12
+ },
+ {
+ "x": 6,
+ "y": -1,
+ "z": 12
+ },
+ {
+ "x": 7,
+ "y": 2,
+ "z": 12
+ },
+ {
+ "x": 7,
+ "y": 1,
+ "z": 12
+ },
+ {
+ "x": 7,
+ "y": 0,
+ "z": 12
+ },
+ {
+ "x": 7,
+ "y": -1,
+ "z": 12
+ },
+ {
+ "x": 8,
+ "y": 2,
+ "z": 12
+ },
+ {
+ "x": 8,
+ "y": 1,
+ "z": 12
+ },
+ {
+ "x": 8,
+ "y": 0,
+ "z": 12
+ },
+ {
+ "x": 8,
+ "y": -1,
+ "z": 12
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-1:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "door-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 0,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 0,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 0,
+ "z": 26
+ }
+ ]
+ },
+ "preRequisite": [
+ "key-slot:click"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "redstone-key": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 13,
+ "y": 1,
+ "z": 9
+ },
+ "secretType": "ESSENCE",
+ "preRequisite": []
+ },
+ "crypt-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 0,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": -1,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 0,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": -1,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 0,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": -1,
+ "z": 5
+ },
+ {
+ "x": 30,
+ "y": 0,
+ "z": 5
+ },
+ {
+ "x": 30,
+ "y": -1,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 0,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -1,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 0,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": -1,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 0,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": -1,
+ "z": 6
+ },
+ {
+ "x": 30,
+ "y": 0,
+ "z": 6
+ },
+ {
+ "x": 30,
+ "y": -1,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": 0,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -1,
+ "z": 7
+ },
+ {
+ "x": 28,
+ "y": 0,
+ "z": 7
+ },
+ {
+ "x": 28,
+ "y": -1,
+ "z": 7
+ },
+ {
+ "x": 29,
+ "y": 0,
+ "z": 7
+ },
+ {
+ "x": 29,
+ "y": -1,
+ "z": 7
+ },
+ {
+ "x": 30,
+ "y": 0,
+ "z": 7
+ },
+ {
+ "x": 30,
+ "y": -1,
+ "z": 7
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ }
+ },
+ "totalSecrets": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/05ba6123-3468-4ec3-8e32-0553a8e5d3b2.json b/src/main/resources/dgroomdata/05ba6123-3468-4ec3-8e32-0553a8e5d3b2.json
new file mode 100644
index 0000000..edcdbbd
--- /dev/null
+++ b/src/main/resources/dgroomdata/05ba6123-3468-4ec3-8e32-0553a8e5d3b2.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,98,1,98,98,109,109,0,0,0,0,0,109,109,98,98,98,4,0,0,0,0,0,4,0,0,0,0,0,4,4,98,98,98,98,98,98,1,0,0,0,0,0,0,0,98,98,98,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,4,0,0,0,0,0,0,0,0,0,67,98,98,0,0,0,0,0,0,0,0,0,0,44,44,44,44,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,11,109,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,44,44,44,44,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,109,109,109,109,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,11,109,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,44,44,44,44,98,1,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,4,0,0,0,0,0,0,0,0,0,0,98,98,4,0,0,0,0,0,4,0,0,0,0,0,4,4,1,98,98,98,109,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,98,98,109,0,0,0,0,0,0,0,109,4,98,98,4,4,0,154,0,4,4,4,0,154,0,4,4,4,1,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,109,109,0,0,0,0,0,0,0,109,4,98,98,98,98,98,98,98,98,98,1,98,98,98,98,98,98,98,98,98,98,98,98,98,5,5,0,0,0,0,0,5,5,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,11,11,4,98,109,0,0,0,0,0,0,0,0,0,0,4,98,1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,125,125,125,5,0,0,0,0,65,5,5,85,0,85,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,109,109,0,109,109,0,11,0,0,0,0,0,0,0,0,67,98,1,1,98,98,109,109,109,109,98,98,98,98,98,98,98,98,98,98,98,98,125,125,125,0,0,0,0,0,0,5,5,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,4,98,98,98,98,1,0,0,0,0,98,98,1,98,98,98,98,98,98,98,98,1,0,0,0,0,0,0,0,0,0,0,0,85,0,85,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,4,98,98,98,98,98,5,5,5,5,98,98,98,98,98,98,98,98,98,98,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,159,98,98,98,98,-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,98,98,98,0,0,0,0,98,1,98,98,98,98,98,98,98,98,109,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,0,0,0,0,109,109,98,98,109,109,109,109,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,17,5,5,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,161,0,0,109,109,161,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,1,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,4,4,67,4,4,4,67,67,4,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,1,0,144,0,144,98,98,0,0,144,144,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,159,159,159,159,159,159,159,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,1,98,98,1,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,1,98,98,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,139,0,126,126,109,109,4,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,4,109,17,0,0,0,17,1,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,0,0,126,126,125,125,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,44,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,125,125,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,44,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,44,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,44,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,65,0,0,0,0,0,44,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,17,0,0,0,17,44,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,109,109,109,109,109,98,98,98,109,109,109,109,109,98,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,98,109,109,109,109,109,98,4,98,109,109,109,109,109,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,159,159,159,159,159,98,1,98,159,159,159,159,159,98,98,139,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,139,98,98,159,159,159,159,159,98,1,98,159,159,159,159,159,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,109,109,109,109,109,98,4,98,109,109,109,109,109,98,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,98,109,109,109,109,109,98,98,98,109,109,109,109,109,1,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,0,0,0,0,65,17,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,11,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,0,0,0,0,0,17,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,139,0,0,0,109,109,4,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,4,109,109,0,0,0,139,1,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,1,98,98,1,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,109,98,98,98,1,98,98,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,159,109,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,109,1,98,98,98,109,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,109,109,98,98,98,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,139,1,0,0,18,18,109,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,161,0,0,109,109,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,126,126,126,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,126,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,109,109,109,98,98,109,109,0,0,0,0,109,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,98,98,98,98,98,98,98,98,1,98,0,0,0,0,98,98,98,109,109,109,109,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1,98,98,98,98,159,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,98,98,98,4,1,1,98,98,98,98,5,5,5,5,98,98,98,98,98,98,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,98,98,98,98,67,67,67,98,1,98,98,109,109,109,109,1,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,1,139,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,0,0,0,98,98,98,98,98,98,98,98,98,98,1,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,144,0,144,0,98,1,17,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,0,0,0,109,98,98,98,98,98,98,98,98,98,98,1,98,109,0,0,0,0,0,0,0,0,0,1,1,0,0,0,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,159,159,159,98,98,1,139,0,0,0,0,0,0,0,1,98,98,98,98,98,98,0,0,0,109,98,98,1,98,98,98,98,98,98,98,98,98,98,98,0,0,0,17,0,0,0,0,1,1,0,0,0,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,98,98,98,98,1,0,0,0,0,0,0,0,139,1,98,98,98,98,98,0,0,0,98,98,109,109,98,98,109,109,109,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,109,109,98,98,98,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,1,98,159,0,0,0,0,0,0,0,0,0,0,109,109,98,4,109,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,159,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,159,144,0,0,0,0,0,0,0,0,0,109,98,98,4,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,159,98,98,17,0,0,0,0,0,0,0,0,1,1,109,109,109,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,159,144,0,0,0,0,0,0,0,0,0,109,98,98,4,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,159,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,98,98,139,0,0,0,0,0,0,0,139,98,98,98,4,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,159,98,98,98,0,0,0,0,0,0,0,98,1,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"05ba6123-3468-4ec3-8e32-0553a8e5d3b2","name":"Flags","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":60,"y":17,"z":42},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":15,"y":38,"z":42},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":38,"y":-3,"z":59},"secretType":"CHEST","preRequisite":[]},"door-1a":{"secretPoint":{"offsetPointList":[{"x":34,"y":4,"z":49},{"x":34,"y":3,"z":49},{"x":34,"y":2,"z":49},{"x":34,"y":1,"z":49},{"x":34,"y":0,"z":49},{"x":34,"y":-1,"z":49},{"x":35,"y":4,"z":49},{"x":35,"y":3,"z":49},{"x":35,"y":2,"z":49},{"x":35,"y":1,"z":49},{"x":35,"y":0,"z":49},{"x":35,"y":-1,"z":49},{"x":36,"y":4,"z":49},{"x":36,"y":3,"z":49},{"x":36,"y":2,"z":49},{"x":36,"y":1,"z":49},{"x":36,"y":0,"z":49},{"x":36,"y":-1,"z":49},{"x":37,"y":4,"z":49},{"x":37,"y":3,"z":49},{"x":37,"y":2,"z":49},{"x":37,"y":1,"z":49},{"x":37,"y":0,"z":49},{"x":37,"y":-1,"z":49}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":32,"y":1,"z":32},"preRequisite":[],"triggering":"door-1a"},"bat-1":{"mechType":"Secret","secretPoint":{"x":52,"y":4,"z":39},"secretType":"BAT","preRequisite":[]},"chest-4":{"mechType":"Secret","secretPoint":{"x":15,"y":38,"z":28},"secretType":"CHEST","preRequisite":[]},"chest-5":{"mechType":"Secret","secretPoint":{"x":12,"y":27,"z":8},"secretType":"CHEST","preRequisite":[]},"crypt-7":{"secretPoint":{"offsetPointList":[{"x":9,"y":38,"z":34},{"x":9,"y":37,"z":34},{"x":10,"y":38,"z":34},{"x":10,"y":37,"z":34},{"x":11,"y":38,"z":34},{"x":11,"y":37,"z":34},{"x":12,"y":38,"z":34},{"x":12,"y":37,"z":34},{"x":9,"y":38,"z":35},{"x":9,"y":37,"z":35},{"x":10,"y":38,"z":35},{"x":10,"y":37,"z":35},{"x":11,"y":38,"z":35},{"x":11,"y":37,"z":35},{"x":12,"y":38,"z":35},{"x":12,"y":37,"z":35},{"x":9,"y":38,"z":36},{"x":9,"y":37,"z":36},{"x":10,"y":38,"z":36},{"x":10,"y":37,"z":36},{"x":11,"y":38,"z":36},{"x":11,"y":37,"z":36},{"x":12,"y":38,"z":36},{"x":12,"y":37,"z":36}]},"preRequisite":[],"mechType":"Tomb"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":54,"y":-1,"z":24},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":36,"y":28,"z":32},{"x":36,"y":27,"z":32},{"x":37,"y":28,"z":32},{"x":37,"y":27,"z":32},{"x":38,"y":28,"z":32},{"x":38,"y":27,"z":32},{"x":39,"y":28,"z":32},{"x":39,"y":27,"z":32},{"x":36,"y":28,"z":33},{"x":36,"y":27,"z":33},{"x":37,"y":28,"z":33},{"x":37,"y":27,"z":33},{"x":38,"y":28,"z":33},{"x":38,"y":27,"z":33},{"x":39,"y":28,"z":33},{"x":39,"y":27,"z":33}]},"preRequisite":[],"mechType":"Tomb"},"door-1b":{"secretPoint":{"offsetPointList":[{"x":27,"y":4,"z":15},{"x":27,"y":3,"z":15},{"x":27,"y":2,"z":15},{"x":27,"y":1,"z":15},{"x":27,"y":0,"z":15},{"x":27,"y":-1,"z":15},{"x":28,"y":4,"z":15},{"x":28,"y":3,"z":15},{"x":28,"y":2,"z":15},{"x":28,"y":1,"z":15},{"x":28,"y":0,"z":15},{"x":28,"y":-1,"z":15},{"x":29,"y":4,"z":15},{"x":29,"y":3,"z":15},{"x":29,"y":2,"z":15},{"x":29,"y":1,"z":15},{"x":29,"y":0,"z":15},{"x":29,"y":-1,"z":15},{"x":30,"y":4,"z":15},{"x":30,"y":3,"z":15},{"x":30,"y":2,"z":15},{"x":30,"y":1,"z":15},{"x":30,"y":0,"z":15},{"x":30,"y":-1,"z":15}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":36,"y":28,"z":37},{"x":36,"y":27,"z":37},{"x":37,"y":28,"z":37},{"x":37,"y":27,"z":37},{"x":38,"y":28,"z":37},{"x":38,"y":27,"z":37},{"x":39,"y":28,"z":37},{"x":39,"y":27,"z":37},{"x":36,"y":28,"z":38},{"x":36,"y":27,"z":38},{"x":37,"y":28,"z":38},{"x":37,"y":27,"z":38},{"x":38,"y":28,"z":38},{"x":38,"y":27,"z":38},{"x":39,"y":28,"z":38},{"x":39,"y":27,"z":38}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":14,"y":16,"z":52},{"x":14,"y":15,"z":52},{"x":15,"y":16,"z":52},{"x":15,"y":15,"z":52},{"x":16,"y":16,"z":52},{"x":16,"y":15,"z":52},{"x":14,"y":16,"z":53},{"x":14,"y":15,"z":53},{"x":15,"y":16,"z":53},{"x":15,"y":15,"z":53},{"x":16,"y":16,"z":53},{"x":16,"y":15,"z":53},{"x":14,"y":16,"z":54},{"x":14,"y":15,"z":54},{"x":15,"y":16,"z":54},{"x":15,"y":15,"z":54},{"x":16,"y":16,"z":54},{"x":16,"y":15,"z":54},{"x":14,"y":16,"z":55},{"x":14,"y":15,"z":55},{"x":15,"y":16,"z":55},{"x":15,"y":15,"z":55},{"x":16,"y":16,"z":55},{"x":16,"y":15,"z":55}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":14,"y":18,"z":44},{"x":14,"y":17,"z":44},{"x":15,"y":18,"z":44},{"x":15,"y":17,"z":44},{"x":16,"y":18,"z":44},{"x":16,"y":17,"z":44},{"x":17,"y":18,"z":44},{"x":17,"y":17,"z":44},{"x":14,"y":18,"z":45},{"x":14,"y":17,"z":45},{"x":15,"y":18,"z":45},{"x":15,"y":17,"z":45},{"x":16,"y":18,"z":45},{"x":16,"y":17,"z":45},{"x":17,"y":18,"z":45},{"x":17,"y":17,"z":45},{"x":14,"y":18,"z":46},{"x":14,"y":17,"z":46},{"x":15,"y":18,"z":46},{"x":15,"y":17,"z":46},{"x":16,"y":18,"z":46},{"x":16,"y":17,"z":46},{"x":17,"y":18,"z":46},{"x":17,"y":17,"z":46}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":14,"y":18,"z":18},{"x":14,"y":17,"z":18},{"x":15,"y":18,"z":18},{"x":15,"y":17,"z":18},{"x":16,"y":18,"z":18},{"x":16,"y":17,"z":18},{"x":17,"y":18,"z":18},{"x":17,"y":17,"z":18},{"x":14,"y":18,"z":19},{"x":14,"y":17,"z":19},{"x":15,"y":18,"z":19},{"x":15,"y":17,"z":19},{"x":16,"y":18,"z":19},{"x":16,"y":17,"z":19},{"x":17,"y":18,"z":19},{"x":17,"y":17,"z":19},{"x":14,"y":18,"z":20},{"x":14,"y":17,"z":20},{"x":15,"y":18,"z":20},{"x":15,"y":17,"z":20},{"x":16,"y":18,"z":20},{"x":16,"y":17,"z":20},{"x":17,"y":18,"z":20},{"x":17,"y":17,"z":20}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":20,"y":16,"z":21},{"x":20,"y":15,"z":21},{"x":21,"y":16,"z":21},{"x":21,"y":15,"z":21},{"x":22,"y":16,"z":21},{"x":22,"y":15,"z":21},{"x":23,"y":16,"z":21},{"x":23,"y":15,"z":21},{"x":20,"y":16,"z":22},{"x":20,"y":15,"z":22},{"x":21,"y":16,"z":22},{"x":21,"y":15,"z":22},{"x":22,"y":16,"z":22},{"x":22,"y":15,"z":22},{"x":23,"y":16,"z":22},{"x":23,"y":15,"z":22},{"x":20,"y":16,"z":23},{"x":20,"y":15,"z":23},{"x":21,"y":16,"z":23},{"x":21,"y":15,"z":23},{"x":22,"y":16,"z":23},{"x":22,"y":15,"z":23},{"x":23,"y":16,"z":23},{"x":23,"y":15,"z":23}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":7}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/067df8a7-9d28-4fdd-a538-c6d38f126cd2.json b/src/main/resources/dgroomdata/067df8a7-9d28-4fdd-a538-c6d38f126cd2.json
new file mode 100644
index 0000000..29a626d
--- /dev/null
+++ b/src/main/resources/dgroomdata/067df8a7-9d28-4fdd-a538-c6d38f126cd2.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":49,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,144,139,139,4,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,171,171,1,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,171,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,101,1,101,101,101,101,1,0,0,0,0,1,0,0,0,0,0,0,0,0,171,144,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,44,98,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,44,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,98,98,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,98,1,44,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,98,44,44,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,98,1,98,98,98,98,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,98,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,139,0,4,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,98,98,0,0,0,98,109,159,159,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,118,0,0,0,159,159,98,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,109,159,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,1,1,109,0,0,0,0,0,1,98,109,0,0,0,0,0,0,0,0,1,0,0,0,0,0,98,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,136,5,126,126,0,0,0,0,109,0,0,0,0,0,0,109,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,136,5,0,0,0,0,0,0,109,0,0,0,0,0,0,0,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,144,159,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,139,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,44,159,98,1,98,0,0,0,98,109,109,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,118,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,159,98,98,98,1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,98,98,98,1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,98,98,98,1,98,109,1,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,144,159,98,109,1,98,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,118,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,5,0,0,0,0,0,109,0,0,0,0,0,0,144,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,136,0,0,0,0,0,109,0,0,0,0,0,0,0,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,0,0,0,0,109,1,1,98,109,1,0,0,0,0,0,0,1,109,98,1,0,0,0,0,1,0,0,0,0,0,98,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,98,98,0,0,0,0,0,0,0,0,0,0,98,159,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,5,98,109,0,0,0,0,0,0,0,0,0,144,159,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,5,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,118,0,0,0,118,0,0,0,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,109,0,0,85,0,0,0,109,109,0,0,0,109,109,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,44,0,0,0,0,0,0,0,0,98,98,98,0,0,0,98,0,159,159,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"067df8a7-9d28-4fdd-a538-c6d38f126cd2","name":"Dino-dig-site","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":25,"y":22,"z":30},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":55,"y":-18,"z":52},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":47,"y":-13,"z":37},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":31,"y":0,"z":43},{"x":31,"y":-1,"z":43},{"x":32,"y":0,"z":43},{"x":32,"y":-1,"z":43},{"x":33,"y":0,"z":43},{"x":33,"y":-1,"z":43},{"x":31,"y":0,"z":44},{"x":31,"y":-1,"z":44},{"x":32,"y":0,"z":44},{"x":32,"y":-1,"z":44},{"x":33,"y":0,"z":44},{"x":33,"y":-1,"z":44},{"x":31,"y":0,"z":45},{"x":31,"y":-1,"z":45},{"x":32,"y":0,"z":45},{"x":32,"y":-1,"z":45},{"x":33,"y":0,"z":45},{"x":33,"y":-1,"z":45},{"x":31,"y":0,"z":46},{"x":31,"y":-1,"z":46},{"x":32,"y":0,"z":46},{"x":32,"y":-1,"z":46},{"x":33,"y":0,"z":46},{"x":33,"y":-1,"z":46},{"x":31,"y":0,"z":47},{"x":31,"y":-1,"z":47},{"x":32,"y":0,"z":47},{"x":32,"y":-1,"z":47},{"x":33,"y":0,"z":47},{"x":33,"y":-1,"z":47}]},"preRequisite":[],"mechType":"Tomb"},"bat-1":{"mechType":"Secret","secretPoint":{"x":10,"y":-22,"z":35},"secretType":"BAT","preRequisite":[]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":24,"y":0,"z":21},{"x":24,"y":-1,"z":21},{"x":25,"y":0,"z":21},{"x":25,"y":-1,"z":21},{"x":26,"y":0,"z":21},{"x":26,"y":-1,"z":21},{"x":24,"y":0,"z":22},{"x":24,"y":-1,"z":22},{"x":25,"y":0,"z":22},{"x":25,"y":-1,"z":22},{"x":26,"y":0,"z":22},{"x":26,"y":-1,"z":22},{"x":24,"y":0,"z":23},{"x":24,"y":-1,"z":23},{"x":25,"y":0,"z":23},{"x":25,"y":-1,"z":23},{"x":26,"y":0,"z":23},{"x":26,"y":-1,"z":23},{"x":24,"y":0,"z":24},{"x":24,"y":-1,"z":24},{"x":25,"y":0,"z":24},{"x":25,"y":-1,"z":24},{"x":26,"y":0,"z":24},{"x":26,"y":-1,"z":24},{"x":24,"y":0,"z":25},{"x":24,"y":-1,"z":25},{"x":25,"y":0,"z":25},{"x":25,"y":-1,"z":25},{"x":26,"y":0,"z":25},{"x":26,"y":-1,"z":25}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":51,"y":13,"z":51},{"x":51,"y":12,"z":51},{"x":52,"y":13,"z":51},{"x":52,"y":12,"z":51},{"x":53,"y":13,"z":51},{"x":53,"y":12,"z":51},{"x":54,"y":13,"z":51},{"x":54,"y":12,"z":51},{"x":55,"y":13,"z":51},{"x":55,"y":12,"z":51},{"x":51,"y":13,"z":52},{"x":51,"y":12,"z":52},{"x":52,"y":13,"z":52},{"x":52,"y":12,"z":52},{"x":53,"y":13,"z":52},{"x":53,"y":12,"z":52},{"x":54,"y":13,"z":52},{"x":54,"y":12,"z":52},{"x":55,"y":13,"z":52},{"x":55,"y":12,"z":52},{"x":51,"y":13,"z":53},{"x":51,"y":12,"z":53},{"x":52,"y":13,"z":53},{"x":52,"y":12,"z":53},{"x":53,"y":13,"z":53},{"x":53,"y":12,"z":53},{"x":54,"y":13,"z":53},{"x":54,"y":12,"z":53},{"x":55,"y":13,"z":53},{"x":55,"y":12,"z":53}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":51,"y":13,"z":43},{"x":51,"y":12,"z":43},{"x":52,"y":13,"z":43},{"x":52,"y":12,"z":43},{"x":53,"y":13,"z":43},{"x":53,"y":12,"z":43},{"x":54,"y":13,"z":43},{"x":54,"y":12,"z":43},{"x":55,"y":13,"z":43},{"x":55,"y":12,"z":43},{"x":51,"y":13,"z":44},{"x":51,"y":12,"z":44},{"x":52,"y":13,"z":44},{"x":52,"y":12,"z":44},{"x":53,"y":13,"z":44},{"x":53,"y":12,"z":44},{"x":54,"y":13,"z":44},{"x":54,"y":12,"z":44},{"x":55,"y":13,"z":44},{"x":55,"y":12,"z":44},{"x":51,"y":13,"z":45},{"x":51,"y":12,"z":45},{"x":52,"y":13,"z":45},{"x":52,"y":12,"z":45},{"x":53,"y":13,"z":45},{"x":53,"y":12,"z":45},{"x":54,"y":13,"z":45},{"x":54,"y":12,"z":45},{"x":55,"y":13,"z":45},{"x":55,"y":12,"z":45}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":24,"y":26,"z":36},{"x":24,"y":25,"z":36},{"x":24,"y":24,"z":36},{"x":24,"y":23,"z":36},{"x":24,"y":22,"z":36},{"x":25,"y":26,"z":36},{"x":25,"y":25,"z":36},{"x":25,"y":24,"z":36},{"x":25,"y":23,"z":36},{"x":25,"y":22,"z":36},{"x":26,"y":26,"z":36},{"x":26,"y":25,"z":36},{"x":26,"y":24,"z":36},{"x":26,"y":23,"z":36},{"x":26,"y":22,"z":36}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/07ce87bb-a49a-412b-a8f7-c9dde9f884de.json b/src/main/resources/dgroomdata/07ce87bb-a49a-412b-a8f7-c9dde9f884de.json
new file mode 100644
index 0000000..9335d49
--- /dev/null
+++ b/src/main/resources/dgroomdata/07ce87bb-a49a-412b-a8f7-c9dde9f884de.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,1,67,0,0,0,0,0,0,50,67,67,0,0,0,0,0,67,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,1,4,0,0,0,0,0,0,0,67,4,50,0,0,0,0,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,1,4,0,0,0,0,0,0,0,67,1,98,0,0,0,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,1,1,98,0,0,0,0,0,1,1,67,4,101,0,101,4,4,67,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,1,1,1,5,0,0,0,0,98,98,0,0,0,0,191,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,1,98,67,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,101,0,101,4,4,1,1,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,191,0,109,1,1,1,98,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,109,4,1,1,98,0,0,0,1,98,1,67,0,0,0,4,4,67,67,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,139,4,67,109,109,109,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,4,44,44,44,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,4,0,0,0,67,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,67,0,0,0,67,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,139,4,67,0,0,0,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,109,4,1,1,101,101,101,101,101,1,1,4,101,0,101,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,1,1,1,1,0,0,0,0,0,98,98,0,0,0,0,0,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,4,4,1,1,4,0,0,0,0,5,5,0,0,0,0,0,0,0,0,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,4,145,85,0,0,134,134,0,0,85,0,0,85,0,145,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,85,0,0,85,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,44,1,1,1,1,0,0,0,0,0,0,0,85,0,0,85,0,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,44,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,4,145,0,0,0,0,0,0,0,85,0,0,85,0,145,67,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,4,0,0,0,0,0,0,0,65,0,0,0,5,5,0,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"07ce87bb-a49a-412b-a8f7-c9dde9f884de","name":"Lots-of-floors","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":2,"y":6,"z":6},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":26,"y":14,"z":8},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":6,"y":-1,"z":29},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":10,"z":5},{"x":11,"y":9,"z":5},{"x":11,"y":8,"z":5},{"x":11,"y":7,"z":5},{"x":11,"y":6,"z":5},{"x":11,"y":10,"z":6},{"x":11,"y":9,"z":6},{"x":11,"y":8,"z":6},{"x":11,"y":7,"z":6},{"x":11,"y":6,"z":6},{"x":11,"y":10,"z":7},{"x":11,"y":9,"z":7},{"x":11,"y":8,"z":7},{"x":11,"y":7,"z":7},{"x":11,"y":6,"z":7}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":13,"y":-8,"z":15},"preRequisite":[],"triggering":"door-1"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-7,"z":20},{"x":15,"y":-8,"z":20},{"x":16,"y":-7,"z":20},{"x":16,"y":-8,"z":20},{"x":17,"y":-7,"z":20},{"x":17,"y":-8,"z":20},{"x":15,"y":-7,"z":21},{"x":15,"y":-8,"z":21},{"x":16,"y":-7,"z":21},{"x":16,"y":-8,"z":21},{"x":17,"y":-7,"z":21},{"x":17,"y":-8,"z":21},{"x":15,"y":-7,"z":22},{"x":15,"y":-8,"z":22},{"x":16,"y":-7,"z":22},{"x":16,"y":-8,"z":22},{"x":17,"y":-7,"z":22},{"x":17,"y":-8,"z":22},{"x":15,"y":-7,"z":23},{"x":15,"y":-8,"z":23},{"x":16,"y":-7,"z":23},{"x":16,"y":-8,"z":23},{"x":17,"y":-7,"z":23},{"x":17,"y":-8,"z":23}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":0,"z":22},{"x":6,"y":1,"z":22},{"x":6,"y":0,"z":22},{"x":6,"y":-1,"z":22},{"x":7,"y":2,"z":22},{"x":7,"y":1,"z":22},{"x":7,"y":0,"z":22},{"x":7,"y":-1,"z":22}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/0877607a-b8a2-433a-b893-f4de7c83378a.json b/src/main/resources/dgroomdata/0877607a-b8a2-433a-b893-f4de7c83378a.json
new file mode 100644
index 0000000..f8efe85
--- /dev/null
+++ b/src/main/resources/dgroomdata/0877607a-b8a2-433a-b893-f4de7c83378a.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,159,159,159,1,98,35,139,0,0,0,0,0,0,1,98,98,0,7,7,1,98,1,4,1,4,1,1,4,1,1,1,1,1,1,1,1,1,7,50,0,0,0,0,0,0,0,0,0,139,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,159,159,159,98,98,7,0,0,0,0,0,0,0,0,101,0,0,0,139,7,98,1,1,50,0,188,98,98,1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,109,109,109,109,98,98,7,0,0,0,0,0,0,0,0,0,0,0,0,0,35,98,1,1,0,0,0,0,18,7,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,134,5,7,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,67,67,0,0,0,0,18,7,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,134,5,103,7,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,98,0,0,0,0,0,18,7,1,1,1,1,1,1,1,1,1,35,35,35,0,0,0,0,0,0,0,0,0,0,144,7,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,-1,98,0,0,0,0,35,0,0,0,0,98,109,0,0,0,0,98,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,1,1,35,35,0,0,0,0,0,0,0,0,5,5,5,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,-1,98,98,0,0,0,35,1,35,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,164,164,5,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,7,7,7,0,0,0,98,98,0,0,159,1,7,7,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,4,7,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,159,159,7,0,139,7,109,0,0,0,7,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,7,7,159,7,1,109,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,109,50,0,0,0,0,0,0,159,159,159,159,1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,35,7,1,98,159,0,0,0,0,0,0,0,0,1,98,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,7,4,1,1,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,44,35,1,4,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,35,35,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,44,44,4,4,1,44,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,35,7,7,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,44,44,4,1,4,1,1,44,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,7,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,44,44,44,4,4,1,4,1,1,1,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,50,35,7,1,1,1,1,1,1,1,139,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,44,44,4,4,1,4,1,1,1,4,4,1,44,44,44,0,0,7,7,0,0,0,0,0,7,1,1,1,1,1,1,1,1,50,0,0,0,0,0,0,0,0,0,7,7,1,1,1,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,4,4,1,4,4,1,4,1,1,1,44,44,159,35,1,1,1,1,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,98,98,1,1,0,0,0,0,35,98,98,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,171,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,1,1,1,1,1,1,4,4,1,1,1,1,98,98,4,98,1,1,1,1,0,0,0,0,159,159,1,1,1,1,1,1,1,1,1,98,0,0,0,0,171,171,171,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,1,1,4,1,4,4,1,4,1,4,4,1,4,4,98,1,1,1,1,1,0,0,0,159,0,159,1,1,1,1,1,1,1,1,98,1,1,0,0,171,0,0,171,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,1,4,1,4,4,1,1,1,1,1,1,1,1,4,1,1,98,1,1,1,1,1,0,0,0,0,0,0,0,0,98,1,1,1,1,1,98,1,1,159,139,0,0,0,0,0,0,0,1,1,1,0,0,67,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,1,1,1,1,1,4,1,1,4,4,1,1,1,1,4,98,1,1,1,1,159,0,0,0,0,0,0,0,0,139,98,1,1,1,1,98,1,1,1,7,7,7,7,0,0,0,0,1,98,98,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,4,1,1,1,4,1,1,4,4,4,4,1,1,4,1,98,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,98,4,4,4,1,1,98,1,1,0,44,44,1,98,98,4,4,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,1,1,1,1,4,4,1,1,1,4,1,1,1,1,4,98,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,98,4,4,4,1,1,98,1,1,44,44,4,4,1,4,4,1,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,1,4,4,4,1,4,1,1,1,1,4,4,1,1,1,1,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,98,4,4,1,4,1,98,1,1,1,1,4,1,4,1,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,1,4,1,4,4,4,4,1,1,1,4,4,1,4,1,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,98,4,4,1,1,1,1,1,4,4,4,1,1,4,4,4,1,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,1,4,4,1,1,1,1,1,4,1,1,1,1,4,1,98,1,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,1,1,98,4,1,1,1,1,98,98,98,1,4,4,4,98,98,1,4,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,44,44,44,44,44,1,1,4,1,1,4,1,1,1,1,1,4,4,1,1,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,1,98,4,1,1,4,1,98,98,98,1,1,4,1,98,98,1,4,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,98,1,1,1,98,98,1,1,4,4,4,4,98,1,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,1,98,4,1,4,4,67,67,1,4,4,1,1,1,1,1,1,4,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,98,98,4,4,1,1,1,4,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,4,1,1,1,4,67,4,4,1,1,1,1,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,98,1,98,1,98,98,98,1,98,98,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,98,4,4,4,4,4,67,67,1,1,1,1,4,4,4,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,4,159,159,1,4,4,4,4,4,1,4,4,1,1,1,1,1,159,0,0,98,139,0,0,0,0,0,0,0,0,0,1,1,1,98,4,67,67,1,1,98,98,98,4,1,4,4,1,98,4,4,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,4,101,139,1,4,1,4,1,4,1,4,4,1,4,98,1,1,159,0,0,139,98,0,0,0,0,0,0,0,0,0,1,1,1,98,1,4,67,67,1,98,98,1,4,1,4,1,98,98,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,101,0,4,1,1,1,4,1,1,1,4,4,4,98,1,1,159,159,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,98,4,4,1,4,1,98,4,4,4,4,4,4,1,1,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,43,159,4,159,159,4,159,159,1,159,159,98,1,1,1,1,35,7,0,0,0,0,0,0,0,0,1,1,1,1,1,98,1,1,4,1,4,98,4,67,1,1,67,67,4,4,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,4,4,1,0,0,4,101,101,1,0,0,98,1,1,1,1,1,1,7,159,0,0,0,0,0,0,1,1,1,1,1,98,4,1,1,1,1,98,1,44,44,44,44,44,44,44,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,44,1,4,4,0,101,4,0,0,1,0,0,98,1,1,1,1,1,1,1,1,159,1,1,1,0,0,1,1,1,1,1,1,1,4,67,4,1,98,98,98,0,0,0,0,98,98,4,67,67,67,-1,-1,-1,-1],[-1,-1,-1,-1,7,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,126,126,3,98,98,98,98,98,4,67,67,4,4,98,98,98,0,0,0,0,98,98,0,5,134,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,4,4,1,1,4,4,1,1,3,134,3,3,4,4,1,1,1,1,67,4,1,4,98,0,0,0,0,0,0,0,0,0,134,134,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,98,98,1,1,1,1,4,1,4,1,1,1,1,3,4,125,3,4,1,4,4,1,67,4,4,4,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,98,98,1,1,1,4,1,4,4,4,4,4,1,1,1,1,4,4,4,4,4,1,1,1,1,4,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,4,1,4,4,4,1,4,1,1,4,1,4,4,1,1,4,4,4,4,4,4,4,98,98,0,0,0,0,0,139,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,4,4,1,4,4,4,1,4,4,4,1,4,4,4,1,1,1,1,1,4,1,98,0,0,0,0,0,139,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,4,4,4,1,4,4,4,1,1,1,4,1,1,4,1,4,4,1,4,4,4,1,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,1,1,1,1,1,4,4,4,4,1,4,1,4,1,4,4,4,1,4,1,4,4,1,4,4,1,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,35,35,35,1,4,1,1,4,1,1,1,4,1,4,4,4,1,4,1,1,1,4,1,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,1,1,1,4,4,1,1,1,1,4,4,1,4,4,1,4,4,4,1,1,0,0,0,0,0,0,0,109,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,4,1,1,4,1,1,1,1,1,4,1,4,1,4,1,4,1,1,1,4,44,0,0,0,0,0,0,98,98,67,67,67,4,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,4,4,4,1,1,1,1,1,1,4,1,4,1,4,4,1,1,4,4,4,44,44,0,0,0,0,0,1,1,1,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,7,188,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,4,1,1,1,1,4,1,4,4,4,1,1,4,1,1,4,1,4,4,1,4,44,44,44,0,0,0,0,1,1,1,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,1,1,3,4,1,4,1,1,4,1,4,1,1,1,1,1,1,4,4,4,1,1,1,44,44,44,44,44,44,44,1,1,1,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,0,1,0,0,4,0,0,1,0,0,1,0,0,4,1,1,1,1,3,3,1,3,1,1,1,1,1,1,4,4,4,4,1,4,4,4,1,1,44,44,44,98,1,4,4,4,1,98,98,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,35,4,0,0,1,0,0,1,0,0,4,0,0,4,1,1,1,1,3,3,3,1,4,4,4,4,4,4,4,4,1,1,4,1,1,1,44,44,44,0,0,98,98,4,4,4,4,1,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,4,0,0,1,1,1,1,1,4,3,3,4,1,4,1,4,4,4,1,4,1,1,1,1,1,44,44,0,0,0,0,0,0,7,4,4,4,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,4,3,3,3,1,1,1,4,1,4,4,4,4,1,1,4,1,44,0,0,0,0,0,0,0,35,4,4,4,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,50,0,0,0,0,0,0,159,1,1,1,1,1,1,4,4,4,4,4,4,1,4,4,4,1,4,1,1,1,1,7,0,0,0,0,0,0,35,1,4,4,4,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"0877607a-b8a2-433a-b893-f4de7c83378a","name":"Stairs","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":45,"y":18,"z":29},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":32,"y":18,"z":23},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":9,"y":0,"z":10},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":39,"y":17,"z":35},"secretType":"ITEM_DROP","preRequisite":[]},"fairysoul-6":{"secretPoint":{"x":28,"y":15,"z":52},"preRequisite":[],"mechType":"Fairysoul"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":10,"y":2,"z":27},{"x":10,"y":1,"z":27},{"x":11,"y":2,"z":27},{"x":11,"y":1,"z":27},{"x":12,"y":2,"z":27},{"x":12,"y":1,"z":27},{"x":13,"y":2,"z":27},{"x":13,"y":1,"z":27},{"x":14,"y":2,"z":27},{"x":14,"y":1,"z":27},{"x":10,"y":2,"z":28},{"x":10,"y":1,"z":28},{"x":11,"y":2,"z":28},{"x":11,"y":1,"z":28},{"x":12,"y":2,"z":28},{"x":12,"y":1,"z":28},{"x":13,"y":2,"z":28},{"x":13,"y":1,"z":28},{"x":14,"y":2,"z":28},{"x":14,"y":1,"z":28},{"x":10,"y":2,"z":29},{"x":10,"y":1,"z":29},{"x":11,"y":2,"z":29},{"x":11,"y":1,"z":29},{"x":12,"y":2,"z":29},{"x":12,"y":1,"z":29},{"x":13,"y":2,"z":29},{"x":13,"y":1,"z":29},{"x":14,"y":2,"z":29},{"x":14,"y":1,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":40,"y":23,"z":44},{"x":40,"y":22,"z":44},{"x":40,"y":21,"z":44},{"x":40,"y":20,"z":44},{"x":40,"y":24,"z":45},{"x":40,"y":23,"z":45},{"x":40,"y":22,"z":45},{"x":40,"y":21,"z":45},{"x":40,"y":20,"z":45},{"x":40,"y":22,"z":46},{"x":40,"y":21,"z":46},{"x":40,"y":20,"z":46}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/09c3072e-3099-4019-a577-7ddc17a9e29d.json b/src/main/resources/dgroomdata/09c3072e-3099-4019-a577-7ddc17a9e29d.json
new file mode 100644
index 0000000..4548d66
--- /dev/null
+++ b/src/main/resources/dgroomdata/09c3072e-3099-4019-a577-7ddc17a9e29d.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,67,0,1,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,98,0,67,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,134,126,126,126,134,126,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,125,126,126,126,125,134,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,134,134,134,126,126,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,134,65,134,126,126,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,134,134,134,126,126,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,125,126,126,126,125,4,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,0,0,1,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,98,126,126,4,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"09c3072e-3099-4019-a577-7ddc17a9e29d","name":"Doors","processorId":"default","properties":{},"mechanics":{"door-3":{"secretPoint":{"offsetPointList":[{"x":40,"y":-7,"z":15},{"x":40,"y":-8,"z":15},{"x":40,"y":-9,"z":15},{"x":40,"y":-10,"z":15},{"x":40,"y":-11,"z":15},{"x":40,"y":-12,"z":15},{"x":40,"y":-7,"z":16},{"x":40,"y":-8,"z":16},{"x":40,"y":-9,"z":16},{"x":40,"y":-10,"z":16},{"x":40,"y":-11,"z":16},{"x":40,"y":-12,"z":16},{"x":40,"y":-7,"z":17},{"x":40,"y":-8,"z":17},{"x":40,"y":-9,"z":17},{"x":40,"y":-10,"z":17},{"x":40,"y":-11,"z":17},{"x":40,"y":-12,"z":17}]},"preRequisite":["lever-3:triggered"],"mechType":"OnewayDoor"},"chest-2":{"mechType":"Secret","secretPoint":{"x":32,"y":-19,"z":18},"secretType":"CHEST","preRequisite":["prince-1:open"]},"door-4":{"secretPoint":{"offsetPointList":[{"x":24,"y":-6,"z":15},{"x":24,"y":-7,"z":15},{"x":24,"y":-8,"z":15},{"x":24,"y":-9,"z":15},{"x":24,"y":-10,"z":15},{"x":24,"y":-11,"z":15},{"x":24,"y":-12,"z":15},{"x":24,"y":-6,"z":16},{"x":24,"y":-7,"z":16},{"x":24,"y":-8,"z":16},{"x":24,"y":-9,"z":16},{"x":24,"y":-10,"z":16},{"x":24,"y":-11,"z":16},{"x":24,"y":-12,"z":16},{"x":24,"y":-6,"z":17},{"x":24,"y":-7,"z":17},{"x":24,"y":-8,"z":17},{"x":24,"y":-9,"z":17},{"x":24,"y":-10,"z":17},{"x":24,"y":-11,"z":17},{"x":24,"y":-12,"z":17}]},"preRequisite":["lever-4:triggered"],"mechType":"OnewayDoor"},"chest-3":{"mechType":"Secret","secretPoint":{"x":6,"y":17,"z":29},"secretType":"CHEST","preRequisite":[]},"dummy-1":{"secretPoint":{"x":9,"y":-12,"z":14},"preRequisite":["door-2:open","door-4:open"],"mechType":"Dummy"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":62,"y":-11,"z":16},"preRequisite":["superboom-1:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":51,"y":-7,"z":15},{"x":51,"y":-8,"z":15},{"x":51,"y":-9,"z":15},{"x":51,"y":-10,"z":15},{"x":51,"y":-11,"z":15},{"x":51,"y":-12,"z":15},{"x":51,"y":-7,"z":16},{"x":51,"y":-8,"z":16},{"x":51,"y":-9,"z":16},{"x":51,"y":-10,"z":16},{"x":51,"y":-11,"z":16},{"x":51,"y":-12,"z":16},{"x":51,"y":-7,"z":17},{"x":51,"y":-8,"z":17},{"x":51,"y":-9,"z":17},{"x":51,"y":-10,"z":17},{"x":51,"y":-11,"z":17},{"x":51,"y":-12,"z":17}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":46,"y":-11,"z":16},"preRequisite":["door-1:open"],"triggering":"door-2"},"door-2":{"secretPoint":{"offsetPointList":[{"x":20,"y":-6,"z":15},{"x":20,"y":-7,"z":15},{"x":20,"y":-8,"z":15},{"x":20,"y":-9,"z":15},{"x":20,"y":-10,"z":15},{"x":20,"y":-11,"z":15},{"x":20,"y":-12,"z":15},{"x":20,"y":-6,"z":16},{"x":20,"y":-7,"z":16},{"x":20,"y":-8,"z":16},{"x":20,"y":-9,"z":16},{"x":20,"y":-10,"z":16},{"x":20,"y":-11,"z":16},{"x":20,"y":-12,"z":16},{"x":20,"y":-6,"z":17},{"x":20,"y":-7,"z":17},{"x":20,"y":-8,"z":17},{"x":20,"y":-9,"z":17},{"x":20,"y":-10,"z":17},{"x":20,"y":-11,"z":17},{"x":20,"y":-12,"z":17}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":49,"y":-6,"z":17},"secretType":"BAT","preRequisite":["door-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":58,"y":-8,"z":15},{"x":58,"y":-9,"z":15},{"x":58,"y":-12,"z":15},{"x":58,"y":-8,"z":16},{"x":58,"y":-9,"z":16},{"x":58,"y":-10,"z":16},{"x":58,"y":-11,"z":16},{"x":58,"y":-12,"z":16},{"x":58,"y":-8,"z":17},{"x":58,"y":-9,"z":17},{"x":58,"y":-10,"z":17},{"x":58,"y":-11,"z":17},{"x":58,"y":-12,"z":17}]},"preRequisite":[],"mechType":"BreakableWall"},"chests-1":{"mechType":"Secret","secretPoint":{"x":9,"y":-12,"z":18},"secretType":"CHEST","preRequisite":["dummy-1:click"]},"lever-3":{"mechType":"OnewayLever","leverPoint":{"x":51,"y":-11,"z":2},"preRequisite":[],"triggering":"door-3"},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":31,"y":-11,"z":25},{"x":31,"y":-12,"z":25},{"x":32,"y":-11,"z":25},{"x":32,"y":-12,"z":25},{"x":33,"y":-11,"z":25},{"x":33,"y":-12,"z":25},{"x":31,"y":-11,"z":26},{"x":31,"y":-12,"z":26},{"x":32,"y":-11,"z":26},{"x":32,"y":-12,"z":26},{"x":33,"y":-11,"z":26},{"x":33,"y":-12,"z":26},{"x":31,"y":-11,"z":27},{"x":31,"y":-12,"z":27},{"x":32,"y":-11,"z":27},{"x":32,"y":-12,"z":27},{"x":33,"y":-11,"z":27},{"x":33,"y":-12,"z":27},{"x":31,"y":-11,"z":28},{"x":31,"y":-12,"z":28},{"x":32,"y":-11,"z":28},{"x":32,"y":-12,"z":28},{"x":33,"y":-11,"z":28},{"x":33,"y":-12,"z":28}]},"preRequisite":[],"mechType":"Tomb"},"lever-4":{"mechType":"OnewayLever","leverPoint":{"x":44,"y":-11,"z":16},"preRequisite":["door-3:open"],"triggering":"door-4"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":41,"y":-11,"z":19},{"x":41,"y":-12,"z":19},{"x":42,"y":-11,"z":19},{"x":42,"y":-12,"z":19},{"x":43,"y":-11,"z":19},{"x":43,"y":-12,"z":19},{"x":44,"y":-11,"z":19},{"x":44,"y":-12,"z":19},{"x":41,"y":-11,"z":20},{"x":41,"y":-12,"z":20},{"x":42,"y":-11,"z":20},{"x":42,"y":-12,"z":20},{"x":43,"y":-11,"z":20},{"x":43,"y":-12,"z":20},{"x":44,"y":-11,"z":20},{"x":44,"y":-12,"z":20},{"x":41,"y":-11,"z":21},{"x":41,"y":-12,"z":21},{"x":42,"y":-11,"z":21},{"x":42,"y":-12,"z":21},{"x":43,"y":-11,"z":21},{"x":43,"y":-12,"z":21},{"x":44,"y":-11,"z":21},{"x":44,"y":-12,"z":21},{"x":41,"y":-11,"z":22},{"x":41,"y":-12,"z":22},{"x":42,"y":-11,"z":22},{"x":42,"y":-12,"z":22},{"x":43,"y":-11,"z":22},{"x":43,"y":-12,"z":22},{"x":44,"y":-11,"z":22},{"x":44,"y":-12,"z":22}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":47,"y":-11,"z":19},{"x":47,"y":-12,"z":19},{"x":48,"y":-11,"z":19},{"x":48,"y":-12,"z":19},{"x":49,"y":-11,"z":19},{"x":49,"y":-12,"z":19},{"x":47,"y":-11,"z":20},{"x":47,"y":-12,"z":20},{"x":48,"y":-11,"z":20},{"x":48,"y":-12,"z":20},{"x":49,"y":-11,"z":20},{"x":49,"y":-12,"z":20},{"x":47,"y":-11,"z":21},{"x":47,"y":-12,"z":21},{"x":48,"y":-11,"z":21},{"x":48,"y":-12,"z":21},{"x":49,"y":-11,"z":21},{"x":49,"y":-12,"z":21},{"x":47,"y":-11,"z":22},{"x":47,"y":-12,"z":22},{"x":48,"y":-11,"z":22},{"x":48,"y":-12,"z":22},{"x":49,"y":-11,"z":22},{"x":49,"y":-12,"z":22}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":31,"y":-11,"z":15},{"x":31,"y":-12,"z":15},{"x":32,"y":-11,"z":15},{"x":32,"y":-12,"z":15},{"x":33,"y":-11,"z":15},{"x":33,"y":-12,"z":15},{"x":31,"y":-11,"z":16},{"x":31,"y":-12,"z":16},{"x":32,"y":-11,"z":16},{"x":32,"y":-12,"z":16},{"x":33,"y":-11,"z":16},{"x":33,"y":-12,"z":16},{"x":31,"y":-11,"z":17},{"x":31,"y":-12,"z":17},{"x":32,"y":-11,"z":17},{"x":32,"y":-12,"z":17},{"x":33,"y":-11,"z":17},{"x":33,"y":-12,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":21,"y":-11,"z":11},{"x":21,"y":-12,"z":11},{"x":22,"y":-11,"z":11},{"x":22,"y":-12,"z":11},{"x":21,"y":-11,"z":12},{"x":21,"y":-12,"z":12},{"x":22,"y":-11,"z":12},{"x":22,"y":-12,"z":12},{"x":21,"y":-11,"z":13},{"x":21,"y":-12,"z":13},{"x":22,"y":-11,"z":13},{"x":22,"y":-12,"z":13}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-11,"z":5},{"x":15,"y":-12,"z":5},{"x":16,"y":-11,"z":5},{"x":16,"y":-12,"z":5},{"x":17,"y":-11,"z":5},{"x":17,"y":-12,"z":5},{"x":15,"y":-11,"z":6},{"x":15,"y":-12,"z":6},{"x":16,"y":-11,"z":6},{"x":16,"y":-12,"z":6},{"x":17,"y":-11,"z":6},{"x":17,"y":-12,"z":6},{"x":15,"y":-11,"z":7},{"x":15,"y":-12,"z":7},{"x":16,"y":-11,"z":7},{"x":16,"y":-12,"z":7},{"x":17,"y":-11,"z":7},{"x":17,"y":-12,"z":7},{"x":15,"y":-11,"z":8},{"x":15,"y":-12,"z":8},{"x":16,"y":-11,"z":8},{"x":16,"y":-12,"z":8},{"x":17,"y":-11,"z":8},{"x":17,"y":-12,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"prince-1":{"secretPoint":{"offsetPointList":[{"x":37,"y":-11,"z":26},{"x":37,"y":-12,"z":26},{"x":38,"y":-11,"z":26},{"x":38,"y":-12,"z":26},{"x":39,"y":-11,"z":26},{"x":39,"y":-12,"z":26},{"x":40,"y":-11,"z":26},{"x":40,"y":-12,"z":26},{"x":41,"y":-11,"z":26},{"x":41,"y":-12,"z":26},{"x":37,"y":-11,"z":27},{"x":37,"y":-12,"z":27},{"x":38,"y":-11,"z":27},{"x":38,"y":-12,"z":27},{"x":39,"y":-11,"z":27},{"x":39,"y":-12,"z":27},{"x":40,"y":-11,"z":27},{"x":40,"y":-12,"z":27},{"x":41,"y":-11,"z":27},{"x":41,"y":-12,"z":27},{"x":37,"y":-11,"z":28},{"x":37,"y":-12,"z":28},{"x":38,"y":-11,"z":28},{"x":38,"y":-12,"z":28},{"x":39,"y":-11,"z":28},{"x":39,"y":-12,"z":28},{"x":40,"y":-11,"z":28},{"x":40,"y":-12,"z":28},{"x":41,"y":-11,"z":28},{"x":41,"y":-12,"z":28},{"x":37,"y":-11,"z":29},{"x":37,"y":-12,"z":29},{"x":38,"y":-11,"z":29},{"x":38,"y":-12,"z":29},{"x":39,"y":-11,"z":29},{"x":39,"y":-12,"z":29},{"x":40,"y":-11,"z":29},{"x":40,"y":-12,"z":29},{"x":41,"y":-11,"z":29},{"x":41,"y":-12,"z":29},{"x":39,"y":-10,"z":28},{"x":39,"y":-10,"z":29}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/11982f7f-703e-4d98-9d27-4e07ba3fef71.json b/src/main/resources/dgroomdata/11982f7f-703e-4d98-9d27-4e07ba3fef71.json
new file mode 100644
index 0000000..c91e4bf
--- /dev/null
+++ b/src/main/resources/dgroomdata/11982f7f-703e-4d98-9d27-4e07ba3fef71.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,139,1,139,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,139,1,139,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"11982f7f-703e-4d98-9d27-4e07ba3fef71","name":"puzzle-creeper","processorId":"puzzle_creeper_solver","properties":{},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/12080b02-4ccc-49ce-9eaf-e7d8946f3984.json b/src/main/resources/dgroomdata/12080b02-4ccc-49ce-9eaf-e7d8946f3984.json
new file mode 100644
index 0000000..b6b3fad
--- /dev/null
+++ b/src/main/resources/dgroomdata/12080b02-4ccc-49ce-9eaf-e7d8946f3984.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,98,35,98,0,0,0,0,0,98,98,1,98,98,98,98,67,67,4,67,4,4,4,48,67,67,3,67,67,109,109,0,0,0,109,109,0,0,0,0,0,109,109,98,48,4,48,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,98,1,0,0,0,0,0,0,50,1,0,0,0,0,109,67,4,48,48,4,67,4,48,48,67,3,3,67,109,0,0,0,0,0,0,0,0,0,0,0,0,50,98,48,48,4,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,109,4,48,48,4,67,67,4,67,67,4,48,3,3,109,0,0,0,0,0,0,0,0,0,0,0,0,0,98,67,67,67,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,109,4,4,48,48,4,4,169,67,4,4,4,3,48,109,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,44,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,67,4,67,67,35,4,169,35,4,4,67,48,4,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,67,4,4,4,48,35,169,4,35,67,67,48,4,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,3,3,3,4,35,48,169,4,35,48,67,4,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,98,159,159,98,98,0,0,0,0,0,0,0,0,0,0,0,139,98,98,67,3,48,67,67,67,169,4,35,48,4,3,3,1,1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,109,109,109,109,109,98,98,0,0,0,0,0,0,0,0,0,0,1,98,67,67,4,48,48,67,4,169,35,35,4,4,67,67,67,1,98,144,0,0,109,98,0,0,144,98,0,0,0,0,0,0,139,144,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,98,4,4,4,67,4,4,4,35,169,48,67,67,4,4,48,3,3,98,159,159,159,98,98,159,159,159,44,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,3,4,3,67,67,4,35,48,169,4,35,48,48,4,4,48,3,4,98,98,98,98,98,98,98,159,0,50,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,1,3,3,67,48,48,4,35,4,48,67,35,48,4,48,4,4,4,98,98,98,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,3,48,67,4,48,48,48,67,67,48,4,4,67,48,4,1,98,1,98,98,1,98,98,98,159,144,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,48,48,4,48,67,67,67,67,67,67,67,67,67,48,48,98,159,159,159,98,98,98,98,98,159,44,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,1,98,1,1,1,48,0,0,0,0,0,0,0,4,1,1,1,1,0,144,0,159,159,159,98,98,98,98,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,50,98,98,98,109,109,109,109,98,98,1,4,0,0,0,0,0,0,0,4,98,98,98,98,0,0,0,0,0,0,159,159,98,98,1,1,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,144,0,144,0,0,98,98,98,0,0,0,144,1,98,109,109,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,144,0,0,0,98,98,1,1,139,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,159,159,159,159,98,98,98,159,159,159,159,1,98,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,144,98,98,98,98,98,0,144,0,0,144,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,1,98,98,98,98,98,98,98,98,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,159,159,159,159,159,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,4,0,0,0,0,0,4,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,7,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,159,1,7,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,159,159,0,7,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,35,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,56,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,56,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,14,14,14,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,5,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,56,56,14,0,0,0,0,0,0,0,5,5,164,0,0,0,0,0,0,5,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,56,56,14,0,0,0,0,0,0,0,0,164,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,135,135,0,5,5,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,135,0,164,5,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,118,0,0,0,5,0,0,0,0,0,0,0,118,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,44,4,0,5,0,0,0,0,0,0,0,4,44,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,98,98,162,0,0,0,0,162,5,5,162,98,98,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,14,14,0,1,0,1,0,0,0,0,0,0,0,1,0,1,44,98,1,98,1,0,0,0,0,0,0,0,0,0,1,98,98,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,50,56,56,14,98,159,101,159,98,0,0,0,0,0,98,159,101,159,98,1,98,98,0,0,0,0,0,0,0,0,0,0,144,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,44,50,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,56,56,0,98,159,51,159,98,0,0,0,0,0,98,159,51,159,98,98,51,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,44,44,109,0,0,0,0,0,0,0,98,44,44,98,98,98,98,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,159,98,98,0,0,0,0,0,98,98,159,98,98,98,0,0,0,0,0,0,0,0,0,0,0,144,0,98,159,159,109,101,101,109,0,0,0,0,0,0,0,98,101,101,98,98,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,159,159,98,98,109,0,0,0,0,0,0,0,0,139,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,144,0,0,0,50,109,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,44,44,98,98,109,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,1,144,44,44,44,1,98,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,44,159,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,5,0,0,0,139,98,98,50,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,98,159,159,159,159,98,98,152,68,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,44,159,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,134,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,1,44,44,44,144,1,98,98,0,0,0,144,109,0,0,0,0,0,0,0,98,98,0,0,0,109,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,109,0,0,0,0,0,0,0,101,0,0,0,0,109,109,134,134,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,44,44,0,0,0,0,0,44,44,98,98,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,68,0,101,0,0,0,0,0,109,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"12080b02-4ccc-49ce-9eaf-e7d8946f3984","name":"mithril-cave","processorId":"default","properties":{},"mechanics":{"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":35,"y":9,"z":60},"preRequisite":[],"triggering":"door-1"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":15,"y":10,"z":4},"preRequisite":["crypt-5:open"],"triggering":"door-2"},"lever-3":{"mechType":"OnewayLever","leverPoint":{"x":53,"y":9,"z":10},"preRequisite":["crypt-7:open"],"triggering":"door-3"},"chest-2":{"mechType":"Secret","secretPoint":{"x":10,"y":38,"z":18},"secretType":"CHEST","preRequisite":[]},"door-3":{"secretPoint":{"offsetPointList":[{"x":47,"y":13,"z":11},{"x":47,"y":12,"z":11},{"x":47,"y":11,"z":11},{"x":47,"y":10,"z":11},{"x":47,"y":13,"z":12},{"x":47,"y":12,"z":12},{"x":47,"y":11,"z":12},{"x":47,"y":10,"z":12},{"x":47,"y":13,"z":13},{"x":47,"y":12,"z":13},{"x":47,"y":11,"z":13},{"x":47,"y":10,"z":13},{"x":47,"y":13,"z":14},{"x":47,"y":12,"z":14},{"x":47,"y":11,"z":14},{"x":47,"y":10,"z":14},{"x":47,"y":13,"z":15},{"x":47,"y":12,"z":15},{"x":47,"y":11,"z":15},{"x":47,"y":10,"z":15}]},"preRequisite":["lever-3:triggered"],"mechType":"OnewayDoor"},"chest-3":{"mechType":"Secret","secretPoint":{"x":57,"y":8,"z":59},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":32,"y":29,"z":59},"secretType":"CHEST","preRequisite":[]},"door-1":{"secretPoint":{"offsetPointList":[{"x":50,"y":14,"z":58},{"x":50,"y":13,"z":58},{"x":50,"y":12,"z":58},{"x":50,"y":11,"z":58},{"x":50,"y":10,"z":58},{"x":50,"y":9,"z":58},{"x":50,"y":8,"z":58},{"x":50,"y":14,"z":59},{"x":50,"y":13,"z":59},{"x":50,"y":12,"z":59},{"x":50,"y":11,"z":59},{"x":50,"y":10,"z":59},{"x":50,"y":9,"z":59},{"x":50,"y":8,"z":59},{"x":50,"y":14,"z":60},{"x":50,"y":13,"z":60},{"x":50,"y":12,"z":60},{"x":50,"y":11,"z":60},{"x":50,"y":10,"z":60},{"x":50,"y":9,"z":60},{"x":50,"y":8,"z":60}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"door-2":{"secretPoint":{"offsetPointList":[{"x":4,"y":25,"z":19},{"x":4,"y":24,"z":19},{"x":4,"y":23,"z":19},{"x":4,"y":22,"z":19},{"x":4,"y":21,"z":19},{"x":4,"y":20,"z":19},{"x":5,"y":25,"z":19},{"x":5,"y":24,"z":19},{"x":5,"y":23,"z":19},{"x":5,"y":22,"z":19},{"x":5,"y":21,"z":19},{"x":5,"y":20,"z":19},{"x":6,"y":25,"z":19},{"x":6,"y":24,"z":19},{"x":6,"y":23,"z":19},{"x":6,"y":22,"z":19},{"x":6,"y":21,"z":19},{"x":6,"y":20,"z":19},{"x":7,"y":25,"z":19},{"x":7,"y":24,"z":19},{"x":7,"y":23,"z":19},{"x":7,"y":22,"z":19},{"x":7,"y":21,"z":19},{"x":7,"y":20,"z":19},{"x":8,"y":25,"z":19},{"x":8,"y":24,"z":19},{"x":8,"y":23,"z":19},{"x":8,"y":22,"z":19},{"x":8,"y":21,"z":19},{"x":8,"y":20,"z":19}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"crypt-10":{"secretPoint":{"offsetPointList":[{"x":25,"y":0,"z":59},{"x":25,"y":-1,"z":59},{"x":26,"y":0,"z":59},{"x":26,"y":-1,"z":59},{"x":27,"y":0,"z":59},{"x":27,"y":-1,"z":59},{"x":25,"y":0,"z":60},{"x":25,"y":-1,"z":60},{"x":26,"y":0,"z":60},{"x":26,"y":-1,"z":60},{"x":27,"y":0,"z":60},{"x":27,"y":-1,"z":60},{"x":25,"y":0,"z":61},{"x":25,"y":-1,"z":61},{"x":26,"y":0,"z":61},{"x":26,"y":-1,"z":61},{"x":27,"y":0,"z":61},{"x":27,"y":-1,"z":61},{"x":25,"y":0,"z":62},{"x":25,"y":-1,"z":62},{"x":26,"y":0,"z":62},{"x":26,"y":-1,"z":62},{"x":27,"y":0,"z":62},{"x":27,"y":-1,"z":62}]},"preRequisite":[],"mechType":"Tomb"},"crypt-11":{"secretPoint":{"offsetPointList":[{"x":9,"y":41,"z":29},{"x":9,"y":40,"z":29},{"x":10,"y":41,"z":29},{"x":10,"y":40,"z":29},{"x":11,"y":41,"z":29},{"x":11,"y":40,"z":29},{"x":9,"y":41,"z":30},{"x":9,"y":40,"z":30},{"x":10,"y":41,"z":30},{"x":10,"y":40,"z":30},{"x":11,"y":41,"z":30},{"x":11,"y":40,"z":30},{"x":9,"y":41,"z":31},{"x":9,"y":40,"z":31},{"x":10,"y":41,"z":31},{"x":10,"y":40,"z":31},{"x":11,"y":41,"z":31},{"x":11,"y":40,"z":31},{"x":9,"y":41,"z":32},{"x":9,"y":40,"z":32},{"x":10,"y":41,"z":32},{"x":10,"y":40,"z":32},{"x":11,"y":41,"z":32},{"x":11,"y":40,"z":32}]},"preRequisite":["superboom-2:open"],"mechType":"Tomb"},"chest-6":{"mechType":"Secret","secretPoint":{"x":42,"y":10,"z":13},"secretType":"CHEST","preRequisite":["door-3:open"]},"chest-7":{"mechType":"Secret","secretPoint":{"x":10,"y":39,"z":31},"secretType":"CHEST","preRequisite":["crypt-11:open"]},"chest-4":{"mechType":"Secret","secretPoint":{"x":61,"y":-27,"z":51},"secretType":"CHEST","preRequisite":[]},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":13,"y":44,"z":22},{"x":13,"y":43,"z":22},{"x":13,"y":42,"z":22},{"x":13,"y":41,"z":22},{"x":13,"y":40,"z":22},{"x":14,"y":44,"z":22},{"x":14,"y":43,"z":22},{"x":14,"y":42,"z":22},{"x":14,"y":41,"z":22},{"x":14,"y":40,"z":22},{"x":15,"y":44,"z":22},{"x":15,"y":43,"z":22},{"x":15,"y":42,"z":22},{"x":15,"y":41,"z":22},{"x":15,"y":40,"z":22}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-5":{"mechType":"Secret","secretPoint":{"x":10,"y":12,"z":22},"secretType":"CHEST","preRequisite":["door-2:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":7,"y":21,"z":57},{"x":7,"y":20,"z":57},{"x":7,"y":22,"z":58},{"x":7,"y":21,"z":58},{"x":7,"y":20,"z":58},{"x":7,"y":19,"z":58},{"x":7,"y":20,"z":59},{"x":7,"y":19,"z":59}]},"preRequisite":[],"mechType":"BreakableWall"},"crypt-9":{"secretPoint":{"offsetPointList":[{"x":6,"y":37,"z":56},{"x":6,"y":36,"z":56},{"x":7,"y":37,"z":56},{"x":7,"y":36,"z":56},{"x":8,"y":37,"z":56},{"x":8,"y":36,"z":56},{"x":9,"y":37,"z":56},{"x":9,"y":36,"z":56},{"x":6,"y":37,"z":57},{"x":6,"y":36,"z":57},{"x":7,"y":37,"z":57},{"x":7,"y":36,"z":57},{"x":8,"y":37,"z":57},{"x":8,"y":36,"z":57},{"x":9,"y":37,"z":57},{"x":9,"y":36,"z":57},{"x":6,"y":37,"z":58},{"x":6,"y":36,"z":58},{"x":7,"y":37,"z":58},{"x":7,"y":36,"z":58},{"x":8,"y":37,"z":58},{"x":8,"y":36,"z":58},{"x":9,"y":37,"z":58},{"x":9,"y":36,"z":58}]},"preRequisite":[],"mechType":"Tomb"},"crypt-8":{"secretPoint":{"offsetPointList":[{"x":6,"y":37,"z":50},{"x":6,"y":36,"z":50},{"x":7,"y":37,"z":50},{"x":7,"y":36,"z":50},{"x":8,"y":37,"z":50},{"x":8,"y":36,"z":50},{"x":9,"y":37,"z":50},{"x":9,"y":36,"z":50},{"x":6,"y":37,"z":51},{"x":6,"y":36,"z":51},{"x":7,"y":37,"z":51},{"x":7,"y":36,"z":51},{"x":8,"y":37,"z":51},{"x":8,"y":36,"z":51},{"x":9,"y":37,"z":51},{"x":9,"y":36,"z":51},{"x":6,"y":37,"z":52},{"x":6,"y":36,"z":52},{"x":7,"y":37,"z":52},{"x":7,"y":36,"z":52},{"x":8,"y":37,"z":52},{"x":8,"y":36,"z":52},{"x":9,"y":37,"z":52},{"x":9,"y":36,"z":52}]},"preRequisite":[],"mechType":"Tomb"},"itemdrop-3":{"mechType":"Secret","secretPoint":{"x":5,"y":-16,"z":57},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-7":{"secretPoint":{"offsetPointList":[{"x":52,"y":11,"z":9},{"x":52,"y":10,"z":9},{"x":53,"y":11,"z":9},{"x":53,"y":10,"z":9},{"x":54,"y":11,"z":9},{"x":54,"y":10,"z":9},{"x":55,"y":11,"z":9},{"x":55,"y":10,"z":9},{"x":52,"y":11,"z":10},{"x":52,"y":10,"z":10},{"x":53,"y":11,"z":10},{"x":53,"y":10,"z":10},{"x":54,"y":11,"z":10},{"x":54,"y":10,"z":10},{"x":55,"y":11,"z":10},{"x":55,"y":10,"z":10},{"x":52,"y":11,"z":11},{"x":52,"y":10,"z":11},{"x":53,"y":11,"z":11},{"x":53,"y":10,"z":11},{"x":54,"y":11,"z":11},{"x":54,"y":10,"z":11},{"x":55,"y":11,"z":11},{"x":55,"y":10,"z":11}]},"preRequisite":[],"mechType":"Tomb"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":54,"y":-22,"z":10},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":3,"y":12,"z":15},{"x":3,"y":11,"z":15},{"x":4,"y":12,"z":15},{"x":4,"y":11,"z":15},{"x":5,"y":12,"z":15},{"x":5,"y":11,"z":15},{"x":6,"y":12,"z":15},{"x":6,"y":11,"z":15},{"x":3,"y":12,"z":16},{"x":3,"y":11,"z":16},{"x":4,"y":12,"z":16},{"x":4,"y":11,"z":16},{"x":5,"y":12,"z":16},{"x":5,"y":11,"z":16},{"x":6,"y":12,"z":16},{"x":6,"y":11,"z":16},{"x":3,"y":12,"z":17},{"x":3,"y":11,"z":17},{"x":4,"y":12,"z":17},{"x":4,"y":11,"z":17},{"x":5,"y":12,"z":17},{"x":5,"y":11,"z":17},{"x":6,"y":12,"z":17},{"x":6,"y":11,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":14,"y":12,"z":3},{"x":14,"y":11,"z":3},{"x":15,"y":12,"z":3},{"x":15,"y":11,"z":3},{"x":16,"y":12,"z":3},{"x":16,"y":11,"z":3},{"x":14,"y":12,"z":4},{"x":14,"y":11,"z":4},{"x":15,"y":12,"z":4},{"x":15,"y":11,"z":4},{"x":16,"y":12,"z":4},{"x":16,"y":11,"z":4},{"x":14,"y":12,"z":5},{"x":14,"y":11,"z":5},{"x":15,"y":12,"z":5},{"x":15,"y":11,"z":5},{"x":16,"y":12,"z":5},{"x":16,"y":11,"z":5},{"x":14,"y":12,"z":6},{"x":14,"y":11,"z":6},{"x":15,"y":12,"z":6},{"x":15,"y":11,"z":6},{"x":16,"y":12,"z":6},{"x":16,"y":11,"z":6}]},"preRequisite":[],"mechType":"Tomb"},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":2,"y":19,"z":58},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":14,"y":9,"z":60},{"x":14,"y":8,"z":60},{"x":15,"y":9,"z":60},{"x":15,"y":8,"z":60},{"x":14,"y":9,"z":61},{"x":14,"y":8,"z":61},{"x":15,"y":9,"z":61},{"x":15,"y":8,"z":61},{"x":14,"y":9,"z":62},{"x":14,"y":8,"z":62},{"x":15,"y":9,"z":62},{"x":15,"y":8,"z":62}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":9,"y":9,"z":60},{"x":9,"y":8,"z":60},{"x":10,"y":9,"z":60},{"x":10,"y":8,"z":60},{"x":9,"y":9,"z":61},{"x":9,"y":8,"z":61},{"x":10,"y":9,"z":61},{"x":10,"y":8,"z":61},{"x":9,"y":9,"z":62},{"x":9,"y":8,"z":62},{"x":10,"y":9,"z":62},{"x":10,"y":8,"z":62}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":5,"y":38,"z":17},{"x":5,"y":37,"z":17},{"x":6,"y":38,"z":17},{"x":6,"y":37,"z":17},{"x":7,"y":38,"z":17},{"x":7,"y":37,"z":17},{"x":5,"y":38,"z":18},{"x":5,"y":37,"z":18},{"x":6,"y":38,"z":18},{"x":6,"y":37,"z":18},{"x":7,"y":38,"z":18},{"x":7,"y":37,"z":18},{"x":5,"y":38,"z":19},{"x":5,"y":37,"z":19},{"x":6,"y":38,"z":19},{"x":6,"y":37,"z":19},{"x":7,"y":38,"z":19},{"x":7,"y":37,"z":19},{"x":5,"y":38,"z":20},{"x":5,"y":37,"z":20},{"x":6,"y":38,"z":20},{"x":6,"y":37,"z":20},{"x":7,"y":38,"z":20},{"x":7,"y":37,"z":20}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":13,"y":38,"z":17},{"x":13,"y":37,"z":17},{"x":14,"y":38,"z":17},{"x":14,"y":37,"z":17},{"x":15,"y":38,"z":17},{"x":15,"y":37,"z":17},{"x":13,"y":38,"z":18},{"x":13,"y":37,"z":18},{"x":14,"y":38,"z":18},{"x":14,"y":37,"z":18},{"x":15,"y":38,"z":18},{"x":15,"y":37,"z":18},{"x":13,"y":38,"z":19},{"x":13,"y":37,"z":19},{"x":14,"y":38,"z":19},{"x":14,"y":37,"z":19},{"x":15,"y":38,"z":19},{"x":15,"y":37,"z":19},{"x":13,"y":38,"z":20},{"x":13,"y":37,"z":20},{"x":14,"y":38,"z":20},{"x":14,"y":37,"z":20},{"x":15,"y":38,"z":20},{"x":15,"y":37,"z":20}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":10}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/15083814-fb7b-4791-b5d7-0810dd396b01.json b/src/main/resources/dgroomdata/15083814-fb7b-4791-b5d7-0810dd396b01.json
new file mode 100644
index 0000000..1302074
--- /dev/null
+++ b/src/main/resources/dgroomdata/15083814-fb7b-4791-b5d7-0810dd396b01.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,159,144,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,159,44,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,159,44,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,159,109,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,109,109,0,0,0,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,17,109,109,0,0,0,0,0,0,44,4,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,98,98,98,109,109,0,0,0,0,0,0,0,4,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,159,109,0,0,0,0,0,0,0,0,98,98,4,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,144,159,44,0,0,0,0,0,0,0,0,98,98,0,0,98,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,159,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,43,98,43,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,43,98,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,43,109,159,144,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,98,98,98,98,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,98,98,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,159,43,0,0,0,0,0,0,0,0,0,109,98,109,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,98,4,98,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,98,4,109,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,4,109,109,109,109,0,109,0,98,98,0,109,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,50,139,98,98,98,98,98,98,98,98,98,98,98,98,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,1,1,98,98,98,98,98,98,98,98,98,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"15083814-fb7b-4791-b5d7-0810dd396b01","name":"Big-red-flag","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":8,"y":5,"z":21},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":5,"y":5,"z":27},"secretType":"ITEM_DROP","preRequisite":[]},"prince-1":{"secretPoint":{"offsetPointList":[{"x":22,"y":2,"z":16},{"x":22,"y":1,"z":16},{"x":22,"y":0,"z":16},{"x":22,"y":-1,"z":16},{"x":23,"y":2,"z":16},{"x":23,"y":1,"z":16},{"x":23,"y":0,"z":16},{"x":23,"y":-1,"z":16},{"x":24,"y":2,"z":16},{"x":24,"y":1,"z":16},{"x":24,"y":0,"z":16},{"x":24,"y":-1,"z":16},{"x":25,"y":2,"z":16},{"x":25,"y":1,"z":16},{"x":25,"y":0,"z":16},{"x":25,"y":-1,"z":16},{"x":26,"y":2,"z":16},{"x":26,"y":1,"z":16},{"x":26,"y":0,"z":16},{"x":26,"y":-1,"z":16},{"x":22,"y":2,"z":17},{"x":22,"y":1,"z":17},{"x":22,"y":0,"z":17},{"x":22,"y":-1,"z":17},{"x":23,"y":2,"z":17},{"x":23,"y":1,"z":17},{"x":23,"y":0,"z":17},{"x":23,"y":-1,"z":17},{"x":24,"y":2,"z":17},{"x":24,"y":1,"z":17},{"x":24,"y":0,"z":17},{"x":24,"y":-1,"z":17},{"x":25,"y":2,"z":17},{"x":25,"y":1,"z":17},{"x":25,"y":0,"z":17},{"x":25,"y":-1,"z":17},{"x":26,"y":2,"z":17},{"x":26,"y":1,"z":17},{"x":26,"y":0,"z":17},{"x":26,"y":-1,"z":17},{"x":22,"y":2,"z":18},{"x":22,"y":1,"z":18},{"x":22,"y":0,"z":18},{"x":22,"y":-1,"z":18},{"x":23,"y":2,"z":18},{"x":23,"y":1,"z":18},{"x":23,"y":0,"z":18},{"x":23,"y":-1,"z":18},{"x":24,"y":2,"z":18},{"x":24,"y":1,"z":18},{"x":24,"y":0,"z":18},{"x":24,"y":-1,"z":18},{"x":25,"y":2,"z":18},{"x":25,"y":1,"z":18},{"x":25,"y":0,"z":18},{"x":25,"y":-1,"z":18},{"x":26,"y":2,"z":18},{"x":26,"y":1,"z":18},{"x":26,"y":0,"z":18},{"x":26,"y":-1,"z":18},{"x":22,"y":2,"z":19},{"x":22,"y":1,"z":19},{"x":22,"y":0,"z":19},{"x":22,"y":-1,"z":19},{"x":23,"y":2,"z":19},{"x":23,"y":1,"z":19},{"x":23,"y":0,"z":19},{"x":23,"y":-1,"z":19},{"x":24,"y":2,"z":19},{"x":24,"y":1,"z":19},{"x":24,"y":0,"z":19},{"x":24,"y":-1,"z":19},{"x":25,"y":2,"z":19},{"x":25,"y":1,"z":19},{"x":25,"y":0,"z":19},{"x":25,"y":-1,"z":19},{"x":26,"y":2,"z":19},{"x":26,"y":1,"z":19},{"x":26,"y":0,"z":19},{"x":26,"y":-1,"z":19}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/1ae1d65c-2c72-4ed6-afab-84d0de759e1e.json b/src/main/resources/dgroomdata/1ae1d65c-2c72-4ed6-afab-84d0de759e1e.json
new file mode 100644
index 0000000..b333ebe
--- /dev/null
+++ b/src/main/resources/dgroomdata/1ae1d65c-2c72-4ed6-afab-84d0de759e1e.json
@@ -0,0 +1,5412 @@
+{
+ "isUserMade": false,
+ "shape": 1,
+ "color": 63,
+ "blocks": [
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 4,
+ 4,
+ 1,
+ 1,
+ 4,
+ 67,
+ 67,
+ 1,
+ 1,
+ 98,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 67,
+ 67,
+ 4,
+ 1,
+ 1,
+ 4,
+ 4,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 109,
+ 109,
+ 98,
+ 109,
+ 109,
+ 109,
+ 109,
+ 109,
+ 98,
+ 109,
+ 109,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 1,
+ 98,
+ 0,
+ 0,
+ 0,
+ 98,
+ 44,
+ 98,
+ 109,
+ 109,
+ 109,
+ 109,
+ 109,
+ 98,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 67,
+ 4,
+ 1,
+ 1,
+ 4,
+ 4,
+ 4,
+ 1,
+ 1,
+ 98,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 67,
+ 67,
+ 4,
+ 1,
+ 1,
+ 4,
+ 4,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ]
+ ],
+ "uuid": "1ae1d65c-2c72-4ed6-afab-84d0de759e1e",
+ "name": "Admins",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "AgentK": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 15,
+ "z": 21
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 21
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 21
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 21
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 21
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 21
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 23
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 23
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 23
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 23
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 23
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 23
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 23
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "JamieTheGeek": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 23,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 23,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 23,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 23,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 23,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 23,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Rezzus": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 26,
+ "z": 3
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 3
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 3
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 3
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 3
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 3
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 3
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 3
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 3
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 3
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "LadyBleu": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 27,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 28,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 29,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 27,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "sfarnham": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 4,
+ "z": 29
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 29
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 29
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 29
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "PJoke1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 8,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 8,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 9,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 9,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 10,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 10,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 8,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 8,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 9,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 9,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 10,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 10,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 8,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 8,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 9,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 9,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 10,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 10,
+ "y": 25,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Judg3": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 23,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 23,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 22,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 23,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Cecer": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 3,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 4,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 3,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 3,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 4,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 3,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 3,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 4,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Revengeee": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 27,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 28,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 28,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 29,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 27,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "ChiLynn": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 27,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 27,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 27,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 28,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 28,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 29,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 27,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 27,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 28,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 28,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 29,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "flameboy101": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 22,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 23,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 24,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 22,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 22,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 23,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 24,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 22,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 22,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 23,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 24,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "fairysoul-?(9)": {
+ "secretPoint": {
+ "x": 16,
+ "y": 25,
+ "z": 30
+ },
+ "preRequisite": [
+ "Hypixel:open"
+ ],
+ "mechType": "Fairysoul"
+ },
+ "Jayavarmen": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 14,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 14,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 14,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 14,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 15,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 15,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 16,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 17,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 17,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 18,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 18,
+ "y": 3,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "skyerzz": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 3,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 4,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 3,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 3,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 4,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 3,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 3,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 4,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 5,
+ "y": 25,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Minikloon": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 8,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 10,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 8,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 10,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 8,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 10,
+ "y": 3,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Linfoot": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 27,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 27,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 27,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Plancke": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Bloozing": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 8,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 8,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 9,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 9,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 10,
+ "y": 26,
+ "z": 4
+ },
+ {
+ "x": 10,
+ "y": 25,
+ "z": 4
+ },
+ {
+ "x": 8,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 8,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 9,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 9,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 10,
+ "y": 26,
+ "z": 5
+ },
+ {
+ "x": 10,
+ "y": 25,
+ "z": 5
+ },
+ {
+ "x": 8,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 8,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 9,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 9,
+ "y": 25,
+ "z": 6
+ },
+ {
+ "x": 10,
+ "y": 26,
+ "z": 6
+ },
+ {
+ "x": 10,
+ "y": 25,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Thorlon": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 29
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 29
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 29
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 29
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "RobityBobity": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 8,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 8,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 8,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Hypixel": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 26
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 27
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 28
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 29
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 29
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 29
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 29
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 29
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 29
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 29
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Bembo": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "codename_B": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 3,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 3,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "aPunch": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 3,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 3,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 4,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 5,
+ "y": 3,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "WilliamTiger": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 27,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 27,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 27,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 28,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 29,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 27,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 27,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 28,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 29,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Nitroholic": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 23,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 24,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 22,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 23,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 24,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 22,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 23,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 24,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Don Pireso": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 26,
+ "z": 21
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 21
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 21
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 21
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 21
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 21
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 21
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 21
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 21
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 21
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 22
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 22
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 22
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 22
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 22
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 22
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 22
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 22
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 22
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 22
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 23
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 23
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 23
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 23
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 23
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 23
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 23
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 23
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 23
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 23
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Kessie": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 23,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 23,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 24,
+ "y": 15,
+ "z": 26
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 26
+ },
+ {
+ "x": 22,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 23,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 23,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 24,
+ "y": 15,
+ "z": 27
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 27
+ },
+ {
+ "x": 22,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 23,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 23,
+ "y": 14,
+ "z": 28
+ },
+ {
+ "x": 24,
+ "y": 15,
+ "z": 28
+ },
+ {
+ "x": 24,
+ "y": 14,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Sylent": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 8,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 8,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 8,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 8,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 10,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Ob111": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 15,
+ "z": 9
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 9
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 9
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 9
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 9
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 9
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 9
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 9
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 9
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 9
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 10
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 10
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 10
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 10
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 10
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 10
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 10
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 10
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 10
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 10
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 11
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 11
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 11
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 11
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 11
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 11
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 11
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 11
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 11
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 11
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "erosemberg": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 26,
+ "z": 9
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 9
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 9
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 9
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 9
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 9
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 9
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 9
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 9
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 9
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 10
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 10
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 10
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 10
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 10
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 10
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 10
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 10
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 10
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 10
+ },
+ {
+ "x": 14,
+ "y": 26,
+ "z": 11
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "z": 11
+ },
+ {
+ "x": 15,
+ "y": 26,
+ "z": 11
+ },
+ {
+ "x": 15,
+ "y": 25,
+ "z": 11
+ },
+ {
+ "x": 16,
+ "y": 26,
+ "z": 11
+ },
+ {
+ "x": 16,
+ "y": 25,
+ "z": 11
+ },
+ {
+ "x": 17,
+ "y": 26,
+ "z": 11
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "z": 11
+ },
+ {
+ "x": 18,
+ "y": 26,
+ "z": 11
+ },
+ {
+ "x": 18,
+ "y": 25,
+ "z": 11
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Externalizable": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 14,
+ "y": 15,
+ "z": 3
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 3
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 3
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 3
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 3
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 3
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 3
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 3
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 3
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 3
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 4
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 4
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 5
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 5
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 14,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 16,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 16,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 17,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 17,
+ "y": 14,
+ "z": 6
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "z": 6
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Relenter": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 8,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 10,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 8,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 10,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 8,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 8,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 10,
+ "y": 3,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Dctr": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 23,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 23,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 23,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "Likaos": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 27,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 27,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 27,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 27
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 27
+ },
+ {
+ "x": 27,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 27,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 28
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 28
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 28
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ }
+ },
+ "totalSecrets": 0
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/1df3a849-2a5b-451d-8bd7-971eb608363c.json b/src/main/resources/dgroomdata/1df3a849-2a5b-451d-8bd7-971eb608363c.json
new file mode 100644
index 0000000..4783fe9
--- /dev/null
+++ b/src/main/resources/dgroomdata/1df3a849-2a5b-451d-8bd7-971eb608363c.json
@@ -0,0 +1,2405 @@
+{
+ "isUserMade": false,
+ "shape": 3,
+ "color": 63,
+ "blocks": [
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 44,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 101,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 98,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 139,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 0,
+ 144,
+ 171,
+ 171,
+ 0,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 144,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 109,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 50,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 50,
+ 139,
+ 98,
+ 98,
+ 98,
+ 98,
+ 159,
+ 159,
+ 159,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 50,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 50,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 51,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 4,
+ 98,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 51,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 159,
+ 159,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 50,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 50,
+ 139,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 44,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 159,
+ 159,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 0,
+ 139,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 51,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 50,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 50,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 159,
+ 159,
+ 159,
+ 98,
+ 98,
+ 98,
+ 98,
+ 98,
+ 50,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 50,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 51,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 159,
+ 144,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 44,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 139,
+ 98,
+ 1,
+ 109,
+ 109,
+ 109,
+ 109,
+ 109,
+ 1,
+ 98,
+ 139,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 98,
+ 98,
+ 98,
+ 139,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 4,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 98,
+ 44,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 98,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 109,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 50,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ]
+ ],
+ "uuid": "1df3a849-2a5b-451d-8bd7-971eb608363c",
+ "name": "Pedestal",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "chest-2": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 33,
+ "y": -10,
+ "z": 24
+ },
+ "secretType": "CHEST",
+ "preRequisite": [
+ "crypt-1:open"
+ ]
+ },
+ "chest-3": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 8,
+ "y": 24,
+ "z": 22
+ },
+ "secretType": "CHEST",
+ "preRequisite": []
+ },
+ "chest-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 32,
+ "y": 0,
+ "z": 16
+ },
+ "secretType": "CHEST",
+ "preRequisite": []
+ },
+ "itemdrop-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 51,
+ "y": -8,
+ "z": 21
+ },
+ "secretType": "ITEM_DROP",
+ "preRequisite": []
+ },
+ "essence-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 54,
+ "y": -9,
+ "z": 23
+ },
+ "secretType": "ESSENCE",
+ "preRequisite": []
+ },
+ "crypt-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 32,
+ "y": -8,
+ "z": 24
+ },
+ {
+ "x": 32,
+ "y": -9,
+ "z": 24
+ },
+ {
+ "x": 33,
+ "y": -8,
+ "z": 24
+ },
+ {
+ "x": 33,
+ "y": -9,
+ "z": 24
+ },
+ {
+ "x": 34,
+ "y": -8,
+ "z": 24
+ },
+ {
+ "x": 34,
+ "y": -9,
+ "z": 24
+ },
+ {
+ "x": 32,
+ "y": -8,
+ "z": 25
+ },
+ {
+ "x": 32,
+ "y": -9,
+ "z": 25
+ },
+ {
+ "x": 33,
+ "y": -8,
+ "z": 25
+ },
+ {
+ "x": 33,
+ "y": -9,
+ "z": 25
+ },
+ {
+ "x": 34,
+ "y": -8,
+ "z": 25
+ },
+ {
+ "x": 34,
+ "y": -9,
+ "z": 25
+ },
+ {
+ "x": 32,
+ "y": -8,
+ "z": 26
+ },
+ {
+ "x": 32,
+ "y": -9,
+ "z": 26
+ },
+ {
+ "x": 33,
+ "y": -8,
+ "z": 26
+ },
+ {
+ "x": 33,
+ "y": -9,
+ "z": 26
+ },
+ {
+ "x": 34,
+ "y": -8,
+ "z": 26
+ },
+ {
+ "x": 34,
+ "y": -9,
+ "z": 26
+ },
+ {
+ "x": 32,
+ "y": -8,
+ "z": 27
+ },
+ {
+ "x": 32,
+ "y": -9,
+ "z": 27
+ },
+ {
+ "x": 33,
+ "y": -8,
+ "z": 27
+ },
+ {
+ "x": 33,
+ "y": -9,
+ "z": 27
+ },
+ {
+ "x": 34,
+ "y": -8,
+ "z": 27
+ },
+ {
+ "x": 34,
+ "y": -9,
+ "z": 27
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ }
+ },
+ "totalSecrets": 5
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/1e8d4327-7465-4bff-a8c7-505528273985.json b/src/main/resources/dgroomdata/1e8d4327-7465-4bff-a8c7-505528273985.json
new file mode 100644
index 0000000..4e7033d
--- /dev/null
+++ b/src/main/resources/dgroomdata/1e8d4327-7465-4bff-a8c7-505528273985.json
@@ -0,0 +1,1579 @@
+{
+ "isUserMade": false,
+ "shape": 1,
+ "color": 63,
+ "blocks": [
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 4,
+ 67,
+ 67,
+ 4,
+ 4,
+ 4,
+ 4,
+ 4,
+ 67,
+ 67,
+ 4,
+ 4,
+ 4,
+ 67,
+ 67,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 1,
+ 1,
+ 1,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 1,
+ 1,
+ 1,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 109,
+ 1,
+ 1,
+ 1,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 67,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 67,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 7,
+ 7,
+ 7,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 9,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 7,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 67,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 7,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 67,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 7,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18,
+ 35,
+ 7,
+ 4,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 159,
+ 7,
+ 18,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 7,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ]
+ ],
+ "uuid": "1e8d4327-7465-4bff-a8c7-505528273985",
+ "name": "Waterfall",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "crypt-5": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 28,
+ "y": 4,
+ "z": 25
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 25
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 25
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 25
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 25
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 25
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 26
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 26
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 26
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "crypt-4": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 28,
+ "y": 4,
+ "z": 19
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 19
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 19
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 19
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 19
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 19
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "z": 20
+ },
+ {
+ "x": 28,
+ "y": 3,
+ "z": 20
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 20
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 20
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 20
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 20
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "bat-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 4,
+ "y": 12,
+ "z": 23
+ },
+ "secretType": "BAT",
+ "preRequisite": []
+ },
+ "crypt-3": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 29,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 6
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 6
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 7
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 7
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 7
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 7
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 8
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 8
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 8
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 8
+ },
+ {
+ "x": 29,
+ "y": 4,
+ "z": 9
+ },
+ {
+ "x": 29,
+ "y": 3,
+ "z": 9
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "z": 9
+ },
+ {
+ "x": 30,
+ "y": 3,
+ "z": 9
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "crypt-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 12,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 12,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 13,
+ "y": 4,
+ "z": 3
+ },
+ {
+ "x": 13,
+ "y": 3,
+ "z": 3
+ },
+ {
+ "x": 12,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 12,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 13,
+ "y": 4,
+ "z": 4
+ },
+ {
+ "x": 13,
+ "y": 3,
+ "z": 4
+ },
+ {
+ "x": 12,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 12,
+ "y": 3,
+ "z": 5
+ },
+ {
+ "x": 13,
+ "y": 4,
+ "z": 5
+ },
+ {
+ "x": 13,
+ "y": 3,
+ "z": 5
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "essence-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 7,
+ "y": 7,
+ "z": 27
+ },
+ "secretType": "ESSENCE",
+ "preRequisite": []
+ },
+ "crypt-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 6,
+ "y": 8,
+ "z": 23
+ },
+ {
+ "x": 6,
+ "y": 7,
+ "z": 23
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "z": 23
+ },
+ {
+ "x": 7,
+ "y": 7,
+ "z": 23
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "z": 23
+ },
+ {
+ "x": 8,
+ "y": 7,
+ "z": 23
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "z": 24
+ },
+ {
+ "x": 6,
+ "y": 7,
+ "z": 24
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "z": 24
+ },
+ {
+ "x": 7,
+ "y": 7,
+ "z": 24
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "z": 24
+ },
+ {
+ "x": 8,
+ "y": 7,
+ "z": 24
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "z": 25
+ },
+ {
+ "x": 6,
+ "y": 7,
+ "z": 25
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "z": 25
+ },
+ {
+ "x": 7,
+ "y": 7,
+ "z": 25
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "z": 25
+ },
+ {
+ "x": 8,
+ "y": 7,
+ "z": 25
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ }
+ },
+ "totalSecrets": 2
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/23d6e1f6-efa3-476b-b452-ad5cf6a37be9.json b/src/main/resources/dgroomdata/23d6e1f6-efa3-476b-b452-ad5cf6a37be9.json
new file mode 100644
index 0000000..5d3f300
--- /dev/null
+++ b/src/main/resources/dgroomdata/23d6e1f6-efa3-476b-b452-ad5cf6a37be9.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,44,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,44,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,0,-1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"23d6e1f6-efa3-476b-b452-ad5cf6a37be9","name":"quad-lava","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":11,"y":-10,"z":12},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":26,"y":0,"z":26},"secretType":"CHEST","preRequisite":[]}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/250624ee-bb7a-4330-b698-a78f5e44ba99.json b/src/main/resources/dgroomdata/250624ee-bb7a-4330-b698-a78f5e44ba99.json
new file mode 100644
index 0000000..f82a044
--- /dev/null
+++ b/src/main/resources/dgroomdata/250624ee-bb7a-4330-b698-a78f5e44ba99.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":17,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,67,44,44,44,0,0,98,98,0,0,0,0,0,98,98,0,0,44,44,44,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,67,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,1,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,1,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,109,89,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,139,0,139,0,98,98,0,0,0,0,0,0,0,0,0,98,98,0,139,0,139,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,109,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,50,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,109,98,50,0,0,0,0,0,50,98,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,159,-1,-1,-1,-1],[-1,-1,-1,-1,47,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,47,-1,-1,-1,-1],[-1,-1,-1,-1,98,47,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,47,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,47,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,47,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,47,159,98,109,109,50,0,0,0,0,0,50,98,109,109,159,47,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"250624ee-bb7a-4330-b698-a78f5e44ba99","name":"grand-library","processorId":"default","properties":{},"mechanics":{"door-3":{"secretPoint":{"offsetPointList":[{"x":16,"y":-7,"z":48}]},"preRequisite":["lever-3:triggered"],"mechType":"OnewayDoor"},"chest-2":{"mechType":"Secret","secretPoint":{"x":16,"y":-12,"z":32},"secretType":"CHEST","preRequisite":["composed-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":29,"y":23,"z":24},"secretType":"CHEST","preRequisite":[]},"door-1":{"secretPoint":{"offsetPointList":[{"x":14,"y":-5,"z":46},{"x":15,"y":-5,"z":46},{"x":16,"y":-5,"z":46},{"x":17,"y":-5,"z":46},{"x":18,"y":-5,"z":46},{"x":14,"y":-5,"z":47},{"x":15,"y":-5,"z":47},{"x":16,"y":-5,"z":47},{"x":17,"y":-5,"z":47},{"x":18,"y":-5,"z":47},{"x":14,"y":-5,"z":48},{"x":15,"y":-5,"z":48},{"x":16,"y":-5,"z":48},{"x":17,"y":-5,"z":48},{"x":18,"y":-5,"z":48},{"x":14,"y":-5,"z":49},{"x":15,"y":-5,"z":49},{"x":16,"y":-5,"z":49},{"x":17,"y":-5,"z":49},{"x":18,"y":-5,"z":49},{"x":14,"y":-5,"z":50},{"x":15,"y":-5,"z":50},{"x":16,"y":-5,"z":50},{"x":17,"y":-5,"z":50},{"x":18,"y":-5,"z":50}]},"preRequisite":["lever-1-1:triggered"],"mechType":"OnewayDoor"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":3,"y":18,"z":48},"preRequisite":[],"triggering":"door-2"},"door-2":{"secretPoint":{"offsetPointList":[{"x":15,"y":-6,"z":47},{"x":16,"y":-6,"z":47},{"x":17,"y":-6,"z":47},{"x":15,"y":-6,"z":48},{"x":16,"y":-6,"z":48},{"x":17,"y":-6,"z":48},{"x":15,"y":-6,"z":49},{"x":16,"y":-6,"z":49},{"x":17,"y":-6,"z":49}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"composed-1":{"secretPoint":{"offsetPointList":[{"x":14,"y":-5,"z":46},{"x":15,"y":-5,"z":46},{"x":16,"y":-5,"z":46},{"x":17,"y":-5,"z":46},{"x":18,"y":-5,"z":46},{"x":14,"y":-5,"z":47},{"x":15,"y":-5,"z":47},{"x":15,"y":-6,"z":47},{"x":16,"y":-5,"z":47},{"x":16,"y":-6,"z":47},{"x":17,"y":-5,"z":47},{"x":17,"y":-6,"z":47},{"x":18,"y":-5,"z":47},{"x":14,"y":-5,"z":48},{"x":15,"y":-5,"z":48},{"x":15,"y":-6,"z":48},{"x":16,"y":-5,"z":48},{"x":16,"y":-6,"z":48},{"x":16,"y":-7,"z":48},{"x":17,"y":-5,"z":48},{"x":17,"y":-6,"z":48},{"x":18,"y":-5,"z":48},{"x":14,"y":-5,"z":49},{"x":15,"y":-5,"z":49},{"x":15,"y":-6,"z":49},{"x":16,"y":-5,"z":49},{"x":16,"y":-6,"z":49},{"x":17,"y":-5,"z":49},{"x":17,"y":-6,"z":49},{"x":18,"y":-5,"z":49},{"x":14,"y":-5,"z":50},{"x":15,"y":-5,"z":50},{"x":16,"y":-5,"z":50},{"x":17,"y":-5,"z":50},{"x":18,"y":-5,"z":50}]},"preRequisite":["door-1:open","door-2:open","door-3:open"],"mechType":"OnewayDoor"},"journal-1":{"secretPoint":{"x":24,"y":11,"z":36},"preRequisite":[],"mechType":"Journal"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":25,"y":12,"z":12},{"x":25,"y":11,"z":12},{"x":25,"y":10,"z":12},{"x":26,"y":12,"z":12},{"x":26,"y":11,"z":12},{"x":26,"y":10,"z":12}]},"preRequisite":[],"mechType":"BreakableWall"},"lever-3":{"mechType":"OnewayLever","leverPoint":{"x":28,"y":24,"z":60},"preRequisite":[],"triggering":"door-3"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":12,"y":-13,"z":28},"secretType":"ITEM_DROP","preRequisite":["composed-1:open"]},"lever-1-2":{"mechType":"OnewayLever","leverPoint":{"x":16,"y":7,"z":61},"preRequisite":[],"triggering":"door-1"},"lever-1-1":{"mechType":"OnewayLever","leverPoint":{"x":29,"y":7,"z":48},"preRequisite":[],"triggering":"door-1"},"essence-1":{"mechType":"Secret","secretPoint":{"x":28,"y":10,"z":7},"secretType":"ESSENCE","preRequisite":[]},"lever-1-3":{"mechType":"OnewayLever","leverPoint":{"x":3,"y":7,"z":48},"preRequisite":[],"triggering":"door-1"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/25956a46-7094-4a9e-b5d9-c9f8291ffef4.json b/src/main/resources/dgroomdata/25956a46-7094-4a9e-b5d9-c9f8291ffef4.json
new file mode 100644
index 0000000..dc936ff
--- /dev/null
+++ b/src/main/resources/dgroomdata/25956a46-7094-4a9e-b5d9-c9f8291ffef4.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":50,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,139,98,139,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,109,109,98,98,109,109,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,139,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,0,98,0,0,0,0,98,1,1,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,0,18,0,18,18,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,109,109,98,98,109,109,98,1,98,0,0,0,0,0,139,98,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,1,98,109,109,1,109,98,1,109,0,0,0,0,9,1,1,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,17,85,0,58,17,0,0,98,98,0,0,0,0,0,139,98,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,17,0,0,0,17,50,0,0,0,0,0,0,0,0,0,0,0,144,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,98,98,4,1,109,109,98,0,0,0,0,0,139,98,98,109,109,109,1,98,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,4,1,1,4,1,1,1,1,0,0,0,0,0,98,98,98,109,98,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,118,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,68,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,144,109,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,1,98,98,0,0,0,0,0,109,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,109,1,1,0,0,0,0,0,109,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,98,98,98,0,0,0,0,0,109,109,109,0,0,0,0,0,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,159,159,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,9,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,144,0,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,109,1,98,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,44,109,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,98,0,0,98,0,0,98,109,109,1,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,98,0,0,0,0,0,0,109,144,0,109,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,109,159,159,0,0,0,0,0,0,0,0,0,0,188,159,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,159,109,0,144,98,0,0,0,0,0,0,188,159,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,144,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,159,159,159,0,0,0,0,0,0,0,101,159,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,159,159,98,44,144,109,0,0,0,0,0,0,98,109,44,109,1,4,109,44,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,0,139,0,0,0,0,0,0,0,134,5,5,0,135,5,17,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,109,109,109,0,0,0,0,0,0,0,0,134,134,5,0,135,135,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,44,144,44,109,98,0,0,0,0,0,50,1,0,144,109,-1,-1,-1,-1,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,159,159,1,0,0,0,0,0,17,98,159,159,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,109,1,159,109,0,0,0,0,0,0,109,159,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,98,0,0,0,0,0,0,109,0,0,0,109,159,144,0,0,0,0,0,0,109,159,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,0,0,0,0,0,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,139,109,0,0,0,0,159,0,126,126,0,0,0,0,98,159,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,144,98,0,0,98,0,0,98,98,98,109,98,98,144,50,0,144,98,109,0,0,0,0,159,0,126,126,0,0,0,0,98,159,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,139,1,109,0,0,0,109,159,159,159,159,109,139,0,0,0,144,159,44,0,0,0,0,0,0,109,159,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,109,0,0,0,0,0,0,109,159,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,44,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,109,0,0,0,0,0,0,98,4,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"25956a46-7094-4a9e-b5d9-c9f8291ffef4","name":"Chambers","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":58,"y":-1,"z":59},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":3,"y":13,"z":48},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":48,"y":-13,"z":10},"secretType":"CHEST","preRequisite":[]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":38,"y":1,"z":8},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":29,"y":1,"z":59},{"x":29,"y":0,"z":59},{"x":29,"y":-1,"z":59},{"x":29,"y":1,"z":60},{"x":29,"y":0,"z":60},{"x":29,"y":-1,"z":60}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":58,"y":13,"z":30},"secretType":"BAT","preRequisite":[]},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":17,"y":14,"z":37},{"x":17,"y":13,"z":37},{"x":17,"y":12,"z":37},{"x":17,"y":11,"z":37},{"x":17,"y":14,"z":38},{"x":17,"y":13,"z":38},{"x":17,"y":12,"z":38},{"x":17,"y":11,"z":38}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-4":{"mechType":"Secret","secretPoint":{"x":41,"y":-1,"z":56},"secretType":"CHEST","preRequisite":["door-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":56,"y":3,"z":52},{"x":56,"y":2,"z":52},{"x":56,"y":1,"z":52},{"x":56,"y":0,"z":52},{"x":56,"y":-1,"z":52},{"x":57,"y":3,"z":52},{"x":57,"y":2,"z":52},{"x":57,"y":1,"z":52},{"x":57,"y":0,"z":52},{"x":57,"y":-1,"z":52},{"x":58,"y":3,"z":52},{"x":58,"y":2,"z":52},{"x":58,"y":1,"z":52},{"x":58,"y":0,"z":52},{"x":58,"y":-1,"z":52},{"x":59,"y":3,"z":52},{"x":59,"y":2,"z":52},{"x":59,"y":1,"z":52},{"x":59,"y":0,"z":52},{"x":59,"y":-1,"z":52}]},"preRequisite":[],"mechType":"BreakableWall"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":36,"y":21,"z":56},{"x":36,"y":20,"z":56},{"x":37,"y":21,"z":56},{"x":37,"y":20,"z":56},{"x":38,"y":21,"z":56},{"x":38,"y":20,"z":56},{"x":36,"y":21,"z":57},{"x":36,"y":20,"z":57},{"x":37,"y":21,"z":57},{"x":37,"y":20,"z":57},{"x":38,"y":21,"z":57},{"x":38,"y":20,"z":57},{"x":36,"y":21,"z":58},{"x":36,"y":20,"z":58},{"x":37,"y":21,"z":58},{"x":37,"y":20,"z":58},{"x":38,"y":21,"z":58},{"x":38,"y":20,"z":58},{"x":36,"y":21,"z":59},{"x":36,"y":20,"z":59},{"x":37,"y":21,"z":59},{"x":37,"y":20,"z":59},{"x":38,"y":21,"z":59},{"x":38,"y":20,"z":59},{"x":36,"y":21,"z":60},{"x":36,"y":20,"z":60},{"x":37,"y":21,"z":60},{"x":37,"y":20,"z":60},{"x":38,"y":21,"z":60},{"x":38,"y":20,"z":60}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":45,"y":21,"z":56},{"x":45,"y":20,"z":56},{"x":46,"y":21,"z":56},{"x":46,"y":20,"z":56},{"x":47,"y":21,"z":56},{"x":47,"y":20,"z":56},{"x":45,"y":21,"z":57},{"x":45,"y":20,"z":57},{"x":46,"y":21,"z":57},{"x":46,"y":20,"z":57},{"x":47,"y":21,"z":57},{"x":47,"y":20,"z":57},{"x":45,"y":21,"z":58},{"x":45,"y":20,"z":58},{"x":46,"y":21,"z":58},{"x":46,"y":20,"z":58},{"x":47,"y":21,"z":58},{"x":47,"y":20,"z":58},{"x":45,"y":21,"z":59},{"x":45,"y":20,"z":59},{"x":46,"y":21,"z":59},{"x":46,"y":20,"z":59},{"x":47,"y":21,"z":59},{"x":47,"y":20,"z":59},{"x":45,"y":21,"z":60},{"x":45,"y":20,"z":60},{"x":46,"y":21,"z":60},{"x":46,"y":20,"z":60},{"x":47,"y":21,"z":60},{"x":47,"y":20,"z":60}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":46,"y":21,"z":37},{"x":46,"y":20,"z":37},{"x":47,"y":21,"z":37},{"x":47,"y":20,"z":37},{"x":48,"y":21,"z":37},{"x":48,"y":20,"z":37},{"x":46,"y":21,"z":38},{"x":46,"y":20,"z":38},{"x":47,"y":21,"z":38},{"x":47,"y":20,"z":38},{"x":48,"y":21,"z":38},{"x":48,"y":20,"z":38},{"x":46,"y":21,"z":39},{"x":46,"y":20,"z":39},{"x":47,"y":21,"z":39},{"x":47,"y":20,"z":39},{"x":48,"y":21,"z":39},{"x":48,"y":20,"z":39},{"x":46,"y":21,"z":40},{"x":46,"y":20,"z":40},{"x":47,"y":21,"z":40},{"x":47,"y":20,"z":40},{"x":48,"y":21,"z":40},{"x":48,"y":20,"z":40},{"x":46,"y":21,"z":41},{"x":46,"y":20,"z":41},{"x":47,"y":21,"z":41},{"x":47,"y":20,"z":41},{"x":48,"y":21,"z":41},{"x":48,"y":20,"z":41}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":24,"y":-4,"z":47},{"x":24,"y":-5,"z":47},{"x":25,"y":-4,"z":47},{"x":25,"y":-5,"z":47},{"x":26,"y":-4,"z":47},{"x":26,"y":-5,"z":47},{"x":27,"y":-4,"z":47},{"x":27,"y":-5,"z":47},{"x":28,"y":-4,"z":47},{"x":28,"y":-5,"z":47},{"x":24,"y":-4,"z":48},{"x":24,"y":-5,"z":48},{"x":25,"y":-4,"z":48},{"x":25,"y":-5,"z":48},{"x":26,"y":-4,"z":48},{"x":26,"y":-5,"z":48},{"x":27,"y":-4,"z":48},{"x":27,"y":-5,"z":48},{"x":28,"y":-4,"z":48},{"x":28,"y":-5,"z":48},{"x":24,"y":-4,"z":49},{"x":24,"y":-5,"z":49},{"x":25,"y":-4,"z":49},{"x":25,"y":-5,"z":49},{"x":26,"y":-4,"z":49},{"x":26,"y":-5,"z":49},{"x":27,"y":-4,"z":49},{"x":27,"y":-5,"z":49},{"x":28,"y":-4,"z":49},{"x":28,"y":-5,"z":49}]},"preRequisite":[],"mechType":"Tomb"},"prince-1":{"secretPoint":{"offsetPointList":[{"x":34,"y":21,"z":43},{"x":34,"y":20,"z":43},{"x":35,"y":21,"z":43},{"x":35,"y":20,"z":43},{"x":36,"y":21,"z":43},{"x":36,"y":20,"z":43},{"x":37,"y":21,"z":43},{"x":37,"y":20,"z":43},{"x":38,"y":21,"z":43},{"x":38,"y":20,"z":43},{"x":39,"y":21,"z":43},{"x":39,"y":20,"z":43},{"x":34,"y":21,"z":44},{"x":34,"y":20,"z":44},{"x":35,"y":21,"z":44},{"x":35,"y":20,"z":44},{"x":36,"y":21,"z":44},{"x":36,"y":20,"z":44},{"x":37,"y":21,"z":44},{"x":37,"y":20,"z":44},{"x":38,"y":21,"z":44},{"x":38,"y":20,"z":44},{"x":39,"y":21,"z":44},{"x":39,"y":20,"z":44},{"x":34,"y":21,"z":45},{"x":34,"y":20,"z":45},{"x":35,"y":21,"z":45},{"x":35,"y":20,"z":45},{"x":36,"y":21,"z":45},{"x":36,"y":20,"z":45},{"x":37,"y":21,"z":45},{"x":37,"y":20,"z":45},{"x":38,"y":21,"z":45},{"x":38,"y":20,"z":45},{"x":39,"y":21,"z":45},{"x":39,"y":20,"z":45}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/296fd7ea-4ac5-46e5-beb9-5d27019e3796.json b/src/main/resources/dgroomdata/296fd7ea-4ac5-46e5-beb9-5d27019e3796.json
new file mode 100644
index 0000000..6d5d81c
--- /dev/null
+++ b/src/main/resources/dgroomdata/296fd7ea-4ac5-46e5-beb9-5d27019e3796.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":15,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,159,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,0,0,101,0,98,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,98,1,4,4,4,4,4,1,98,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,98,0,101,0,0,0,0,0,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,101,0,0,0,0,98,1,1,1,1,4,4,1,48,1,4,4,1,1,1,1,98,0,0,0,0,101,0,0,0,0,0,0,0,0,144,159,1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,1,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,98,101,0,101,98,98,98,1,1,1,1,1,1,4,4,4,98,98,98,0,50,98,0,0,0,98,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,98,0,0,0,98,50,0,98,98,98,4,4,4,1,1,1,1,1,1,98,98,98,101,0,101,98,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,98,1,101,101,101,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,98,98,98,98,98,98,98,98,0,0,0,98,98,98,98,109,98,0,0,0,98,98,98,109,98,1,1,1,1,1,98,1,4,4,4,4,4,1,98,1,1,1,1,1,98,109,98,98,98,0,0,0,98,109,98,98,98,98,0,0,0,98,98,98,98,98,98,98,98,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,101,101,101,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,98,98,0,0,0,98,98,0,0,0,98,0,0,0,98,0,0,0,98,98,1,1,1,1,98,4,1,4,44,4,1,4,98,1,1,1,1,98,98,0,0,0,98,0,0,0,98,0,0,0,98,98,0,0,0,98,98,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,1,1,98,1,44,44,44,44,44,1,98,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,159,44,44,44,44,0,44,44,44,44,159,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,44,44,0,0,0,0,0,44,44,159,159,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,0,0,0,0,139,139,98,109,109,109,98,139,139,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,98,0,0,0,0,0,0,0,98,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,139,139,98,109,109,109,98,139,139,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,139,139,1,98,1,1,1,139,139,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,139,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,139,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,139,139,1,1,1,98,1,139,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,1,98,1,1,1,1,1,1,1,98,1,0,0,0,0,4,1,4,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,109,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,109,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,4,1,4,0,0,0,0,1,98,1,1,1,1,1,1,1,98,1,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,109,0,0,0,0,0,4,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,4,0,0,0,0,0,109,1,1,1,1,1,1,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,1,1,1,169,1,1,98,109,0,0,0,0,0,48,1,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,48,0,0,0,0,0,109,98,1,1,169,1,1,1,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,109,0,0,0,0,0,4,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,4,0,0,0,0,0,109,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,1,98,1,1,1,1,1,1,1,98,1,0,0,0,0,48,1,4,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,98,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,98,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,4,1,48,0,0,0,0,1,98,1,1,1,1,1,1,1,98,1,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,139,139,1,98,1,1,1,139,139,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,139,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,139,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,139,139,1,1,1,98,1,139,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,0,0,0,0,139,139,98,109,109,109,98,139,139,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,98,0,0,0,0,0,0,0,98,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,139,139,98,109,109,109,98,139,139,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,44,44,0,0,0,0,0,44,44,159,159,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,159,44,44,44,44,0,44,44,44,44,159,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,1,1,98,48,44,44,44,44,44,48,98,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,98,98,0,0,0,98,98,0,0,0,98,0,0,0,98,0,0,0,98,1,1,1,1,1,98,4,4,1,44,1,4,4,98,1,1,1,1,1,98,0,0,0,98,0,0,0,98,0,0,0,98,98,0,0,0,98,98,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,0,101,101,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,98,98,109,109,109,98,98,98,0,0,0,98,98,98,98,98,98,0,0,0,98,98,98,98,98,1,1,1,1,1,98,4,1,1,1,1,1,4,98,1,1,1,1,1,98,98,98,98,98,0,0,0,98,98,98,98,98,98,0,0,0,98,98,98,109,109,109,98,98,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,101,101,0,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,101,0,101,98,98,98,1,1,1,1,1,1,4,4,48,1,0,0,50,1,98,0,0,0,98,1,0,0,0,1,1,1,1,1,4,4,4,1,1,1,4,4,4,1,1,1,1,1,0,0,0,1,98,0,0,0,98,1,50,0,0,1,48,4,4,1,1,1,1,1,1,98,98,98,101,0,101,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,144,159,109,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,98,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,98,1,1,1,4,4,1,1,1,1,1,4,4,1,1,1,98,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,98,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,101,0,1,1,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,98,4,1,4,4,4,1,4,98,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,1,0,101,0,0,0,0,0,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"296fd7ea-4ac5-46e5-beb9-5d27019e3796","name":"Mossy","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":48,"y":19,"z":5},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":3,"y":-1,"z":5},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":64,"y":25,"z":16},"secretType":"CHEST","preRequisite":[]},"fairysoul-4":{"secretPoint":{"x":71,"y":12,"z":16},"preRequisite":[],"mechType":"Fairysoul"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":64,"y":0,"z":30},"preRequisite":["crypt-1:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":56,"y":25,"z":3},{"x":56,"y":24,"z":3},{"x":56,"y":23,"z":3},{"x":56,"y":22,"z":3},{"x":56,"y":21,"z":3},{"x":56,"y":20,"z":3},{"x":56,"y":19,"z":3},{"x":56,"y":25,"z":4},{"x":56,"y":24,"z":4},{"x":56,"y":23,"z":4},{"x":56,"y":22,"z":4},{"x":56,"y":21,"z":4},{"x":56,"y":20,"z":4},{"x":56,"y":19,"z":4},{"x":56,"y":25,"z":5},{"x":56,"y":24,"z":5},{"x":56,"y":23,"z":5},{"x":56,"y":22,"z":5},{"x":56,"y":21,"z":5},{"x":56,"y":20,"z":5},{"x":56,"y":19,"z":5},{"x":56,"y":25,"z":6},{"x":56,"y":24,"z":6},{"x":56,"y":23,"z":6},{"x":56,"y":22,"z":6},{"x":56,"y":21,"z":6},{"x":56,"y":20,"z":6},{"x":56,"y":19,"z":6}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":78,"y":17,"z":10},"secretType":"BAT","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":63,"y":2,"z":2},{"x":63,"y":1,"z":2},{"x":64,"y":2,"z":2},{"x":64,"y":1,"z":2},{"x":65,"y":2,"z":2},{"x":65,"y":1,"z":2},{"x":63,"y":2,"z":3},{"x":63,"y":1,"z":3},{"x":64,"y":2,"z":3},{"x":64,"y":1,"z":3},{"x":65,"y":2,"z":3},{"x":65,"y":1,"z":3},{"x":63,"y":2,"z":4},{"x":63,"y":1,"z":4},{"x":64,"y":2,"z":4},{"x":64,"y":1,"z":4},{"x":65,"y":2,"z":4},{"x":65,"y":1,"z":4},{"x":63,"y":2,"z":5},{"x":63,"y":1,"z":5},{"x":64,"y":2,"z":5},{"x":64,"y":1,"z":5},{"x":65,"y":2,"z":5},{"x":65,"y":1,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":63,"y":2,"z":27},{"x":63,"y":1,"z":27},{"x":64,"y":2,"z":27},{"x":64,"y":1,"z":27},{"x":65,"y":2,"z":27},{"x":65,"y":1,"z":27},{"x":63,"y":2,"z":28},{"x":63,"y":1,"z":28},{"x":64,"y":2,"z":28},{"x":64,"y":1,"z":28},{"x":65,"y":2,"z":28},{"x":65,"y":1,"z":28},{"x":63,"y":2,"z":29},{"x":63,"y":1,"z":29},{"x":64,"y":2,"z":29},{"x":64,"y":1,"z":29},{"x":65,"y":2,"z":29},{"x":65,"y":1,"z":29},{"x":63,"y":2,"z":30},{"x":63,"y":1,"z":30},{"x":64,"y":2,"z":30},{"x":64,"y":1,"z":30},{"x":65,"y":2,"z":30},{"x":65,"y":1,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":1,"z":8},{"x":6,"y":0,"z":8},{"x":6,"y":-1,"z":8},{"x":6,"y":2,"z":9},{"x":6,"y":1,"z":9},{"x":6,"y":0,"z":9},{"x":6,"y":-1,"z":9},{"x":6,"y":0,"z":10},{"x":6,"y":-1,"z":10}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/2b5cb4ef-00a3-4aae-baec-d2094a158d60.json b/src/main/resources/dgroomdata/2b5cb4ef-00a3-4aae-baec-d2094a158d60.json
new file mode 100644
index 0000000..8174fb3
--- /dev/null
+++ b/src/main/resources/dgroomdata/2b5cb4ef-00a3-4aae-baec-d2094a158d60.json
@@ -0,0 +1,1403 @@
+{
+ "isUserMade": false,
+ "shape": 1,
+ "color": 63,
+ "blocks": [
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 159,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 159,
+ 159,
+ 159,
+ 1,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 44,
+ 144,
+ 0,
+ 1,
+ 1,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 126,
+ 0,
+ 0,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 4,
+ 50,
+ 0,
+ 0,
+ 0,
+ 98,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 4,
+ 5,
+ 0,
+ 0,
+ 0,
+ 98,
+ -1,
+ 0,
+ 0,
+ 0,
+ 44,
+ 98,
+ 44,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 134,
+ 188,
+ 0,
+ 98,
+ 98,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 159,
+ 1,
+ 109,
+ 109,
+ 109,
+ 98,
+ 1,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 50,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 98,
+ 139,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 139,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 50,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 43,
+ 43,
+ 43,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 44,
+ 0,
+ 0,
+ 0,
+ 43,
+ 169,
+ 43,
+ 0,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 50,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 0,
+ 0,
+ 50,
+ 0,
+ 43,
+ 43,
+ 43,
+ 0,
+ 50,
+ 0,
+ 98,
+ 98,
+ 0,
+ 0,
+ 98,
+ 98,
+ 0,
+ 50,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 159,
+ 159,
+ 159,
+ 159,
+ 159,
+ 169,
+ 159,
+ 159,
+ 159,
+ 1,
+ 1,
+ 1,
+ 1,
+ 159,
+ 159,
+ 48,
+ 48,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 43,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 48,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 48,
+ 48,
+ 1,
+ 1,
+ 48,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 48,
+ 1,
+ 1,
+ 48,
+ 48,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 48,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ],
+ [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ -1
+ ]
+ ],
+ "uuid": "2b5cb4ef-00a3-4aae-baec-d2094a158d60",
+ "name": "Sloth",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "itemdrop-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 9,
+ "y": -1,
+ "z": 10
+ },
+ "secretType": "ITEM_DROP",
+ "preRequisite": [
+ "superboom-1:open"
+ ]
+ },
+ "prince-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 12,
+ "y": 2,
+ "z": 26
+ },
+ {
+ "x": 12,
+ "y": 1,
+ "z": 26
+ },
+ {
+ "x": 13,
+ "y": 2,
+ "z": 26
+ },
+ {
+ "x": 13,
+ "y": 1,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 2,
+ "z": 26
+ },
+ {
+ "x": 14,
+ "y": 1,
+ "z": 26
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "z": 27
+ },
+ {
+ "x": 12,
+ "y": 1,
+ "z": 27
+ },
+ {
+ "x": 13,
+ "y": 2,
+ "z": 27
+ },
+ {
+ "x": 13,
+ "y": 1,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 2,
+ "z": 27
+ },
+ {
+ "x": 14,
+ "y": 1,
+ "z": 27
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "z": 28
+ },
+ {
+ "x": 12,
+ "y": 1,
+ "z": 28
+ },
+ {
+ "x": 13,
+ "y": 2,
+ "z": 28
+ },
+ {
+ "x": 13,
+ "y": 1,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 2,
+ "z": 28
+ },
+ {
+ "x": 14,
+ "y": 1,
+ "z": 28
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "z": 29
+ },
+ {
+ "x": 12,
+ "y": 1,
+ "z": 29
+ },
+ {
+ "x": 13,
+ "y": 2,
+ "z": 29
+ },
+ {
+ "x": 13,
+ "y": 1,
+ "z": 29
+ },
+ {
+ "x": 14,
+ "y": 2,
+ "z": 29
+ },
+ {
+ "x": 14,
+ "y": 1,
+ "z": 29
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "z": 30
+ },
+ {
+ "x": 12,
+ "y": 1,
+ "z": 30
+ },
+ {
+ "x": 13,
+ "y": 2,
+ "z": 30
+ },
+ {
+ "x": 13,
+ "y": 1,
+ "z": 30
+ },
+ {
+ "x": 14,
+ "y": 2,
+ "z": 30
+ },
+ {
+ "x": 14,
+ "y": 1,
+ "z": 30
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "journal-1": {
+ "secretPoint": {
+ "x": 7,
+ "y": -1,
+ "z": 8
+ },
+ "preRequisite": [
+ "superboom-1:open"
+ ],
+ "mechType": "Journal"
+ },
+ "superboom-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 11,
+ "y": 3,
+ "z": 8
+ },
+ {
+ "x": 11,
+ "y": 2,
+ "z": 8
+ },
+ {
+ "x": 11,
+ "y": 1,
+ "z": 8
+ },
+ {
+ "x": 11,
+ "y": 0,
+ "z": 8
+ },
+ {
+ "x": 11,
+ "y": -1,
+ "z": 8
+ },
+ {
+ "x": 11,
+ "y": 2,
+ "z": 9
+ },
+ {
+ "x": 11,
+ "y": 1,
+ "z": 9
+ },
+ {
+ "x": 11,
+ "y": 0,
+ "z": 9
+ },
+ {
+ "x": 11,
+ "y": -1,
+ "z": 9
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "BreakableWall"
+ }
+ },
+ "totalSecrets": 1
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/2ccc73b5-883f-4436-9b8f-1a32123b2cb9.json b/src/main/resources/dgroomdata/2ccc73b5-883f-4436-9b8f-1a32123b2cb9.json
new file mode 100644
index 0000000..a5b9979
--- /dev/null
+++ b/src/main/resources/dgroomdata/2ccc73b5-883f-4436-9b8f-1a32123b2cb9.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,103,103,0,0,0,0,103,103,103,0,0,0,0,98,98,1,1,50,0,0,0,159,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,103,0,0,0,0,0,0,0,0,0,0,0,0,98,159,0,0,0,0,0,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,144,0,0,144,0,98,159,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,17,103,0,0,0,103,17,0,0,0,0,0,17,98,159,0,0,0,0,0,0,0,0,50,1,-1,-1,-1,-1],[-1,-1,-1,-1,103,103,0,0,0,0,103,103,103,0,0,0,0,98,159,0,0,0,0,0,0,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,103,0,0,0,0,0,103,103,0,0,0,103,103,98,159,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,103,103,98,159,0,144,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,1,50,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,48,4,4,48,4,48,4,4,48,4,4,98,98,109,98,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,1,0,0,0,1,1,0,0,0,44,1,0,0,0,0,0,0,0,0,0,0,50,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,109,0,0,0,109,109,0,0,0,1,44,0,0,0,0,0,0,0,0,0,0,50,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,98,98,4,4,48,98,98,4,4,48,98,98,98,98,0,0,0,0,0,0,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,50,98,98,98,98,109,0,0,0,98,98,139,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,98,109,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,1,0,0,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,109,0,0,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,50,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,0,0,0,0,0,159,159,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,1,1,0,0,0,159,1,1,35,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"2ccc73b5-883f-4436-9b8f-1a32123b2cb9","name":"Dueces","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":3,"y":8,"z":16},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":11,"y":0,"z":7},"secretType":"ITEM_DROP","preRequisite":["superboom-2:open"]},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":6,"y":8,"z":27},{"x":6,"y":7,"z":27},{"x":7,"y":8,"z":27},{"x":7,"y":7,"z":27},{"x":8,"y":8,"z":27},{"x":8,"y":7,"z":27},{"x":6,"y":8,"z":28},{"x":6,"y":7,"z":28},{"x":7,"y":8,"z":28},{"x":7,"y":7,"z":28},{"x":8,"y":8,"z":28},{"x":8,"y":7,"z":28},{"x":6,"y":8,"z":29},{"x":6,"y":7,"z":29},{"x":7,"y":8,"z":29},{"x":7,"y":7,"z":29},{"x":8,"y":8,"z":29},{"x":8,"y":7,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":11,"y":8,"z":27},{"x":11,"y":7,"z":27},{"x":12,"y":8,"z":27},{"x":12,"y":7,"z":27},{"x":13,"y":8,"z":27},{"x":13,"y":7,"z":27},{"x":11,"y":8,"z":28},{"x":11,"y":7,"z":28},{"x":12,"y":8,"z":28},{"x":12,"y":7,"z":28},{"x":13,"y":8,"z":28},{"x":13,"y":7,"z":28},{"x":11,"y":8,"z":29},{"x":11,"y":7,"z":29},{"x":12,"y":8,"z":29},{"x":12,"y":7,"z":29},{"x":13,"y":8,"z":29},{"x":13,"y":7,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":16,"y":8,"z":27},{"x":16,"y":7,"z":27},{"x":17,"y":8,"z":27},{"x":17,"y":7,"z":27},{"x":18,"y":8,"z":27},{"x":18,"y":7,"z":27},{"x":16,"y":8,"z":28},{"x":16,"y":7,"z":28},{"x":17,"y":8,"z":28},{"x":17,"y":7,"z":28},{"x":18,"y":8,"z":28},{"x":18,"y":7,"z":28},{"x":16,"y":8,"z":29},{"x":16,"y":7,"z":29},{"x":17,"y":8,"z":29},{"x":17,"y":7,"z":29},{"x":18,"y":8,"z":29},{"x":18,"y":7,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"bat-1":{"mechType":"Secret","secretPoint":{"x":9,"y":4,"z":8},"secretType":"BAT","preRequisite":["superboom-2:open"]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":6,"y":8,"z":12},{"x":6,"y":7,"z":12},{"x":7,"y":8,"z":12},{"x":7,"y":7,"z":12},{"x":8,"y":8,"z":12},{"x":8,"y":7,"z":12},{"x":9,"y":8,"z":12},{"x":9,"y":7,"z":12},{"x":10,"y":8,"z":12},{"x":10,"y":7,"z":12},{"x":11,"y":8,"z":12},{"x":11,"y":7,"z":12},{"x":6,"y":8,"z":13},{"x":6,"y":7,"z":13},{"x":7,"y":8,"z":13},{"x":7,"y":7,"z":13},{"x":8,"y":8,"z":13},{"x":8,"y":7,"z":13},{"x":9,"y":8,"z":13},{"x":9,"y":7,"z":13},{"x":10,"y":8,"z":13},{"x":10,"y":7,"z":13},{"x":11,"y":8,"z":13},{"x":11,"y":7,"z":13}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":3,"y":8,"z":6},{"x":3,"y":7,"z":6},{"x":4,"y":8,"z":6},{"x":4,"y":7,"z":6},{"x":5,"y":8,"z":6},{"x":5,"y":7,"z":6},{"x":6,"y":8,"z":6},{"x":6,"y":7,"z":6},{"x":7,"y":8,"z":6},{"x":7,"y":7,"z":6},{"x":3,"y":8,"z":7},{"x":3,"y":7,"z":7},{"x":4,"y":8,"z":7},{"x":4,"y":7,"z":7},{"x":5,"y":8,"z":7},{"x":5,"y":7,"z":7},{"x":6,"y":8,"z":7},{"x":6,"y":7,"z":7},{"x":7,"y":8,"z":7},{"x":7,"y":7,"z":7},{"x":3,"y":8,"z":8},{"x":3,"y":7,"z":8},{"x":4,"y":8,"z":8},{"x":4,"y":7,"z":8},{"x":5,"y":8,"z":8},{"x":5,"y":7,"z":8},{"x":6,"y":8,"z":8},{"x":6,"y":7,"z":8},{"x":7,"y":8,"z":8},{"x":7,"y":7,"z":8},{"x":3,"y":8,"z":9},{"x":3,"y":7,"z":9},{"x":4,"y":8,"z":9},{"x":4,"y":7,"z":9},{"x":5,"y":8,"z":9},{"x":5,"y":7,"z":9},{"x":6,"y":8,"z":9},{"x":6,"y":7,"z":9},{"x":7,"y":8,"z":9},{"x":7,"y":7,"z":9}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":8,"z":2},{"x":6,"y":7,"z":2},{"x":7,"y":8,"z":2},{"x":7,"y":7,"z":2},{"x":8,"y":8,"z":2},{"x":8,"y":7,"z":2},{"x":9,"y":8,"z":2},{"x":9,"y":7,"z":2},{"x":10,"y":8,"z":2},{"x":10,"y":7,"z":2},{"x":11,"y":8,"z":2},{"x":11,"y":7,"z":2},{"x":6,"y":8,"z":3},{"x":6,"y":7,"z":3},{"x":7,"y":8,"z":3},{"x":7,"y":7,"z":3},{"x":8,"y":8,"z":3},{"x":8,"y":7,"z":3},{"x":9,"y":8,"z":3},{"x":9,"y":7,"z":3},{"x":10,"y":8,"z":3},{"x":10,"y":7,"z":3},{"x":11,"y":8,"z":3},{"x":11,"y":7,"z":3}]},"preRequisite":[],"mechType":"Tomb"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":18,"y":2,"z":3},{"x":18,"y":1,"z":3},{"x":18,"y":0,"z":3},{"x":18,"y":-1,"z":3}]},"preRequisite":[],"mechType":"BreakableWall"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":12,"y":11,"z":15},{"x":12,"y":10,"z":15},{"x":12,"y":9,"z":15},{"x":12,"y":11,"z":16},{"x":12,"y":10,"z":16},{"x":12,"y":9,"z":16},{"x":12,"y":11,"z":17},{"x":12,"y":10,"z":17},{"x":12,"y":9,"z":17}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/2d9705f3-2e69-4035-905d-6b11d6ee270b.json b/src/main/resources/dgroomdata/2d9705f3-2e69-4035-905d-6b11d6ee270b.json
new file mode 100644
index 0000000..8d5458b
--- /dev/null
+++ b/src/main/resources/dgroomdata/2d9705f3-2e69-4035-905d-6b11d6ee270b.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":273,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,67,0,0,0,0,109,98,98,109,0,0,0,0,0,109,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,67,0,0,0,0,109,1,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,98,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,101,0,0,0,98,159,144,0,0,0,0,0,0,0,144,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,101,0,0,0,98,159,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,67,50,98,0,0,0,98,159,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,50,98,1,159,159,159,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,98,0,0,0,98,0,98,109,0,0,0,0,0,109,98,0,98,144,0,0,98,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,1,0,144,0,1,50,98,109,0,0,0,0,0,109,98,50,98,0,0,0,98,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,159,159,159,98,98,98,98,0,0,0,0,0,98,98,98,1,159,159,159,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,98,98,98,98,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,0,0,0,0,98,98,109,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,18,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,98,4,98,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,109,98,1,4,44,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,109,98,1,4,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,1,1,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,98,98,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,1,4,67,67,4,67,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,0,0,0,109,98,98,109,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,0,0,0,109,1,98,109,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,1,109,0,0,0,0,0,0,0,109,98,98,109,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,109,98,98,109,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,67,67,67,98,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,1,4,1,98,109,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,1,4,1,98,109,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,1,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,109,0,0,0,0,0,0,0,109,1,98,0,0,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,109,109,98,98,0,0,0,0,0,98,98,98,98,98,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,139,1,139,0,0,98,98,0,0,0,0,0,98,98,0,0,139,1,139,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,139,0,0,0,139,139,0,0,0,0,0,139,139,0,0,0,139,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,44,44,44,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,44,0,0,0,0,0,44,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,0,0,0,44,0,0,0,0,0,44,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,44,50,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,0,0,50,44,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,0,98,50,0,0,0,0,0,0,0,0,0,0,0,50,98,144,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,1,44,0,139,98,0,0,0,0,0,139,139,0,44,1,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"2d9705f3-2e69-4035-905d-6b11d6ee270b","name":"Wizard","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":5,"y":22,"z":18},"secretType":"CHEST","preRequisite":["superboom-3:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":7,"y":19,"z":91},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"crystal-1":{"mechType":"Secret","secretPoint":{"x":5,"y":-7,"z":90},"secretType":"ESSENCE","preRequisite":[]},"superboom-3":{"secretPoint":{"offsetPointList":[{"x":11,"y":25,"z":5},{"x":11,"y":24,"z":5},{"x":11,"y":23,"z":5},{"x":11,"y":22,"z":5},{"x":11,"y":21,"z":5},{"x":11,"y":25,"z":6},{"x":11,"y":24,"z":6},{"x":11,"y":23,"z":6},{"x":11,"y":22,"z":6},{"x":11,"y":21,"z":6},{"x":11,"y":25,"z":7},{"x":11,"y":24,"z":7},{"x":11,"y":23,"z":7},{"x":11,"y":22,"z":7},{"x":11,"y":21,"z":7},{"x":11,"y":25,"z":8},{"x":11,"y":24,"z":8},{"x":11,"y":23,"z":8},{"x":11,"y":22,"z":8},{"x":11,"y":21,"z":8}]},"preRequisite":[],"mechType":"BreakableWall"},"bat-1":{"mechType":"Secret","secretPoint":{"x":23,"y":-16,"z":28},"secretType":"BAT","preRequisite":[]},"journal-1":{"secretPoint":{"x":8,"y":0,"z":3},"preRequisite":["superboom-1:open"],"mechType":"Journal"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":5,"y":16,"z":75},{"x":5,"y":15,"z":75},{"x":5,"y":14,"z":75},{"x":5,"y":13,"z":75},{"x":5,"y":12,"z":75},{"x":5,"y":11,"z":75},{"x":6,"y":16,"z":75},{"x":6,"y":15,"z":75},{"x":6,"y":14,"z":75},{"x":6,"y":13,"z":75},{"x":6,"y":12,"z":75},{"x":6,"y":11,"z":75},{"x":7,"y":16,"z":75},{"x":7,"y":15,"z":75},{"x":7,"y":14,"z":75},{"x":7,"y":13,"z":75},{"x":7,"y":12,"z":75},{"x":7,"y":11,"z":75},{"x":8,"y":16,"z":75},{"x":8,"y":15,"z":75},{"x":8,"y":14,"z":75},{"x":8,"y":13,"z":75},{"x":8,"y":12,"z":75},{"x":8,"y":11,"z":75},{"x":9,"y":16,"z":75},{"x":9,"y":15,"z":75},{"x":9,"y":14,"z":75},{"x":9,"y":13,"z":75},{"x":9,"y":12,"z":75},{"x":9,"y":11,"z":75}]},"preRequisite":[],"mechType":"BreakableWall"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":7,"y":3,"z":11},{"x":7,"y":2,"z":11},{"x":7,"y":1,"z":11},{"x":7,"y":0,"z":11},{"x":7,"y":-1,"z":11},{"x":8,"y":3,"z":11},{"x":8,"y":2,"z":11},{"x":8,"y":1,"z":11},{"x":8,"y":0,"z":11},{"x":8,"y":-1,"z":11},{"x":9,"y":3,"z":11},{"x":9,"y":2,"z":11},{"x":9,"y":1,"z":11},{"x":9,"y":0,"z":11},{"x":9,"y":-1,"z":11}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":9,"y":6,"z":4},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"Wizard(blessing)":{"secretPoint":{"x":27,"y":20,"z":5},"preRequisite":["crystal-1:found"],"mechType":"Npc"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":15,"y":19,"z":58},{"x":15,"y":18,"z":58},{"x":16,"y":19,"z":58},{"x":16,"y":18,"z":58},{"x":17,"y":19,"z":58},{"x":17,"y":18,"z":58},{"x":15,"y":19,"z":59},{"x":15,"y":18,"z":59},{"x":16,"y":19,"z":59},{"x":16,"y":18,"z":59},{"x":17,"y":19,"z":59},{"x":17,"y":18,"z":59}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":15,"y":12,"z":17},{"x":15,"y":11,"z":17},{"x":16,"y":12,"z":17},{"x":16,"y":11,"z":17},{"x":17,"y":12,"z":17},{"x":17,"y":11,"z":17},{"x":15,"y":12,"z":18},{"x":15,"y":11,"z":18},{"x":16,"y":12,"z":18},{"x":16,"y":11,"z":18},{"x":17,"y":12,"z":18},{"x":17,"y":11,"z":18},{"x":15,"y":12,"z":19},{"x":15,"y":11,"z":19},{"x":16,"y":12,"z":19},{"x":16,"y":11,"z":19},{"x":17,"y":12,"z":19},{"x":17,"y":11,"z":19},{"x":15,"y":12,"z":20},{"x":15,"y":11,"z":20},{"x":16,"y":12,"z":20},{"x":16,"y":11,"z":20},{"x":17,"y":12,"z":20},{"x":17,"y":11,"z":20}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":20,"y":12,"z":17},{"x":20,"y":11,"z":17},{"x":21,"y":12,"z":17},{"x":21,"y":11,"z":17},{"x":22,"y":12,"z":17},{"x":22,"y":11,"z":17},{"x":20,"y":12,"z":18},{"x":20,"y":11,"z":18},{"x":21,"y":12,"z":18},{"x":21,"y":11,"z":18},{"x":22,"y":12,"z":18},{"x":22,"y":11,"z":18},{"x":20,"y":12,"z":19},{"x":20,"y":11,"z":19},{"x":21,"y":12,"z":19},{"x":21,"y":11,"z":19},{"x":22,"y":12,"z":19},{"x":22,"y":11,"z":19},{"x":20,"y":12,"z":20},{"x":20,"y":11,"z":20},{"x":21,"y":12,"z":20},{"x":21,"y":11,"z":20},{"x":22,"y":12,"z":20},{"x":22,"y":11,"z":20}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":25,"y":12,"z":17},{"x":25,"y":11,"z":17},{"x":26,"y":12,"z":17},{"x":26,"y":11,"z":17},{"x":27,"y":12,"z":17},{"x":27,"y":11,"z":17},{"x":25,"y":12,"z":18},{"x":25,"y":11,"z":18},{"x":26,"y":12,"z":18},{"x":26,"y":11,"z":18},{"x":27,"y":12,"z":18},{"x":27,"y":11,"z":18},{"x":25,"y":12,"z":19},{"x":25,"y":11,"z":19},{"x":26,"y":12,"z":19},{"x":26,"y":11,"z":19},{"x":27,"y":12,"z":19},{"x":27,"y":11,"z":19},{"x":25,"y":12,"z":20},{"x":25,"y":11,"z":20},{"x":26,"y":12,"z":20},{"x":26,"y":11,"z":20},{"x":27,"y":12,"z":20},{"x":27,"y":11,"z":20}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/2f7927cc-4ce0-4f02-a81a-88d5709248e8.json b/src/main/resources/dgroomdata/2f7927cc-4ce0-4f02-a81a-88d5709248e8.json
new file mode 100644
index 0000000..07ab98f
--- /dev/null
+++ b/src/main/resources/dgroomdata/2f7927cc-4ce0-4f02-a81a-88d5709248e8.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,159,67,67,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,159,67,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,0,0,0,101,0,0,0,0,0,0,0,0,0,188,50,0,0,159,67,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,67,67,4,4,109,50,0,0,0,0,0,0,0,5,136,136,0,159,4,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,4,67,1,109,109,0,0,0,0,0,0,0,0,5,5,5,98,1,4,101,101,101,4,-1,-1,-1,-1],[-1,-1,-1,-1,139,50,5,5,1,0,0,0,0,0,0,0,0,0,0,0,134,5,5,109,109,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,53,53,0,0,0,0,0,0,0,0,0,0,0,0,134,5,5,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,134,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,164,164,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,136,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,5,5,50,139,1,0,0,0,0,0,0,0,0,0,109,109,0,0,0,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,4,67,4,98,109,0,144,0,0,0,144,109,1,4,0,101,101,4,1,4,101,101,101,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,159,159,159,159,159,159,159,159,159,1,67,0,0,0,67,1,67,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,109,144,0,0,0,144,0,109,98,4,1,67,0,0,0,67,1,67,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,50,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,4,1,4,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,17,0,0,0,0,0,0,0,0,44,4,4,67,67,4,1,1,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,109,0,0,0,0,0,0,0,0,67,4,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"2f7927cc-4ce0-4f02-a81a-88d5709248e8","name":"Tomioka","processorId":"default","properties":{},"mechanics":{"fairysoul-2":{"secretPoint":{"x":7,"y":-1,"z":28},"preRequisite":[],"mechType":"Fairysoul"},"Tomioka":{"secretPoint":{"x":5,"y":5,"z":4},"preRequisite":[],"mechType":"Npc"}},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/31749ba0-8b9d-4129-b3c9-ee78d9fdb9d7.json b/src/main/resources/dgroomdata/31749ba0-8b9d-4129-b3c9-ee78d9fdb9d7.json
new file mode 100644
index 0000000..caec3a8
--- /dev/null
+++ b/src/main/resources/dgroomdata/31749ba0-8b9d-4129-b3c9-ee78d9fdb9d7.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":4369,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,109,98,0,0,0,0,0,109,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,4,98,98,109,109,109,109,109,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,1,1,98,1,98,98,1,1,98,1,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,1,1,1,1,1,98,1,1,1,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,1,1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,98,98,98,98,98,1,1,1,1,98,1,1,98,98,98,98,98,4,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,4,98,109,109,109,98,98,98,98,109,109,109,109,109,109,109,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,98,0,0,0,98,109,98,98,0,0,0,0,0,0,0,98,98,44,0,98,0,44,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,44,109,109,44,0,0,44,98,98,0,0,0,0,0,0,0,139,98,109,44,98,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,98,98,109,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,98,44,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,18,0,18,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,98,98,109,0,0,0,0,0,0,0,0,0,0,159,18,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,159,0,0,0,0,0,0,0,0,0,109,98,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,144,0,159,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,144,0,0,0,0,0,0,0,0,0,109,98,109,0,106,106,18,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,98,98,0,0,0,0,0,0,0,0,0,0,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,159,98,44,0,0,0,0,0,0,0,0,0,0,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,98,98,139,0,0,0,0,0,139,98,98,98,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,98,98,139,0,0,0,0,0,98,98,98,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,98,0,0,0,0,0,0,0,0,0,0,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,98,0,0,0,0,0,0,0,0,0,0,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,98,98,0,0,0,0,0,0,0,0,0,0,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,98,98,98,139,0,0,0,0,0,98,98,98,98,98,98,4,98,98,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,98,98,139,0,0,0,0,0,139,139,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,109,98,98,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,109,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,159,159,98,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,98,44,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,139,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,139,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,98,98,44,0,98,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,44,44,98,139,0,0,0,0,0,0,0,0,109,98,159,159,98,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,4,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,98,98,98,98,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,4,98,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,0,0,0,98,1,1,0,0,0,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,1,1,1,109,109,109,98,0,0,0,0,0,0,0,0,0,98,1,1,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,98,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,98,1,1,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,98,50,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,98,98,98,98,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,159,98,44,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,109,1,1,1,1,98,0,0,0,0,0,0,0,0,0,98,0,159,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,159,44,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,98,98,109,0,0,0,0,0,0,0,0,0,0,98,0,159,98,1,50,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,159,98,1,1,0,17,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,159,98,1,1,98,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,98,98,98,98,98,98,0,0,0,0,0,0,0,50,98,98,98,98,98,98,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,139,0,0,0,139,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,109,109,98,98,109,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,98,98,98,44,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,98,98,98,109,0,0,0,0,0,0,98,98,98,98,98,109,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,4,98,98,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,109,0,0,0,0,0,0,0,98,98,159,98,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,44,0,0,0,0,0,0,0,98,1,159,159,159,1,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,44,0,0,0,0,0,0,0,44,1,144,0,0,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,98,98,98,109,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,109,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,4,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,98,1,0,144,0,1,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,4,1,0,0,0,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,139,98,98,159,159,159,98,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,4,98,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,98,98,98,109,0,0,0,0,0,0,0,0,109,98,4,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,98,0,0,0,0,0,0,0,0,109,98,98,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,1,1,98,98,98,98,98,0,0,0,0,0,0,139,98,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,109,109,109,98,1,98,98,98,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,98,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,50,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,98,0,0,0,98,98,0,0,0,0,0,0,0,0,109,98,109,109,98,98,98,98,98,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,98,98,98,139,0,0,0,0,0,0,98,98,98,98,98,98,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,139,98,0,0,0,0,0,0,0,98,98,4,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,139,98,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,109,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,4,139,0,0,0,0,0,0,0,109,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,109,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"31749ba0-8b9d-4129-b3c9-ee78d9fdb9d7","name":"Hallway","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":28,"y":-1,"z":29},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":26,"y":-1,"z":55},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":25,"y":15,"z":86},"secretType":"CHEST","preRequisite":[]},"door-1":{"secretPoint":{"offsetPointList":[{"x":28,"y":2,"z":74},{"x":28,"y":1,"z":74},{"x":28,"y":0,"z":74},{"x":28,"y":-1,"z":74},{"x":29,"y":2,"z":74},{"x":29,"y":1,"z":74},{"x":29,"y":0,"z":74},{"x":29,"y":-1,"z":74}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":11,"y":6,"z":93},"preRequisite":[],"triggering":"door-1"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":25,"y":7,"z":5},{"x":25,"y":6,"z":5},{"x":26,"y":7,"z":5},{"x":26,"y":6,"z":5},{"x":27,"y":7,"z":5},{"x":27,"y":6,"z":5},{"x":25,"y":7,"z":6},{"x":25,"y":6,"z":6},{"x":26,"y":7,"z":6},{"x":26,"y":6,"z":6},{"x":27,"y":7,"z":6},{"x":27,"y":6,"z":6},{"x":25,"y":7,"z":7},{"x":25,"y":6,"z":7},{"x":26,"y":7,"z":7},{"x":26,"y":6,"z":7},{"x":27,"y":7,"z":7},{"x":27,"y":6,"z":7},{"x":25,"y":7,"z":8},{"x":25,"y":6,"z":8},{"x":26,"y":7,"z":8},{"x":26,"y":6,"z":8},{"x":27,"y":7,"z":8},{"x":27,"y":6,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":25,"y":5,"z":28},{"x":25,"y":5,"z":29},{"x":26,"y":5,"z":29},{"x":25,"y":5,"z":30},{"x":26,"y":5,"z":30},{"x":25,"y":5,"z":31},{"x":26,"y":5,"z":31},{"x":25,"y":5,"z":32},{"x":26,"y":5,"z":32}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/31766264-1004-492f-9d65-cb5deaff82f0.json b/src/main/resources/dgroomdata/31766264-1004-492f-9d65-cb5deaff82f0.json
new file mode 100644
index 0000000..fd21227
--- /dev/null
+++ b/src/main/resources/dgroomdata/31766264-1004-492f-9d65-cb5deaff82f0.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,126,0,0,0,17,98,98,0,17,0,0,67,98,98,50,0,0,98,139,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,98,17,0,0,0,126,0,17,0,0,0,17,0,18,67,67,0,0,0,0,0,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,98,17,0,0,0,126,0,17,0,0,0,17,18,18,18,67,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,126,17,17,17,17,17,17,17,0,0,0,17,0,0,67,67,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,126,0,18,126,0,17,18,0,0,17,0,0,67,67,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,126,0,0,18,18,17,17,17,17,17,17,17,17,67,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,126,126,0,18,18,17,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,17,17,17,17,17,17,17,17,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,17,0,17,0,98,98,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,134,0,134,0,98,98,0,0,0,0,0,0,0,0,18,139,139,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,51,51,139,139,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,18,0,0,1,98,0,0,0,0,0,0,0,51,51,98,139,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,1,1,139,139,0,0,0,0,0,139,139,50,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,98,1,1,1,1,139,50,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,109,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,76,0,0,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,0,0,0,0,0,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"31766264-1004-492f-9d65-cb5deaff82f0","name":"double-diamond","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":20,"y":12,"z":20},"secretType":"CHEST","preRequisite":["door-1:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":19,"y":14,"z":19},{"x":19,"y":13,"z":19},{"x":19,"y":12,"z":19},{"x":19,"y":14,"z":20},{"x":19,"y":13,"z":20},{"x":19,"y":12,"z":20},{"x":19,"y":14,"z":21},{"x":19,"y":13,"z":21},{"x":19,"y":12,"z":21}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":27,"y":18,"z":7},"preRequisite":[],"triggering":"door-1"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":24,"y":-5,"z":7},"secretType":"ITEM_DROP","preRequisite":[""]},"essence-1":{"mechType":"Secret","secretPoint":{"x":7,"y":-1,"z":25},"secretType":"ESSENCE","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":0,"z":24},{"x":11,"y":-1,"z":24},{"x":11,"y":1,"z":25},{"x":11,"y":0,"z":25},{"x":11,"y":-1,"z":25},{"x":11,"y":1,"z":26},{"x":11,"y":0,"z":26},{"x":11,"y":-1,"z":26}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/3406a386-c56d-47de-a0ad-aa0ab74d2abb.json b/src/main/resources/dgroomdata/3406a386-c56d-47de-a0ad-aa0ab74d2abb.json
new file mode 100644
index 0000000..07e6f4c
--- /dev/null
+++ b/src/main/resources/dgroomdata/3406a386-c56d-47de-a0ad-aa0ab74d2abb.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,13,1,1,0,0,0,0,0,0,0,0,0,0,0,0,139,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,67,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,44,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,67,0,0,85,0,0,85,0,0,0,0,85,0,0,0,0,85,0,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,13,44,144,0,0,44,98,164,164,0,0,0,0,0,0,0,0,0,159,159,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,159,159,159,159,159,0,5,5,5,0,0,0,0,0,0,0,0,159,159,44,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,159,159,159,159,159,0,5,5,136,0,0,0,0,0,0,0,144,159,159,44,139,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,159,159,159,159,159,0,5,134,0,0,0,0,0,0,0,0,44,159,159,144,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,109,44,144,0,109,98,0,0,85,0,0,0,0,0,0,0,44,159,159,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,44,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,144,44,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,13,50,0,0,0,0,85,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,98,109,44,144,0,144,44,109,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,98,159,159,159,159,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,109,109,44,144,0,0,44,109,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,1,1,67,139,0,0,0,0,0,17,0,0,0,0,0,98,44,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,1,67,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,159,44,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,139,4,13,164,164,5,0,0,0,0,0,0,0,0,0,0,159,159,159,144,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,4,13,5,164,164,0,0,0,0,0,0,0,0,0,144,159,159,159,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,67,1,1,1,0,0,0,0,0,0,0,0,0,50,44,159,159,159,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,67,1,1,1,0,0,0,0,17,126,126,126,126,17,109,159,159,159,44,17,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,67,1,1,1,98,98,-1,-1,67,4,4,4,67,67,4,4,4,4,67,67,4,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,1,4,67,4,98,98,98,98,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,98,0,0,50,98,0,0,0,98,0,144,159,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"3406a386-c56d-47de-a0ad-aa0ab74d2abb","name":"Chains","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":14,"y":16,"z":17},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":4,"y":-1,"z":21},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":3,"z":25},{"x":11,"y":2,"z":25},{"x":12,"y":3,"z":25},{"x":12,"y":2,"z":25},{"x":12,"y":1,"z":25},{"x":12,"y":0,"z":25},{"x":12,"y":-1,"z":25},{"x":13,"y":1,"z":25},{"x":13,"y":0,"z":25},{"x":13,"y":-1,"z":25}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/340c5665-e59b-42c1-bf84-8fc03d38981f.json b/src/main/resources/dgroomdata/340c5665-e59b-42c1-bf84-8fc03d38981f.json
new file mode 100644
index 0000000..32ca744
--- /dev/null
+++ b/src/main/resources/dgroomdata/340c5665-e59b-42c1-bf84-8fc03d38981f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":17,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,35,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,159,159,159,35,35,0,0,144,159,1,18,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,139,1,1,1,1,1,1,35,159,159,1,1,1,98,139,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,1,98,98,98,109,109,98,98,98,98,98,98,98,98,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,1,98,1,0,0,0,0,0,1,98,98,98,1,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,1,139,0,0,0,0,0,0,0,1,4,1,1,159,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,4,4,0,0,0,0,0,0,0,139,139,98,159,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,17,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,4,139,0,0,0,0,0,0,0,4,139,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,139,139,4,0,0,0,0,0,0,0,139,1,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,98,50,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,50,0,0,0,0,43,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,139,4,0,0,0,0,0,0,0,139,4,98,67,67,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,4,139,0,0,0,0,0,0,0,4,139,98,67,4,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,98,4,4,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,1,0,0,0,0,0,0,0,0,0,0,0,98,1,4,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,1,1,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,50,98,0,0,0,0,0,0,0,0,0,0,0,98,1,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,98,1,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,4,139,0,0,0,0,0,0,0,139,4,98,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,9,0,0,67,67,98,139,4,0,0,0,0,0,0,0,139,139,98,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,4,1,1,44,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,109,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,98,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,98,139,0,0,0,0,0,0,0,139,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,139,4,4,0,0,0,0,0,0,0,139,139,98,7,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,7,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,35,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,35,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,35,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,159,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,139,139,0,0,0,0,0,0,0,139,4,98,159,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,4,139,0,0,0,0,0,0,0,4,139,98,159,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,98,1,1,1,0,0,0,0,0,1,1,1,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,1,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,139,35,1,1,1,1,1,1,1,1,7,0,98,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,35,35,35,1,1,1,35,35,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,35,0,0,0,0,0,0,0,0,0,35,159,35,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"340c5665-e59b-42c1-bf84-8fc03d38981f","name":"Crypt","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":5,"y":16,"z":45},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":15,"y":11,"z":3},"secretType":"CHEST","preRequisite":[]},"fairysoul-3":{"secretPoint":{"x":15,"y":5,"z":9},"preRequisite":[],"mechType":"Fairysoul"},"chest-1":{"mechType":"Secret","secretPoint":{"x":16,"y":-10,"z":14},"secretType":"CHEST","preRequisite":["crypt-1:open"]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":16,"y":18,"z":46},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":25,"y":19,"z":29},{"x":25,"y":18,"z":29},{"x":26,"y":19,"z":29},{"x":26,"y":18,"z":29},{"x":27,"y":19,"z":29},{"x":27,"y":18,"z":29},{"x":25,"y":19,"z":30},{"x":25,"y":18,"z":30},{"x":26,"y":19,"z":30},{"x":26,"y":18,"z":30},{"x":27,"y":19,"z":30},{"x":27,"y":18,"z":30},{"x":25,"y":19,"z":31},{"x":25,"y":18,"z":31},{"x":26,"y":19,"z":31},{"x":26,"y":18,"z":31},{"x":27,"y":19,"z":31},{"x":27,"y":18,"z":31}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-2,"z":32},{"x":15,"y":-3,"z":32},{"x":16,"y":-2,"z":32},{"x":16,"y":-3,"z":32},{"x":17,"y":-2,"z":32},{"x":17,"y":-3,"z":32},{"x":15,"y":-2,"z":33},{"x":15,"y":-3,"z":33},{"x":16,"y":-2,"z":33},{"x":16,"y":-3,"z":33},{"x":17,"y":-2,"z":33},{"x":17,"y":-3,"z":33},{"x":15,"y":-2,"z":34},{"x":15,"y":-3,"z":34},{"x":16,"y":-2,"z":34},{"x":16,"y":-3,"z":34},{"x":17,"y":-2,"z":34},{"x":17,"y":-3,"z":34},{"x":15,"y":-2,"z":35},{"x":15,"y":-3,"z":35},{"x":16,"y":-2,"z":35},{"x":16,"y":-3,"z":35},{"x":17,"y":-2,"z":35},{"x":17,"y":-3,"z":35}]},"preRequisite":[],"mechType":"Tomb"},"journal-1":{"secretPoint":{"x":5,"y":16,"z":56},"preRequisite":[],"mechType":"Journal"},"chest-4":{"mechType":"Secret","secretPoint":{"x":29,"y":19,"z":20},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":23,"y":21,"z":16},{"x":23,"y":20,"z":16},{"x":24,"y":21,"z":16},{"x":24,"y":20,"z":16},{"x":24,"y":19,"z":16},{"x":24,"y":18,"z":16},{"x":25,"y":22,"z":16},{"x":25,"y":21,"z":16},{"x":25,"y":20,"z":16},{"x":25,"y":19,"z":16},{"x":25,"y":18,"z":16},{"x":26,"y":22,"z":16},{"x":26,"y":20,"z":16},{"x":26,"y":19,"z":16},{"x":26,"y":18,"z":16}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/34639497-d991-4137-83c4-db0a25542b71.json b/src/main/resources/dgroomdata/34639497-d991-4137-83c4-db0a25542b71.json
new file mode 100644
index 0000000..ede4241
--- /dev/null
+++ b/src/main/resources/dgroomdata/34639497-d991-4137-83c4-db0a25542b71.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,0,0,4,0,0,4,0,0,0,0,0,4,0,0,4,0,0,4,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,159,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,134,17,0,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,1,67,67,67,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,17,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,67,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,4,0,0,4,0,0,4,0,0,0,0,0,4,0,0,4,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,159,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"34639497-d991-4137-83c4-db0a25542b71","name":"Cages","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":20,"y":-12,"z":8},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":29,"y":15,"z":7},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":17,"y":-10,"z":7},{"x":17,"y":-11,"z":7},{"x":17,"y":-12,"z":7},{"x":17,"y":-13,"z":7},{"x":17,"y":-10,"z":8},{"x":17,"y":-11,"z":8},{"x":17,"y":-12,"z":8},{"x":17,"y":-13,"z":8},{"x":17,"y":-10,"z":9},{"x":17,"y":-11,"z":9},{"x":17,"y":-12,"z":9},{"x":17,"y":-13,"z":9}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":26,"y":28,"z":29},"secretType":"ITEM_DROP","preRequisite":[]}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/35fb741d-b0b1-471a-a5b6-8224f99a1133.json b/src/main/resources/dgroomdata/35fb741d-b0b1-471a-a5b6-8224f99a1133.json
new file mode 100644
index 0000000..2d86e16
--- /dev/null
+++ b/src/main/resources/dgroomdata/35fb741d-b0b1-471a-a5b6-8224f99a1133.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,0,69,50,98,1,98,4,50,0,0,0,0,0,0,109,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,98,-1,0,0,0,0,0,0,0,109,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,197,0,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,23,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,0,0,0,98,98,98,98,98,0,0,0,0,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,101,101,101,98,98,109,98,98,0,0,0,0,1,109,98,1,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,109,98,0,0,0,109,109,139,50,0,0,0,0,0,0,144,139,98,98,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,159,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,0,0,0,1,98,139,0,0,0,0,0,0,0,0,0,109,109,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,101,101,101,1,98,101,101,101,98,98,98,98,109,109,98,0,0,0,109,109,109,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,0,0,0,98,1,139,0,0,98,98,0,0,0,98,98,18,3,3,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,35,35,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"35fb741d-b0b1-471a-a5b6-8224f99a1133","name":"long-hall","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":29,"y":11,"z":26},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":29,"y":12,"z":16},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":19,"y":-8,"z":24},"secretType":"CHEST","preRequisite":["crypt-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":11,"y":0,"z":4},"preRequisite":["superboom-1:open::::::::"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":10,"y":18,"z":21},{"x":10,"y":17,"z":21},{"x":10,"y":16,"z":21},{"x":10,"y":15,"z":21},{"x":10,"y":14,"z":21},{"x":11,"y":18,"z":21},{"x":11,"y":17,"z":21},{"x":11,"y":16,"z":21},{"x":11,"y":15,"z":21},{"x":11,"y":14,"z":21},{"x":12,"y":18,"z":21},{"x":12,"y":17,"z":21},{"x":12,"y":16,"z":21},{"x":12,"y":15,"z":21},{"x":12,"y":14,"z":21}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":5,"y":7,"z":5},{"x":5,"y":6,"z":5},{"x":6,"y":7,"z":5},{"x":6,"y":6,"z":5},{"x":7,"y":7,"z":5},{"x":7,"y":6,"z":5},{"x":5,"y":7,"z":6},{"x":5,"y":6,"z":6},{"x":6,"y":7,"z":6},{"x":6,"y":6,"z":6},{"x":7,"y":7,"z":6},{"x":7,"y":6,"z":6},{"x":5,"y":7,"z":7},{"x":5,"y":6,"z":7},{"x":6,"y":7,"z":7},{"x":6,"y":6,"z":7},{"x":7,"y":7,"z":7},{"x":7,"y":6,"z":7},{"x":5,"y":7,"z":8},{"x":5,"y":6,"z":8},{"x":6,"y":7,"z":8},{"x":6,"y":6,"z":8},{"x":7,"y":7,"z":8},{"x":7,"y":6,"z":8},{"x":5,"y":7,"z":9},{"x":5,"y":6,"z":9},{"x":6,"y":7,"z":9},{"x":6,"y":6,"z":9},{"x":7,"y":7,"z":9},{"x":7,"y":6,"z":9}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":22,"y":0,"z":15},{"x":22,"y":-1,"z":15},{"x":23,"y":0,"z":15},{"x":23,"y":-1,"z":15},{"x":24,"y":0,"z":15},{"x":24,"y":-1,"z":15},{"x":25,"y":0,"z":15},{"x":25,"y":-1,"z":15},{"x":26,"y":0,"z":15},{"x":26,"y":-1,"z":15},{"x":22,"y":0,"z":16},{"x":22,"y":-1,"z":16},{"x":23,"y":0,"z":16},{"x":23,"y":-1,"z":16},{"x":24,"y":0,"z":16},{"x":24,"y":-1,"z":16},{"x":25,"y":0,"z":16},{"x":25,"y":-1,"z":16},{"x":26,"y":0,"z":16},{"x":26,"y":-1,"z":16},{"x":22,"y":0,"z":17},{"x":22,"y":-1,"z":17},{"x":23,"y":0,"z":17},{"x":23,"y":-1,"z":17},{"x":24,"y":0,"z":17},{"x":24,"y":-1,"z":17},{"x":25,"y":0,"z":17},{"x":25,"y":-1,"z":17},{"x":26,"y":0,"z":17},{"x":26,"y":-1,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":0,"z":26},{"x":5,"y":-1,"z":26},{"x":6,"y":0,"z":26},{"x":6,"y":-1,"z":26},{"x":7,"y":0,"z":26},{"x":7,"y":-1,"z":26},{"x":8,"y":0,"z":26},{"x":8,"y":-1,"z":26},{"x":9,"y":0,"z":26},{"x":9,"y":-1,"z":26},{"x":5,"y":0,"z":27},{"x":5,"y":-1,"z":27},{"x":6,"y":0,"z":27},{"x":6,"y":-1,"z":27},{"x":7,"y":0,"z":27},{"x":7,"y":-1,"z":27},{"x":8,"y":0,"z":27},{"x":8,"y":-1,"z":27},{"x":9,"y":0,"z":27},{"x":9,"y":-1,"z":27}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":16,"y":1,"z":5},{"x":16,"y":0,"z":5},{"x":16,"y":-1,"z":5},{"x":16,"y":2,"z":6},{"x":16,"y":1,"z":6},{"x":16,"y":0,"z":6},{"x":16,"y":-1,"z":6},{"x":16,"y":2,"z":7},{"x":16,"y":1,"z":7},{"x":16,"y":0,"z":7},{"x":16,"y":-1,"z":7},{"x":16,"y":1,"z":8},{"x":16,"y":0,"z":8}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/388e95fc-4775-4747-8473-5329fbb8e5cc.json b/src/main/resources/dgroomdata/388e95fc-4775-4747-8473-5329fbb8e5cc.json
new file mode 100644
index 0000000..1f932f7
--- /dev/null
+++ b/src/main/resources/dgroomdata/388e95fc-4775-4747-8473-5329fbb8e5cc.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,0,0,0,101,0,0,0,0,0,0,0,0,1,1,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,9,0,0,101,0,0,0,0,0,0,0,0,109,109,159,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,0,0,0,101,0,0,0,0,0,0,0,0,144,0,159,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,50,0,0,101,0,0,0,0,0,0,0,0,0,144,159,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,0,0,0,101,0,0,0,0,0,0,0,0,1,1,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,109,109,98,98,98,98,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,18,188,98,98,98,139,0,0,0,0,0,139,139,98,109,109,109,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,4,44,0,0,98,98,0,0,0,0,0,0,0,0,0,101,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,44,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,101,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,4,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,0,0,98,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,18,188,98,98,98,98,0,0,0,0,0,98,98,98,98,98,98,109,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,109,109,98,98,139,98,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,50,0,0,101,0,0,0,0,0,0,0,0,139,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,0,0,0,101,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,144,0,0,101,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,144,0,0,101,0,0,0,0,0,0,0,0,50,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,139,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,1,1,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,44,4,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,0,144,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,109,109,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,1,1,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"388e95fc-4775-4747-8473-5329fbb8e5cc","name":"Cell","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":9,"y":-1,"z":11},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"journal-1":{"secretPoint":{"x":7,"y":-1,"z":13},"preRequisite":["superboom-1:open"],"mechType":"Journal"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":2,"z":11},{"x":11,"y":1,"z":11},{"x":11,"y":3,"z":12},{"x":11,"y":2,"z":12},{"x":11,"y":1,"z":12},{"x":11,"y":0,"z":12},{"x":11,"y":-1,"z":12},{"x":11,"y":3,"z":13},{"x":11,"y":2,"z":13},{"x":11,"y":1,"z":13},{"x":11,"y":0,"z":13},{"x":11,"y":-1,"z":13},{"x":11,"y":2,"z":14},{"x":11,"y":1,"z":14},{"x":11,"y":0,"z":14},{"x":11,"y":-1,"z":14}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/38affd31-fc6f-44cd-a41e-ae7d0589ba0d.json b/src/main/resources/dgroomdata/38affd31-fc6f-44cd-a41e-ae7d0589ba0d.json
new file mode 100644
index 0000000..7d51a59
--- /dev/null
+++ b/src/main/resources/dgroomdata/38affd31-fc6f-44cd-a41e-ae7d0589ba0d.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,1,1,98,98,98,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,67,67,67,98,98,1,1,1,1,98,67,67,67,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,98,98,0,0,0,98,98,4,4,4,98,98,0,0,0,98,98,4,4,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,17,1,1,98,1,0,0,0,98,1,1,1,1,1,1,0,0,0,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,85,98,1,0,0,0,1,1,0,0,0,98,1,0,0,0,1,1,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,58,58,0,0,0,0,0,0,0,0,0,0,17,0,0,0,17,5,5,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,85,0,0,85,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,85,0,85,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,107,0,85,0,85,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,58,58,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,126,126,126,58,58,0,0,0,17,0,85,5,5,17,85,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,126,126,126,1,1,0,0,0,1,98,5,5,125,1,1,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,1,98,1,0,0,0,1,1,1,1,1,98,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,4,4,98,98,4,67,67,98,50,0,0,0,50,98,67,67,4,98,98,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,98,1,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,4,4,1,1,98,98,1,0,0,0,0,0,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,1,4,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,1,4,67,0,0,0,0,0,0,0,1,4,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,1,1,1,4,67,0,0,0,0,0,0,0,1,4,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"38affd31-fc6f-44cd-a41e-ae7d0589ba0d","name":"Steps","processorId":"default","properties":{},"mechanics":{"bat-1":{"mechType":"Secret","secretPoint":{"x":16,"y":6,"z":7},"secretType":"BAT","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":4,"y":2,"z":26},{"x":4,"y":1,"z":26},{"x":5,"y":2,"z":26},{"x":5,"y":1,"z":26},{"x":6,"y":2,"z":26},{"x":6,"y":1,"z":26},{"x":7,"y":2,"z":26},{"x":7,"y":1,"z":26},{"x":4,"y":2,"z":27},{"x":4,"y":1,"z":27},{"x":5,"y":2,"z":27},{"x":5,"y":1,"z":27},{"x":6,"y":2,"z":27},{"x":6,"y":1,"z":27},{"x":7,"y":2,"z":27},{"x":7,"y":1,"z":27},{"x":4,"y":2,"z":28},{"x":4,"y":1,"z":28},{"x":5,"y":2,"z":28},{"x":5,"y":1,"z":28},{"x":6,"y":2,"z":28},{"x":6,"y":1,"z":28},{"x":7,"y":2,"z":28},{"x":7,"y":1,"z":28}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/3acb9949-d252-4f16-9983-a1fcdc38a6cf.json b/src/main/resources/dgroomdata/3acb9949-d252-4f16-9983-a1fcdc38a6cf.json
new file mode 100644
index 0000000..01172f0
--- /dev/null
+++ b/src/main/resources/dgroomdata/3acb9949-d252-4f16-9983-a1fcdc38a6cf.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,0,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,98,0,0,85,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,1,1,139,50,0,0,0,0,0,0,0,0,85,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,109,109,109,109,109,98,109,109,109,109,109,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,17,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,134,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,134,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,17,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,65,65,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,98,1,1,18,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,159,144,0,0,0,0,0,0,0,0,0,0,0,1,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,109,109,1,159,98,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,139,144,139,0,0,0,0,0,139,0,139,1,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"3acb9949-d252-4f16-9983-a1fcdc38a6cf","name":"overgrown-chains","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":11,"y":16,"z":27},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":27,"y":11,"z":4},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-3,"z":11},{"x":15,"y":-4,"z":11},{"x":16,"y":-3,"z":11},{"x":16,"y":-4,"z":11},{"x":17,"y":-3,"z":11},{"x":17,"y":-4,"z":11},{"x":18,"y":-3,"z":11},{"x":18,"y":-4,"z":11},{"x":19,"y":-3,"z":11},{"x":19,"y":-4,"z":11},{"x":15,"y":-3,"z":12},{"x":15,"y":-4,"z":12},{"x":16,"y":-3,"z":12},{"x":16,"y":-4,"z":12},{"x":17,"y":-3,"z":12},{"x":17,"y":-4,"z":12},{"x":18,"y":-3,"z":12},{"x":18,"y":-4,"z":12},{"x":19,"y":-3,"z":12},{"x":19,"y":-4,"z":12},{"x":15,"y":-3,"z":13},{"x":15,"y":-4,"z":13},{"x":16,"y":-3,"z":13},{"x":16,"y":-4,"z":13},{"x":17,"y":-3,"z":13},{"x":17,"y":-4,"z":13},{"x":18,"y":-3,"z":13},{"x":18,"y":-4,"z":13},{"x":19,"y":-3,"z":13},{"x":19,"y":-4,"z":13}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4067578d-c259-4f89-8b88-a891b2decbbf.json b/src/main/resources/dgroomdata/4067578d-c259-4f89-8b88-a891b2decbbf.json
new file mode 100644
index 0000000..e88e0b5
--- /dev/null
+++ b/src/main/resources/dgroomdata/4067578d-c259-4f89-8b88-a891b2decbbf.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,159,98,98,0,0,0,0,0,0,0,0,0,0,0,67,1,98,1,-1,-1,-1,98,98,109,109,109,98,98,-1,-1,-1,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,159,0,98,98,0,0,0,0,0,0,0,0,0,0,0,67,98,0,0,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,0,0,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,159,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,0,0,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,0,0,98,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,67,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,18,109,109,0,0,0,0,0,0,0,0,0,67,98,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,44,98,67,0,0,0,0,0,0,0,0,50,109,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,1,109,0,0,0,0,0,0,0,0,0,67,109,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,67,67,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,43,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,50,67,98,0,0,0,0,98,139,0,0,0,0,0,98,1,0,0,0,109,98,98,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,109,1,1,18,0,0,0,67,1,101,101,101,101,98,98,-1,-1,-1,-1,-1,98,98,101,101,101,101,98,98,0,0,0,0,1,98,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,18,1,98,18,18,31,0,98,98,0,0,18,18,98,98,0,0,0,0,0,1,98,31,0,18,18,1,98,18,18,0,31,1,98,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,31,18,18,18,18,0,109,109,0,0,0,0,0,109,109,0,18,18,31,18,18,18,18,18,31,0,18,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,18,0,0,18,18,18,18,109,109,0,0,0,0,0,109,109,0,18,18,0,0,18,0,18,0,18,31,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,18,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,18,0,0,0,0,0,0,50,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,98,0,0,0,0,0,67,4,98,98,98,98,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,98,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,67,67,67,98,98,1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,98,98,109,0,0,0,0,0,0,0,0,50,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,144,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,31,0,0,0,0,0,0,0,0,109,98,0,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,31,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,109,98,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,4,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,1,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,98,98,109,0,0,0,0,0,0,0,0,4,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,98,98,109,0,0,0,0,0,109,98,98,4,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,98,98,109,0,0,0,0,0,109,98,98,4,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,98,98,109,0,0,0,0,0,0,0,0,4,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,4,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,18,18,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,109,98,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,31,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,31,31,18,0,0,0,0,0,0,0,109,98,0,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,50,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,43,67,0,0,0,0,43,67,139,98,98,98,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,98,98,109,0,0,0,0,0,0,0,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,67,0,0,0,0,44,43,98,98,98,1,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,98,98,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,50,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,18,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,31,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,18,0,0,18,18,0,0,109,109,0,0,0,0,0,109,109,0,0,0,18,18,0,18,18,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,0,18,18,31,109,109,0,0,0,0,0,109,109,31,18,18,18,18,18,18,0,0,31,18,18,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,18,98,98,18,18,0,31,98,98,31,31,18,18,98,1,0,0,0,0,0,98,98,18,18,31,18,98,98,0,31,0,18,98,98,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,18,109,98,98,0,0,0,18,98,98,0,0,0,0,98,98,0,0,0,0,0,98,1,18,0,0,18,98,98,0,0,0,18,98,98,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,18,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,1,1,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,67,67,67,109,109,109,0,0,0,0,0,109,109,109,67,67,67,98,98,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,98,98,109,0,0,0,0,0,109,98,98,1,1,1,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,98,98,109,1,0,0,0,1,109,98,98,1,1,1,98,1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,98,98,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,0,98,98,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,1,98,98,98,1,1,1,1,1,1,1,98,98,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,98,98,18,18,0,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4067578d-c259-4f89-8b88-a891b2decbbf","name":"Museum","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":49,"y":-8,"z":7},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":35,"y":13,"z":12},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":32,"y":0,"z":61},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":27,"y":14,"z":10},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":30,"y":7,"z":16},{"x":30,"y":6,"z":16},{"x":30,"y":5,"z":16},{"x":30,"y":4,"z":16},{"x":30,"y":3,"z":16},{"x":30,"y":2,"z":16},{"x":30,"y":1,"z":16},{"x":30,"y":0,"z":16},{"x":30,"y":-1,"z":16},{"x":31,"y":7,"z":16},{"x":31,"y":6,"z":16},{"x":31,"y":5,"z":16},{"x":31,"y":4,"z":16},{"x":31,"y":3,"z":16},{"x":31,"y":2,"z":16},{"x":31,"y":1,"z":16},{"x":31,"y":0,"z":16},{"x":31,"y":-1,"z":16},{"x":32,"y":7,"z":16},{"x":32,"y":6,"z":16},{"x":32,"y":5,"z":16},{"x":32,"y":4,"z":16},{"x":32,"y":3,"z":16},{"x":32,"y":2,"z":16},{"x":32,"y":1,"z":16},{"x":32,"y":0,"z":16},{"x":32,"y":-1,"z":16},{"x":33,"y":7,"z":16},{"x":33,"y":6,"z":16},{"x":33,"y":5,"z":16},{"x":33,"y":4,"z":16},{"x":33,"y":3,"z":16},{"x":33,"y":2,"z":16},{"x":33,"y":1,"z":16},{"x":33,"y":0,"z":16},{"x":33,"y":-1,"z":16},{"x":34,"y":7,"z":16},{"x":34,"y":6,"z":16},{"x":34,"y":5,"z":16},{"x":34,"y":4,"z":16},{"x":34,"y":3,"z":16},{"x":34,"y":2,"z":16},{"x":34,"y":1,"z":16},{"x":34,"y":0,"z":16},{"x":34,"y":-1,"z":16}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":44,"y":-2,"z":3},{"x":45,"y":-2,"z":3},{"x":43,"y":-2,"z":4},{"x":44,"y":-2,"z":4},{"x":45,"y":-2,"z":4},{"x":43,"y":-2,"z":5},{"x":44,"y":-2,"z":5},{"x":45,"y":-2,"z":5},{"x":46,"y":-2,"z":5},{"x":43,"y":-2,"z":6},{"x":44,"y":-2,"z":6},{"x":45,"y":-2,"z":6},{"x":46,"y":-2,"z":6},{"x":43,"y":-2,"z":7},{"x":44,"y":-2,"z":7},{"x":45,"y":-2,"z":7},{"x":46,"y":-2,"z":7},{"x":43,"y":-2,"z":8},{"x":44,"y":-2,"z":8},{"x":45,"y":-2,"z":8},{"x":43,"y":-2,"z":9},{"x":44,"y":-2,"z":9},{"x":44,"y":-2,"z":10}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-4":{"mechType":"Secret","secretPoint":{"x":32,"y":0,"z":10},"secretType":"CHEST","preRequisite":["door-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":31,"y":2,"z":58},{"x":31,"y":1,"z":58},{"x":31,"y":0,"z":58},{"x":31,"y":-1,"z":58},{"x":32,"y":3,"z":58},{"x":32,"y":2,"z":58},{"x":32,"y":1,"z":58},{"x":32,"y":0,"z":58},{"x":32,"y":-1,"z":58},{"x":33,"y":3,"z":58},{"x":33,"y":2,"z":58},{"x":33,"y":1,"z":58},{"x":33,"y":0,"z":58},{"x":33,"y":-1,"z":58}]},"preRequisite":[],"mechType":"BreakableWall"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":44,"y":13,"z":3},{"x":44,"y":12,"z":3},{"x":45,"y":13,"z":3},{"x":45,"y":12,"z":3},{"x":46,"y":13,"z":3},{"x":46,"y":12,"z":3},{"x":47,"y":13,"z":3},{"x":47,"y":12,"z":3},{"x":44,"y":13,"z":4},{"x":44,"y":12,"z":4},{"x":45,"y":13,"z":4},{"x":45,"y":12,"z":4},{"x":46,"y":13,"z":4},{"x":46,"y":12,"z":4},{"x":47,"y":13,"z":4},{"x":47,"y":12,"z":4},{"x":44,"y":13,"z":5},{"x":44,"y":12,"z":5},{"x":45,"y":13,"z":5},{"x":45,"y":12,"z":5},{"x":46,"y":13,"z":5},{"x":46,"y":12,"z":5},{"x":47,"y":13,"z":5},{"x":47,"y":12,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":36,"y":13,"z":3},{"x":36,"y":12,"z":3},{"x":37,"y":13,"z":3},{"x":37,"y":12,"z":3},{"x":38,"y":13,"z":3},{"x":38,"y":12,"z":3},{"x":39,"y":13,"z":3},{"x":39,"y":12,"z":3},{"x":36,"y":13,"z":4},{"x":36,"y":12,"z":4},{"x":37,"y":13,"z":4},{"x":37,"y":12,"z":4},{"x":38,"y":13,"z":4},{"x":38,"y":12,"z":4},{"x":39,"y":13,"z":4},{"x":39,"y":12,"z":4},{"x":36,"y":13,"z":5},{"x":36,"y":12,"z":5},{"x":37,"y":13,"z":5},{"x":37,"y":12,"z":5},{"x":38,"y":13,"z":5},{"x":38,"y":12,"z":5},{"x":39,"y":13,"z":5},{"x":39,"y":12,"z":5}]},"preRequisite":[""],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":36,"y":0,"z":3},{"x":36,"y":-1,"z":3},{"x":37,"y":0,"z":3},{"x":37,"y":-1,"z":3},{"x":38,"y":0,"z":3},{"x":38,"y":-1,"z":3},{"x":36,"y":0,"z":4},{"x":36,"y":-1,"z":4},{"x":37,"y":0,"z":4},{"x":37,"y":-1,"z":4},{"x":38,"y":0,"z":4},{"x":38,"y":-1,"z":4},{"x":36,"y":0,"z":5},{"x":36,"y":-1,"z":5},{"x":37,"y":0,"z":5},{"x":37,"y":-1,"z":5},{"x":38,"y":0,"z":5},{"x":38,"y":-1,"z":5},{"x":36,"y":0,"z":6},{"x":36,"y":-1,"z":6},{"x":37,"y":0,"z":6},{"x":37,"y":-1,"z":6},{"x":38,"y":0,"z":6},{"x":38,"y":-1,"z":6},{"x":36,"y":0,"z":7},{"x":36,"y":-1,"z":7},{"x":37,"y":0,"z":7},{"x":37,"y":-1,"z":7},{"x":38,"y":0,"z":7},{"x":38,"y":-1,"z":7}]},"preRequisite":["door-1:open"],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":43,"y":23,"z":54},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":26,"y":0,"z":3},{"x":26,"y":-1,"z":3},{"x":27,"y":0,"z":3},{"x":27,"y":-1,"z":3},{"x":28,"y":0,"z":3},{"x":28,"y":-1,"z":3},{"x":26,"y":0,"z":4},{"x":26,"y":-1,"z":4},{"x":27,"y":0,"z":4},{"x":27,"y":-1,"z":4},{"x":28,"y":0,"z":4},{"x":28,"y":-1,"z":4},{"x":26,"y":0,"z":5},{"x":26,"y":-1,"z":5},{"x":27,"y":0,"z":5},{"x":27,"y":-1,"z":5},{"x":28,"y":0,"z":5},{"x":28,"y":-1,"z":5},{"x":26,"y":0,"z":6},{"x":26,"y":-1,"z":6},{"x":27,"y":0,"z":6},{"x":27,"y":-1,"z":6},{"x":28,"y":0,"z":6},{"x":28,"y":-1,"z":6},{"x":26,"y":0,"z":7},{"x":26,"y":-1,"z":7},{"x":27,"y":0,"z":7},{"x":27,"y":-1,"z":7},{"x":28,"y":0,"z":7},{"x":28,"y":-1,"z":7}]},"preRequisite":["door-1:open"],"mechType":"Tomb"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/40fb4b64-18d7-4301-b899-0da7b1d466c1.json b/src/main/resources/dgroomdata/40fb4b64-18d7-4301-b899-0da7b1d466c1.json
new file mode 100644
index 0000000..91d36ec
--- /dev/null
+++ b/src/main/resources/dgroomdata/40fb4b64-18d7-4301-b899-0da7b1d466c1.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,109,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,109,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,109,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,4,1,1,98,98,98,98,98,98,98,1,1,4,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,0,0,109,109,0,0,0,0,0,0,0,1,98,5,5,1,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,4,0,0,0,0,0,0,17,0,0,17,0,0,17,53,5,5,5,53,0,4,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,139,0,0,0,0,0,0,0,0,0,0,0,0,0,53,5,5,5,53,0,139,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,53,53,53,53,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,4,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,1,1,0,51,0,0,0,0,0,0,0,0,0,51,0,109,109,109,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,139,4,0,0,0,0,0,139,4,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,139,139,0,0,0,0,0,139,139,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"40fb4b64-18d7-4301-b899-0da7b1d466c1","name":"Perch","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":16,"y":4,"z":2},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":20,"y":6,"z":21},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":20,"y":-9,"z":13},{"x":20,"y":-10,"z":13},{"x":21,"y":-9,"z":13},{"x":21,"y":-10,"z":13},{"x":22,"y":-9,"z":13},{"x":22,"y":-10,"z":13},{"x":23,"y":-9,"z":13},{"x":23,"y":-10,"z":13},{"x":20,"y":-9,"z":14},{"x":20,"y":-10,"z":14},{"x":21,"y":-9,"z":14},{"x":21,"y":-10,"z":14},{"x":22,"y":-9,"z":14},{"x":22,"y":-10,"z":14},{"x":23,"y":-9,"z":14},{"x":23,"y":-10,"z":14},{"x":20,"y":-9,"z":15},{"x":20,"y":-10,"z":15},{"x":21,"y":-9,"z":15},{"x":21,"y":-10,"z":15},{"x":22,"y":-9,"z":15},{"x":22,"y":-10,"z":15},{"x":23,"y":-9,"z":15},{"x":23,"y":-10,"z":15}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/41086d97-5e36-41a5-88ff-d3fb296791ce.json b/src/main/resources/dgroomdata/41086d97-5e36-41a5-88ff-d3fb296791ce.json
new file mode 100644
index 0000000..490b89c
--- /dev/null
+++ b/src/main/resources/dgroomdata/41086d97-5e36-41a5-88ff-d3fb296791ce.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,109,50,0,0,0,0,0,0,50,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,44,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,35,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,67,144,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,35,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,67,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,44,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,35,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,67,144,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,5,67,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,17,0,0,0,0,0,109,98,98,0,0,0,0,109,98,0,0,0,98,98,0,0,0,98,0,0,0,0,0,98,50,17,0,0,0,0,17,163,5,67,109,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,159,159,159,159,159,159,159,159,98,4,4,67,67,4,4,4,4,0,0,0,0,4,4,67,67,109,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,159,159,1,1,1,67,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,109,109,0,0,0,109,109,0,0,0,0,109,1,4,0,0,0,0,67,4,4,1,98,67,0,0,0,4,67,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,1,67,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,4,139,50,0,0,0,58,58,5,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,126,126,109,4,4,17,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,139,0,0,0,0,58,58,164,164,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,126,163,5,4,4,67,67,4,0,0,0,67,67,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,163,163,17,0,0,0,17,0,0,0,50,17,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,98,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,0,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,109,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,0,159,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,98,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,134,5,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,0,0,0,0,0,98,109,109,109,98,98,98,98,0,44,43,98,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,5,17,0,0,18,0,17,134,134,50,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,159,159,1,98,0,0,0,0,0,98,1,1,1,1,1,1,1,159,159,159,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,4,67,0,0,0,67,4,48,4,44,67,4,4,4,67,67,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,109,109,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,35,35,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,126,126,126,126,126,126,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,126,17,126,126,126,126,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,126,126,126,126,126,126,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,175,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,126,126,126,126,126,126,1,1,35,35,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,126,126,126,98,98,98,1,35,35,44,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,66,188,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,126,17,126,98,98,98,1,1,0,0,0,43,1,1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,126,126,126,98,98,98,1,1,0,0,0,44,1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,126,126,126,126,1,1,1,1,0,0,0,159,1,1,1,1,1,1,1,1,1,1,35,134,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,126,126,126,126,1,1,1,1,144,0,0,35,1,1,1,1,1,1,1,1,1,1,1,188,188,188,188,188,188,0,0,0,0,0,5,0,0,188,188,188,126,5,5,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,126,17,126,126,1,1,1,1,1,0,35,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,126,126,126,126,1,1,1,1,1,0,35,1,1,1,1,1,1,1,1,1,1,1,1,134,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,35,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,4,4,4,4,0,0,0,4,67,4,101,101,101,4,4,67,4,4,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,66,188,0,0,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,1,1,1,1,18,106,0,1,1,1,1,1,1,1,1,1,1,159,35,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,159,159,159,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,1,1,1,1,1,1,1,159,0,98,98,0,0,0,0,188,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,4,98,98,0,0,0,0,0,98,98,23,98,23,109,109,98,0,0,0,0,0,0,0,175,0,0,0,0,0,0,0,35,35,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,98,1,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,67,67,98,98,0,0,0,0,0,98,98,67,67,4,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,18,1,1,1,1,4,67,67,4,1,98,0,0,0,0,0,98,1,4,67,67,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,0,0,0,0,0,98,98,109,109,109,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,18,1,1,1,109,0,0,134,1,1,0,0,0,0,0,1,1,134,134,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,109,109,0,0,0,0,0,109,109,0,164,5,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,1,1,1,109,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,164,0,1,0,0,0,0,0,0,0,4,0,0,0,0,0,0,66,66,66,0,0,1,159,44,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,66,66,0,1,159,0,5,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,171,0,66,18,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,171,1,1,1,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,18,0,1,1,1,1,1,1,1,109,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,126,126,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,50,0,126,126,5,5,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,175,0,0,0,0,0,0,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,136,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,17,5,5,134,17,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,5,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,134,0,0,0,0,0,0,50,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,5,5,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,134,0,0,0,0,0,0,109,98,98,98,0,0,0,0,0,0,0,0,0,0,66,0,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,164,5,188,0,0,0,0,0,5,135,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,109,98,98,98,106,0,0,0,0,0,0,0,0,0,66,0,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,164,5,17,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,17,0,0,0,0,0,0,0,0,1,0,0,188,188,188,188,126,5,5,5,66,66,0,1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,188,1,188,188,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,109,109,109,109,109,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,134,0,0,0,0,0,0,109,98,98,1,98,98,98,109,0,0,0,0,0,0,0,159,159,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"41086d97-5e36-41a5-88ff-d3fb296791ce","name":"Rail-track","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":31,"y":2,"z":35},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":9,"y":-21,"z":61},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":57,"y":-4,"z":7},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"dummy-1":{"secretPoint":{"x":7,"y":-21,"z":11},"preRequisite":[],"mechType":"Dummy"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":40,"y":1,"z":46},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":22,"y":-17,"z":54},{"x":22,"y":-18,"z":54},{"x":22,"y":-19,"z":54},{"x":22,"y":-20,"z":54},{"x":22,"y":-21,"z":54},{"x":22,"y":-17,"z":55},{"x":22,"y":-18,"z":55},{"x":22,"y":-19,"z":55},{"x":22,"y":-20,"z":55},{"x":22,"y":-21,"z":55},{"x":22,"y":-17,"z":56},{"x":22,"y":-18,"z":56},{"x":22,"y":-19,"z":56},{"x":22,"y":-20,"z":56},{"x":22,"y":-21,"z":56},{"x":22,"y":-17,"z":57},{"x":22,"y":-18,"z":57},{"x":22,"y":-19,"z":57},{"x":22,"y":-20,"z":57},{"x":22,"y":-21,"z":57},{"x":22,"y":-17,"z":58},{"x":22,"y":-18,"z":58},{"x":22,"y":-19,"z":58},{"x":22,"y":-20,"z":58},{"x":22,"y":-21,"z":58}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":56,"y":-17,"z":12},"secretType":"BAT","preRequisite":[]},"essences-1":{"mechType":"Secret","secretPoint":{"x":4,"y":-21,"z":11},"secretType":"ESSENCE","preRequisite":["dummy-1:click"]},"chest-4":{"mechType":"Secret","secretPoint":{"x":31,"y":-6,"z":30},"secretType":"CHEST","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":58,"y":-2,"z":5},{"x":59,"y":-2,"z":5},{"x":56,"y":-2,"z":6},{"x":57,"y":-2,"z":6},{"x":58,"y":-2,"z":6},{"x":59,"y":-2,"z":6},{"x":56,"y":-2,"z":7},{"x":57,"y":-2,"z":7},{"x":58,"y":-2,"z":7},{"x":56,"y":-2,"z":8},{"x":57,"y":-2,"z":8},{"x":58,"y":-2,"z":8},{"x":56,"y":-2,"z":9},{"x":57,"y":-2,"z":9}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":28,"y":0,"z":30},"secretType":"ITEM_DROP","preRequisite":[]},"essence-2":{"mechType":"Secret","secretPoint":{"x":26,"y":0,"z":29},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":14,"y":-15,"z":4},{"x":14,"y":-16,"z":4},{"x":15,"y":-15,"z":4},{"x":15,"y":-16,"z":4},{"x":16,"y":-15,"z":4},{"x":16,"y":-16,"z":4},{"x":14,"y":-15,"z":5},{"x":14,"y":-16,"z":5},{"x":15,"y":-15,"z":5},{"x":15,"y":-16,"z":5},{"x":16,"y":-15,"z":5},{"x":16,"y":-16,"z":5},{"x":14,"y":-15,"z":6},{"x":14,"y":-16,"z":6},{"x":15,"y":-15,"z":6},{"x":15,"y":-16,"z":6},{"x":16,"y":-15,"z":6},{"x":16,"y":-16,"z":6},{"x":14,"y":-15,"z":7},{"x":14,"y":-16,"z":7},{"x":15,"y":-15,"z":7},{"x":15,"y":-16,"z":7},{"x":16,"y":-15,"z":7},{"x":16,"y":-16,"z":7}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":9}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/42029218-9142-4286-b184-e17b3734886f.json b/src/main/resources/dgroomdata/42029218-9142-4286-b184-e17b3734886f.json
new file mode 100644
index 0000000..2c35902
--- /dev/null
+++ b/src/main/resources/dgroomdata/42029218-9142-4286-b184-e17b3734886f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":7,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,4,44,0,0,0,0,0,0,0,139,139,0,0,0,0,0,98,139,0,0,0,0,0,139,98,0,0,0,0,0,139,98,0,109,98,98,109,109,0,0,0,98,0,0,0,0,0,0,98,98,98,98,98,98,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,4,98,1,1,1,1,1,1,1,159,159,159,159,1,1,4,44,0,0,0,0,0,0,0,98,139,0,0,0,0,0,139,98,139,0,0,0,0,139,98,0,0,0,0,0,98,139,0,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,98,98,98,1,1,1,1,1,1,1,159,159,159,159,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,98,98,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,98,98,98,1,1,1,98,98,98,1,159,159,159,159,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,98,98,98,1,1,1,98,98,98,1,159,159,159,159,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,109,109,0,0,0,0,98,98,98,98,98,98,109,109,109,98,98,98,1,1,144,0,44,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,159,159,159,159,159,159,1,1,98,98,109,0,0,0,98,98,109,109,0,0,0,0,98,98,109,109,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,139,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,98,98,98,4,98,44,98,98,4,0,0,0,0,0,0,0,0,0,0,0,109,109,109,139,98,98,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,109,0,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,98,98,98,98,98,98,4,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,98,98,98,98,98,4,1,1,98,0,0,0,0,0,0,0,0,0,0,0,109,1,1,159,1,98,0,0,0,0,139,4,98,98,0,0,0,0,0,0,0,0,0,0,0,0,139,139,4,98,98,98,4,98,98,101,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,98,98,109,109,109,98,98,98,0,98,98,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,98,98,98,98,98,98,1,1,98,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,98,0,0,0,0,0,4,98,98,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,98,98,98,98,98,98,98,1,1,1,98,0,0,0,98,98,98,44,44,0,44,98,1,1,1,1,98,109,109,109,109,109,98,98,98,109,44,144,0,44,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,109,98,98,98,98,98,1,1,1,98,0,0,0,98,1,159,159,159,159,159,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,159,159,159,159,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,109,98,98,98,98,109,109,98,98,98,0,0,0,98,98,98,98,109,109,109,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,44,144,0,44,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,109,98,109,139,139,0,0,0,0,98,98,0,0,0,0,0,0,0,0,98,98,0,109,1,1,1,1,98,98,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,139,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,109,33,23,33,109,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,139,98,0,109,1,1,1,1,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,109,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,139,139,98,4,98,98,98,98,98,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,159,98,98,4,159,159,159,98,98,4,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,154,0,44,98,98,0,0,154,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,154,0,98,109,109,109,0,154,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,98,98,0,98,109,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,1,98,98,98,159,159,159,4,98,4,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,144,0,0,0,144,0,109,1,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,98,98,0,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"42029218-9142-4286-b184-e17b3734886f","name":"Gravel","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":36,"y":-1,"z":12},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":64,"y":-1,"z":27},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":34,"y":2,"z":11},{"x":34,"y":1,"z":11},{"x":34,"y":0,"z":11},{"x":34,"y":-1,"z":11},{"x":34,"y":2,"z":12},{"x":34,"y":1,"z":12},{"x":34,"y":0,"z":12},{"x":34,"y":-1,"z":12},{"x":34,"y":2,"z":13},{"x":34,"y":1,"z":13},{"x":34,"y":0,"z":13},{"x":34,"y":-1,"z":13}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":89,"y":-1,"z":10},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":68,"y":17,"z":13},"secretType":"ITEM_DROP","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":35,"y":22,"z":14},"secretType":"BAT","preRequisite":[]},"essence-2":{"mechType":"Secret","secretPoint":{"x":67,"y":17,"z":15},"secretType":"ESSENCE","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":16,"y":0,"z":6},{"x":16,"y":-1,"z":6},{"x":17,"y":0,"z":6},{"x":17,"y":-1,"z":6},{"x":18,"y":0,"z":6},{"x":18,"y":-1,"z":6},{"x":16,"y":0,"z":7},{"x":16,"y":-1,"z":7},{"x":17,"y":0,"z":7},{"x":17,"y":-1,"z":7},{"x":18,"y":0,"z":7},{"x":18,"y":-1,"z":7},{"x":16,"y":0,"z":8},{"x":16,"y":-1,"z":8},{"x":17,"y":0,"z":8},{"x":17,"y":-1,"z":8},{"x":18,"y":0,"z":8},{"x":18,"y":-1,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":93,"y":-1,"z":4},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":39,"y":19,"z":12},{"x":39,"y":18,"z":12},{"x":40,"y":19,"z":12},{"x":40,"y":18,"z":12},{"x":41,"y":19,"z":12},{"x":41,"y":18,"z":12},{"x":42,"y":19,"z":12},{"x":42,"y":18,"z":12},{"x":39,"y":19,"z":13},{"x":39,"y":18,"z":13},{"x":40,"y":19,"z":13},{"x":40,"y":18,"z":13},{"x":41,"y":19,"z":13},{"x":41,"y":18,"z":13},{"x":42,"y":19,"z":13},{"x":42,"y":18,"z":13},{"x":39,"y":19,"z":14},{"x":39,"y":18,"z":14},{"x":40,"y":19,"z":14},{"x":40,"y":18,"z":14},{"x":41,"y":19,"z":14},{"x":41,"y":18,"z":14},{"x":42,"y":19,"z":14},{"x":42,"y":18,"z":14}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/43c74bd0-77f6-4a2b-8edb-c227a72abf0f.json b/src/main/resources/dgroomdata/43c74bd0-77f6-4a2b-8edb-c227a72abf0f.json
new file mode 100644
index 0000000..29c6834
--- /dev/null
+++ b/src/main/resources/dgroomdata/43c74bd0-77f6-4a2b-8edb-c227a72abf0f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":17,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,44,1,98,98,101,0,1,98,101,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,67,0,109,0,0,0,0,0,0,98,98,98,1,0,0,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,98,98,98,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,1,1,1,1,98,1,0,0,0,0,0,1,98,1,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,1,1,1,1,98,0,0,0,0,0,0,0,98,98,50,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,98,1,159,159,159,98,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,98,98,0,144,0,1,4,0,0,0,0,0,1,98,1,1,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,0,0,0,98,50,0,0,0,0,0,0,98,98,1,98,-1,-1,-1,-1,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,109,109,139,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,98,0,0,0,0,0,0,0,139,139,0,0,0,0,50,139,139,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,139,98,0,0,0,0,0,0,0,98,98,44,0,0,44,109,98,98,109,44,44,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,50,0,0,0,0,0,0,0,50,98,98,98,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,139,139,0,0,0,0,0,0,0,139,98,0,0,0,0,0,98,139,0,0,0,0,50,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,139,139,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,67,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,139,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,0,0,0,0,139,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,67,67,4,4,1,1,0,0,0,0,0,98,98,67,67,4,4,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"43c74bd0-77f6-4a2b-8edb-c227a72abf0f","name":"Archway","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":29,"y":0,"z":2},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":4,"y":12,"z":11},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":19,"y":19,"z":55},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":19,"y":19,"z":17},{"x":19,"y":18,"z":17},{"x":20,"y":19,"z":17},{"x":20,"y":18,"z":17},{"x":21,"y":19,"z":17},{"x":21,"y":18,"z":17},{"x":22,"y":19,"z":17},{"x":22,"y":18,"z":17},{"x":19,"y":19,"z":18},{"x":19,"y":18,"z":18},{"x":20,"y":19,"z":18},{"x":20,"y":18,"z":18},{"x":21,"y":19,"z":18},{"x":21,"y":18,"z":18},{"x":22,"y":19,"z":18},{"x":22,"y":18,"z":18},{"x":19,"y":19,"z":19},{"x":19,"y":18,"z":19},{"x":20,"y":19,"z":19},{"x":20,"y":18,"z":19},{"x":21,"y":19,"z":19},{"x":21,"y":18,"z":19},{"x":22,"y":19,"z":19},{"x":22,"y":18,"z":19}]},"preRequisite":[],"mechType":"OnewayDoor"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":8,"y":19,"z":17},{"x":8,"y":18,"z":17},{"x":9,"y":19,"z":17},{"x":9,"y":18,"z":17},{"x":10,"y":19,"z":17},{"x":10,"y":18,"z":17},{"x":11,"y":19,"z":17},{"x":11,"y":18,"z":17},{"x":8,"y":19,"z":18},{"x":8,"y":18,"z":18},{"x":9,"y":19,"z":18},{"x":9,"y":18,"z":18},{"x":10,"y":19,"z":18},{"x":10,"y":18,"z":18},{"x":11,"y":19,"z":18},{"x":11,"y":18,"z":18},{"x":8,"y":19,"z":19},{"x":8,"y":18,"z":19},{"x":9,"y":19,"z":19},{"x":9,"y":18,"z":19},{"x":10,"y":19,"z":19},{"x":10,"y":18,"z":19},{"x":11,"y":19,"z":19},{"x":11,"y":18,"z":19}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":13,"y":14,"z":51},{"x":13,"y":13,"z":51},{"x":14,"y":14,"z":51},{"x":14,"y":13,"z":51},{"x":13,"y":14,"z":52},{"x":13,"y":13,"z":52},{"x":14,"y":14,"z":52},{"x":14,"y":13,"z":52},{"x":13,"y":14,"z":53},{"x":13,"y":13,"z":53},{"x":14,"y":14,"z":53},{"x":14,"y":13,"z":53},{"x":13,"y":14,"z":54},{"x":13,"y":13,"z":54},{"x":14,"y":14,"z":54},{"x":14,"y":13,"z":54}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":14,"z":51},{"x":8,"y":13,"z":51},{"x":9,"y":14,"z":51},{"x":9,"y":13,"z":51},{"x":8,"y":14,"z":52},{"x":8,"y":13,"z":52},{"x":9,"y":14,"z":52},{"x":9,"y":13,"z":52},{"x":8,"y":14,"z":53},{"x":8,"y":13,"z":53},{"x":9,"y":14,"z":53},{"x":9,"y":13,"z":53},{"x":8,"y":14,"z":54},{"x":8,"y":13,"z":54},{"x":9,"y":14,"z":54},{"x":9,"y":13,"z":54}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":24,"y":0,"z":12},{"x":25,"y":1,"z":12},{"x":25,"y":0,"z":12},{"x":25,"y":-1,"z":12},{"x":26,"y":2,"z":12},{"x":26,"y":1,"z":12},{"x":26,"y":0,"z":12},{"x":26,"y":-1,"z":12},{"x":27,"y":1,"z":12},{"x":27,"y":0,"z":12}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/44d9b135-d2ca-4350-969e-6e9c34af2fe6.json b/src/main/resources/dgroomdata/44d9b135-d2ca-4350-969e-6e9c34af2fe6.json
new file mode 100644
index 0000000..d38915d
--- /dev/null
+++ b/src/main/resources/dgroomdata/44d9b135-d2ca-4350-969e-6e9c34af2fe6.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,0,0,0,159,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,1,159,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,1,159,109,109,144,0,0,0,0,109,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,0,0,109,109,126,126,0,0,0,109,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,126,126,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,109,1,98,109,109,109,109,0,0,0,0,0,0,144,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,109,98,98,98,98,98,109,0,0,0,0,0,0,0,1,1,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,109,98,98,98,98,98,109,0,0,0,0,0,50,109,109,0,0,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,98,98,98,98,109,0,0,0,0,0,0,109,109,0,144,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,109,109,109,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,109,109,0,0,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,159,1,1,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,0,0,109,0,0,98,98,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,44,44,98,44,44,98,98,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,44,44,98,44,44,98,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,159,1,159,159,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"44d9b135-d2ca-4350-969e-6e9c34af2fe6","name":"Cage","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":11,"y":2,"z":13},"secretType":"CHEST","preRequisite":[]}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4538898f-8e79-4d53-aae6-08e4df6abb61.json b/src/main/resources/dgroomdata/4538898f-8e79-4d53-aae6-08e4df6abb61.json
new file mode 100644
index 0000000..062a086
--- /dev/null
+++ b/src/main/resources/dgroomdata/4538898f-8e79-4d53-aae6-08e4df6abb61.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,159,109,109,43,43,109,0,0,85,118,0,0,0,0,0,118,0,0,0,109,98,159,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,109,43,109,50,0,85,0,0,0,0,0,0,0,0,0,0,109,98,0,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,43,1,1,43,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,4,159,109,85,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,85,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,5,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,164,5,5,134,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,109,0,0,164,5,134,134,0,0,0,0,0,0,136,136,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,43,109,164,164,85,0,0,0,85,0,0,0,136,136,0,0,0,17,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,109,0,0,0,0,0,53,53,5,164,5,5,5,0,0,0,0,0,0,118,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,139,0,0,0,0,0,0,0,53,5,5,5,164,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,0,0,0,0,0,0,0,5,164,164,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,0,0,85,0,0,0,85,0,0,0,0,0,0,0,0,17,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,109,109,0,0,0,109,109,0,0,0,0,0,0,0,50,109,109,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,109,0,0,0,98,98,0,0,0,0,0,0,0,0,98,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,0,0,0,98,98,139,139,0,0,0,0,0,0,98,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,159,159,1,98,67,67,4,4,4,67,67,67,98,1,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4538898f-8e79-4d53-aae6-08e4df6abb61","name":"Scaffolding","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":26,"y":12,"z":3},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":13,"y":12,"z":23},"secretType":"ITEM_DROP","preRequisite":[]}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4b5f4983-0453-4402-821c-804f092d1ecd.json b/src/main/resources/dgroomdata/4b5f4983-0453-4402-821c-804f092d1ecd.json
new file mode 100644
index 0000000..7527025
--- /dev/null
+++ b/src/main/resources/dgroomdata/4b5f4983-0453-4402-821c-804f092d1ecd.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,98,98,1,0,126,126,0,5,164,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,98,98,1,17,5,136,0,164,164,17,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,109,98,98,98,1,5,53,53,5,5,5,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,17,17,65,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,1,1,1,1,1,0,0,0,0,0,0,17,17,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,98,98,1,144,98,98,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,98,98,0,0,98,98,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,98,109,0,0,98,98,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,98,98,0,0,98,98,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,5,5,5,53,53,5,1,98,44,0,44,0,0,0,0,0,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,17,5,136,0,0,50,17,1,98,98,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,136,5,0,0,0,0,1,98,98,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,44,98,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4b5f4983-0453-4402-821c-804f092d1ecd","name":"cobble-wall-pillar","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":13,"y":-9,"z":18},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":29,"y":-10,"z":13},"secretType":"CHEST","preRequisite":["door-1:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":27,"y":-8,"z":12},{"x":27,"y":-9,"z":12},{"x":27,"y":-10,"z":12},{"x":27,"y":-8,"z":13},{"x":27,"y":-9,"z":13},{"x":27,"y":-10,"z":13},{"x":27,"y":-8,"z":14},{"x":27,"y":-9,"z":14},{"x":27,"y":-10,"z":14}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":21,"y":-1,"z":24},"preRequisite":[""],"triggering":"door-1"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":13,"y":-9,"z":15},{"x":13,"y":-10,"z":15},{"x":14,"y":-9,"z":15},{"x":14,"y":-10,"z":15},{"x":15,"y":-9,"z":15},{"x":15,"y":-10,"z":15},{"x":16,"y":-9,"z":15},{"x":16,"y":-10,"z":15},{"x":13,"y":-9,"z":16},{"x":13,"y":-10,"z":16},{"x":14,"y":-9,"z":16},{"x":14,"y":-10,"z":16},{"x":15,"y":-9,"z":16},{"x":15,"y":-10,"z":16},{"x":16,"y":-9,"z":16},{"x":16,"y":-10,"z":16}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4e8087d2-0c64-4558-b4ff-4be94275a320.json b/src/main/resources/dgroomdata/4e8087d2-0c64-4558-b4ff-4be94275a320.json
new file mode 100644
index 0000000..90951ae
--- /dev/null
+++ b/src/main/resources/dgroomdata/4e8087d2-0c64-4558-b4ff-4be94275a320.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,139,139,0,0,0,139,139,0,0,0,0,0,139,139,139,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,139,139,0,0,0,139,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,-1,-1,-1,-1,1,4,4,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,162,162,162,162,1,98,4,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,50,1,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,50,1,98,1,0,0,0,0,0,159,1,1,139,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,0,0,0,0,109,1,4,0,0,0,0,0,159,1,1,1,1,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4e8087d2-0c64-4558-b4ff-4be94275a320","name":"Logs","processorId":"default","properties":{},"mechanics":{"dummy-2":{"secretPoint":{"x":10,"y":8,"z":25},"preRequisite":[],"mechType":"Dummy"},"dummy-1":{"secretPoint":{"x":2,"y":0,"z":24},"preRequisite":["door-1:open"],"mechType":"Dummy"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":26,"y":14,"z":29},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":2,"z":20},{"x":6,"y":1,"z":20},{"x":6,"y":0,"z":20},{"x":6,"y":-1,"z":20},{"x":7,"y":2,"z":20},{"x":7,"y":1,"z":20},{"x":7,"y":0,"z":20},{"x":7,"y":-1,"z":20},{"x":8,"y":2,"z":20},{"x":8,"y":1,"z":20},{"x":8,"y":0,"z":20},{"x":8,"y":-1,"z":20},{"x":9,"y":2,"z":20},{"x":9,"y":1,"z":20},{"x":9,"y":0,"z":20},{"x":9,"y":-1,"z":20}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"chests-1":{"mechType":"Secret","secretPoint":{"x":2,"y":0,"z":25},"secretType":"CHEST","preRequisite":["dummy-1:click"]},"chests-2":{"mechType":"Secret","secretPoint":{"x":10,"y":8,"z":24},"secretType":"CHEST","preRequisite":["dummy-2:click"]}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4ed557b1-553c-4ecc-b3c1-88dd9da6d33c.json b/src/main/resources/dgroomdata/4ed557b1-553c-4ecc-b3c1-88dd9da6d33c.json
new file mode 100644
index 0000000..2f395bf
--- /dev/null
+++ b/src/main/resources/dgroomdata/4ed557b1-553c-4ecc-b3c1-88dd9da6d33c.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,98,98,98,0,0,0,0,0,0,0,0,50,98,98,4,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,18,4,98,98,98,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,50,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,67,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,18,67,4,4,4,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,50,0,0,0,0,0,0,0,0,98,98,4,67,67,67,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,18,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,4,67,67,67,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,67,67,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,18,0,0,0,0,0,0,0,0,98,98,4,1,101,101,0,101,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,50,0,0,0,0,0,0,0,0,1,98,4,18,18,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,18,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,0,18,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,98,50,0,0,0,0,0,0,0,0,0,0,0,18,67,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,18,0,98,98,98,0,0,0,0,0,0,0,0,0,98,98,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4ed557b1-553c-4ecc-b3c1-88dd9da6d33c","name":"Dome","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":27,"y":8,"z":28},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":25,"y":5,"z":22},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":26,"y":11,"z":21},{"x":26,"y":10,"z":21},{"x":26,"y":9,"z":21},{"x":26,"y":8,"z":21},{"x":26,"y":7,"z":21},{"x":27,"y":11,"z":21},{"x":27,"y":10,"z":21},{"x":27,"y":9,"z":21},{"x":27,"y":8,"z":21},{"x":27,"y":7,"z":21},{"x":28,"y":11,"z":21},{"x":28,"y":10,"z":21},{"x":28,"y":9,"z":21},{"x":28,"y":8,"z":21},{"x":28,"y":7,"z":21}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":26,"y":3,"z":26},"secretType":"BAT","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":3,"y":0,"z":4},{"x":3,"y":-1,"z":4},{"x":4,"y":0,"z":4},{"x":4,"y":-1,"z":4},{"x":5,"y":0,"z":4},{"x":5,"y":-1,"z":4},{"x":3,"y":0,"z":5},{"x":3,"y":-1,"z":5},{"x":4,"y":0,"z":5},{"x":4,"y":-1,"z":5},{"x":5,"y":0,"z":5},{"x":5,"y":-1,"z":5},{"x":3,"y":0,"z":6},{"x":3,"y":-1,"z":6},{"x":4,"y":0,"z":6},{"x":4,"y":-1,"z":6},{"x":5,"y":0,"z":6},{"x":5,"y":-1,"z":6},{"x":3,"y":0,"z":7},{"x":3,"y":-1,"z":7},{"x":4,"y":0,"z":7},{"x":4,"y":-1,"z":7},{"x":5,"y":0,"z":7},{"x":5,"y":-1,"z":7}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":0,"z":25},{"x":3,"y":-1,"z":25},{"x":4,"y":0,"z":25},{"x":4,"y":-1,"z":25},{"x":5,"y":0,"z":25},{"x":5,"y":-1,"z":25},{"x":3,"y":0,"z":26},{"x":3,"y":-1,"z":26},{"x":4,"y":0,"z":26},{"x":4,"y":-1,"z":26},{"x":5,"y":0,"z":26},{"x":5,"y":-1,"z":26},{"x":3,"y":0,"z":27},{"x":3,"y":-1,"z":27},{"x":4,"y":0,"z":27},{"x":4,"y":-1,"z":27},{"x":5,"y":0,"z":27},{"x":5,"y":-1,"z":27},{"x":3,"y":0,"z":28},{"x":3,"y":-1,"z":28},{"x":4,"y":0,"z":28},{"x":4,"y":-1,"z":28},{"x":5,"y":0,"z":28},{"x":5,"y":-1,"z":28}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4f8be93c-f3e7-47ca-9e0d-87261f5fc386.json b/src/main/resources/dgroomdata/4f8be93c-f3e7-47ca-9e0d-87261f5fc386.json
new file mode 100644
index 0000000..1520ae5
--- /dev/null
+++ b/src/main/resources/dgroomdata/4f8be93c-f3e7-47ca-9e0d-87261f5fc386.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,1,1,4,67,50,0,0,0,0,109,109,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,0,0,0,0,0,0,4,67,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,-1,-1,-1,0,0,0,0,0,67,4,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,-1,-1,-1,0,0,0,1,1,4,67,0,0,0,0,0,98,98,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,67,67,67,67,4,67,67,1,1,1,4,33,33,23,33,33,98,159,44,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,4,67,67,67,4,4,4,4,4,4,1,1,1,1,98,159,44,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,144,0,0,44,98,50,0,0,0,0,5,5,4,4,1,1,1,1,98,159,44,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,5,5,4,1,1,1,1,1,98,98,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,109,144,0,0,67,1,1,1,1,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,159,159,159,159,1,1,1,1,1,-1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,109,144,0,44,4,1,1,1,1,1,1,98,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,4,4,67,67,1,-1,-1,-1,-1],[-1,-1,-1,-1,50,17,0,0,0,17,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,0,0,0,4,67,67,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,98,1,4,109,109,109,109,109,4,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,4,1,98,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,4,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,109,109,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4f8be93c-f3e7-47ca-9e0d-87261f5fc386","name":"Slabs","processorId":"default","properties":{},"mechanics":{"dummy-1":{"secretPoint":{"x":24,"y":15,"z":4},"preRequisite":[],"mechType":"Dummy"},"chests-1":{"mechType":"Secret","secretPoint":{"x":23,"y":15,"z":4},"secretType":"CHEST","preRequisite":["dummy-1:click"]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":8,"y":8,"z":6},{"x":8,"y":7,"z":6},{"x":9,"y":8,"z":6},{"x":9,"y":7,"z":6},{"x":10,"y":8,"z":6},{"x":10,"y":7,"z":6},{"x":11,"y":8,"z":6},{"x":11,"y":7,"z":6},{"x":8,"y":8,"z":7},{"x":8,"y":7,"z":7},{"x":9,"y":8,"z":7},{"x":9,"y":7,"z":7},{"x":10,"y":8,"z":7},{"x":10,"y":7,"z":7},{"x":11,"y":8,"z":7},{"x":11,"y":7,"z":7}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":0,"z":6},{"x":8,"y":-1,"z":6},{"x":9,"y":0,"z":6},{"x":9,"y":-1,"z":6},{"x":10,"y":0,"z":6},{"x":10,"y":-1,"z":6},{"x":8,"y":0,"z":7},{"x":8,"y":-1,"z":7},{"x":9,"y":0,"z":7},{"x":9,"y":-1,"z":7},{"x":10,"y":0,"z":7},{"x":10,"y":-1,"z":7},{"x":8,"y":0,"z":8},{"x":8,"y":-1,"z":8},{"x":9,"y":0,"z":8},{"x":9,"y":-1,"z":8},{"x":10,"y":0,"z":8},{"x":10,"y":-1,"z":8},{"x":8,"y":0,"z":9},{"x":8,"y":-1,"z":9},{"x":9,"y":0,"z":9},{"x":9,"y":-1,"z":9},{"x":10,"y":0,"z":9},{"x":10,"y":-1,"z":9}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/4ffce449-eab8-470b-bc8c-d30507248fc2.json b/src/main/resources/dgroomdata/4ffce449-eab8-470b-bc8c-d30507248fc2.json
new file mode 100644
index 0000000..985f979
--- /dev/null
+++ b/src/main/resources/dgroomdata/4ffce449-eab8-470b-bc8c-d30507248fc2.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":273,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,35,109,0,0,0,0,0,0,0,0,0,109,35,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,35,109,0,0,0,0,0,0,0,0,0,109,35,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,35,35,35,109,0,0,0,0,0,0,0,0,0,109,35,35,35,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,35,35,35,109,0,0,0,0,0,0,0,0,0,109,35,35,35,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,35,109,0,0,0,0,0,0,0,0,0,109,35,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,35,109,0,0,0,0,0,0,0,0,0,109,35,35,35,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,109,109,109,109,67,44,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,1,1,1,4,4,67,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,1,1,1,4,4,4,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,109,109,98,98,98,98,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,44,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,144,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,44,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,109,109,109,98,0,0,0,0,0,0,0,109,134,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,0,139,0,0,0,0,0,0,0,0,0,134,0,0,0,0,109,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,17,0,0,0,17,0,0,0,0,0,0,0,0,0,0,17,134,0,0,0,17,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,109,17,0,126,126,17,0,0,0,0,0,0,0,0,0,0,17,0,0,0,17,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,126,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,144,109,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,109,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,109,144,0,0,44,1,0,0,0,0,0,0,0,1,109,0,0,0,44,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,109,0,0,144,44,1,0,0,0,0,0,0,0,1,101,101,101,101,101,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,159,159,159,144,0,0,0,0,0,0,0,-1,0,0,50,0,0,69,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,-1,0,0,0,0,0,-1,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,50,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,-1,0,0,0,188,0,69,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,98,98,109,109,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,98,98,98,98,98,98,109,98,0,0,0,0,0,0,0,1,109,109,98,98,98,98,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,109,109,109,0,0,0,0,0,0,0,0,0,109,109,109,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"4ffce449-eab8-470b-bc8c-d30507248fc2","name":"Red-Blue","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":5,"y":20,"z":40},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":26,"y":0,"z":58},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":26,"y":-1,"z":55},"preRequisite":[""],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":20,"y":3,"z":57},{"x":20,"y":2,"z":57},{"x":20,"y":1,"z":57},{"x":20,"y":0,"z":57},{"x":20,"y":-1,"z":57},{"x":20,"y":3,"z":58},{"x":20,"y":2,"z":58},{"x":20,"y":1,"z":58},{"x":20,"y":0,"z":58},{"x":20,"y":-1,"z":58},{"x":20,"y":3,"z":59},{"x":20,"y":2,"z":59},{"x":20,"y":1,"z":59},{"x":20,"y":0,"z":59},{"x":20,"y":-1,"z":59},{"x":20,"y":3,"z":60},{"x":20,"y":2,"z":60},{"x":20,"y":1,"z":60},{"x":20,"y":0,"z":60},{"x":20,"y":-1,"z":60}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":9,"y":16,"z":61},"secretType":"ITEM_DROP","preRequisite":[]},"essence-1":{"mechType":"Secret","secretPoint":{"x":16,"y":13,"z":80},"secretType":"ESSENCE","preRequisite":[]},"prince-1":{"secretPoint":{"offsetPointList":[{"x":23,"y":14,"z":57},{"x":23,"y":13,"z":57},{"x":24,"y":14,"z":57},{"x":24,"y":13,"z":57},{"x":25,"y":14,"z":57},{"x":25,"y":13,"z":57},{"x":23,"y":14,"z":58},{"x":23,"y":13,"z":58},{"x":24,"y":14,"z":58},{"x":24,"y":13,"z":58},{"x":25,"y":14,"z":58},{"x":25,"y":13,"z":58},{"x":23,"y":14,"z":59},{"x":23,"y":13,"z":59},{"x":24,"y":14,"z":59},{"x":24,"y":13,"z":59},{"x":25,"y":14,"z":59},{"x":25,"y":13,"z":59},{"x":23,"y":14,"z":60},{"x":23,"y":13,"z":60},{"x":24,"y":14,"z":60},{"x":24,"y":13,"z":60},{"x":25,"y":14,"z":60},{"x":25,"y":13,"z":60}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/5000be9d-3081-4a5e-8563-dd826705663a.json b/src/main/resources/dgroomdata/5000be9d-3081-4a5e-8563-dd826705663a.json
new file mode 100644
index 0000000..2e9868f
--- /dev/null
+++ b/src/main/resources/dgroomdata/5000be9d-3081-4a5e-8563-dd826705663a.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,109,0,0,0,0,0,109,4,4,4,4,4,4,4,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,109,0,0,0,0,0,109,1,4,4,4,4,4,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,109,1,1,4,4,4,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,98,98,0,0,0,98,98,1,1,1,1,4,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,98,0,0,0,98,1,1,1,1,1,4,4,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,98,98,0,0,0,98,98,98,98,98,1,4,4,4,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,1,0,1,1,0,0,0,1,1,1,1,98,1,4,4,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,1,1,0,0,0,1,1,1,1,98,1,4,4,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,1,1,0,0,0,1,1,159,1,98,1,4,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,7,98,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,0,98,0,0,98,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,1,-1,-1,-1],[-1,-1,-1,0,0,0,50,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,4,4,4,98,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,98,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,4,4,4,98,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,98,1,-1,-1,-1],[-1,-1,-1,0,0,0,50,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,4,4,4,98,1,-1,-1,-1],[-1,-1,-1,0,98,0,0,98,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,1,-1,-1,-1],[-1,-1,-1,98,98,109,109,98,98,98,98,98,0,0,0,0,0,0,0,0,7,7,1,98,1,0,0,1,98,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,1,1,0,0,0,1,1,1,0,-1,0,0,0,0,98,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,1,1,0,0,0,1,1,1,0,-1,0,0,0,0,109,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,1,1,-1,-1,-1,1,1,1,0,-1,0,0,0,0,109,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,98,98,42,42,42,1,98,98,98,98,1,0,0,1,98,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,98,98,98,98,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,1,0,0,0,0,0,1,98,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,18,0,0,0,0,0,18,98,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"5000be9d-3081-4a5e-8563-dd826705663a","name":"puzzle-tictactoe","processorId":"puzzle_tictactoe_solver","properties":{"board":{"offsetPointList":[{"x":16,"y":2,"z":23},{"x":16,"y":1,"z":23},{"x":16,"y":0,"z":23},{"x":17,"y":2,"z":23},{"x":17,"y":1,"z":23},{"x":17,"y":0,"z":23},{"x":18,"y":2,"z":23},{"x":18,"y":1,"z":23},{"x":18,"y":0,"z":23}]}},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":26,"y":-1,"z":22},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":26,"y":3,"z":18},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":23,"y":1,"z":21},{"x":23,"y":0,"z":21},{"x":23,"y":1,"z":22},{"x":23,"y":0,"z":22},{"x":23,"y":1,"z":23},{"x":23,"y":0,"z":23}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/54008e69-d31e-4ed2-9ad0-870a3ad5ee1a.json b/src/main/resources/dgroomdata/54008e69-d31e-4ed2-9ad0-870a3ad5ee1a.json
new file mode 100644
index 0000000..22552a7
--- /dev/null
+++ b/src/main/resources/dgroomdata/54008e69-d31e-4ed2-9ad0-870a3ad5ee1a.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,139,139,0,0,0,0,0,0,0,0,0,139,139,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,0,139,139,0,0,0,139,139,139,0,0,0,139,139,0,98,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,139,0,0,0,0,0,0,0,139,1,139,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,139,139,0,0,0,0,0,0,0,0,0,139,139,139,0,0,0,0,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,139,139,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,139,139,0,0,0,0,0,139,139,0,0,-1,0,0,139,139,0,0,0,0,0,139,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,44,44,44,98,98,98,0,-1,-1,-1,0,98,98,98,44,44,44,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,44,44,44,98,1,98,0,-1,-1,-1,0,98,1,1,159,159,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,98,98,1,98,1,-1,-1,-1,1,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,4,4,1,1,4,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"54008e69-d31e-4ed2-9ad0-870a3ad5ee1a","name":"Banners","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":16,"y":2,"z":28},"secretType":"CHEST","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-1,"z":19},{"x":16,"y":0,"z":19},{"x":16,"y":-1,"z":19},{"x":17,"y":-1,"z":19},{"x":15,"y":0,"z":20},{"x":15,"y":-1,"z":20},{"x":16,"y":0,"z":20},{"x":16,"y":-1,"z":20},{"x":17,"y":0,"z":20},{"x":17,"y":-1,"z":20},{"x":15,"y":0,"z":21},{"x":15,"y":-1,"z":21},{"x":16,"y":0,"z":21},{"x":16,"y":-1,"z":21},{"x":17,"y":0,"z":21},{"x":17,"y":-1,"z":21},{"x":15,"y":0,"z":22},{"x":15,"y":-1,"z":22},{"x":16,"y":0,"z":22},{"x":16,"y":-1,"z":22},{"x":17,"y":0,"z":22},{"x":17,"y":-1,"z":22}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/54aaf168-7039-48dc-99a3-8d1f02d79097.json b/src/main/resources/dgroomdata/54aaf168-7039-48dc-99a3-8d1f02d79097.json
new file mode 100644
index 0000000..f9bee1e
--- /dev/null
+++ b/src/main/resources/dgroomdata/54aaf168-7039-48dc-99a3-8d1f02d79097.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,98,98,109,109,98,98,98,98,4,98,98,98,98,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,139,98,5,5,98,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,5,5,5,98,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,5,5,5,98,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,134,134,5,4,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,134,134,0,0,0,0,0,0,0,139,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,134,134,0,0,0,0,0,0,0,0,4,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,134,134,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,164,164,5,164,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,109,67,109,109,109,109,0,0,0,0,0,164,5,164,164,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,1,98,44,44,44,44,98,0,0,0,0,0,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,44,44,98,98,98,0,0,0,0,0,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,1,98,98,109,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,1,98,98,1,109,0,0,0,0,0,0,0,144,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,1,1,1,109,0,0,0,0,0,0,0,0,51,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,98,1,1,0,0,0,0,0,0,0,0,144,51,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,98,98,1,98,109,0,0,0,0,0,0,0,144,51,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,98,1,98,109,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"54aaf168-7039-48dc-99a3-8d1f02d79097","name":"basement","processorId":"default","properties":{},"mechanics":{"essence-1":{"mechType":"Secret","secretPoint":{"x":6,"y":-4,"z":26},"secretType":"ESSENCE","preRequisite":[]}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/5aef2a82-42a3-495a-9e72-63a9b611e1cb.json b/src/main/resources/dgroomdata/5aef2a82-42a3-495a-9e72-63a9b611e1cb.json
new file mode 100644
index 0000000..75760ac
--- /dev/null
+++ b/src/main/resources/dgroomdata/5aef2a82-42a3-495a-9e72-63a9b611e1cb.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,18,0,0,0,0,0,159,1,0,0,0,0,0,0,7,1,1,98,1,98,98,1,1,1,1,1,98,139,0,0,18,0,0,0,0,0,0,139,139,0,50,0,0,0,0,0,0,0,139,139,18,0,0,0,18,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,1,1,1,0,0,0,0,0,7,1,1,98,98,1,1,1,1,1,1,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,1,1,1,188,0,0,0,0,7,1,1,98,3,1,1,1,1,1,4,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,134,0,0,0,159,1,1,1,1,0,0,126,126,7,1,1,98,3,3,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,159,1,1,1,1,1,126,126,126,3,1,1,1,98,3,3,1,1,1,1,1,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,3,3,3,3,3,3,3,3,1,98,3,3,1,4,4,1,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,1,1,1,1,3,3,3,3,3,3,3,3,98,98,98,98,1,1,1,1,1,1,139,188,0,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,139,98,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,1,1,1,3,3,3,3,3,3,3,3,98,98,98,98,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,1,1,1,3,3,3,3,3,3,3,3,98,98,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,1,1,3,3,3,3,3,3,3,3,98,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,17,0,159,3,3,3,3,3,3,3,98,1,1,1,0,0,0,0,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,7,3,3,3,3,3,3,3,3,1,98,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,7,3,3,3,3,3,3,3,3,1,1,1,0,0,0,0,0,1,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,35,1,3,3,3,3,3,3,3,3,1,98,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,35,1,1,3,3,3,3,3,3,3,98,98,1,1,0,0,0,0,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,50,0,0,0,0,0,0,35,1,1,3,3,3,3,3,3,3,98,98,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,35,1,3,3,3,3,3,3,3,98,1,1,1,1,1,1,1,1,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,35,3,1,3,3,3,3,3,98,98,98,98,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,1,98,98,98,98,1,1,1,1,1,98,139,188,18,0,0,0,0,0,0,0,98,139,18,0,0,0,0,0,0,0,0,139,98,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,159,159,159,159,0,0,0,0,126,3,3,3,3,1,1,98,98,3,3,1,4,4,1,1,67,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,1,1,1,159,0,0,0,0,0,126,126,3,3,1,1,98,3,3,3,3,1,1,4,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,0,0,0,0,0,0,126,126,3,3,1,98,3,3,3,3,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,126,126,3,1,98,3,1,3,1,1,1,1,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,126,126,35,98,98,3,3,1,1,1,4,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,159,0,50,0,0,0,0,0,7,1,98,1,1,98,3,1,1,4,3,98,139,0,50,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,50,139,98,18,0,0,18,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"5aef2a82-42a3-495a-9e72-63a9b611e1cb","name":"Balcony","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":21,"y":-28,"z":29},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":28,"y":-1,"z":16},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":14,"y":-19,"z":9},"secretType":"ITEM_DROP","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":4,"y":-10,"z":26},"secretType":"BAT","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":25,"y":2,"z":14},{"x":26,"y":2,"z":14},{"x":27,"y":2,"z":14},{"x":28,"y":2,"z":14},{"x":25,"y":2,"z":15},{"x":26,"y":2,"z":15},{"x":27,"y":2,"z":15},{"x":28,"y":2,"z":15},{"x":25,"y":2,"z":16},{"x":26,"y":2,"z":16},{"x":27,"y":2,"z":16},{"x":28,"y":2,"z":16},{"x":29,"y":2,"z":16},{"x":25,"y":2,"z":17},{"x":26,"y":2,"z":17},{"x":27,"y":2,"z":17},{"x":28,"y":2,"z":17},{"x":29,"y":2,"z":17},{"x":25,"y":2,"z":18},{"x":26,"y":2,"z":18},{"x":27,"y":2,"z":18},{"x":28,"y":2,"z":18}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/5b6968ce-4a5b-4a48-8cb3-423ff9a7788d.json b/src/main/resources/dgroomdata/5b6968ce-4a5b-4a48-8cb3-423ff9a7788d.json
new file mode 100644
index 0000000..9d5167d
--- /dev/null
+++ b/src/main/resources/dgroomdata/5b6968ce-4a5b-4a48-8cb3-423ff9a7788d.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":50,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,7,1,98,0,103,103,103,103,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,35,1,98,103,0,103,103,103,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,35,50,0,0,0,0,0,0,0,0,0,0,35,1,98,0,0,0,103,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,35,98,0,0,144,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,98,98,98,7,0,0,0,0,0,0,0,0,0,50,159,98,139,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,159,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,1,1,1,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,35,35,35,0,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,98,0,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,50,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,139,0,126,126,188,0,0,0,0,0,0,0,0,0,0,0,14,1,1,1,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,14,1,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,139,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,188,0,0,0,0,0,0,0,1,1,1,1,1,1,23,33,23,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,35,0,188,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,50,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,7,0,0,65,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,7,188,65,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,35,50,0,0,0,139,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,159,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,50,188,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,44,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,159,7,7,7,35,1,1,1,1,1,188,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,139,98,0,0,0,0,0,0,0,50,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,188,35,35,1,98,98,98,7,7,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,1,1,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,44,0,0,0,0,0,0,35,1,98,1,98,98,1,1,98,159,159,35,0,0,0,0,0,0,0,0,0,0,0,35,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,44,0,0,0,0,0,7,1,1,1,1,1,1,1,1,98,98,1,1,98,109,144,0,44,109,98,50,0,159,159,1,98,139,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,139,0,0,0,0,0,0,7,7,7,1,1,1,1,1,98,98,98,1,4,159,159,159,159,159,4,35,7,4,4,1,1,159,35,35,0,0,0,0,0,0,0,0,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,44,44,44,139,98,44,44,44,98,98,0,0,0,0,0,0,0,44,4,1,1,1,1,98,98,98,98,4,159,159,159,159,159,4,98,98,98,98,98,1,1,7,7,0,0,0,0,0,0,0,0,98,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,139,1,0,0,0,98,139,0,0,0,0,0,0,0,0,44,4,159,1,4,4,4,4,4,4,4,4,4,4,4,4,98,98,98,98,98,98,1,7,7,0,0,0,0,0,0,0,0,0,0,0,0,139,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,159,1,4,43,43,43,162,109,162,0,0,0,162,4,98,98,98,1,98,1,1,7,139,0,0,0,0,0,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,35,159,1,1,43,43,43,43,44,0,0,0,0,0,0,4,98,98,98,1,1,1,1,7,0,0,0,0,0,0,98,139,0,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,43,43,43,43,44,0,0,0,0,0,0,4,98,98,98,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,43,43,43,43,44,0,0,0,0,0,0,4,98,98,98,1,1,4,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,98,162,162,162,162,162,109,162,144,0,0,162,98,1,1,1,1,1,67,44,0,0,0,0,0,0,0,0,0,0,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4,4,4,4,162,162,162,4,4,4,4,4,4,4,98,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,98,98,4,4,4,4,4,4,4,4,4,98,98,98,98,98,98,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,7,144,0,0,0,0,0,0,1,1,1,1,1,98,98,4,4,4,4,4,4,4,4,4,98,98,98,98,98,98,98,98,98,1,1,7,0,0,0,0,0,0,0,0,0,0,0,98,109,1,1,1,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,35,35,35,0,0,0,0,1,1,1,1,1,98,98,4,1,1,4,4,4,4,4,4,98,98,98,98,98,98,98,98,98,98,1,7,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,159,50,0,0,0,0,0,0,1,1,98,98,1,1,1,1,1,1,1,1,4,98,98,159,159,159,98,159,159,159,98,1,7,139,0,0,0,0,0,0,0,0,50,7,1,1,1,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,1,98,4,1,1,1,1,1,4,4,4,98,98,144,0,0,98,0,0,0,98,1,1,98,0,0,98,0,0,109,0,0,98,1,1,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,0,1,98,1,1,1,4,1,4,4,1,1,98,98,0,0,0,98,0,0,0,98,98,98,98,0,0,98,0,0,98,0,0,98,1,1,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,0,1,98,0,1,44,44,44,4,1,1,50,98,139,0,0,0,139,0,0,0,139,98,98,0,0,0,0,0,0,0,0,0,1,1,1,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,50,0,1,98,0,1,139,0,44,1,1,0,0,0,0,0,0,0,0,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,98,98,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,0,0,0,0,0,0,0,0,0,0,7,1,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"5b6968ce-4a5b-4a48-8cb3-423ff9a7788d","name":"Melon","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":36,"y":-1,"z":48},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":54,"y":10,"z":30},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":59,"y":-1,"z":4},"secretType":"CHEST","preRequisite":[]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":10,"y":14,"z":57},{"x":10,"y":13,"z":57},{"x":11,"y":14,"z":57},{"x":11,"y":13,"z":57},{"x":12,"y":14,"z":57},{"x":12,"y":13,"z":57},{"x":13,"y":14,"z":57},{"x":13,"y":13,"z":57},{"x":14,"y":14,"z":57},{"x":14,"y":13,"z":57},{"x":10,"y":14,"z":58},{"x":10,"y":13,"z":58},{"x":11,"y":14,"z":58},{"x":11,"y":13,"z":58},{"x":12,"y":14,"z":58},{"x":12,"y":13,"z":58},{"x":13,"y":14,"z":58},{"x":13,"y":13,"z":58},{"x":14,"y":14,"z":58},{"x":14,"y":13,"z":58},{"x":10,"y":14,"z":59},{"x":10,"y":13,"z":59},{"x":11,"y":14,"z":59},{"x":11,"y":13,"z":59},{"x":12,"y":14,"z":59},{"x":12,"y":13,"z":59},{"x":13,"y":14,"z":59},{"x":13,"y":13,"z":59},{"x":14,"y":14,"z":59},{"x":14,"y":13,"z":59}]},"preRequisite":[],"mechType":"Tomb"},"bat-1":{"mechType":"Secret","secretPoint":{"x":28,"y":6,"z":56},"secretType":"BAT","preRequisite":["superboom-1:open"]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":17,"y":13,"z":54},{"x":17,"y":12,"z":54},{"x":18,"y":13,"z":54},{"x":18,"y":12,"z":54},{"x":19,"y":13,"z":54},{"x":19,"y":12,"z":54},{"x":17,"y":13,"z":55},{"x":17,"y":12,"z":55},{"x":18,"y":13,"z":55},{"x":18,"y":12,"z":55},{"x":19,"y":13,"z":55},{"x":19,"y":12,"z":55}]},"preRequisite":[],"mechType":"Tomb"},"chest-6":{"mechType":"Secret","secretPoint":{"x":57,"y":15,"z":22},"secretType":"CHEST","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":17,"y":13,"z":61},{"x":17,"y":12,"z":61},{"x":18,"y":13,"z":61},{"x":18,"y":12,"z":61},{"x":19,"y":13,"z":61},{"x":19,"y":12,"z":61},{"x":17,"y":13,"z":62},{"x":17,"y":12,"z":62},{"x":18,"y":13,"z":62},{"x":18,"y":12,"z":62},{"x":19,"y":13,"z":62},{"x":19,"y":12,"z":62}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":37,"y":10,"z":27},{"x":37,"y":9,"z":27},{"x":37,"y":8,"z":27},{"x":38,"y":10,"z":27},{"x":38,"y":9,"z":27},{"x":38,"y":8,"z":27},{"x":39,"y":10,"z":27},{"x":39,"y":9,"z":27},{"x":39,"y":8,"z":27},{"x":37,"y":10,"z":28},{"x":37,"y":9,"z":28},{"x":37,"y":8,"z":28},{"x":38,"y":10,"z":28},{"x":38,"y":9,"z":28},{"x":38,"y":8,"z":28},{"x":39,"y":10,"z":28},{"x":39,"y":9,"z":28},{"x":39,"y":8,"z":28},{"x":37,"y":10,"z":29},{"x":37,"y":9,"z":29},{"x":37,"y":8,"z":29},{"x":38,"y":10,"z":29},{"x":38,"y":9,"z":29},{"x":38,"y":8,"z":29},{"x":39,"y":10,"z":29},{"x":39,"y":9,"z":29},{"x":39,"y":8,"z":29},{"x":37,"y":10,"z":30},{"x":37,"y":9,"z":30},{"x":37,"y":8,"z":30},{"x":38,"y":10,"z":30},{"x":38,"y":9,"z":30},{"x":38,"y":8,"z":30},{"x":39,"y":10,"z":30},{"x":39,"y":9,"z":30},{"x":39,"y":8,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"chest-4":{"mechType":"Secret","secretPoint":{"x":2,"y":9,"z":37},"secretType":"CHEST","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":42,"y":2,"z":59},{"x":42,"y":1,"z":59},{"x":42,"y":0,"z":59},{"x":42,"y":4,"z":60},{"x":42,"y":3,"z":60},{"x":42,"y":2,"z":60},{"x":42,"y":1,"z":60},{"x":42,"y":0,"z":60},{"x":42,"y":-1,"z":60},{"x":42,"y":3,"z":61},{"x":42,"y":0,"z":61},{"x":42,"y":-1,"z":61}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-5":{"mechType":"Secret","secretPoint":{"x":5,"y":12,"z":58},"secretType":"CHEST","preRequisite":[]}},"totalSecrets":7}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/63634341-8ef3-4197-aafa-17f5875dd307.json b/src/main/resources/dgroomdata/63634341-8ef3-4197-aafa-17f5875dd307.json
new file mode 100644
index 0000000..026742b
--- /dev/null
+++ b/src/main/resources/dgroomdata/63634341-8ef3-4197-aafa-17f5875dd307.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,98,98,5,5,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,98,98,1,0,0,0,0,0,1,98,98,5,136,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,1,1,1,98,98,0,0,0,0,0,0,50,98,98,1,1,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,101,101,98,1,98,98,0,0,0,0,0,0,0,98,98,1,1,1,98,1,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,98,1,98,0,0,0,0,0,0,1,98,98,1,1,1,98,98,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,98,98,1,1,1,98,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,98,98,50,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,98,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,1,0,98,98,1,98,98,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,50,98,98,98,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,134,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,98,98,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,50,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,171,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,43,43,0,171,171,171,0,0,0,0,0,0,0,0,5,5,98,98,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,43,43,0,0,171,0,0,0,0,0,0,0,0,136,5,0,101,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,43,43,0,0,171,0,0,0,0,0,0,0,0,0,0,101,5,134,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,43,0,0,0,0,0,0,0,0,0,0,0,0,98,98,5,5,0,0,136,5,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"63634341-8ef3-4197-aafa-17f5875dd307","name":"Blackflag","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":3,"y":10,"z":6},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":4,"y":10,"z":28},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":9,"y":-10,"z":3},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-8,"z":20},{"x":15,"y":-9,"z":20},{"x":16,"y":-8,"z":20},{"x":16,"y":-9,"z":20},{"x":17,"y":-8,"z":20},{"x":17,"y":-9,"z":20},{"x":15,"y":-8,"z":21},{"x":15,"y":-9,"z":21},{"x":16,"y":-8,"z":21},{"x":16,"y":-9,"z":21},{"x":17,"y":-8,"z":21},{"x":17,"y":-9,"z":21},{"x":15,"y":-8,"z":22},{"x":15,"y":-9,"z":22},{"x":16,"y":-8,"z":22},{"x":16,"y":-9,"z":22},{"x":17,"y":-8,"z":22},{"x":17,"y":-9,"z":22},{"x":15,"y":-8,"z":23},{"x":15,"y":-9,"z":23},{"x":16,"y":-8,"z":23},{"x":16,"y":-9,"z":23},{"x":17,"y":-8,"z":23},{"x":17,"y":-9,"z":23},{"x":15,"y":-8,"z":24},{"x":15,"y":-9,"z":24},{"x":16,"y":-8,"z":24},{"x":16,"y":-9,"z":24},{"x":17,"y":-8,"z":24},{"x":17,"y":-9,"z":24}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/6367a338-dd48-4c30-9e03-7ff6b5c7a936.json b/src/main/resources/dgroomdata/6367a338-dd48-4c30-9e03-7ff6b5c7a936.json
new file mode 100644
index 0000000..8921912
--- /dev/null
+++ b/src/main/resources/dgroomdata/6367a338-dd48-4c30-9e03-7ff6b5c7a936.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,98,98,1,98,-1,98,98,98,98,-1,0,0,0,0,0,0,0,-1,98,98,98,98,-1,1,98,98,98,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,50,0,0,0,0,0,50,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,139,0,0,0,0,0,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,139,139,0,0,0,139,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,101,101,101,101,101,49,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,0,0,0,0,0,49,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,49,0,0,0,0,0,49,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"6367a338-dd48-4c30-9e03-7ff6b5c7a936","name":"puzzle-bombdefuse","processorId":"puzzle_bombdefuse","properties":{"R2":{"offsetPointList":[{"x":3,"y":-2,"z":9},{"x":4,"y":-2,"z":9},{"x":5,"y":-2,"z":9},{"x":6,"y":-2,"z":9},{"x":7,"y":-2,"z":9},{"x":8,"y":-2,"z":9},{"x":9,"y":-2,"z":9},{"x":10,"y":-2,"z":9},{"x":11,"y":-2,"z":9},{"x":3,"y":-2,"z":10},{"x":4,"y":-2,"z":10},{"x":5,"y":-2,"z":10},{"x":6,"y":-2,"z":10},{"x":7,"y":-2,"z":10},{"x":8,"y":-2,"z":10},{"x":9,"y":-2,"z":10},{"x":10,"y":-2,"z":10},{"x":11,"y":-2,"z":10},{"x":3,"y":-2,"z":11},{"x":4,"y":-2,"z":11},{"x":5,"y":-2,"z":11},{"x":6,"y":-2,"z":11},{"x":7,"y":-2,"z":11},{"x":8,"y":-2,"z":11},{"x":9,"y":-2,"z":11},{"x":10,"y":-2,"z":11},{"x":11,"y":-2,"z":11},{"x":3,"y":-2,"z":12},{"x":4,"y":-2,"z":12},{"x":5,"y":-2,"z":12},{"x":6,"y":-2,"z":12},{"x":7,"y":-2,"z":12},{"x":8,"y":-2,"z":12},{"x":9,"y":-2,"z":12},{"x":10,"y":-2,"z":12},{"x":11,"y":-2,"z":12},{"x":3,"y":-2,"z":13},{"x":4,"y":-2,"z":13},{"x":5,"y":-2,"z":13},{"x":6,"y":-2,"z":13},{"x":7,"y":-2,"z":13},{"x":8,"y":-2,"z":13},{"x":9,"y":-2,"z":13},{"x":10,"y":-2,"z":13},{"x":11,"y":-2,"z":13},{"x":3,"y":-2,"z":14},{"x":4,"y":-2,"z":14},{"x":5,"y":-2,"z":14},{"x":6,"y":-2,"z":14},{"x":7,"y":-2,"z":14},{"x":8,"y":-2,"z":14},{"x":9,"y":-2,"z":14},{"x":10,"y":-2,"z":14},{"x":11,"y":-2,"z":14}]},"R3":{"offsetPointList":[{"x":3,"y":-2,"z":16},{"x":4,"y":-2,"z":16},{"x":5,"y":-2,"z":16},{"x":6,"y":-2,"z":16},{"x":7,"y":-2,"z":16},{"x":8,"y":-2,"z":16},{"x":9,"y":-2,"z":16},{"x":10,"y":-2,"z":16},{"x":11,"y":-2,"z":16},{"x":3,"y":-2,"z":17},{"x":4,"y":-2,"z":17},{"x":5,"y":-2,"z":17},{"x":6,"y":-2,"z":17},{"x":7,"y":-2,"z":17},{"x":8,"y":-2,"z":17},{"x":9,"y":-2,"z":17},{"x":10,"y":-2,"z":17},{"x":11,"y":-2,"z":17},{"x":3,"y":-2,"z":18},{"x":4,"y":-2,"z":18},{"x":5,"y":-2,"z":18},{"x":6,"y":-2,"z":18},{"x":7,"y":-2,"z":18},{"x":8,"y":-2,"z":18},{"x":9,"y":-2,"z":18},{"x":10,"y":-2,"z":18},{"x":11,"y":-2,"z":18},{"x":3,"y":-2,"z":19},{"x":4,"y":-2,"z":19},{"x":5,"y":-2,"z":19},{"x":6,"y":-2,"z":19},{"x":7,"y":-2,"z":19},{"x":8,"y":-2,"z":19},{"x":9,"y":-2,"z":19},{"x":10,"y":-2,"z":19},{"x":11,"y":-2,"z":19},{"x":3,"y":-2,"z":20},{"x":4,"y":-2,"z":20},{"x":5,"y":-2,"z":20},{"x":6,"y":-2,"z":20},{"x":7,"y":-2,"z":20},{"x":8,"y":-2,"z":20},{"x":9,"y":-2,"z":20},{"x":10,"y":-2,"z":20},{"x":11,"y":-2,"z":20},{"x":3,"y":-2,"z":21},{"x":4,"y":-2,"z":21},{"x":5,"y":-2,"z":21},{"x":6,"y":-2,"z":21},{"x":7,"y":-2,"z":21},{"x":8,"y":-2,"z":21},{"x":9,"y":-2,"z":21},{"x":10,"y":-2,"z":21},{"x":11,"y":-2,"z":21}]},"R4":{"offsetPointList":[{"x":3,"y":-2,"z":23},{"x":4,"y":-2,"z":23},{"x":5,"y":-2,"z":23},{"x":6,"y":-2,"z":23},{"x":7,"y":-2,"z":23},{"x":8,"y":-2,"z":23},{"x":9,"y":-2,"z":23},{"x":10,"y":-2,"z":23},{"x":11,"y":-2,"z":23},{"x":3,"y":-2,"z":24},{"x":4,"y":-2,"z":24},{"x":5,"y":-2,"z":24},{"x":6,"y":-2,"z":24},{"x":7,"y":-2,"z":24},{"x":8,"y":-2,"z":24},{"x":9,"y":-2,"z":24},{"x":10,"y":-2,"z":24},{"x":11,"y":-2,"z":24},{"x":3,"y":-2,"z":25},{"x":4,"y":-2,"z":25},{"x":5,"y":-2,"z":25},{"x":6,"y":-2,"z":25},{"x":7,"y":-2,"z":25},{"x":8,"y":-2,"z":25},{"x":9,"y":-2,"z":25},{"x":10,"y":-2,"z":25},{"x":11,"y":-2,"z":25},{"x":3,"y":-2,"z":26},{"x":4,"y":-2,"z":26},{"x":5,"y":-2,"z":26},{"x":6,"y":-2,"z":26},{"x":7,"y":-2,"z":26},{"x":8,"y":-2,"z":26},{"x":9,"y":-2,"z":26},{"x":10,"y":-2,"z":26},{"x":11,"y":-2,"z":26},{"x":3,"y":-2,"z":27},{"x":4,"y":-2,"z":27},{"x":5,"y":-2,"z":27},{"x":6,"y":-2,"z":27},{"x":7,"y":-2,"z":27},{"x":8,"y":-2,"z":27},{"x":9,"y":-2,"z":27},{"x":10,"y":-2,"z":27},{"x":11,"y":-2,"z":27},{"x":3,"y":-2,"z":28},{"x":4,"y":-2,"z":28},{"x":5,"y":-2,"z":28},{"x":6,"y":-2,"z":28},{"x":7,"y":-2,"z":28},{"x":8,"y":-2,"z":28},{"x":9,"y":-2,"z":28},{"x":10,"y":-2,"z":28},{"x":11,"y":-2,"z":28}]},"Warning":{"x":16,"y":2,"z":7},"L1":{"offsetPointList":[{"x":21,"y":-2,"z":2},{"x":22,"y":-2,"z":2},{"x":23,"y":-2,"z":2},{"x":24,"y":-2,"z":2},{"x":25,"y":-2,"z":2},{"x":26,"y":-2,"z":2},{"x":27,"y":-2,"z":2},{"x":28,"y":-2,"z":2},{"x":29,"y":-2,"z":2},{"x":21,"y":-2,"z":3},{"x":22,"y":-2,"z":3},{"x":23,"y":-2,"z":3},{"x":24,"y":-2,"z":3},{"x":25,"y":-2,"z":3},{"x":26,"y":-2,"z":3},{"x":27,"y":-2,"z":3},{"x":28,"y":-2,"z":3},{"x":29,"y":-2,"z":3},{"x":21,"y":-2,"z":4},{"x":22,"y":-2,"z":4},{"x":23,"y":-2,"z":4},{"x":24,"y":-2,"z":4},{"x":25,"y":-2,"z":4},{"x":26,"y":-2,"z":4},{"x":27,"y":-2,"z":4},{"x":28,"y":-2,"z":4},{"x":29,"y":-2,"z":4},{"x":21,"y":-2,"z":5},{"x":22,"y":-2,"z":5},{"x":23,"y":-2,"z":5},{"x":24,"y":-2,"z":5},{"x":25,"y":-2,"z":5},{"x":26,"y":-2,"z":5},{"x":27,"y":-2,"z":5},{"x":28,"y":-2,"z":5},{"x":29,"y":-2,"z":5},{"x":21,"y":-2,"z":6},{"x":22,"y":-2,"z":6},{"x":23,"y":-2,"z":6},{"x":24,"y":-2,"z":6},{"x":25,"y":-2,"z":6},{"x":26,"y":-2,"z":6},{"x":27,"y":-2,"z":6},{"x":28,"y":-2,"z":6},{"x":29,"y":-2,"z":6},{"x":21,"y":-2,"z":7},{"x":22,"y":-2,"z":7},{"x":23,"y":-2,"z":7},{"x":24,"y":-2,"z":7},{"x":25,"y":-2,"z":7},{"x":26,"y":-2,"z":7},{"x":27,"y":-2,"z":7},{"x":28,"y":-2,"z":7},{"x":29,"y":-2,"z":7}]},"L2":{"offsetPointList":[{"x":21,"y":-2,"z":9},{"x":22,"y":-2,"z":9},{"x":23,"y":-2,"z":9},{"x":24,"y":-2,"z":9},{"x":25,"y":-2,"z":9},{"x":26,"y":-2,"z":9},{"x":27,"y":-2,"z":9},{"x":28,"y":-2,"z":9},{"x":29,"y":-2,"z":9},{"x":21,"y":-2,"z":10},{"x":22,"y":-2,"z":10},{"x":23,"y":-2,"z":10},{"x":24,"y":-2,"z":10},{"x":25,"y":-2,"z":10},{"x":26,"y":-2,"z":10},{"x":27,"y":-2,"z":10},{"x":28,"y":-2,"z":10},{"x":29,"y":-2,"z":10},{"x":21,"y":-2,"z":11},{"x":22,"y":-2,"z":11},{"x":23,"y":-2,"z":11},{"x":24,"y":-2,"z":11},{"x":25,"y":-2,"z":11},{"x":26,"y":-2,"z":11},{"x":27,"y":-2,"z":11},{"x":28,"y":-2,"z":11},{"x":29,"y":-2,"z":11},{"x":21,"y":-2,"z":12},{"x":22,"y":-2,"z":12},{"x":23,"y":-2,"z":12},{"x":24,"y":-2,"z":12},{"x":25,"y":-2,"z":12},{"x":26,"y":-2,"z":12},{"x":27,"y":-2,"z":12},{"x":28,"y":-2,"z":12},{"x":29,"y":-2,"z":12},{"x":21,"y":-2,"z":13},{"x":22,"y":-2,"z":13},{"x":23,"y":-2,"z":13},{"x":24,"y":-2,"z":13},{"x":25,"y":-2,"z":13},{"x":26,"y":-2,"z":13},{"x":27,"y":-2,"z":13},{"x":28,"y":-2,"z":13},{"x":29,"y":-2,"z":13},{"x":21,"y":-2,"z":14},{"x":22,"y":-2,"z":14},{"x":23,"y":-2,"z":14},{"x":24,"y":-2,"z":14},{"x":25,"y":-2,"z":14},{"x":26,"y":-2,"z":14},{"x":27,"y":-2,"z":14},{"x":28,"y":-2,"z":14},{"x":29,"y":-2,"z":14}]},"L3":{"offsetPointList":[{"x":21,"y":-2,"z":16},{"x":22,"y":-2,"z":16},{"x":23,"y":-2,"z":16},{"x":24,"y":-2,"z":16},{"x":25,"y":-2,"z":16},{"x":26,"y":-2,"z":16},{"x":27,"y":-2,"z":16},{"x":28,"y":-2,"z":16},{"x":29,"y":-2,"z":16},{"x":21,"y":-2,"z":17},{"x":22,"y":-2,"z":17},{"x":23,"y":-2,"z":17},{"x":24,"y":-2,"z":17},{"x":25,"y":-2,"z":17},{"x":26,"y":-2,"z":17},{"x":27,"y":-2,"z":17},{"x":28,"y":-2,"z":17},{"x":29,"y":-2,"z":17},{"x":21,"y":-2,"z":18},{"x":22,"y":-2,"z":18},{"x":23,"y":-2,"z":18},{"x":24,"y":-2,"z":18},{"x":25,"y":-2,"z":18},{"x":26,"y":-2,"z":18},{"x":27,"y":-2,"z":18},{"x":28,"y":-2,"z":18},{"x":29,"y":-2,"z":18},{"x":21,"y":-2,"z":19},{"x":22,"y":-2,"z":19},{"x":23,"y":-2,"z":19},{"x":24,"y":-2,"z":19},{"x":25,"y":-2,"z":19},{"x":26,"y":-2,"z":19},{"x":27,"y":-2,"z":19},{"x":28,"y":-2,"z":19},{"x":29,"y":-2,"z":19},{"x":21,"y":-2,"z":20},{"x":22,"y":-2,"z":20},{"x":23,"y":-2,"z":20},{"x":24,"y":-2,"z":20},{"x":25,"y":-2,"z":20},{"x":26,"y":-2,"z":20},{"x":27,"y":-2,"z":20},{"x":28,"y":-2,"z":20},{"x":29,"y":-2,"z":20},{"x":21,"y":-2,"z":21},{"x":22,"y":-2,"z":21},{"x":23,"y":-2,"z":21},{"x":24,"y":-2,"z":21},{"x":25,"y":-2,"z":21},{"x":26,"y":-2,"z":21},{"x":27,"y":-2,"z":21},{"x":28,"y":-2,"z":21},{"x":29,"y":-2,"z":21}]},"L4":{"offsetPointList":[{"x":21,"y":-2,"z":23},{"x":22,"y":-2,"z":23},{"x":23,"y":-2,"z":23},{"x":24,"y":-2,"z":23},{"x":25,"y":-2,"z":23},{"x":26,"y":-2,"z":23},{"x":27,"y":-2,"z":23},{"x":28,"y":-2,"z":23},{"x":29,"y":-2,"z":23},{"x":21,"y":-2,"z":24},{"x":22,"y":-2,"z":24},{"x":23,"y":-2,"z":24},{"x":24,"y":-2,"z":24},{"x":25,"y":-2,"z":24},{"x":26,"y":-2,"z":24},{"x":27,"y":-2,"z":24},{"x":28,"y":-2,"z":24},{"x":29,"y":-2,"z":24},{"x":21,"y":-2,"z":25},{"x":22,"y":-2,"z":25},{"x":23,"y":-2,"z":25},{"x":24,"y":-2,"z":25},{"x":25,"y":-2,"z":25},{"x":26,"y":-2,"z":25},{"x":27,"y":-2,"z":25},{"x":28,"y":-2,"z":25},{"x":29,"y":-2,"z":25},{"x":21,"y":-2,"z":26},{"x":22,"y":-2,"z":26},{"x":23,"y":-2,"z":26},{"x":24,"y":-2,"z":26},{"x":25,"y":-2,"z":26},{"x":26,"y":-2,"z":26},{"x":27,"y":-2,"z":26},{"x":28,"y":-2,"z":26},{"x":29,"y":-2,"z":26},{"x":21,"y":-2,"z":27},{"x":22,"y":-2,"z":27},{"x":23,"y":-2,"z":27},{"x":24,"y":-2,"z":27},{"x":25,"y":-2,"z":27},{"x":26,"y":-2,"z":27},{"x":27,"y":-2,"z":27},{"x":28,"y":-2,"z":27},{"x":29,"y":-2,"z":27},{"x":21,"y":-2,"z":28},{"x":22,"y":-2,"z":28},{"x":23,"y":-2,"z":28},{"x":24,"y":-2,"z":28},{"x":25,"y":-2,"z":28},{"x":26,"y":-2,"z":28},{"x":27,"y":-2,"z":28},{"x":28,"y":-2,"z":28},{"x":29,"y":-2,"z":28}]},"Door":{"offsetPointList":[{"x":20,"y":-1,"z":5},{"x":25,"y":-1,"z":8},{"x":25,"y":-1,"z":15},{"x":25,"y":-1,"z":22},{"x":25,"y":-1,"z":29}]},"R1":{"offsetPointList":[{"x":3,"y":-2,"z":2},{"x":4,"y":-2,"z":2},{"x":5,"y":-2,"z":2},{"x":6,"y":-2,"z":2},{"x":7,"y":-2,"z":2},{"x":8,"y":-2,"z":2},{"x":9,"y":-2,"z":2},{"x":10,"y":-2,"z":2},{"x":11,"y":-2,"z":2},{"x":3,"y":-2,"z":3},{"x":4,"y":-2,"z":3},{"x":5,"y":-2,"z":3},{"x":6,"y":-2,"z":3},{"x":7,"y":-2,"z":3},{"x":8,"y":-2,"z":3},{"x":9,"y":-2,"z":3},{"x":10,"y":-2,"z":3},{"x":11,"y":-2,"z":3},{"x":3,"y":-2,"z":4},{"x":4,"y":-2,"z":4},{"x":5,"y":-2,"z":4},{"x":6,"y":-2,"z":4},{"x":7,"y":-2,"z":4},{"x":8,"y":-2,"z":4},{"x":9,"y":-2,"z":4},{"x":10,"y":-2,"z":4},{"x":11,"y":-2,"z":4},{"x":3,"y":-2,"z":5},{"x":4,"y":-2,"z":5},{"x":5,"y":-2,"z":5},{"x":6,"y":-2,"z":5},{"x":7,"y":-2,"z":5},{"x":8,"y":-2,"z":5},{"x":9,"y":-2,"z":5},{"x":10,"y":-2,"z":5},{"x":11,"y":-2,"z":5},{"x":3,"y":-2,"z":6},{"x":4,"y":-2,"z":6},{"x":5,"y":-2,"z":6},{"x":6,"y":-2,"z":6},{"x":7,"y":-2,"z":6},{"x":8,"y":-2,"z":6},{"x":9,"y":-2,"z":6},{"x":10,"y":-2,"z":6},{"x":11,"y":-2,"z":6},{"x":3,"y":-2,"z":7},{"x":4,"y":-2,"z":7},{"x":5,"y":-2,"z":7},{"x":6,"y":-2,"z":7},{"x":7,"y":-2,"z":7},{"x":8,"y":-2,"z":7},{"x":9,"y":-2,"z":7},{"x":10,"y":-2,"z":7},{"x":11,"y":-2,"z":7}]}},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/65d8264d-f47c-4306-b89f-46e28b117511.json b/src/main/resources/dgroomdata/65d8264d-f47c-4306-b89f-46e28b117511.json
new file mode 100644
index 0000000..c3a7c26
--- /dev/null
+++ b/src/main/resources/dgroomdata/65d8264d-f47c-4306-b89f-46e28b117511.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,-1,-1,-1,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,-1,-1,-1,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,139,139,98,109,109,109,98,98,109,109,98,98,98,98,1,98,4,0,-1,-1,-1,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,139,139,98,109,0,0,0,0,0,0,0,0,0,0,0,98,4,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,0,0,0,98,98,0,0,98,98,0,0,0,98,98,0,0,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,0,0,98,98,0,0,0,98,98,0,0,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,109,1,0,0,0,0,0,0,0,0,0,0,0,98,109,109,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,50,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,50,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,0,0,1,0,0,0,98,98,0,0,0,98,98,0,0,0,0,50,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,98,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,0,0,98,98,0,0,0,98,98,0,0,109,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,98,98,0,0,0,98,98,0,0,109,98,0,0,98,0,101,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"65d8264d-f47c-4306-b89f-46e28b117511","name":"Drop","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":6,"y":-11,"z":16},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":26,"y":7,"z":3},"secretType":"CHEST","preRequisite":[]},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":15,"y":8,"z":2},{"x":15,"y":7,"z":2},{"x":16,"y":8,"z":2},{"x":16,"y":7,"z":2},{"x":17,"y":8,"z":2},{"x":17,"y":7,"z":2},{"x":15,"y":8,"z":3},{"x":15,"y":7,"z":3},{"x":16,"y":8,"z":3},{"x":16,"y":7,"z":3},{"x":17,"y":8,"z":3},{"x":17,"y":7,"z":3},{"x":15,"y":8,"z":4},{"x":15,"y":7,"z":4},{"x":16,"y":8,"z":4},{"x":16,"y":7,"z":4},{"x":17,"y":8,"z":4},{"x":17,"y":7,"z":4},{"x":15,"y":8,"z":5},{"x":15,"y":7,"z":5},{"x":16,"y":8,"z":5},{"x":16,"y":7,"z":5},{"x":17,"y":8,"z":5},{"x":17,"y":7,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":2,"y":8,"z":24},{"x":2,"y":7,"z":24},{"x":3,"y":8,"z":24},{"x":3,"y":7,"z":24},{"x":4,"y":8,"z":24},{"x":4,"y":7,"z":24},{"x":2,"y":8,"z":25},{"x":2,"y":7,"z":25},{"x":3,"y":8,"z":25},{"x":3,"y":7,"z":25},{"x":4,"y":8,"z":25},{"x":4,"y":7,"z":25},{"x":2,"y":8,"z":26},{"x":2,"y":7,"z":26},{"x":3,"y":8,"z":26},{"x":3,"y":7,"z":26},{"x":4,"y":8,"z":26},{"x":4,"y":7,"z":26}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":25,"y":8,"z":27},{"x":25,"y":7,"z":27},{"x":26,"y":8,"z":27},{"x":26,"y":7,"z":27},{"x":27,"y":8,"z":27},{"x":27,"y":7,"z":27},{"x":25,"y":8,"z":28},{"x":25,"y":7,"z":28},{"x":26,"y":8,"z":28},{"x":26,"y":7,"z":28},{"x":27,"y":8,"z":28},{"x":27,"y":7,"z":28},{"x":25,"y":8,"z":29},{"x":25,"y":7,"z":29},{"x":26,"y":8,"z":29},{"x":26,"y":7,"z":29},{"x":27,"y":8,"z":29},{"x":27,"y":7,"z":29},{"x":25,"y":8,"z":30},{"x":25,"y":7,"z":30},{"x":26,"y":8,"z":30},{"x":26,"y":7,"z":30},{"x":27,"y":8,"z":30},{"x":27,"y":7,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":28,"y":8,"z":6},{"x":28,"y":7,"z":6},{"x":29,"y":8,"z":6},{"x":29,"y":7,"z":6},{"x":28,"y":8,"z":7},{"x":28,"y":7,"z":7},{"x":29,"y":8,"z":7},{"x":29,"y":7,"z":7},{"x":28,"y":8,"z":8},{"x":28,"y":7,"z":8},{"x":29,"y":8,"z":8},{"x":29,"y":7,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":23,"y":8,"z":6},{"x":23,"y":7,"z":6},{"x":24,"y":8,"z":6},{"x":24,"y":7,"z":6},{"x":23,"y":8,"z":7},{"x":23,"y":7,"z":7},{"x":24,"y":8,"z":7},{"x":24,"y":7,"z":7},{"x":23,"y":8,"z":8},{"x":23,"y":7,"z":8},{"x":24,"y":8,"z":8},{"x":24,"y":7,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":25,"y":0,"z":3},{"x":25,"y":-1,"z":3},{"x":26,"y":0,"z":3},{"x":26,"y":-1,"z":3},{"x":27,"y":0,"z":3},{"x":27,"y":-1,"z":3},{"x":25,"y":0,"z":4},{"x":25,"y":-1,"z":4},{"x":26,"y":0,"z":4},{"x":26,"y":-1,"z":4},{"x":27,"y":0,"z":4},{"x":27,"y":-1,"z":4},{"x":25,"y":0,"z":5},{"x":25,"y":-1,"z":5},{"x":26,"y":0,"z":5},{"x":26,"y":-1,"z":5},{"x":27,"y":0,"z":5},{"x":27,"y":-1,"z":5},{"x":25,"y":0,"z":6},{"x":25,"y":-1,"z":6},{"x":26,"y":0,"z":6},{"x":26,"y":-1,"z":6},{"x":27,"y":0,"z":6},{"x":27,"y":-1,"z":6}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":10,"y":-7,"z":15},{"x":10,"y":-8,"z":15},{"x":10,"y":-9,"z":15},{"x":10,"y":-10,"z":15},{"x":10,"y":-11,"z":15},{"x":10,"y":-7,"z":16},{"x":10,"y":-8,"z":16},{"x":10,"y":-9,"z":16},{"x":10,"y":-10,"z":16},{"x":10,"y":-11,"z":16},{"x":10,"y":-8,"z":17},{"x":10,"y":-9,"z":17},{"x":10,"y":-10,"z":17},{"x":10,"y":-11,"z":17}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/6b0dfb3e-c86c-41d1-8526-a172027dbb8d.json b/src/main/resources/dgroomdata/6b0dfb3e-c86c-41d1-8526-a172027dbb8d.json
new file mode 100644
index 0000000..31c304b
--- /dev/null
+++ b/src/main/resources/dgroomdata/6b0dfb3e-c86c-41d1-8526-a172027dbb8d.json
@@ -0,0 +1,1380 @@
+{
+ "isUserMade": false,
+ "shape": 3,
+ "color": 63,
+ "uuid": "6b0dfb3e-c86c-41d1-8526-a172027dbb8d",
+ "name": "grass-ruin",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "chest-2": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 4,
+ "y": -15,
+ "z": 15
+ },
+ "secretType": "CHEST",
+ "preRequisite": [
+ "door-2:open"
+ ]
+ },
+ "door-3": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": -12,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 6
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 7
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 8
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 9
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 10
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 10
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 10
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 10
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 10
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 10
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 10
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-2:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "chest-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 12,
+ "y": 37,
+ "z": 11
+ },
+ "secretType": "CHEST",
+ "preRequisite": []
+ },
+ "lever-1": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 32,
+ "y": 12,
+ "z": 29
+ },
+ "preRequisite": [],
+ "triggering": "door-1"
+ },
+ "door-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 29,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 29,
+ "y": -7,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 30,
+ "y": -7,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 31,
+ "y": -7,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 32,
+ "y": -7,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 33,
+ "y": -7,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 34,
+ "y": -7,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": 1,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": 0,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -1,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -2,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -3,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -4,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -5,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -6,
+ "z": 18
+ },
+ {
+ "x": 35,
+ "y": -7,
+ "z": 18
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-1:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "lever-2": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 32,
+ "y": -17,
+ "z": 25
+ },
+ "preRequisite": [
+ "door-1:open"
+ ],
+ "triggering": "door-2"
+ },
+ "door-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 27,
+ "y": -12,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 20
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 21
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 22
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 23
+ },
+ {
+ "x": 27,
+ "y": -12,
+ "z": 24
+ },
+ {
+ "x": 27,
+ "y": -13,
+ "z": 24
+ },
+ {
+ "x": 27,
+ "y": -14,
+ "z": 24
+ },
+ {
+ "x": 27,
+ "y": -15,
+ "z": 24
+ },
+ {
+ "x": 27,
+ "y": -16,
+ "z": 24
+ },
+ {
+ "x": 27,
+ "y": -17,
+ "z": 24
+ },
+ {
+ "x": 27,
+ "y": -18,
+ "z": 24
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-2:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "superboom-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 47,
+ "y": 10,
+ "z": 24
+ },
+ {
+ "x": 47,
+ "y": 13,
+ "z": 25
+ },
+ {
+ "x": 47,
+ "y": 12,
+ "z": 25
+ },
+ {
+ "x": 47,
+ "y": 11,
+ "z": 25
+ },
+ {
+ "x": 47,
+ "y": 10,
+ "z": 25
+ },
+ {
+ "x": 47,
+ "y": 13,
+ "z": 26
+ },
+ {
+ "x": 47,
+ "y": 12,
+ "z": 26
+ },
+ {
+ "x": 47,
+ "y": 11,
+ "z": 26
+ },
+ {
+ "x": 47,
+ "y": 10,
+ "z": 26
+ },
+ {
+ "x": 47,
+ "y": 12,
+ "z": 27
+ },
+ {
+ "x": 47,
+ "y": 10,
+ "z": 27
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "BreakableWall"
+ },
+ "crypt-3": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 58,
+ "y": 21,
+ "z": 7
+ },
+ {
+ "x": 58,
+ "y": 20,
+ "z": 7
+ },
+ {
+ "x": 59,
+ "y": 21,
+ "z": 7
+ },
+ {
+ "x": 59,
+ "y": 20,
+ "z": 7
+ },
+ {
+ "x": 60,
+ "y": 21,
+ "z": 7
+ },
+ {
+ "x": 60,
+ "y": 20,
+ "z": 7
+ },
+ {
+ "x": 61,
+ "y": 21,
+ "z": 7
+ },
+ {
+ "x": 61,
+ "y": 20,
+ "z": 7
+ },
+ {
+ "x": 58,
+ "y": 21,
+ "z": 8
+ },
+ {
+ "x": 58,
+ "y": 20,
+ "z": 8
+ },
+ {
+ "x": 59,
+ "y": 21,
+ "z": 8
+ },
+ {
+ "x": 59,
+ "y": 20,
+ "z": 8
+ },
+ {
+ "x": 60,
+ "y": 21,
+ "z": 8
+ },
+ {
+ "x": 60,
+ "y": 20,
+ "z": 8
+ },
+ {
+ "x": 61,
+ "y": 21,
+ "z": 8
+ },
+ {
+ "x": 61,
+ "y": 20,
+ "z": 8
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "crypt-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 58,
+ "y": 21,
+ "z": 23
+ },
+ {
+ "x": 58,
+ "y": 20,
+ "z": 23
+ },
+ {
+ "x": 59,
+ "y": 21,
+ "z": 23
+ },
+ {
+ "x": 59,
+ "y": 20,
+ "z": 23
+ },
+ {
+ "x": 60,
+ "y": 21,
+ "z": 23
+ },
+ {
+ "x": 60,
+ "y": 20,
+ "z": 23
+ },
+ {
+ "x": 61,
+ "y": 21,
+ "z": 23
+ },
+ {
+ "x": 61,
+ "y": 20,
+ "z": 23
+ },
+ {
+ "x": 58,
+ "y": 21,
+ "z": 24
+ },
+ {
+ "x": 58,
+ "y": 20,
+ "z": 24
+ },
+ {
+ "x": 59,
+ "y": 21,
+ "z": 24
+ },
+ {
+ "x": 59,
+ "y": 20,
+ "z": 24
+ },
+ {
+ "x": 60,
+ "y": 21,
+ "z": 24
+ },
+ {
+ "x": 60,
+ "y": 20,
+ "z": 24
+ },
+ {
+ "x": 61,
+ "y": 21,
+ "z": 24
+ },
+ {
+ "x": 61,
+ "y": 20,
+ "z": 24
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "essence-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 49,
+ "y": 11,
+ "z": 25
+ },
+ "secretType": "ESSENCE",
+ "preRequisite": [
+ "superboom-1:open"
+ ]
+ },
+ "crypt-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 53,
+ "y": -17,
+ "z": 4
+ },
+ {
+ "x": 53,
+ "y": -18,
+ "z": 4
+ },
+ {
+ "x": 54,
+ "y": -17,
+ "z": 4
+ },
+ {
+ "x": 54,
+ "y": -18,
+ "z": 4
+ },
+ {
+ "x": 55,
+ "y": -17,
+ "z": 4
+ },
+ {
+ "x": 55,
+ "y": -18,
+ "z": 4
+ },
+ {
+ "x": 53,
+ "y": -17,
+ "z": 5
+ },
+ {
+ "x": 53,
+ "y": -18,
+ "z": 5
+ },
+ {
+ "x": 54,
+ "y": -17,
+ "z": 5
+ },
+ {
+ "x": 54,
+ "y": -18,
+ "z": 5
+ },
+ {
+ "x": 55,
+ "y": -17,
+ "z": 5
+ },
+ {
+ "x": 55,
+ "y": -18,
+ "z": 5
+ },
+ {
+ "x": 53,
+ "y": -17,
+ "z": 6
+ },
+ {
+ "x": 53,
+ "y": -18,
+ "z": 6
+ },
+ {
+ "x": 54,
+ "y": -17,
+ "z": 6
+ },
+ {
+ "x": 54,
+ "y": -18,
+ "z": 6
+ },
+ {
+ "x": 55,
+ "y": -17,
+ "z": 6
+ },
+ {
+ "x": 55,
+ "y": -18,
+ "z": 6
+ },
+ {
+ "x": 53,
+ "y": -17,
+ "z": 7
+ },
+ {
+ "x": 53,
+ "y": -18,
+ "z": 7
+ },
+ {
+ "x": 54,
+ "y": -17,
+ "z": 7
+ },
+ {
+ "x": 54,
+ "y": -18,
+ "z": 7
+ },
+ {
+ "x": 55,
+ "y": -17,
+ "z": 7
+ },
+ {
+ "x": 55,
+ "y": -18,
+ "z": 7
+ }
+ ]
+ },
+ "preRequisite": [
+ "door-1:open"
+ ],
+ "mechType": "Tomb"
+ },
+ "prince-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 58,
+ "y": 25,
+ "z": 14
+ },
+ {
+ "x": 58,
+ "y": 24,
+ "z": 14
+ },
+ {
+ "x": 58,
+ "y": 23,
+ "z": 14
+ },
+ {
+ "x": 59,
+ "y": 25,
+ "z": 14
+ },
+ {
+ "x": 59,
+ "y": 24,
+ "z": 14
+ },
+ {
+ "x": 59,
+ "y": 23,
+ "z": 14
+ },
+ {
+ "x": 60,
+ "y": 25,
+ "z": 14
+ },
+ {
+ "x": 60,
+ "y": 24,
+ "z": 14
+ },
+ {
+ "x": 60,
+ "y": 23,
+ "z": 14
+ },
+ {
+ "x": 61,
+ "y": 25,
+ "z": 14
+ },
+ {
+ "x": 61,
+ "y": 24,
+ "z": 14
+ },
+ {
+ "x": 61,
+ "y": 23,
+ "z": 14
+ },
+ {
+ "x": 58,
+ "y": 25,
+ "z": 15
+ },
+ {
+ "x": 58,
+ "y": 24,
+ "z": 15
+ },
+ {
+ "x": 58,
+ "y": 23,
+ "z": 15
+ },
+ {
+ "x": 59,
+ "y": 25,
+ "z": 15
+ },
+ {
+ "x": 59,
+ "y": 24,
+ "z": 15
+ },
+ {
+ "x": 59,
+ "y": 23,
+ "z": 15
+ },
+ {
+ "x": 60,
+ "y": 25,
+ "z": 15
+ },
+ {
+ "x": 60,
+ "y": 24,
+ "z": 15
+ },
+ {
+ "x": 60,
+ "y": 23,
+ "z": 15
+ },
+ {
+ "x": 61,
+ "y": 25,
+ "z": 15
+ },
+ {
+ "x": 61,
+ "y": 24,
+ "z": 15
+ },
+ {
+ "x": 61,
+ "y": 23,
+ "z": 15
+ },
+ {
+ "x": 58,
+ "y": 25,
+ "z": 16
+ },
+ {
+ "x": 58,
+ "y": 24,
+ "z": 16
+ },
+ {
+ "x": 58,
+ "y": 23,
+ "z": 16
+ },
+ {
+ "x": 59,
+ "y": 25,
+ "z": 16
+ },
+ {
+ "x": 59,
+ "y": 24,
+ "z": 16
+ },
+ {
+ "x": 59,
+ "y": 23,
+ "z": 16
+ },
+ {
+ "x": 60,
+ "y": 25,
+ "z": 16
+ },
+ {
+ "x": 60,
+ "y": 24,
+ "z": 16
+ },
+ {
+ "x": 60,
+ "y": 23,
+ "z": 16
+ },
+ {
+ "x": 61,
+ "y": 25,
+ "z": 16
+ },
+ {
+ "x": 61,
+ "y": 24,
+ "z": 16
+ },
+ {
+ "x": 61,
+ "y": 23,
+ "z": 16
+ },
+ {
+ "x": 58,
+ "y": 25,
+ "z": 17
+ },
+ {
+ "x": 58,
+ "y": 24,
+ "z": 17
+ },
+ {
+ "x": 58,
+ "y": 23,
+ "z": 17
+ },
+ {
+ "x": 59,
+ "y": 25,
+ "z": 17
+ },
+ {
+ "x": 59,
+ "y": 24,
+ "z": 17
+ },
+ {
+ "x": 59,
+ "y": 23,
+ "z": 17
+ },
+ {
+ "x": 60,
+ "y": 25,
+ "z": 17
+ },
+ {
+ "x": 60,
+ "y": 24,
+ "z": 17
+ },
+ {
+ "x": 60,
+ "y": 23,
+ "z": 17
+ },
+ {
+ "x": 61,
+ "y": 25,
+ "z": 17
+ },
+ {
+ "x": 61,
+ "y": 24,
+ "z": 17
+ },
+ {
+ "x": 61,
+ "y": 23,
+ "z": 17
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ }
+ },
+ "totalSecrets": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/6b7256ae-8673-4c2f-825f-6cd727801ea9.json b/src/main/resources/dgroomdata/6b7256ae-8673-4c2f-825f-6cd727801ea9.json
new file mode 100644
index 0000000..a115b18
--- /dev/null
+++ b/src/main/resources/dgroomdata/6b7256ae-8673-4c2f-825f-6cd727801ea9.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,43,44,98,109,0,0,0,0,0,0,98,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,67,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,67,0,0,0,0,162,0,109,109,109,0,139,139,0,0,0,0,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,98,98,98,98,98,0,98,98,98,0,139,139,0,0,0,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,109,109,109,0,98,98,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,109,0,0,0,109,98,1,1,1,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,98,0,144,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,0,0,0,126,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,139,0,0,0,134,126,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,139,0,0,0,5,126,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,67,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,0,0,5,126,126,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,139,0,5,134,126,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,35,98,98,98,98,98,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,139,98,98,98,50,0,126,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,3,7,1,98,0,0,0,0,0,0,0,0,0,67,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,0,0,3,109,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,0,0,0,98,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,0,0,31,109,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"6b7256ae-8673-4c2f-825f-6cd727801ea9","name":"Painting","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":23,"y":-1,"z":7},"secretType":"ITEM_DROP","preRequisite":[]},"essence-1":{"mechType":"Secret","secretPoint":{"x":22,"y":10,"z":25},"secretType":"ESSENCE","preRequisite":[]},"journal-1":{"secretPoint":{"x":8,"y":0,"z":7},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/6dcddc04-c094-4b9b-8c05-b101e8f3dd27.json b/src/main/resources/dgroomdata/6dcddc04-c094-4b9b-8c05-b101e8f3dd27.json
new file mode 100644
index 0000000..3c354d9
--- /dev/null
+++ b/src/main/resources/dgroomdata/6dcddc04-c094-4b9b-8c05-b101e8f3dd27.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":15,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,159,144,0,0,0,0,0,0,0,0,0,0,5,5,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,98,98,109,109,98,1,98,98,98,98,109,0,0,0,0,0,0,0,159,1,1,98,1,1,35,0,0,0,0,0,35,35,1,1,1,1,1,159,0,0,0,159,1,1,1,1,1,1,1,7,0,0,0,159,1,1,35,35,0,0,0,0,159,1,1,1,1,1,35,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,159,0,0,0,0,0,0,0,0,0,0,0,5,53,0,0,0,85,0,85,0,0,0,0,0,85,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,159,1,1,1,98,1,35,0,0,0,0,0,0,35,1,1,1,1,1,159,0,0,0,0,35,35,35,1,1,35,7,0,0,0,0,0,35,35,0,0,0,0,0,0,0,159,1,1,1,35,35,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,159,159,98,98,1,35,0,0,0,0,0,0,35,35,1,1,159,159,159,0,188,0,0,188,0,0,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,159,35,35,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,17,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,159,98,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,35,50,0,0,0,0,0,0,0,50,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,44,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,159,0,0,0,0,0,0,0,0,0,0,188,0,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,85,0,0,0,0,0,85,0,85,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,44,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,0,0,-1,-1,0,0,98,98,144,0,0,0,50,1,139,98,98,98,0,0,0,0,0,98,98,98,109,109,98,109,0,0,0,0,0,159,98,98,1,1,1,7,7,0,0,0,0,0,0,0,0,0,0,0,188,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,17,50,0,0,0,0,0,0,0,0,5,136,136,136,17,0,0,0,17,0,0,0,17,0,0,0,17,139,98,0,0,-1,-1,0,0,1,98,0,0,0,0,0,98,98,109,98,98,0,0,0,0,0,98,98,159,159,159,98,109,0,0,0,0,0,159,98,98,1,1,1,1,7,1,0,0,0,0,188,0,0,0,188,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,188,0,0,0,0,188,0,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,159,159,98,98,98,0,0,0,0,0,0,0,0,136,136,136,5,85,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,0,31,0,98,98,98,98,0,50,0,0,0,0,0,159,1,1,1,1,1,1,35,0,0,0,0,0,65,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,145,0,1,109,109,0,0,0,0,0,0,0,0,50,0,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,0,98,98,98,98,35,0,0,0,0,0,0,0,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,159,98,98,1,35,0,0,0,0,0,0,1,1,1,1,1,35,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,1,1,159,0,0,0,0,0,0,159,159,1,35,35,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,188,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,1,1,159,0,0,0,0,0,0,0,159,35,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,145,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,0,98,98,98,98,159,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,159,159,98,98,109,0,0,0,0,0,0,0,0,0,0,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,0,31,0,98,98,98,98,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,50,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,1,109,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,139,0,0,0,0,0,139,98,109,98,98,0,0,0,0,0,98,98,159,159,159,98,98,0,0,0,0,0,1,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,98,98,98,109,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,144,0,0,0,0,0,0,0,0,0,0,159,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,98,98,98,0,0,0,0,0,98,98,109,109,109,98,98,0,0,0,0,0,98,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,44,0,0,0,0,0,0,0,0,0,145,159,144,0,0,0,-1,-1,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,98,1,1,159,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,98,50,0,0,0,0,0,0,0,0,0,159,0,0,0,0,-1,-1,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,1,98,1,159,0,0,0,0,0,1,1,0,0,0,0,0,0,0,188,183,188,0,0,0,126,126,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,98,159,98,0,0,0,-1,-1,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,1,1,0,0,0,126,126,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,-1,-1,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,159,98,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,35,35,159,98,98,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,1,1,1,1,1,0,0,0,0,0,0,0,17,0,0,0,17,0,0,0,0,0,0,0,0,98,0,0,0,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,109,0,0,0,0,0,0,0,0,0,145,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,159,98,0,0,0,31,0,0,0,0,0,0,0,0,0,0,35,35,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,169,1,1,0,188,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,98,0,0,0,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,98,98,109,0,0,0,0,0,0,0,0,0,0,159,98,98,50,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,98,0,0,0,0,0,1,98,98,98,1,1,98,98,98,1,98,98,109,0,0,0,0,35,1,1,1,1,1,98,98,139,0,0,0,0,0,0,17,0,0,0,0,109,109,0,0,0,1,1,155,155,155,1,1,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,139,1,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"6dcddc04-c094-4b9b-8c05-b101e8f3dd27","name":"Quartz-Knight","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":19,"y":20,"z":25},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":22,"y":19,"z":25},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":7,"y":-7,"z":28},"secretType":"CHEST","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":28,"y":-10,"z":17},"secretType":"BAT","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":118,"y":20,"z":3},{"x":118,"y":19,"z":3},{"x":118,"y":18,"z":3},{"x":118,"y":17,"z":3},{"x":118,"y":20,"z":4},{"x":118,"y":19,"z":4},{"x":118,"y":18,"z":4},{"x":118,"y":17,"z":4},{"x":118,"y":18,"z":5}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-5":{"mechType":"Secret","secretPoint":{"x":112,"y":18,"z":3},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":68,"y":14,"z":6},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":96,"y":9,"z":28},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":122,"y":0,"z":25},{"x":122,"y":-1,"z":25},{"x":123,"y":0,"z":25},{"x":123,"y":-1,"z":25},{"x":124,"y":0,"z":25},{"x":124,"y":-1,"z":25},{"x":125,"y":0,"z":25},{"x":125,"y":-1,"z":25},{"x":122,"y":0,"z":26},{"x":122,"y":-1,"z":26},{"x":123,"y":0,"z":26},{"x":123,"y":-1,"z":26},{"x":124,"y":0,"z":26},{"x":124,"y":-1,"z":26},{"x":125,"y":0,"z":26},{"x":125,"y":-1,"z":26},{"x":122,"y":0,"z":27},{"x":122,"y":-1,"z":27},{"x":123,"y":0,"z":27},{"x":123,"y":-1,"z":27},{"x":124,"y":0,"z":27},{"x":124,"y":-1,"z":27},{"x":125,"y":0,"z":27},{"x":125,"y":-1,"z":27}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":42,"y":21,"z":23},{"x":42,"y":20,"z":23},{"x":43,"y":21,"z":23},{"x":43,"y":20,"z":23},{"x":44,"y":21,"z":23},{"x":44,"y":20,"z":23},{"x":42,"y":21,"z":24},{"x":42,"y":20,"z":24},{"x":43,"y":21,"z":24},{"x":43,"y":20,"z":24},{"x":44,"y":21,"z":24},{"x":44,"y":20,"z":24},{"x":42,"y":21,"z":25},{"x":42,"y":20,"z":25},{"x":43,"y":21,"z":25},{"x":43,"y":20,"z":25},{"x":44,"y":21,"z":25},{"x":44,"y":20,"z":25},{"x":42,"y":21,"z":26},{"x":42,"y":20,"z":26},{"x":43,"y":21,"z":26},{"x":43,"y":20,"z":26},{"x":44,"y":21,"z":26},{"x":44,"y":20,"z":26},{"x":42,"y":21,"z":27},{"x":42,"y":20,"z":27},{"x":43,"y":21,"z":27},{"x":43,"y":20,"z":27},{"x":44,"y":21,"z":27},{"x":44,"y":20,"z":27}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":27,"y":0,"z":23},{"x":27,"y":-1,"z":23},{"x":28,"y":0,"z":23},{"x":28,"y":-1,"z":23},{"x":27,"y":0,"z":24},{"x":27,"y":-1,"z":24},{"x":28,"y":0,"z":24},{"x":28,"y":-1,"z":24},{"x":27,"y":0,"z":25},{"x":27,"y":-1,"z":25},{"x":28,"y":0,"z":25},{"x":28,"y":-1,"z":25},{"x":27,"y":0,"z":26},{"x":27,"y":-1,"z":26},{"x":28,"y":0,"z":26},{"x":28,"y":-1,"z":26}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":32,"y":0,"z":23},{"x":32,"y":-1,"z":23},{"x":33,"y":0,"z":23},{"x":33,"y":-1,"z":23},{"x":32,"y":0,"z":24},{"x":32,"y":-1,"z":24},{"x":33,"y":0,"z":24},{"x":33,"y":-1,"z":24},{"x":32,"y":0,"z":25},{"x":32,"y":-1,"z":25},{"x":33,"y":0,"z":25},{"x":33,"y":-1,"z":25},{"x":32,"y":0,"z":26},{"x":32,"y":-1,"z":26},{"x":33,"y":0,"z":26},{"x":33,"y":-1,"z":26}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":40,"y":0,"z":7},{"x":40,"y":-1,"z":7},{"x":41,"y":0,"z":7},{"x":41,"y":-1,"z":7},{"x":40,"y":0,"z":8},{"x":40,"y":-1,"z":8},{"x":41,"y":0,"z":8},{"x":41,"y":-1,"z":8},{"x":40,"y":0,"z":9},{"x":40,"y":-1,"z":9},{"x":41,"y":0,"z":9},{"x":41,"y":-1,"z":9},{"x":40,"y":0,"z":10},{"x":40,"y":-1,"z":10},{"x":41,"y":0,"z":10},{"x":41,"y":-1,"z":10},{"x":40,"y":0,"z":11},{"x":40,"y":-1,"z":11},{"x":41,"y":0,"z":11},{"x":41,"y":-1,"z":11}]},"preRequisite":[],"mechType":"Tomb"},"prince-1":{"secretPoint":{"offsetPointList":[{"x":42,"y":22,"z":3},{"x":42,"y":21,"z":3},{"x":42,"y":20,"z":3},{"x":43,"y":22,"z":3},{"x":43,"y":21,"z":3},{"x":43,"y":20,"z":3},{"x":44,"y":22,"z":3},{"x":44,"y":21,"z":3},{"x":44,"y":20,"z":3},{"x":42,"y":22,"z":4},{"x":42,"y":21,"z":4},{"x":42,"y":20,"z":4},{"x":43,"y":22,"z":4},{"x":43,"y":21,"z":4},{"x":43,"y":20,"z":4},{"x":44,"y":22,"z":4},{"x":44,"y":21,"z":4},{"x":44,"y":20,"z":4},{"x":42,"y":22,"z":5},{"x":42,"y":21,"z":5},{"x":42,"y":20,"z":5},{"x":43,"y":22,"z":5},{"x":43,"y":21,"z":5},{"x":43,"y":20,"z":5},{"x":44,"y":22,"z":5},{"x":44,"y":21,"z":5},{"x":44,"y":20,"z":5},{"x":42,"y":22,"z":6},{"x":42,"y":21,"z":6},{"x":42,"y":20,"z":6},{"x":43,"y":22,"z":6},{"x":43,"y":21,"z":6},{"x":43,"y":20,"z":6},{"x":44,"y":22,"z":6},{"x":44,"y":21,"z":6},{"x":44,"y":20,"z":6}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":7}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/6fac9602-c596-458f-9750-9b331e2cb845.json b/src/main/resources/dgroomdata/6fac9602-c596-458f-9750-9b331e2cb845.json
new file mode 100644
index 0000000..9b3adfc
--- /dev/null
+++ b/src/main/resources/dgroomdata/6fac9602-c596-458f-9750-9b331e2cb845.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,50,0,0,0,0,126,126,109,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,44,98,98,0,0,0,0,126,126,109,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,109,144,0,0,0,0,0,109,98,109,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,139,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,0,144,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,0,0,0,0,109,144,0,0,109,0,0,139,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,144,109,0,0,0,0,0,0,0,0,0,139,98,109,109,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,101,0,0,0,0,109,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,50,0,0,0,0,0,0,0,0,0,101,0,0,0,0,109,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,101,0,0,0,0,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,109,109,109,98,109,0,0,0,0,0,0,0,0,0,101,0,0,0,0,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,109,139,0,0,101,0,0,0,0,0,0,0,0,50,98,98,109,109,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,0,0,0,101,0,0,0,98,98,0,44,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,44,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,44,0,0,0,101,0,0,0,0,0,0,0,0,144,109,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,109,0,50,0,101,0,0,0,0,0,0,0,0,0,101,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,109,0,0,0,0,0,0,0,0,0,101,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,50,0,0,0,0,0,0,0,0,101,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,109,109,98,109,0,0,0,0,0,144,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,126,126,0,50,0,0,0,0,0,0,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,126,126,0,0,0,0,0,0,144,0,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,109,109,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"6fac9602-c596-458f-9750-9b331e2cb845","name":"Hall","processorId":"default","properties":{},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/70a1451a-5430-40bd-b20b-13245aac910a.json b/src/main/resources/dgroomdata/70a1451a-5430-40bd-b20b-13245aac910a.json
new file mode 100644
index 0000000..110bf70
--- /dev/null
+++ b/src/main/resources/dgroomdata/70a1451a-5430-40bd-b20b-13245aac910a.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":19,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,1,139,98,0,0,0,0,0,0,0,139,98,98,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,109,109,0,0,0,0,0,109,109,4,98,0,0,98,50,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,98,0,0,0,0,0,0,0,0,0,0,0,98,4,18,18,0,0,0,0,0,44,4,1,1,1,1,1,1,101,144,0,1,4,4,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,98,0,0,0,0,0,0,0,0,0,0,0,109,4,0,0,0,0,0,0,0,44,1,1,1,1,1,1,1,0,0,0,1,4,67,0,0,0,0,0,0,0,0,-1,98,0,0,-1,-1,-1,-1,0,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,98,0,0,0,0,0,0,0,0,0,0,0,109,4,0,0,0,0,0,0,0,44,1,1,1,1,1,1,1,0,0,0,1,4,4,0,0,0,0,0,0,0,0,-1,98,0,0,-1,-1,-1,-1,98,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,98,0,0,17,0,0,0,0,0,0,0,0,98,4,0,0,0,0,0,0,0,44,1,1,1,1,1,1,1,0,0,0,1,4,4,18,0,0,0,0,0,0,0,-1,98,0,0,-1,-1,-1,-1,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,4,50,0,0,0,0,0,0,44,1,44,0,0,0,0,0,0,0,0,1,4,4,18,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,1,98,0,0,0,0,0,0,0,98,139,98,4,4,0,101,101,4,4,4,4,101,101,101,4,4,4,4,101,101,101,4,4,4,109,109,0,0,0,0,0,109,109,4,98,0,0,98,50,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,98,98,4,4,0,0,0,4,4,4,4,0,0,0,4,4,4,4,0,0,0,4,4,4,109,109,0,0,0,0,0,109,109,4,4,4,67,67,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,109,109,0,0,0,0,0,109,109,0,0,0,0,50,109,109,0,0,0,0,0,109,109,50,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,139,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,1,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,50,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,50,109,109,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,109,109,98,98,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,4,4,4,4,4,67,67,4,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,4,4,4,4,4,4,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,4,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,4,4,109,109,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,109,109,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,1,4,4,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,4,4,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,4,4,109,109,0,0,0,0,98,139,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,67,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,67,67,67,4,4,4,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,67,67,4,4,4,4,4,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,140,0,0,0,109,109,17,0,0,0,0,0,0,0,50,109,109,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,17,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,50,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,17,109,109,50,0,0,0,0,0,0,0,17,109,109,0,0,0,0,0,109,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,4,109,109,0,0,0,0,0,109,109,4,4,4,4,67,67,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,4,109,109,0,0,0,0,0,109,109,4,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,67,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,67,0,0,0,0,0,0,0,0,0,67,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,67,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,4,4,109,109,0,0,0,0,0,109,109,4,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"70a1451a-5430-40bd-b20b-13245aac910a","name":"Market","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":15,"y":-9,"z":33},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":15,"y":9,"z":47},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":7,"y":16,"z":17},"secretType":"CHEST","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":16,"y":-7,"z":9},"secretType":"BAT","preRequisite":["superboom-1:open"]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":15,"y":0,"z":46},{"x":15,"y":-1,"z":46},{"x":16,"y":0,"z":46},{"x":16,"y":-1,"z":46},{"x":17,"y":0,"z":46},{"x":17,"y":-1,"z":46},{"x":15,"y":0,"z":47},{"x":15,"y":-1,"z":47},{"x":16,"y":0,"z":47},{"x":16,"y":-1,"z":47},{"x":17,"y":0,"z":47},{"x":17,"y":-1,"z":47},{"x":15,"y":0,"z":48},{"x":15,"y":-1,"z":48},{"x":16,"y":0,"z":48},{"x":16,"y":-1,"z":48},{"x":17,"y":0,"z":48},{"x":17,"y":-1,"z":48},{"x":15,"y":0,"z":49},{"x":15,"y":-1,"z":49},{"x":16,"y":0,"z":49},{"x":16,"y":-1,"z":49},{"x":17,"y":0,"z":49},{"x":17,"y":-1,"z":49},{"x":15,"y":0,"z":50},{"x":15,"y":-1,"z":50},{"x":16,"y":0,"z":50},{"x":16,"y":-1,"z":50},{"x":17,"y":0,"z":50},{"x":17,"y":-1,"z":50}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":3,"y":0,"z":24},{"x":3,"y":-1,"z":24},{"x":4,"y":0,"z":24},{"x":4,"y":-1,"z":24},{"x":5,"y":0,"z":24},{"x":5,"y":-1,"z":24},{"x":6,"y":0,"z":24},{"x":6,"y":-1,"z":24},{"x":3,"y":0,"z":25},{"x":3,"y":-1,"z":25},{"x":4,"y":0,"z":25},{"x":4,"y":-1,"z":25},{"x":5,"y":0,"z":25},{"x":5,"y":-1,"z":25},{"x":6,"y":0,"z":25},{"x":6,"y":-1,"z":25},{"x":3,"y":0,"z":26},{"x":3,"y":-1,"z":26},{"x":4,"y":0,"z":26},{"x":4,"y":-1,"z":26},{"x":5,"y":0,"z":26},{"x":5,"y":-1,"z":26},{"x":6,"y":0,"z":26},{"x":6,"y":-1,"z":26}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":19,"y":-11,"z":8},"secretType":"ESSENCE","preRequisite":["superboom-1:open"]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":0,"z":38},{"x":3,"y":-1,"z":38},{"x":4,"y":0,"z":38},{"x":4,"y":-1,"z":38},{"x":5,"y":0,"z":38},{"x":5,"y":-1,"z":38},{"x":6,"y":0,"z":38},{"x":6,"y":-1,"z":38},{"x":3,"y":0,"z":39},{"x":3,"y":-1,"z":39},{"x":4,"y":0,"z":39},{"x":4,"y":-1,"z":39},{"x":5,"y":0,"z":39},{"x":5,"y":-1,"z":39},{"x":6,"y":0,"z":39},{"x":6,"y":-1,"z":39},{"x":3,"y":0,"z":40},{"x":3,"y":-1,"z":40},{"x":4,"y":0,"z":40},{"x":4,"y":-1,"z":40},{"x":5,"y":0,"z":40},{"x":5,"y":-1,"z":40},{"x":6,"y":0,"z":40},{"x":6,"y":-1,"z":40}]},"preRequisite":[],"mechType":"Tomb"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":52,"y":2,"z":6},{"x":52,"y":1,"z":6},{"x":52,"y":0,"z":6},{"x":52,"y":-1,"z":6},{"x":52,"y":3,"z":7},{"x":52,"y":2,"z":7},{"x":52,"y":1,"z":7},{"x":52,"y":0,"z":7},{"x":52,"y":-1,"z":7},{"x":52,"y":2,"z":8},{"x":52,"y":1,"z":8},{"x":52,"y":0,"z":8},{"x":52,"y":-1,"z":8}]},"preRequisite":[],"mechType":"BreakableWall"},"prince-1":{"secretPoint":{"offsetPointList":[{"x":56,"y":0,"z":6},{"x":56,"y":-1,"z":6},{"x":57,"y":0,"z":6},{"x":57,"y":-1,"z":6},{"x":58,"y":0,"z":6},{"x":58,"y":-1,"z":6},{"x":59,"y":0,"z":6},{"x":59,"y":-1,"z":6},{"x":56,"y":0,"z":7},{"x":56,"y":-1,"z":7},{"x":57,"y":0,"z":7},{"x":57,"y":-1,"z":7},{"x":58,"y":0,"z":7},{"x":58,"y":-1,"z":7},{"x":59,"y":0,"z":7},{"x":59,"y":-1,"z":7},{"x":56,"y":0,"z":8},{"x":56,"y":-1,"z":8},{"x":57,"y":0,"z":8},{"x":57,"y":-1,"z":8},{"x":58,"y":0,"z":8},{"x":58,"y":-1,"z":8},{"x":59,"y":0,"z":8},{"x":59,"y":-1,"z":8}]},"preRequisite":["superboom-2:open"],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":10,"y":-3,"z":5},{"x":11,"y":-3,"z":5},{"x":12,"y":-3,"z":5},{"x":10,"y":-3,"z":6},{"x":11,"y":-3,"z":6},{"x":12,"y":-3,"z":6},{"x":10,"y":-3,"z":7},{"x":11,"y":-3,"z":7},{"x":12,"y":-3,"z":7},{"x":10,"y":-3,"z":8},{"x":11,"y":-3,"z":8},{"x":10,"y":-3,"z":9},{"x":11,"y":-3,"z":9}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/7a594650-2a42-46e5-81a6-9b7d198e9c1c.json b/src/main/resources/dgroomdata/7a594650-2a42-46e5-81a6-9b7d198e9c1c.json
new file mode 100644
index 0000000..abbaf93
--- /dev/null
+++ b/src/main/resources/dgroomdata/7a594650-2a42-46e5-81a6-9b7d198e9c1c.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,3,3,1,1,1,1,35,0,0,0,0,0,7,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,3,3,1,1,35,35,0,0,0,0,0,0,35,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,50,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,3,3,1,7,18,18,0,0,0,0,0,0,0,35,35,35,1,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,3,3,3,3,3,3,1,1,7,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,7,18,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,7,50,0,0,0,0,0,0,0,0,0,0,126,126,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,35,18,0,0,0,0,0,0,0,0,159,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,126,126,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,35,98,139,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,35,188,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,35,35,0,98,98,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,1,1,1,3,3,3,3,1,1,1,1,1,35,126,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,3,3,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,3,3,126,0,0,0,0,0,0,0,0,0,0,0,35,35,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,1,0,0,0,0,0,0,0,0,0,0,0,0,0,50,35,35,35,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,126,126,0,0,0,0,0,0,0,0,0,0,0,35,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,126,126,1,159,159,159,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,126,1,1,1,159,50,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,1,1,1,159,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,3,3,3,1,1,1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,159,159,159,0,0,0,0,0,35,1,1,1,1,1,98,98,98,98,1,1,1,1,1,1,98,1,98,98,98,98,98,98,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,159,159,159,159,0,0,0,0,0,159,1,1,1,1,1,98,98,98,98,1,1,1,1,1,1,1,98,98,98,98,98,98,98,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,159,159,159,159,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,159,159,159,0,0,0,0,0,18,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,159,188,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,98,0,0,0,0,0,0,98,98,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,139,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,98,98,0,0,0,31,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,139,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,31,0,0,0,0,0,188,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,35,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,159,1,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,159,1,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,159,1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,3,44,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,3,0,0,0,0,31,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,98,0,0,0,0,98,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,0,98,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,0,0,188,0,0,0,0,0,31,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,159,159,159,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,35,35,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,18,0,0,0,0,0,0,0,18,35,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,1,1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,35,35,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,35,1,1,1,1,1,1,1,98,98,98,0,0,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,35,35,1,1,1,1,7,1,1,1,1,1,1,3,3,3,1,3,3,1,1,1,1,35,35,7,35,7,35,1,98,18,98,98,98,0,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,7,7,1,1,1,1,1,1,3,3,3,3,3,1,1,3,3,3,3,7,7,7,0,0,98,98,18,0,98,1,98,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,188,0,35,35,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,98,98,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,44,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,35,35,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,35,35,35,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,18,109,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,50,0,0,0,0,0,0,7,1,1,1,1,1,1,3,3,3,3,3,3,1,3,3,1,3,3,3,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,7,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,98,98,0,18,1,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"7a594650-2a42-46e5-81a6-9b7d198e9c1c","name":"super-tall","processorId":"default","properties":{},"mechanics":{"door-3":{"secretPoint":{"offsetPointList":[{"x":30,"y":55,"z":20},{"x":30,"y":54,"z":20},{"x":30,"y":53,"z":20},{"x":30,"y":52,"z":20},{"x":30,"y":51,"z":20},{"x":30,"y":50,"z":20},{"x":30,"y":49,"z":20},{"x":30,"y":48,"z":20},{"x":30,"y":47,"z":20},{"x":31,"y":55,"z":20},{"x":31,"y":54,"z":20},{"x":31,"y":53,"z":20},{"x":31,"y":52,"z":20},{"x":31,"y":51,"z":20},{"x":31,"y":50,"z":20},{"x":31,"y":49,"z":20},{"x":31,"y":48,"z":20},{"x":31,"y":47,"z":20},{"x":32,"y":55,"z":20},{"x":32,"y":54,"z":20},{"x":32,"y":53,"z":20},{"x":32,"y":52,"z":20},{"x":32,"y":51,"z":20},{"x":32,"y":50,"z":20},{"x":32,"y":49,"z":20},{"x":32,"y":48,"z":20},{"x":32,"y":47,"z":20},{"x":33,"y":55,"z":20},{"x":33,"y":54,"z":20},{"x":33,"y":53,"z":20},{"x":33,"y":52,"z":20},{"x":33,"y":51,"z":20},{"x":33,"y":50,"z":20},{"x":33,"y":49,"z":20},{"x":33,"y":48,"z":20},{"x":33,"y":47,"z":20},{"x":34,"y":55,"z":20},{"x":34,"y":54,"z":20},{"x":34,"y":53,"z":20},{"x":34,"y":52,"z":20},{"x":34,"y":51,"z":20},{"x":34,"y":50,"z":20},{"x":34,"y":49,"z":20},{"x":34,"y":48,"z":20},{"x":34,"y":47,"z":20}]},"preRequisite":["lever-3:triggered"],"mechType":"OnewayDoor"},"door-4":{"secretPoint":{"offsetPointList":[{"x":52,"y":69,"z":55},{"x":53,"y":69,"z":55},{"x":54,"y":69,"z":55},{"x":52,"y":69,"z":56},{"x":53,"y":69,"z":56},{"x":54,"y":69,"z":56},{"x":52,"y":69,"z":57},{"x":53,"y":69,"z":57},{"x":54,"y":69,"z":57}]},"preRequisite":["lever-4:triggered"],"mechType":"OnewayDoor"},"dummy-2":{"secretPoint":{"x":27,"y":72,"z":52},"preRequisite":["door-3:open"],"mechType":"Dummy"},"dummy-1":{"secretPoint":{"x":32,"y":72,"z":57},"preRequisite":["dummy-2:click"],"mechType":"Dummy"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":51,"y":7,"z":47},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":44,"y":11,"z":30},{"x":44,"y":10,"z":30},{"x":44,"y":9,"z":30},{"x":44,"y":8,"z":30},{"x":44,"y":7,"z":30},{"x":44,"y":6,"z":30},{"x":44,"y":5,"z":30},{"x":44,"y":4,"z":30},{"x":44,"y":3,"z":30},{"x":44,"y":11,"z":31},{"x":44,"y":10,"z":31},{"x":44,"y":9,"z":31},{"x":44,"y":8,"z":31},{"x":44,"y":7,"z":31},{"x":44,"y":6,"z":31},{"x":44,"y":5,"z":31},{"x":44,"y":4,"z":31},{"x":44,"y":3,"z":31},{"x":44,"y":11,"z":32},{"x":44,"y":10,"z":32},{"x":44,"y":9,"z":32},{"x":44,"y":8,"z":32},{"x":44,"y":7,"z":32},{"x":44,"y":6,"z":32},{"x":44,"y":5,"z":32},{"x":44,"y":4,"z":32},{"x":44,"y":3,"z":32},{"x":44,"y":11,"z":33},{"x":44,"y":10,"z":33},{"x":44,"y":9,"z":33},{"x":44,"y":8,"z":33},{"x":44,"y":7,"z":33},{"x":44,"y":6,"z":33},{"x":44,"y":5,"z":33},{"x":44,"y":4,"z":33},{"x":44,"y":3,"z":33},{"x":44,"y":11,"z":34},{"x":44,"y":10,"z":34},{"x":44,"y":9,"z":34},{"x":44,"y":8,"z":34},{"x":44,"y":7,"z":34},{"x":44,"y":6,"z":34},{"x":44,"y":5,"z":34},{"x":44,"y":4,"z":34},{"x":44,"y":3,"z":34}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":10,"y":28,"z":25},"preRequisite":["door-1:open"],"triggering":"door-2"},"door-2":{"secretPoint":{"offsetPointList":[{"x":44,"y":33,"z":30},{"x":44,"y":32,"z":30},{"x":44,"y":31,"z":30},{"x":44,"y":30,"z":30},{"x":44,"y":29,"z":30},{"x":44,"y":28,"z":30},{"x":44,"y":27,"z":30},{"x":44,"y":26,"z":30},{"x":44,"y":25,"z":30},{"x":44,"y":33,"z":31},{"x":44,"y":32,"z":31},{"x":44,"y":31,"z":31},{"x":44,"y":30,"z":31},{"x":44,"y":29,"z":31},{"x":44,"y":28,"z":31},{"x":44,"y":27,"z":31},{"x":44,"y":26,"z":31},{"x":44,"y":25,"z":31},{"x":44,"y":33,"z":32},{"x":44,"y":32,"z":32},{"x":44,"y":31,"z":32},{"x":44,"y":30,"z":32},{"x":44,"y":29,"z":32},{"x":44,"y":28,"z":32},{"x":44,"y":27,"z":32},{"x":44,"y":26,"z":32},{"x":44,"y":25,"z":32},{"x":44,"y":33,"z":33},{"x":44,"y":32,"z":33},{"x":44,"y":31,"z":33},{"x":44,"y":30,"z":33},{"x":44,"y":29,"z":33},{"x":44,"y":28,"z":33},{"x":44,"y":27,"z":33},{"x":44,"y":26,"z":33},{"x":44,"y":25,"z":33},{"x":44,"y":33,"z":34},{"x":44,"y":32,"z":34},{"x":44,"y":31,"z":34},{"x":44,"y":30,"z":34},{"x":44,"y":29,"z":34},{"x":44,"y":28,"z":34},{"x":44,"y":27,"z":34},{"x":44,"y":26,"z":34},{"x":44,"y":25,"z":34}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"bat-2":{"mechType":"Secret","secretPoint":{"x":54,"y":42,"z":9},"secretType":"BAT","preRequisite":["door-2:open"]},"chests":{"mechType":"Secret","secretPoint":{"x":37,"y":72,"z":52},"secretType":"CHEST","preRequisite":["dummy-1:click"]},"bat-1":{"mechType":"Secret","secretPoint":{"x":4,"y":1,"z":2},"secretType":"BAT","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":9,"y":31,"z":7},{"x":9,"y":30,"z":7},{"x":9,"y":29,"z":7},{"x":9,"y":28,"z":7},{"x":9,"y":31,"z":8},{"x":9,"y":30,"z":8},{"x":9,"y":29,"z":8},{"x":9,"y":28,"z":8}]},"preRequisite":["door-2:open"],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":33,"y":32,"z":54},"secretType":"ITEM_DROP","preRequisite":["door-1:open"]},"lever-3":{"mechType":"OnewayLever","leverPoint":{"x":13,"y":61,"z":8},"preRequisite":["door-2:open"],"triggering":"door-3"},"lever-4":{"mechType":"OnewayLever","leverPoint":{"x":54,"y":72,"z":52},"preRequisite":["door-3:open"],"triggering":"door-4"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":31,"y":4,"z":22},{"x":31,"y":3,"z":22},{"x":32,"y":4,"z":22},{"x":32,"y":3,"z":22},{"x":33,"y":4,"z":22},{"x":33,"y":3,"z":22},{"x":31,"y":4,"z":23},{"x":31,"y":3,"z":23},{"x":32,"y":4,"z":23},{"x":32,"y":3,"z":23},{"x":33,"y":4,"z":23},{"x":33,"y":3,"z":23},{"x":31,"y":4,"z":24},{"x":31,"y":3,"z":24},{"x":32,"y":4,"z":24},{"x":32,"y":3,"z":24},{"x":33,"y":4,"z":24},{"x":33,"y":3,"z":24},{"x":31,"y":4,"z":25},{"x":31,"y":3,"z":25},{"x":32,"y":4,"z":25},{"x":32,"y":3,"z":25},{"x":33,"y":4,"z":25},{"x":33,"y":3,"z":25}]},"preRequisite":["door-1:open"],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":31,"y":4,"z":39},{"x":31,"y":3,"z":39},{"x":32,"y":4,"z":39},{"x":32,"y":3,"z":39},{"x":33,"y":4,"z":39},{"x":33,"y":3,"z":39},{"x":31,"y":4,"z":40},{"x":31,"y":3,"z":40},{"x":32,"y":4,"z":40},{"x":32,"y":3,"z":40},{"x":33,"y":4,"z":40},{"x":33,"y":3,"z":40},{"x":31,"y":4,"z":41},{"x":31,"y":3,"z":41},{"x":32,"y":4,"z":41},{"x":32,"y":3,"z":41},{"x":33,"y":4,"z":41},{"x":33,"y":3,"z":41},{"x":31,"y":4,"z":42},{"x":31,"y":3,"z":42},{"x":32,"y":4,"z":42},{"x":32,"y":3,"z":42},{"x":33,"y":4,"z":42},{"x":33,"y":3,"z":42}]},"preRequisite":["door-1:open"],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":23,"y":48,"z":8},{"x":23,"y":47,"z":8},{"x":24,"y":48,"z":8},{"x":24,"y":47,"z":8},{"x":25,"y":48,"z":8},{"x":25,"y":47,"z":8},{"x":23,"y":48,"z":9},{"x":23,"y":47,"z":9},{"x":24,"y":48,"z":9},{"x":24,"y":47,"z":9},{"x":25,"y":48,"z":9},{"x":25,"y":47,"z":9}]},"preRequisite":["door-2:open"],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":23,"y":48,"z":14},{"x":23,"y":47,"z":14},{"x":24,"y":48,"z":14},{"x":24,"y":47,"z":14},{"x":25,"y":48,"z":14},{"x":25,"y":47,"z":14},{"x":23,"y":48,"z":15},{"x":23,"y":47,"z":15},{"x":24,"y":48,"z":15},{"x":24,"y":47,"z":15},{"x":25,"y":48,"z":15},{"x":25,"y":47,"z":15}]},"preRequisite":["door-2:open"],"mechType":"Tomb"},"prince-2":{"secretPoint":{"offsetPointList":[{"x":4,"y":29,"z":11},{"x":4,"y":28,"z":11},{"x":5,"y":29,"z":11},{"x":5,"y":28,"z":11},{"x":6,"y":29,"z":11},{"x":6,"y":28,"z":11},{"x":4,"y":29,"z":12},{"x":4,"y":28,"z":12},{"x":5,"y":29,"z":12},{"x":5,"y":28,"z":12},{"x":6,"y":29,"z":12},{"x":6,"y":28,"z":12},{"x":4,"y":29,"z":13},{"x":4,"y":28,"z":13},{"x":5,"y":29,"z":13},{"x":5,"y":28,"z":13},{"x":6,"y":29,"z":13},{"x":6,"y":28,"z":13},{"x":4,"y":29,"z":14},{"x":4,"y":28,"z":14},{"x":5,"y":29,"z":14},{"x":5,"y":28,"z":14},{"x":6,"y":29,"z":14},{"x":6,"y":28,"z":14}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"prince-1":{"secretPoint":{"offsetPointList":[{"x":48,"y":72,"z":44},{"x":48,"y":71,"z":44},{"x":49,"y":72,"z":44},{"x":49,"y":71,"z":44},{"x":50,"y":72,"z":44},{"x":50,"y":71,"z":44},{"x":51,"y":72,"z":44},{"x":51,"y":71,"z":44},{"x":52,"y":72,"z":44},{"x":52,"y":71,"z":44},{"x":53,"y":72,"z":44},{"x":53,"y":71,"z":44},{"x":48,"y":72,"z":45},{"x":48,"y":71,"z":45},{"x":49,"y":72,"z":45},{"x":49,"y":71,"z":45},{"x":50,"y":72,"z":45},{"x":50,"y":71,"z":45},{"x":51,"y":72,"z":45},{"x":51,"y":71,"z":45},{"x":52,"y":72,"z":45},{"x":52,"y":71,"z":45},{"x":53,"y":72,"z":45},{"x":53,"y":71,"z":45},{"x":48,"y":72,"z":46},{"x":48,"y":71,"z":46},{"x":49,"y":72,"z":46},{"x":49,"y":71,"z":46},{"x":50,"y":72,"z":46},{"x":50,"y":71,"z":46},{"x":51,"y":72,"z":46},{"x":51,"y":71,"z":46},{"x":52,"y":72,"z":46},{"x":52,"y":71,"z":46},{"x":53,"y":72,"z":46},{"x":53,"y":71,"z":46},{"x":48,"y":72,"z":47},{"x":48,"y":71,"z":47},{"x":49,"y":72,"z":47},{"x":49,"y":71,"z":47},{"x":50,"y":72,"z":47},{"x":50,"y":71,"z":47},{"x":51,"y":72,"z":47},{"x":51,"y":71,"z":47},{"x":52,"y":72,"z":47},{"x":52,"y":71,"z":47},{"x":53,"y":72,"z":47},{"x":53,"y":71,"z":47},{"x":48,"y":72,"z":48},{"x":48,"y":71,"z":48},{"x":49,"y":72,"z":48},{"x":49,"y":71,"z":48},{"x":50,"y":72,"z":48},{"x":50,"y":71,"z":48},{"x":51,"y":72,"z":48},{"x":51,"y":71,"z":48},{"x":52,"y":72,"z":48},{"x":52,"y":71,"z":48},{"x":53,"y":72,"z":48},{"x":53,"y":71,"z":48}]},"preRequisite":["door-3:open"],"mechType":"Tomb"},"fairysoul-8":{"secretPoint":{"x":44,"y":49,"z":43},"preRequisite":["door-2:open"],"mechType":"Fairysoul"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/7d975e04-15c8-40cb-8c12-d664edc1b0d7.json b/src/main/resources/dgroomdata/7d975e04-15c8-40cb-8c12-d664edc1b0d7.json
new file mode 100644
index 0000000..5673f88
--- /dev/null
+++ b/src/main/resources/dgroomdata/7d975e04-15c8-40cb-8c12-d664edc1b0d7.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,50,0,0,0,0,0,50,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,50,0,0,0,0,0,50,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,0,0,0,0,0,5,5,98,98,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,139,139,0,0,0,0,0,0,5,5,18,139,139,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,139,139,0,0,0,0,0,0,0,0,0,139,139,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,50,0,0,0,0,0,0,0,0,0,0,0,50,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,23,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,69,-1,-1,-1,-1,0,0,0,50,0,0,0,0,0,0,0,-1,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,23,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,50,0,0,0,0,0,0,0,0,0,0,0,50,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,139,139,0,0,0,0,0,0,0,0,0,139,139,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,139,139,18,18,0,0,0,0,0,0,0,139,139,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,98,0,0,0,0,0,0,0,98,98,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,5,5,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,5,5,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,50,0,0,0,0,0,50,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"7d975e04-15c8-40cb-8c12-d664edc1b0d7","name":"Arrow-trap","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":27,"y":-1,"z":15},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":8,"y":0,"z":16},"preRequisite":["crypt-1:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":24,"y":3,"z":14},{"x":24,"y":2,"z":14},{"x":24,"y":1,"z":14},{"x":24,"y":0,"z":14},{"x":24,"y":-1,"z":14},{"x":24,"y":3,"z":15},{"x":24,"y":2,"z":15},{"x":24,"y":1,"z":15},{"x":24,"y":0,"z":15},{"x":24,"y":-1,"z":15},{"x":24,"y":3,"z":16},{"x":24,"y":2,"z":16},{"x":24,"y":1,"z":16},{"x":24,"y":0,"z":16},{"x":24,"y":-1,"z":16},{"x":24,"y":3,"z":17},{"x":24,"y":2,"z":17},{"x":24,"y":1,"z":17},{"x":24,"y":0,"z":17},{"x":24,"y":-1,"z":17},{"x":24,"y":3,"z":18},{"x":24,"y":2,"z":18},{"x":24,"y":1,"z":18},{"x":24,"y":0,"z":18},{"x":24,"y":-1,"z":18}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":9,"y":0,"z":15},{"x":9,"y":-1,"z":15},{"x":10,"y":0,"z":15},{"x":10,"y":-1,"z":15},{"x":11,"y":0,"z":15},{"x":11,"y":-1,"z":15},{"x":12,"y":0,"z":15},{"x":12,"y":-1,"z":15},{"x":9,"y":0,"z":16},{"x":9,"y":-1,"z":16},{"x":10,"y":0,"z":16},{"x":10,"y":-1,"z":16},{"x":11,"y":0,"z":16},{"x":11,"y":-1,"z":16},{"x":12,"y":0,"z":16},{"x":12,"y":-1,"z":16},{"x":9,"y":0,"z":17},{"x":9,"y":-1,"z":17},{"x":10,"y":0,"z":17},{"x":10,"y":-1,"z":17},{"x":11,"y":0,"z":17},{"x":11,"y":-1,"z":17},{"x":12,"y":0,"z":17},{"x":12,"y":-1,"z":17}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/7dd6596f-c647-4144-9eec-fb4690e12251.json b/src/main/resources/dgroomdata/7dd6596f-c647-4144-9eec-fb4690e12251.json
new file mode 100644
index 0000000..0114055
--- /dev/null
+++ b/src/main/resources/dgroomdata/7dd6596f-c647-4144-9eec-fb4690e12251.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,0,0,0,0,0,98,98,49,0,0,0,0,0,49,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,18,0,0,0,0,0,139,139,0,0,0,0,0,0,0,49,1,98,109,109,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,101,101,101,101,98,98,98,98,-1,-1,-1,-1,-1,98,98,98,0,161,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,161,98,98,144,0,0,0,0,0,144,98,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,139,98,98,139,0,0,0,0,50,139,1,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,3,109,109,109,109,1,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,98,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,159,159,159,159,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,159,159,159,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,159,159,159,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,159,159,159,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,1,109,0,0,161,0,0,0,0,98,98,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"7dd6596f-c647-4144-9eec-fb4690e12251","name":"end","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":16,"y":-1,"z":7},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":8,"y":14,"z":6},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":14,"y":6,"z":11},{"x":14,"y":5,"z":11},{"x":14,"y":4,"z":11},{"x":14,"y":3,"z":11},{"x":14,"y":2,"z":11},{"x":14,"y":1,"z":11},{"x":14,"y":0,"z":11},{"x":14,"y":-1,"z":11},{"x":15,"y":6,"z":11},{"x":15,"y":5,"z":11},{"x":15,"y":4,"z":11},{"x":15,"y":3,"z":11},{"x":15,"y":2,"z":11},{"x":15,"y":1,"z":11},{"x":15,"y":0,"z":11},{"x":15,"y":-1,"z":11},{"x":16,"y":6,"z":11},{"x":16,"y":5,"z":11},{"x":16,"y":4,"z":11},{"x":16,"y":3,"z":11},{"x":16,"y":2,"z":11},{"x":16,"y":1,"z":11},{"x":16,"y":0,"z":11},{"x":16,"y":-1,"z":11},{"x":17,"y":6,"z":11},{"x":17,"y":5,"z":11},{"x":17,"y":4,"z":11},{"x":17,"y":3,"z":11},{"x":17,"y":2,"z":11},{"x":17,"y":1,"z":11},{"x":17,"y":0,"z":11},{"x":17,"y":-1,"z":11},{"x":18,"y":6,"z":11},{"x":18,"y":5,"z":11},{"x":18,"y":4,"z":11},{"x":18,"y":3,"z":11},{"x":18,"y":2,"z":11},{"x":18,"y":1,"z":11},{"x":18,"y":0,"z":11},{"x":18,"y":-1,"z":11}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"door-2":{"secretPoint":{"offsetPointList":[{"x":6,"y":10,"z":6},{"x":7,"y":10,"z":6},{"x":8,"y":10,"z":6},{"x":9,"y":10,"z":6},{"x":10,"y":10,"z":6},{"x":6,"y":10,"z":7},{"x":7,"y":10,"z":7},{"x":8,"y":10,"z":7},{"x":9,"y":10,"z":7},{"x":10,"y":10,"z":7},{"x":6,"y":10,"z":8},{"x":7,"y":10,"z":8},{"x":8,"y":10,"z":8},{"x":9,"y":10,"z":8},{"x":10,"y":10,"z":8},{"x":6,"y":10,"z":9},{"x":7,"y":10,"z":9},{"x":8,"y":10,"z":9},{"x":9,"y":10,"z":9},{"x":10,"y":10,"z":9},{"x":6,"y":10,"z":10},{"x":7,"y":10,"z":10},{"x":8,"y":10,"z":10},{"x":9,"y":10,"z":10},{"x":10,"y":10,"z":10}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"essence-1":{"mechType":"Secret","secretPoint":{"x":7,"y":-7,"z":3},"secretType":"ESSENCE","preRequisite":["superboom-1:open:::::::"]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":-8,"z":3},{"x":15,"y":-9,"z":3},{"x":16,"y":-8,"z":3},{"x":16,"y":-9,"z":3},{"x":17,"y":-8,"z":3},{"x":17,"y":-9,"z":3},{"x":15,"y":-8,"z":4},{"x":15,"y":-9,"z":4},{"x":16,"y":-8,"z":4},{"x":16,"y":-9,"z":4},{"x":17,"y":-8,"z":4},{"x":17,"y":-9,"z":4},{"x":15,"y":-8,"z":5},{"x":15,"y":-9,"z":5},{"x":16,"y":-8,"z":5},{"x":16,"y":-9,"z":5},{"x":17,"y":-8,"z":5},{"x":17,"y":-9,"z":5},{"x":15,"y":-8,"z":6},{"x":15,"y":-9,"z":6},{"x":16,"y":-8,"z":6},{"x":16,"y":-9,"z":6},{"x":17,"y":-8,"z":6},{"x":17,"y":-9,"z":6}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":-6,"z":19},{"x":6,"y":-7,"z":19},{"x":7,"y":-5,"z":19},{"x":7,"y":-6,"z":19},{"x":7,"y":-7,"z":19},{"x":8,"y":-5,"z":19},{"x":8,"y":-6,"z":19},{"x":8,"y":-7,"z":19}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/8116e928-56f1-4e0b-933a-f86b841938c8.json b/src/main/resources/dgroomdata/8116e928-56f1-4e0b-933a-f86b841938c8.json
new file mode 100644
index 0000000..9b0b1be
--- /dev/null
+++ b/src/main/resources/dgroomdata/8116e928-56f1-4e0b-933a-f86b841938c8.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":35,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,139,50,0,0,0,0,109,109,4,109,109,0,0,0,0,0,0,0,109,109,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,163,5,0,0,0,0,0,0,0,144,67,144,0,0,0,0,0,0,0,0,0,139,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,163,5,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,5,134,134,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,5,5,134,0,0,0,0,0,0,0,0,0,67,144,0,0,0,0,0,0,0,0,0,0,144,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,50,134,134,5,0,0,0,0,0,0,0,0,144,67,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,50,0,67,0,5,136,0,0,0,0,0,0,0,0,109,1,159,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,109,0,0,0,0,1,1,0,0,0,0,0,109,109,1,109,136,136,0,0,0,0,0,0,0,0,109,109,109,144,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,1,0,109,0,0,0,0,139,1,0,0,0,0,0,109,1,1,109,0,5,164,0,0,0,0,0,0,0,139,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,106,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,139,0,5,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,109,109,0,0,0,0,0,0,109,109,144,0,0,1,144,0,0,1,144,0,144,1,1,144,0,0,144,98,-1,-1,-1,-1],[-1,-1,-1,-1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,98,98,144,0,0,0,144,0,98,159,159,159,159,159,159,159,159,159,159,159,159,1,1,159,159,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,18,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,98,98,159,159,159,159,159,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,101,0,0,0,109,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,1,0,0,109,101,0,0,0,109,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,109,101,0,0,0,109,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,35,1,1,1,109,101,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,98,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,159,18,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,98,109,109,109,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,67,1,18,109,109,109,18,1,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,18,18,0,0,0,0,18,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,67,18,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,1,1,4,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,18,109,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,98,109,18,0,0,0,0,18,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,67,18,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,1,1,4,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,1,1,67,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,4,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,67,0,0,0,0,0,0,0,67,1,1,1,159,159,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,98,0,0,0,0,0,0,0,98,13,1,4,0,0,0,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,98,0,0,0,0,0,0,0,98,98,98,109,109,109,109,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,50,0,0,0,0,0,0,0,50,1,1,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,98,109,109,109,98,1,1,0,0,0,0,0,0,0,0,0,1,1,98,109,109,109,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,159,159,159,0,109,0,0,0,0,0,0,0,0,0,0,0,109,0,159,159,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,159,0,109,0,0,0,0,0,0,0,0,0,0,0,109,0,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,159,0,109,0,0,0,0,0,0,0,0,0,0,0,109,0,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,50,0,0,0,0,0,50,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"8116e928-56f1-4e0b-933a-f86b841938c8","name":"Spider","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":41,"y":-42,"z":23},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":53,"y":13,"z":7},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":35,"y":-20,"z":59},"secretType":"CHEST","preRequisite":[]},"door-1":{"secretPoint":{"offsetPointList":[{"x":43,"y":16,"z":29},{"x":43,"y":15,"z":29},{"x":43,"y":14,"z":29},{"x":43,"y":13,"z":29},{"x":43,"y":16,"z":30},{"x":43,"y":15,"z":30},{"x":43,"y":14,"z":30},{"x":43,"y":13,"z":30},{"x":43,"y":16,"z":31},{"x":43,"y":15,"z":31},{"x":43,"y":14,"z":31},{"x":43,"y":13,"z":31},{"x":43,"y":16,"z":32},{"x":43,"y":15,"z":32},{"x":43,"y":14,"z":32},{"x":43,"y":13,"z":32},{"x":43,"y":16,"z":33},{"x":43,"y":15,"z":33},{"x":43,"y":14,"z":33},{"x":43,"y":13,"z":33}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":36,"y":23,"z":31},"preRequisite":[],"triggering":"door-1"},"bat-1":{"mechType":"Secret","secretPoint":{"x":9,"y":16,"z":27},"secretType":"BAT","preRequisite":[""]},"chest-6":{"mechType":"Secret","secretPoint":{"x":36,"y":14,"z":31},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-4":{"mechType":"Secret","secretPoint":{"x":14,"y":14,"z":27},"secretType":"CHEST","preRequisite":[""]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":36,"y":16,"z":7},{"x":36,"y":15,"z":7},{"x":36,"y":14,"z":7},{"x":36,"y":13,"z":7},{"x":36,"y":16,"z":8},{"x":36,"y":15,"z":8},{"x":36,"y":14,"z":8},{"x":36,"y":13,"z":8},{"x":36,"y":16,"z":9},{"x":36,"y":15,"z":9},{"x":36,"y":14,"z":9},{"x":36,"y":13,"z":9}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-5":{"mechType":"Secret","secretPoint":{"x":48,"y":22,"z":32},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":37,"y":21,"z":24},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":37,"y":22,"z":29},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":40,"y":14,"z":12},{"x":40,"y":13,"z":12},{"x":41,"y":14,"z":12},{"x":41,"y":13,"z":12},{"x":42,"y":14,"z":12},{"x":42,"y":13,"z":12},{"x":40,"y":14,"z":13},{"x":40,"y":13,"z":13},{"x":41,"y":14,"z":13},{"x":41,"y":13,"z":13},{"x":42,"y":14,"z":13},{"x":42,"y":13,"z":13},{"x":40,"y":14,"z":14},{"x":40,"y":13,"z":14},{"x":41,"y":14,"z":14},{"x":41,"y":13,"z":14},{"x":42,"y":14,"z":14},{"x":42,"y":13,"z":14}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":47,"y":14,"z":12},{"x":47,"y":13,"z":12},{"x":48,"y":14,"z":12},{"x":48,"y":13,"z":12},{"x":49,"y":14,"z":12},{"x":49,"y":13,"z":12},{"x":47,"y":14,"z":13},{"x":47,"y":13,"z":13},{"x":48,"y":14,"z":13},{"x":48,"y":13,"z":13},{"x":49,"y":14,"z":13},{"x":49,"y":13,"z":13},{"x":47,"y":14,"z":14},{"x":47,"y":13,"z":14},{"x":48,"y":14,"z":14},{"x":48,"y":13,"z":14},{"x":49,"y":14,"z":14},{"x":49,"y":13,"z":14}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":38,"y":4,"z":32},{"x":38,"y":3,"z":32},{"x":39,"y":4,"z":32},{"x":39,"y":3,"z":32},{"x":40,"y":4,"z":32},{"x":40,"y":3,"z":32},{"x":38,"y":4,"z":33},{"x":38,"y":3,"z":33},{"x":39,"y":4,"z":33},{"x":39,"y":3,"z":33},{"x":40,"y":4,"z":33},{"x":40,"y":3,"z":33},{"x":38,"y":4,"z":34},{"x":38,"y":3,"z":34},{"x":39,"y":4,"z":34},{"x":39,"y":3,"z":34},{"x":40,"y":4,"z":34},{"x":40,"y":3,"z":34},{"x":38,"y":4,"z":35},{"x":38,"y":3,"z":35},{"x":39,"y":4,"z":35},{"x":39,"y":3,"z":35},{"x":40,"y":4,"z":35},{"x":40,"y":3,"z":35},{"x":38,"y":4,"z":36},{"x":38,"y":3,"z":36},{"x":39,"y":4,"z":36},{"x":39,"y":3,"z":36},{"x":40,"y":4,"z":36},{"x":40,"y":3,"z":36}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":9}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/81cf3e0b-70c5-4803-9169-7e7864b096ce.json b/src/main/resources/dgroomdata/81cf3e0b-70c5-4803-9169-7e7864b096ce.json
new file mode 100644
index 0000000..cc29dd3
--- /dev/null
+++ b/src/main/resources/dgroomdata/81cf3e0b-70c5-4803-9169-7e7864b096ce.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":62,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,-1,0,50,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,139,0,0,0,0,0,0,0,0,0,0,0,139,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,139,0,0,0,0,0,0,0,0,0,0,0,139,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,1,98,0,0,0,0,0,0,0,0,0,109,98,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,1,98,98,0,0,0,0,0,0,0,0,0,109,98,98,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,139,0,0,0,0,0,0,0,0,0,0,0,139,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,23,0,0,0,0,0,0,0,0,0,0,0,0,0,23,98,35,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,139,0,0,0,0,0,0,0,0,0,0,0,139,98,98,35,35,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,1,98,98,0,0,0,0,0,0,0,0,0,35,35,49,35,35,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,35,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"81cf3e0b-70c5-4803-9169-7e7864b096ce","name":"Trap-hard","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":8,"y":20,"z":14},"secretType":"CHEST","preRequisite":["door-2:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":27,"y":1,"z":22},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":5,"y":13,"z":27},"secretType":"CHEST","preRequisite":[]},"door-1":{"secretPoint":{"offsetPointList":[{"x":22,"y":3,"z":3},{"x":22,"y":2,"z":3},{"x":22,"y":1,"z":3},{"x":22,"y":0,"z":3},{"x":22,"y":-1,"z":3},{"x":22,"y":3,"z":4},{"x":22,"y":2,"z":4},{"x":22,"y":1,"z":4},{"x":22,"y":0,"z":4},{"x":22,"y":-1,"z":4},{"x":22,"y":3,"z":5},{"x":22,"y":2,"z":5},{"x":22,"y":1,"z":5},{"x":22,"y":0,"z":5},{"x":22,"y":-1,"z":5},{"x":22,"y":3,"z":6},{"x":22,"y":2,"z":6},{"x":22,"y":1,"z":6},{"x":22,"y":0,"z":6},{"x":22,"y":-1,"z":6}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":27,"y":20,"z":23},"preRequisite":["door-2:open"],"triggering":"door-1"},"door-2":{"secretPoint":{"offsetPointList":[{"x":26,"y":15,"z":14},{"x":26,"y":14,"z":14},{"x":26,"y":13,"z":14},{"x":26,"y":12,"z":14},{"x":26,"y":11,"z":14},{"x":27,"y":15,"z":14},{"x":27,"y":14,"z":14},{"x":27,"y":13,"z":14},{"x":27,"y":12,"z":14},{"x":27,"y":11,"z":14},{"x":28,"y":15,"z":14},{"x":28,"y":14,"z":14},{"x":28,"y":13,"z":14},{"x":28,"y":12,"z":14},{"x":28,"y":11,"z":14},{"x":29,"y":15,"z":14},{"x":29,"y":14,"z":14},{"x":29,"y":13,"z":14},{"x":29,"y":12,"z":14},{"x":29,"y":11,"z":14}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":3,"y":13,"z":28},"preRequisite":[],"triggering":"door-2"},"bat-1":{"mechType":"Secret","secretPoint":{"x":9,"y":19,"z":23},"secretType":"BAT","preRequisite":["door-2:open"]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":21,"y":0,"z":26},{"x":21,"y":-1,"z":26},{"x":22,"y":0,"z":26},{"x":22,"y":-1,"z":26},{"x":23,"y":0,"z":26},{"x":23,"y":-1,"z":26},{"x":24,"y":0,"z":26},{"x":24,"y":-1,"z":26},{"x":21,"y":0,"z":27},{"x":21,"y":-1,"z":27},{"x":22,"y":0,"z":27},{"x":22,"y":-1,"z":27},{"x":23,"y":0,"z":27},{"x":23,"y":-1,"z":27},{"x":24,"y":0,"z":27},{"x":24,"y":-1,"z":27},{"x":21,"y":0,"z":28},{"x":21,"y":-1,"z":28},{"x":22,"y":0,"z":28},{"x":22,"y":-1,"z":28},{"x":23,"y":0,"z":28},{"x":23,"y":-1,"z":28},{"x":24,"y":0,"z":28},{"x":24,"y":-1,"z":28}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":0,"z":26},{"x":8,"y":-1,"z":26},{"x":9,"y":0,"z":26},{"x":9,"y":-1,"z":26},{"x":10,"y":0,"z":26},{"x":10,"y":-1,"z":26},{"x":11,"y":0,"z":26},{"x":11,"y":-1,"z":26},{"x":8,"y":0,"z":27},{"x":8,"y":-1,"z":27},{"x":9,"y":0,"z":27},{"x":9,"y":-1,"z":27},{"x":10,"y":0,"z":27},{"x":10,"y":-1,"z":27},{"x":11,"y":0,"z":27},{"x":11,"y":-1,"z":27},{"x":8,"y":0,"z":28},{"x":8,"y":-1,"z":28},{"x":9,"y":0,"z":28},{"x":9,"y":-1,"z":28},{"x":10,"y":0,"z":28},{"x":10,"y":-1,"z":28},{"x":11,"y":0,"z":28},{"x":11,"y":-1,"z":28}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/83e1ab6b-ad44-469e-a6bf-71c6bebcab4b.json b/src/main/resources/dgroomdata/83e1ab6b-ad44-469e-a6bf-71c6bebcab4b.json
new file mode 100644
index 0000000..6f621e7
--- /dev/null
+++ b/src/main/resources/dgroomdata/83e1ab6b-ad44-469e-a6bf-71c6bebcab4b.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,98,1,1,1,0,0,0,0,4,101,4,0,0,0,0,0,0,0,1,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,98,1,1,1,0,0,0,0,101,0,101,0,0,0,0,0,0,0,1,1,188,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,1,1,1,0,0,0,0,101,0,101,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,0,0,0,0,0,0,0,4,101,4,0,0,0,0,1,82,1,1,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,82,82,98,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,188,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,164,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,1,50,5,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"83e1ab6b-ad44-469e-a6bf-71c6bebcab4b","name":"Sand-Dragon","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":16,"y":16,"z":5},"secretType":"CHEST","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":0,"z":2},{"x":15,"y":-1,"z":2},{"x":16,"y":0,"z":2},{"x":16,"y":-1,"z":2},{"x":17,"y":0,"z":2},{"x":17,"y":-1,"z":2},{"x":15,"y":0,"z":3},{"x":15,"y":-1,"z":3},{"x":16,"y":0,"z":3},{"x":16,"y":-1,"z":3},{"x":17,"y":0,"z":3},{"x":17,"y":-1,"z":3},{"x":15,"y":0,"z":4},{"x":15,"y":-1,"z":4},{"x":16,"y":0,"z":4},{"x":16,"y":-1,"z":4},{"x":17,"y":0,"z":4},{"x":17,"y":-1,"z":4},{"x":15,"y":0,"z":5},{"x":15,"y":-1,"z":5},{"x":16,"y":0,"z":5},{"x":16,"y":-1,"z":5},{"x":17,"y":0,"z":5},{"x":17,"y":-1,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"journal-1":{"secretPoint":{"x":7,"y":-2,"z":23},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/845aec22-bc9e-4d50-b8de-db67188232e9.json b/src/main/resources/dgroomdata/845aec22-bc9e-4d50-b8de-db67188232e9.json
new file mode 100644
index 0000000..15cc0bf
--- /dev/null
+++ b/src/main/resources/dgroomdata/845aec22-bc9e-4d50-b8de-db67188232e9.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"845aec22-bc9e-4d50-b8de-db67188232e9","name":"Temple","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":15,"y":-16,"z":16},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":11,"y":8,"z":3},"secretType":"ITEM_DROP","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":28,"y":-7,"z":6},"secretType":"BAT","preRequisite":[]}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/86a3b53b-6ede-43bd-8988-135001149d4b.json b/src/main/resources/dgroomdata/86a3b53b-6ede-43bd-8988-135001149d4b.json
new file mode 100644
index 0000000..387d38c
--- /dev/null
+++ b/src/main/resources/dgroomdata/86a3b53b-6ede-43bd-8988-135001149d4b.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,140,50,134,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,-1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,-1,4,98,109,0,0,0,0,1,1,98,0,0,0,0,109,1,109,0,0,144,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,17,4,98,109,0,0,0,0,109,159,44,0,0,0,0,109,109,50,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,-1,0,0,0,0,0,0,0,159,144,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,-1,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,-1,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,134,17,-1,0,0,0,0,0,0,144,159,144,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,47,47,47,4,4,98,109,0,0,0,0,44,159,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,98,109,0,0,0,0,44,159,44,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,67,67,4,0,0,0,0,0,0,1,98,98,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,67,67,4,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,109,109,0,0,0,0,0,109,109,0,0,0,0,109,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,98,98,0,0,0,0,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,4,4,101,101,101,4,1,1,67,0,39,67,1,1,67,101,101,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,4,1,1,159,7,0,0,159,1,67,0,0,0,67,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,67,1,1,1,1,1,159,1,1,4,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,4,0,0,0,67,1,1,1,1,1,1,1,1,67,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,4,4,4,1,1,1,1,1,1,1,1,67,67,67,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"86a3b53b-6ede-43bd-8988-135001149d4b","name":"Mushroom","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":15,"y":10,"z":14},"secretType":"CHEST","preRequisite":["mushroom:click"]},"Winona":{"secretPoint":{"x":5,"y":-1,"z":6},"preRequisite":["superboom-1:open"],"mechType":"Npc"},"mushroom":{"secretPoint":{"x":13,"y":-1,"z":8},"preRequisite":[],"mechType":"Dummy"},"journal-1":{"secretPoint":{"x":21,"y":10,"z":17},"preRequisite":["mushroom:click"],"mechType":"Journal"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":2,"z":11},{"x":8,"y":1,"z":11},{"x":8,"y":0,"z":11},{"x":8,"y":3,"z":12},{"x":8,"y":2,"z":12},{"x":8,"y":1,"z":12},{"x":8,"y":0,"z":12},{"x":8,"y":-1,"z":12},{"x":8,"y":4,"z":13},{"x":8,"y":3,"z":13},{"x":8,"y":2,"z":13},{"x":8,"y":1,"z":13},{"x":8,"y":0,"z":13},{"x":8,"y":-1,"z":13},{"x":8,"y":4,"z":14},{"x":8,"y":3,"z":14},{"x":8,"y":0,"z":14}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/8b4ec0bf-b783-4e66-b5fa-89493ac6efa1.json b/src/main/resources/dgroomdata/8b4ec0bf-b783-4e66-b5fa-89493ac6efa1.json
new file mode 100644
index 0000000..821704f
--- /dev/null
+++ b/src/main/resources/dgroomdata/8b4ec0bf-b783-4e66-b5fa-89493ac6efa1.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,109,85,0,0,85,0,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,85,0,0,85,0,109,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,89,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,65,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,85,0,0,85,0,0,0,0,4,0,0,0,67,4,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,98,98,4,0,0,0,0,0,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,98,98,4,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,4,0,0,0,0,0,0,0,144,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,171,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,67,0,0,0,0,0,0,0,171,171,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,171,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,50,0,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,98,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"8b4ec0bf-b783-4e66-b5fa-89493ac6efa1","name":"Mural","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":27,"y":13,"z":8},"secretType":"CHEST","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":19,"y":10,"z":15},{"x":19,"y":9,"z":15},{"x":19,"y":8,"z":15},{"x":19,"y":7,"z":15},{"x":19,"y":11,"z":16},{"x":19,"y":10,"z":16},{"x":19,"y":9,"z":16},{"x":19,"y":8,"z":16},{"x":19,"y":7,"z":16},{"x":19,"y":9,"z":17},{"x":19,"y":8,"z":17},{"x":19,"y":7,"z":17}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/8c184746-6857-480a-958e-f22e09bb1295.json b/src/main/resources/dgroomdata/8c184746-6857-480a-958e-f22e09bb1295.json
new file mode 100644
index 0000000..cb21b73
--- /dev/null
+++ b/src/main/resources/dgroomdata/8c184746-6857-480a-958e-f22e09bb1295.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":49,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,0,0,159,98,98,0,98,0,0,0,0,0,98,0,98,1,98,1,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,139,159,144,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,139,159,44,0,0,0,0,0,0,0,0,0,0,134,98,98,1,98,98,98,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,159,44,0,0,0,0,0,0,0,0,0,0,134,1,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,144,159,44,0,0,0,0,0,0,0,0,0,0,134,98,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,1,98,98,98,0,0,0,0,0,0,0,0,0,134,98,98,98,98,98,1,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,-1,-1,-1,98,98,98,98,98,1,0,0,0,1,98,98,98,98,98,98,98,98,98,1,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,98,98,1,98,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,139,98,134,85,17,0,0,0,0,0,17,169,1,98,98,98,159,159,159,159,159,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,1,1,98,98,144,0,139,144,144,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,5,5,98,1,139,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,5,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,0,0,0,0,109,0,0,0,0,0,0,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,98,0,0,0,0,0,0,98,98,50,0,0,0,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,98,134,134,134,134,98,0,0,0,18,98,98,98,98,98,0,0,0,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,98,98,98,98,98,0,0,0,0,1,98,98,98,98,0,101,101,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,98,98,98,98,98,98,0,0,0,18,98,1,98,98,98,0,0,0,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,-1,98,0,0,0,98,44,44,0,144,1,1,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,-1,98,0,0,0,98,159,159,159,159,98,98,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,-1,98,0,0,0,98,159,159,159,159,98,1,98,98,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,98,98,98,98,98,159,159,98,98,98,98,98,0,0,0,144,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,98,98,98,1,98,98,98,98,98,1,98,98,98,1,98,98,98,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,1,98,98,98,98,98,98,1,98,98,98,98,98,98,1,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,33,1,98,98,98,98,98,98,98,98,1,1,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,23,1,98,98,98,98,1,98,98,98,98,98,98,1,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,33,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,98,1,98,98,98,98,98,1,98,98,98,98,98,1,98,98,98,98,98,98,1,98,98,98,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,98,98,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,1,98,159,159,159,98,159,159,159,98,159,159,159,98,159,159,159,1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,0,0,0,0,0,98,139,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,0,0,0,1,5,5,0,1,0,0,0,1,0,0,0,1,98,98,98,98,1,98,98,98,98,98,98,98,98,98,98,98,98,109,139,0,0,0,0,0,0,0,0,0,0,0,0,0,144,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,53,5,0,0,0,0,0,0,0,17,0,50,98,98,98,98,98,98,98,98,1,98,98,1,98,1,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,98,98,98,98,98,98,98,98,98,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,109,109,109,98,1,98,98,98,98,1,1,98,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,98,98,98,98,98,98,1,98,1,98,98,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,4,4,4,67,67,98,109,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,5,5,0,0,0,0,0,0,0,0,0,0,1,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,144,0,144,0,144,98,1,98,139,0,0,0,0,139,139,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,5,53,0,0,0,0,0,0,0,0,0,0,0,5,136,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,0,0,0,0,0,0,139,109,98,98,144,144,0,1,98,139,0,0,0,0,0,0,139,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,188,0,17,0,0,0,0,0,0,0,139,98,4,4,4,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,98,159,144,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1,159,144,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,98,159,139,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,139,98,4,4,4,98,98,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,98,98,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,0,0,0,0,0,0,0,109,98,98,0,0,0,98,98,98,0,0,0,0,0,0,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,31,0,0,98,98,98,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,0,0,0,0,0,0,0,98,109,0,0,0,0,0,109,109,101,101,0,0,0,101,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,5,5,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,53,5,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,144,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,159,0,0,136,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,159,0,0,136,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,31,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,98,98,98,98,0,0,5,5,0,0,0,0,17,85,85,17,0,0,0,0,50,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,5,163,0,0,0,0,85,98,98,0,0,0,0,0,139,98,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,136,5,0,0,0,0,98,0,0,0,0,0,0,0,0,136,5,0,0,0,0,0,0,0,0,98,98,98,98,98,188,0,0,0,0,0,85,98,98,0,0,0,0,0,98,98,0,0,0,0,0,144,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"8c184746-6857-480a-958e-f22e09bb1295","name":"layers","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":55,"y":8,"z":57},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":14,"y":-1,"z":27},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":48,"y":-1,"z":48},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":9,"y":21,"z":33},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":46,"y":2,"z":47},{"x":46,"y":1,"z":47},{"x":46,"y":0,"z":47},{"x":46,"y":-1,"z":47},{"x":46,"y":2,"z":48},{"x":46,"y":1,"z":48},{"x":46,"y":0,"z":48},{"x":46,"y":-1,"z":48},{"x":46,"y":2,"z":49},{"x":46,"y":1,"z":49},{"x":46,"y":0,"z":49},{"x":46,"y":-1,"z":49}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"door-2":{"secretPoint":{"offsetPointList":[{"x":5,"y":3,"z":10},{"x":5,"y":2,"z":10},{"x":5,"y":1,"z":10},{"x":5,"y":0,"z":10},{"x":5,"y":-1,"z":10},{"x":6,"y":3,"z":10},{"x":6,"y":2,"z":10},{"x":6,"y":1,"z":10},{"x":6,"y":0,"z":10},{"x":6,"y":-1,"z":10},{"x":7,"y":3,"z":10},{"x":7,"y":2,"z":10},{"x":7,"y":1,"z":10},{"x":7,"y":0,"z":10},{"x":7,"y":-1,"z":10}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":6,"y":6,"z":3},"preRequisite":["crypt-1:open"],"triggering":"door-2"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":10,"y":0,"z":26},{"x":10,"y":-1,"z":26},{"x":10,"y":1,"z":27},{"x":10,"y":0,"z":27},{"x":10,"y":-1,"z":27},{"x":10,"y":1,"z":28},{"x":10,"y":0,"z":28},{"x":10,"y":-1,"z":28}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-4":{"mechType":"Secret","secretPoint":{"x":6,"y":-1,"z":3},"secretType":"CHEST","preRequisite":["door-2:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":47,"y":12,"z":43},{"x":47,"y":11,"z":43},{"x":47,"y":10,"z":43},{"x":47,"y":9,"z":43},{"x":48,"y":12,"z":43},{"x":48,"y":11,"z":43},{"x":48,"y":10,"z":43},{"x":48,"y":9,"z":43},{"x":48,"y":8,"z":43},{"x":49,"y":11,"z":43},{"x":49,"y":10,"z":43},{"x":49,"y":9,"z":43},{"x":49,"y":8,"z":43}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-3":{"mechType":"Secret","secretPoint":{"x":48,"y":9,"z":35},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"itemdrop-4":{"mechType":"Secret","secretPoint":{"x":8,"y":26,"z":57},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":36,"y":-11,"z":53},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":26,"y":0,"z":29},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":38,"y":20,"z":55},{"x":38,"y":19,"z":55},{"x":39,"y":20,"z":55},{"x":39,"y":19,"z":55},{"x":38,"y":20,"z":56},{"x":38,"y":19,"z":56},{"x":39,"y":20,"z":56},{"x":39,"y":19,"z":56},{"x":38,"y":20,"z":57},{"x":38,"y":19,"z":57},{"x":39,"y":20,"z":57},{"x":39,"y":19,"z":57},{"x":38,"y":20,"z":58},{"x":38,"y":19,"z":58},{"x":39,"y":20,"z":58},{"x":39,"y":19,"z":58},{"x":38,"y":20,"z":59},{"x":38,"y":19,"z":59},{"x":39,"y":20,"z":59},{"x":39,"y":19,"z":59}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":57,"y":20,"z":55},{"x":57,"y":19,"z":55},{"x":58,"y":20,"z":55},{"x":58,"y":19,"z":55},{"x":57,"y":20,"z":56},{"x":57,"y":19,"z":56},{"x":58,"y":20,"z":56},{"x":58,"y":19,"z":56},{"x":57,"y":20,"z":57},{"x":57,"y":19,"z":57},{"x":58,"y":20,"z":57},{"x":58,"y":19,"z":57},{"x":57,"y":20,"z":58},{"x":57,"y":19,"z":58},{"x":58,"y":20,"z":58},{"x":58,"y":19,"z":58},{"x":57,"y":20,"z":59},{"x":57,"y":19,"z":59},{"x":58,"y":20,"z":59},{"x":58,"y":19,"z":59}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":8,"z":3},{"x":5,"y":7,"z":3},{"x":6,"y":8,"z":3},{"x":6,"y":7,"z":3},{"x":7,"y":8,"z":3},{"x":7,"y":7,"z":3},{"x":5,"y":8,"z":4},{"x":5,"y":7,"z":4},{"x":6,"y":8,"z":4},{"x":6,"y":7,"z":4},{"x":7,"y":8,"z":4},{"x":7,"y":7,"z":4},{"x":5,"y":8,"z":5},{"x":5,"y":7,"z":5},{"x":6,"y":8,"z":5},{"x":6,"y":7,"z":5},{"x":7,"y":8,"z":5},{"x":7,"y":7,"z":5},{"x":5,"y":8,"z":6},{"x":5,"y":7,"z":6},{"x":6,"y":8,"z":6},{"x":6,"y":7,"z":6},{"x":7,"y":8,"z":6},{"x":7,"y":7,"z":6}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":8}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/8e6409d8-ea3f-4348-ae30-f8f1e15d05b9.json b/src/main/resources/dgroomdata/8e6409d8-ea3f-4348-ae30-f8f1e15d05b9.json
new file mode 100644
index 0000000..193b799
--- /dev/null
+++ b/src/main/resources/dgroomdata/8e6409d8-ea3f-4348-ae30-f8f1e15d05b9.json
@@ -0,0 +1,393 @@
+{
+ "isUserMade": false,
+ "shape": 1,
+ "color": 62,
+ "uuid": "8e6409d8-ea3f-4348-ae30-f8f1e15d05b9",
+ "name": "Trap-very-hard2",
+ "processorId": "default",
+ "properties": {},
+ "mechanics": {
+ "chest-2": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 15,
+ "y": 20,
+ "z": 5
+ },
+ "secretType": "CHEST",
+ "preRequisite": [
+ "door-2:open"
+ ]
+ },
+ "chest-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 13,
+ "y": -3,
+ "z": 26
+ },
+ "secretType": "CHEST",
+ "preRequisite": []
+ },
+ "door-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 24,
+ "y": 10,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 9,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 8,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 7,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 6,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 5,
+ "z": 4
+ },
+ {
+ "x": 24,
+ "y": 10,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 9,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 8,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 7,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 6,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 5,
+ "z": 5
+ },
+ {
+ "x": 24,
+ "y": 10,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 9,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 8,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 7,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 6,
+ "z": 6
+ },
+ {
+ "x": 24,
+ "y": 5,
+ "z": 6
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-1:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "lever-1": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 21,
+ "y": -4,
+ "z": 9
+ },
+ "preRequisite": [
+ "crypt-1:open"
+ ],
+ "triggering": "door-1"
+ },
+ "lever-2": {
+ "mechType": "OnewayLever",
+ "leverPoint": {
+ "x": 19,
+ "y": 11,
+ "z": 30
+ },
+ "preRequisite": [
+ "superboom-1:open"
+ ],
+ "triggering": "door-2"
+ },
+ "door-2": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 22,
+ "y": 22,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 21,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 20,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 19,
+ "z": 4
+ },
+ {
+ "x": 22,
+ "y": 22,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 21,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 20,
+ "z": 5
+ },
+ {
+ "x": 22,
+ "y": 19,
+ "z": 5
+ }
+ ]
+ },
+ "preRequisite": [
+ "lever-2:triggered"
+ ],
+ "mechType": "OnewayDoor"
+ },
+ "bat-1": {
+ "mechType": "Secret",
+ "secretPoint": {
+ "x": 22,
+ "y": 22,
+ "z": 10
+ },
+ "secretType": "BAT",
+ "preRequisite": [
+ "superboom-1:open"
+ ]
+ },
+ "crypt-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 20,
+ "y": -4,
+ "z": 7
+ },
+ {
+ "x": 20,
+ "y": -5,
+ "z": 7
+ },
+ {
+ "x": 21,
+ "y": -4,
+ "z": 7
+ },
+ {
+ "x": 21,
+ "y": -5,
+ "z": 7
+ },
+ {
+ "x": 22,
+ "y": -4,
+ "z": 7
+ },
+ {
+ "x": 22,
+ "y": -5,
+ "z": 7
+ },
+ {
+ "x": 20,
+ "y": -4,
+ "z": 8
+ },
+ {
+ "x": 20,
+ "y": -5,
+ "z": 8
+ },
+ {
+ "x": 21,
+ "y": -4,
+ "z": 8
+ },
+ {
+ "x": 21,
+ "y": -5,
+ "z": 8
+ },
+ {
+ "x": 22,
+ "y": -4,
+ "z": 8
+ },
+ {
+ "x": 22,
+ "y": -5,
+ "z": 8
+ }
+ ]
+ },
+ "preRequisite": [],
+ "mechType": "Tomb"
+ },
+ "superboom-1": {
+ "secretPoint": {
+ "offsetPointList": [
+ {
+ "x": 3,
+ "y": 16,
+ "z": 22
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 3,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 3,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 3,
+ "y": 12,
+ "z": 22
+ },
+ {
+ "x": 3,
+ "y": 11,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 17,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 16,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 12,
+ "z": 22
+ },
+ {
+ "x": 4,
+ "y": 11,
+ "z": 22
+ },
+ {
+ "x": 5,
+ "y": 16,
+ "z": 22
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "z": 22
+ },
+ {
+ "x": 5,
+ "y": 14,
+ "z": 22
+ },
+ {
+ "x": 5,
+ "y": 13,
+ "z": 22
+ },
+ {
+ "x": 5,
+ "y": 12,
+ "z": 22
+ },
+ {
+ "x": 5,
+ "y": 11,
+ "z": 22
+ }
+ ]
+ },
+ "preRequisite": [
+ "door-1:open"
+ ],
+ "mechType": "BreakableWall"
+ }
+ },
+ "totalSecrets": 3
+}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/8f317c52-6550-42dd-829b-2a477389fe89.json b/src/main/resources/dgroomdata/8f317c52-6550-42dd-829b-2a477389fe89.json
new file mode 100644
index 0000000..2a78256
--- /dev/null
+++ b/src/main/resources/dgroomdata/8f317c52-6550-42dd-829b-2a477389fe89.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,98,109,0,0,0,0,0,109,98,139,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0,126,136,5,0,0,0,0,109,98,0,0,0,0,0,109,98,98,98,159,159,159,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,98,98,98,98,109,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0,0,0,0,17,0,0,17,98,109,0,0,0,0,0,109,98,98,98,44,44,44,44,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,144,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,98,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,98,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,98,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,98,98,98,109,0,0,0,0,0,50,139,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,50,109,98,0,0,0,0,0,50,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,98,98,98,159,98,98,109,0,0,0,0,109,98,1,98,98,101,144,0,0,101,101,98,1,0,0,0,98,98,101,144,0,0,144,101,98,98,98,98,98,0,0,0,0,98,98,98,98,44,44,44,44,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,44,4,1,4,44,4,98,109,0,0,0,0,98,98,98,98,159,159,159,159,159,159,159,98,98,0,0,0,98,98,159,159,159,159,159,159,159,159,98,98,1,0,0,0,0,109,98,98,98,159,159,159,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,139,0,0,98,0,0,0,98,98,0,0,0,0,144,159,98,98,0,41,41,98,98,98,98,0,0,0,0,0,0,0,98,1,1,98,0,0,0,144,98,98,98,0,0,0,0,109,109,109,98,0,144,0,0,144,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,17,50,0,0,0,0,0,159,98,147,0,0,147,0,1,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,5,-1,0,0,0,0,0,0,0,0,0,-1,5,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,0,-1,0,0,0,0,5,-1,0,0,0,0,0,0,0,0,0,-1,5,0,0,0,0,0,147,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,144,0,0,0,0,0,5,-1,0,0,0,0,0,0,0,0,0,-1,5,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,147,0,0,1,98,98,0,0,0,0,0,0,0,98,1,1,0,0,0,0,0,41,98,109,0,0,0,0,144,139,0,17,85,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,109,0,0,0,0,144,159,98,1,41,0,0,98,98,98,98,0,0,0,147,0,0,0,98,98,1,98,144,0,41,41,98,98,98,0,0,0,0,98,98,98,98,98,98,188,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,101,101,101,101,101,101,101,98,98,0,0,0,0,109,98,98,98,159,159,159,98,98,1,98,98,98,98,98,98,1,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,0,98,98,98,98,98,159,159,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,98,98,0,0,0,0,109,98,98,98,98,98,98,159,159,159,159,98,98,98,98,98,98,98,159,159,159,159,98,98,98,98,98,98,98,0,0,0,0,98,98,98,98,98,98,159,159,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,-1,0,0,0,0,0,139,98,98,0,0,0,1,0,0,0,0,1,0,0,0,0,50,1,0,0,0,144,1,0,0,0,98,98,0,0,0,0,0,0,109,98,98,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,109,109,109,109,98,109,0,0,0,0,0,98,98,139,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,98,109,0,0,0,0,109,98,0,0,0,0,0,109,1,98,1,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,98,1,98,0,0,0,0,0,109,98,44,43,44,44,98,109,0,0,0,0,0,0,0,0,0,0,0,98,98,50,0,44,44,98,98,0,0,0,0,0,1,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"8f317c52-6550-42dd-829b-2a477389fe89","name":"Pressure-plates","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":24,"y":-11,"z":8},"secretType":"CHEST","preRequisite":[]},"door-3":{"secretPoint":{"offsetPointList":[{"x":54,"y":27,"z":15},{"x":54,"y":26,"z":15},{"x":54,"y":25,"z":15},{"x":54,"y":24,"z":15},{"x":54,"y":23,"z":15},{"x":54,"y":27,"z":16},{"x":54,"y":26,"z":16},{"x":54,"y":25,"z":16},{"x":54,"y":24,"z":16},{"x":54,"y":23,"z":16},{"x":54,"y":27,"z":17},{"x":54,"y":26,"z":17},{"x":54,"y":25,"z":17},{"x":54,"y":24,"z":17},{"x":54,"y":23,"z":17}]},"preRequisite":["lever-3:triggered"],"mechType":"OnewayDoor"},"chest-3":{"mechType":"Secret","secretPoint":{"x":60,"y":24,"z":16},"secretType":"CHEST","preRequisite":["door-3:open"]},"door-4":{"secretPoint":{"offsetPointList":[{"x":12,"y":5,"z":22},{"x":12,"y":4,"z":22},{"x":12,"y":3,"z":22},{"x":12,"y":2,"z":22},{"x":12,"y":1,"z":22},{"x":12,"y":0,"z":22},{"x":12,"y":5,"z":23},{"x":12,"y":4,"z":23},{"x":12,"y":3,"z":23},{"x":12,"y":2,"z":23},{"x":12,"y":1,"z":23},{"x":12,"y":0,"z":23},{"x":12,"y":5,"z":24},{"x":12,"y":4,"z":24},{"x":12,"y":3,"z":24},{"x":12,"y":2,"z":24},{"x":12,"y":1,"z":24},{"x":12,"y":0,"z":24},{"x":12,"y":5,"z":25},{"x":12,"y":4,"z":25},{"x":12,"y":3,"z":25},{"x":12,"y":2,"z":25},{"x":12,"y":1,"z":25},{"x":12,"y":0,"z":25},{"x":12,"y":5,"z":26},{"x":12,"y":4,"z":26},{"x":12,"y":3,"z":26},{"x":12,"y":2,"z":26},{"x":12,"y":1,"z":26},{"x":12,"y":0,"z":26}]},"preRequisite":["lever-4:triggered"],"mechType":"OnewayDoor"},"pressure-plate-2":{"mechType":"PressurePlate","platePoint":{"x":44,"y":0,"z":16},"preRequisite":["door-1:open"],"triggering":"door-2"},"pressure-plate-1":{"mechType":"PressurePlate","platePoint":{"x":32,"y":0,"z":19},"preRequisite":[],"triggering":"door-1"},"chest-1":{"mechType":"Secret","secretPoint":{"x":21,"y":0,"z":16},"secretType":"CHEST","preRequisite":["door-2:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":37,"y":2,"z":15},{"x":37,"y":1,"z":15},{"x":37,"y":0,"z":15},{"x":37,"y":-1,"z":15},{"x":37,"y":2,"z":16},{"x":37,"y":1,"z":16},{"x":37,"y":0,"z":16},{"x":37,"y":-1,"z":16},{"x":37,"y":2,"z":17},{"x":37,"y":1,"z":17},{"x":37,"y":0,"z":17},{"x":37,"y":-1,"z":17}]},"closePreRequisite":["pressure-plate-1:untriggered"],"openPreRequisite":["pressure-plate-1:triggered"],"mechType":"Door"},"door-2":{"secretPoint":{"offsetPointList":[{"x":27,"y":2,"z":15},{"x":27,"y":1,"z":15},{"x":27,"y":0,"z":15},{"x":27,"y":-1,"z":15},{"x":27,"y":2,"z":16},{"x":27,"y":1,"z":16},{"x":27,"y":0,"z":16},{"x":27,"y":-1,"z":16},{"x":27,"y":2,"z":17},{"x":27,"y":1,"z":17},{"x":27,"y":0,"z":17},{"x":27,"y":-1,"z":17}]},"closePreRequisite":["pressure-plate-2:untriggered"],"openPreRequisite":["pressure-plate-2:triggered"],"mechType":"Door"},"superboom-3":{"secretPoint":{"offsetPointList":[{"x":52,"y":27,"z":7},{"x":52,"y":26,"z":7},{"x":52,"y":25,"z":7},{"x":52,"y":24,"z":7},{"x":52,"y":23,"z":7},{"x":52,"y":27,"z":8},{"x":52,"y":26,"z":8},{"x":52,"y":25,"z":8},{"x":52,"y":24,"z":8},{"x":52,"y":23,"z":8},{"x":52,"y":27,"z":9},{"x":52,"y":26,"z":9},{"x":52,"y":25,"z":9},{"x":52,"y":24,"z":9},{"x":52,"y":23,"z":9}]},"preRequisite":[],"mechType":"BreakableWall"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":52,"y":3,"z":7},{"x":52,"y":2,"z":7},{"x":52,"y":1,"z":7},{"x":52,"y":0,"z":7},{"x":52,"y":-1,"z":7},{"x":52,"y":3,"z":8},{"x":52,"y":2,"z":8},{"x":52,"y":1,"z":8},{"x":52,"y":0,"z":8},{"x":52,"y":-1,"z":8},{"x":52,"y":2,"z":9},{"x":52,"y":1,"z":9},{"x":52,"y":0,"z":9},{"x":52,"y":-1,"z":9}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-4":{"mechType":"Secret","secretPoint":{"x":61,"y":24,"z":8},"secretType":"CHEST","preRequisite":["superboom-3:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":10,"z":23},{"x":7,"y":10,"z":23},{"x":8,"y":10,"z":23},{"x":6,"y":10,"z":24},{"x":7,"y":10,"z":24},{"x":8,"y":10,"z":24},{"x":6,"y":10,"z":25},{"x":7,"y":10,"z":25},{"x":8,"y":10,"z":25}]},"preRequisite":[],"mechType":"BreakableWall"},"lever-3":{"mechType":"OnewayLever","leverPoint":{"x":22,"y":13,"z":16},"preRequisite":[],"triggering":"door-3"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":6,"y":0,"z":26},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":10,"y":-11,"z":7},{"x":10,"y":-12,"z":7},{"x":11,"y":-11,"z":7},{"x":11,"y":-12,"z":7},{"x":12,"y":-11,"z":7},{"x":12,"y":-12,"z":7},{"x":13,"y":-11,"z":7},{"x":13,"y":-12,"z":7},{"x":14,"y":-11,"z":7},{"x":14,"y":-12,"z":7},{"x":10,"y":-11,"z":8},{"x":10,"y":-12,"z":8},{"x":11,"y":-11,"z":8},{"x":11,"y":-12,"z":8},{"x":12,"y":-11,"z":8},{"x":12,"y":-12,"z":8},{"x":13,"y":-11,"z":8},{"x":13,"y":-12,"z":8},{"x":14,"y":-11,"z":8},{"x":14,"y":-12,"z":8},{"x":10,"y":-11,"z":9},{"x":10,"y":-12,"z":9},{"x":11,"y":-11,"z":9},{"x":11,"y":-12,"z":9},{"x":12,"y":-11,"z":9},{"x":12,"y":-12,"z":9},{"x":13,"y":-11,"z":9},{"x":13,"y":-12,"z":9},{"x":14,"y":-11,"z":9},{"x":14,"y":-12,"z":9}]},"preRequisite":[],"mechType":"Tomb"},"lever-4":{"mechType":"OnewayLever","leverPoint":{"x":6,"y":1,"z":26},"preRequisite":["superboom-1:open"],"triggering":"door-4"},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":59,"y":-1,"z":8},"secretType":"ITEM_DROP","preRequisite":["superboom-2:open"]},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":10,"y":-11,"z":15},{"x":10,"y":-12,"z":15},{"x":11,"y":-11,"z":15},{"x":11,"y":-12,"z":15},{"x":12,"y":-11,"z":15},{"x":12,"y":-12,"z":15},{"x":13,"y":-11,"z":15},{"x":13,"y":-12,"z":15},{"x":14,"y":-11,"z":15},{"x":14,"y":-12,"z":15},{"x":10,"y":-11,"z":16},{"x":10,"y":-12,"z":16},{"x":11,"y":-11,"z":16},{"x":11,"y":-12,"z":16},{"x":12,"y":-11,"z":16},{"x":12,"y":-12,"z":16},{"x":13,"y":-11,"z":16},{"x":13,"y":-12,"z":16},{"x":14,"y":-11,"z":16},{"x":14,"y":-12,"z":16},{"x":10,"y":-11,"z":17},{"x":10,"y":-12,"z":17},{"x":11,"y":-11,"z":17},{"x":11,"y":-12,"z":17},{"x":12,"y":-11,"z":17},{"x":12,"y":-12,"z":17},{"x":13,"y":-11,"z":17},{"x":13,"y":-12,"z":17},{"x":14,"y":-11,"z":17},{"x":14,"y":-12,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":29,"y":0,"z":4},{"x":29,"y":-1,"z":4},{"x":30,"y":0,"z":4},{"x":30,"y":-1,"z":4},{"x":31,"y":0,"z":4},{"x":31,"y":-1,"z":4},{"x":32,"y":0,"z":4},{"x":32,"y":-1,"z":4},{"x":33,"y":0,"z":4},{"x":33,"y":-1,"z":4},{"x":34,"y":0,"z":4},{"x":34,"y":-1,"z":4},{"x":29,"y":0,"z":5},{"x":29,"y":-1,"z":5},{"x":30,"y":0,"z":5},{"x":30,"y":-1,"z":5},{"x":31,"y":0,"z":5},{"x":31,"y":-1,"z":5},{"x":32,"y":0,"z":5},{"x":32,"y":-1,"z":5},{"x":33,"y":0,"z":5},{"x":33,"y":-1,"z":5},{"x":34,"y":0,"z":5},{"x":34,"y":-1,"z":5},{"x":29,"y":0,"z":6},{"x":29,"y":-1,"z":6},{"x":30,"y":0,"z":6},{"x":30,"y":-1,"z":6},{"x":31,"y":0,"z":6},{"x":31,"y":-1,"z":6},{"x":32,"y":0,"z":6},{"x":32,"y":-1,"z":6},{"x":33,"y":0,"z":6},{"x":33,"y":-1,"z":6},{"x":34,"y":0,"z":6},{"x":34,"y":-1,"z":6}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":30,"y":12,"z":15},{"x":30,"y":11,"z":15},{"x":31,"y":12,"z":15},{"x":31,"y":11,"z":15},{"x":32,"y":12,"z":15},{"x":32,"y":11,"z":15},{"x":33,"y":12,"z":15},{"x":33,"y":11,"z":15},{"x":34,"y":12,"z":15},{"x":34,"y":11,"z":15},{"x":30,"y":12,"z":16},{"x":30,"y":11,"z":16},{"x":31,"y":12,"z":16},{"x":31,"y":11,"z":16},{"x":32,"y":12,"z":16},{"x":32,"y":11,"z":16},{"x":33,"y":12,"z":16},{"x":33,"y":11,"z":16},{"x":34,"y":12,"z":16},{"x":34,"y":11,"z":16},{"x":30,"y":12,"z":17},{"x":30,"y":11,"z":17},{"x":31,"y":12,"z":17},{"x":31,"y":11,"z":17},{"x":32,"y":12,"z":17},{"x":32,"y":11,"z":17},{"x":33,"y":12,"z":17},{"x":33,"y":11,"z":17},{"x":34,"y":12,"z":17},{"x":34,"y":11,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":40,"y":12,"z":15},{"x":40,"y":11,"z":15},{"x":41,"y":12,"z":15},{"x":41,"y":11,"z":15},{"x":42,"y":12,"z":15},{"x":42,"y":11,"z":15},{"x":43,"y":12,"z":15},{"x":43,"y":11,"z":15},{"x":44,"y":12,"z":15},{"x":44,"y":11,"z":15},{"x":40,"y":12,"z":16},{"x":40,"y":11,"z":16},{"x":41,"y":12,"z":16},{"x":41,"y":11,"z":16},{"x":42,"y":12,"z":16},{"x":42,"y":11,"z":16},{"x":43,"y":12,"z":16},{"x":43,"y":11,"z":16},{"x":44,"y":12,"z":16},{"x":44,"y":11,"z":16},{"x":40,"y":12,"z":17},{"x":40,"y":11,"z":17},{"x":41,"y":12,"z":17},{"x":41,"y":11,"z":17},{"x":42,"y":12,"z":17},{"x":42,"y":11,"z":17},{"x":43,"y":12,"z":17},{"x":43,"y":11,"z":17},{"x":44,"y":12,"z":17},{"x":44,"y":11,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":4,"y":25,"z":5},{"x":4,"y":24,"z":5},{"x":5,"y":25,"z":5},{"x":5,"y":24,"z":5},{"x":6,"y":25,"z":5},{"x":6,"y":24,"z":5},{"x":4,"y":25,"z":6},{"x":4,"y":24,"z":6},{"x":5,"y":25,"z":6},{"x":5,"y":24,"z":6},{"x":6,"y":25,"z":6},{"x":6,"y":24,"z":6},{"x":4,"y":25,"z":7},{"x":4,"y":24,"z":7},{"x":5,"y":25,"z":7},{"x":5,"y":24,"z":7},{"x":6,"y":25,"z":7},{"x":6,"y":24,"z":7},{"x":4,"y":25,"z":8},{"x":4,"y":24,"z":8},{"x":5,"y":25,"z":8},{"x":5,"y":24,"z":8},{"x":6,"y":25,"z":8},{"x":6,"y":24,"z":8}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9087fdc7-43e2-4736-b53b-33477ac65351.json b/src/main/resources/dgroomdata/9087fdc7-43e2-4736-b53b-33477ac65351.json
new file mode 100644
index 0000000..9d606b4
--- /dev/null
+++ b/src/main/resources/dgroomdata/9087fdc7-43e2-4736-b53b-33477ac65351.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,169,67,0,0,0,0,0,43,43,171,-1,-1,171,-1,-1,171,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,48,48,0,0,0,0,0,43,43,171,0,0,171,0,0,171,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,169,67,0,0,0,0,0,43,43,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,169,67,0,0,0,0,0,0,0,0,0,0,43,43,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,98,4,0,0,0,0,0,0,0,0,0,0,43,43,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,98,98,43,43,101,101,0,43,43,0,0,0,43,43,101,0,101,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,5,5,169,43,43,0,0,0,44,0,0,0,0,44,43,0,171,171,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,5,5,5,164,0,0,0,0,0,0,0,0,0,0,0,0,171,171,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,43,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,126,0,0,0,101,0,0,0,0,0,5,164,164,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,134,0,171,0,101,0,0,0,0,0,5,5,1,44,144,44,44,44,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,126,171,0,0,0,0,0,0,0,0,164,5,1,159,159,159,159,159,44,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,171,171,171,0,43,44,0,0,0,0,0,0,1,44,44,0,44,159,44,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,43,0,0,0,0,0,0,0,0,0,0,44,159,44,50,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,171,171,0,0,0,0,0,0,0,0,0,1,1,1,43,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,5,164,164,0,0,0,0,0,0,0,0,98,98,43,43,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,5,5,5,109,0,0,0,0,0,0,188,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,43,134,134,109,0,0,0,0,0,50,43,43,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,171,0,43,43,0,0,0,0,0,0,0,0,0,43,43,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,126,0,0,171,101,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,126,0,0,171,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,126,0,171,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9087fdc7-43e2-4736-b53b-33477ac65351","name":"Blue-skulls","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":28,"y":7,"z":3},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":28,"y":1,"z":25},{"x":28,"y":0,"z":25},{"x":29,"y":1,"z":25},{"x":29,"y":0,"z":25},{"x":30,"y":1,"z":25},{"x":30,"y":0,"z":25},{"x":28,"y":1,"z":26},{"x":28,"y":0,"z":26},{"x":29,"y":1,"z":26},{"x":29,"y":0,"z":26},{"x":30,"y":1,"z":26},{"x":30,"y":0,"z":26}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":28,"y":1,"z":2},{"x":28,"y":0,"z":2},{"x":29,"y":1,"z":2},{"x":29,"y":0,"z":2},{"x":28,"y":1,"z":3},{"x":28,"y":0,"z":3},{"x":29,"y":1,"z":3},{"x":29,"y":0,"z":3},{"x":28,"y":1,"z":4},{"x":28,"y":0,"z":4},{"x":29,"y":1,"z":4},{"x":29,"y":0,"z":4}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":25,"y":1,"z":2},{"x":25,"y":0,"z":2},{"x":26,"y":1,"z":2},{"x":26,"y":0,"z":2},{"x":25,"y":1,"z":3},{"x":25,"y":0,"z":3},{"x":26,"y":1,"z":3},{"x":26,"y":0,"z":3},{"x":25,"y":1,"z":4},{"x":25,"y":0,"z":4},{"x":26,"y":1,"z":4},{"x":26,"y":0,"z":4}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":22,"y":1,"z":2},{"x":22,"y":0,"z":2},{"x":23,"y":1,"z":2},{"x":23,"y":0,"z":2},{"x":22,"y":1,"z":3},{"x":22,"y":0,"z":3},{"x":23,"y":1,"z":3},{"x":23,"y":0,"z":3},{"x":22,"y":1,"z":4},{"x":22,"y":0,"z":4},{"x":23,"y":1,"z":4},{"x":23,"y":0,"z":4}]},"preRequisite":[],"mechType":"Tomb"},"journal-1":{"secretPoint":{"x":22,"y":7,"z":5},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/91068a01-bd3e-402c-99aa-e148f9f04c41.json b/src/main/resources/dgroomdata/91068a01-bd3e-402c-99aa-e148f9f04c41.json
new file mode 100644
index 0000000..ba22daa
--- /dev/null
+++ b/src/main/resources/dgroomdata/91068a01-bd3e-402c-99aa-e148f9f04c41.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,50,0,0,0,0,-1,-1,0,0,0,0,-1,-1,0,109,0,0,0,0,0,0,0,126,126,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,67,0,0,67,67,0,0,67,67,17,0,0,17,126,0,0,0,0,134,17,98,164,164,0,0,0,0,188,0,134,5,0,0,0,0,0,0,0,0,0,0,50,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,4,4,101,101,4,4,101,101,4,4,98,0,0,0,0,0,0,0,0,0,50,98,5,5,5,134,0,0,0,188,134,5,1,4,4,101,0,4,4,101,101,4,4,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,1,109,109,109,109,109,109,109,109,109,109,1,109,109,109,109,109,109,109,109,109,109,1,109,109,109,109,109,109,109,109,109,109,1,109,109,109,109,109,109,109,109,109,109,1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,1,109,109,109,109,109,109,109,109,109,109,1,109,109,109,109,109,109,109,109,109,109,1,109,109,109,109,109,109,109,109,109,109,1,0,0,0,0,0,0,0,0,109,109,1,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,4,109,109,109,4,4,98,98,4,101,101,4,4,101,101,4,4,1,183,0,183,50,0,0,0,0,0,0,98,98,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,4,4,4,98,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,126,126,0,0,0,50,188,5,169,98,188,183,188,0,17,0,0,0,144,17,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,44,4,98,98,109,0,0,98,44,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,5,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,0,0,98,101,101,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,51,51,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,188,0,188,0,0,164,164,0,0,50,98,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,188,159,109,0,0,0,159,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"91068a01-bd3e-402c-99aa-e148f9f04c41","name":"Purple-flags","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":40,"y":-21,"z":30},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":60,"y":-21,"z":25},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":33,"y":-3,"z":8},"secretType":"CHEST","preRequisite":[]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":36,"y":-15,"z":30},"preRequisite":["superboom-1:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":51,"y":-17,"z":25},{"x":51,"y":-18,"z":25},{"x":51,"y":-19,"z":25},{"x":51,"y":-20,"z":25},{"x":51,"y":-21,"z":25},{"x":51,"y":-17,"z":26},{"x":51,"y":-18,"z":26},{"x":51,"y":-19,"z":26},{"x":51,"y":-20,"z":26},{"x":51,"y":-21,"z":26},{"x":51,"y":-17,"z":27},{"x":51,"y":-18,"z":27},{"x":51,"y":-19,"z":27},{"x":51,"y":-20,"z":27},{"x":51,"y":-21,"z":27}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":21,"y":-20,"z":25},{"x":21,"y":-21,"z":25},{"x":21,"y":-18,"z":26},{"x":21,"y":-19,"z":26},{"x":21,"y":-20,"z":26},{"x":21,"y":-21,"z":26},{"x":21,"y":-19,"z":27},{"x":21,"y":-20,"z":27},{"x":21,"y":-21,"z":27}]},"preRequisite":[],"mechType":"BreakableWall"},"crypt-7":{"secretPoint":{"offsetPointList":[{"x":42,"y":-20,"z":2},{"x":42,"y":-21,"z":2},{"x":43,"y":-20,"z":2},{"x":43,"y":-21,"z":2},{"x":44,"y":-20,"z":2},{"x":44,"y":-21,"z":2},{"x":42,"y":-20,"z":3},{"x":42,"y":-21,"z":3},{"x":43,"y":-20,"z":3},{"x":43,"y":-21,"z":3},{"x":44,"y":-20,"z":3},{"x":44,"y":-21,"z":3},{"x":42,"y":-20,"z":4},{"x":42,"y":-21,"z":4},{"x":43,"y":-20,"z":4},{"x":43,"y":-21,"z":4},{"x":44,"y":-20,"z":4},{"x":44,"y":-21,"z":4},{"x":42,"y":-20,"z":5},{"x":42,"y":-21,"z":5},{"x":43,"y":-20,"z":5},{"x":43,"y":-21,"z":5},{"x":44,"y":-20,"z":5},{"x":44,"y":-21,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":21,"y":-11,"z":7},{"x":21,"y":-12,"z":7},{"x":22,"y":-11,"z":7},{"x":22,"y":-12,"z":7},{"x":23,"y":-11,"z":7},{"x":23,"y":-12,"z":7},{"x":21,"y":-11,"z":8},{"x":21,"y":-12,"z":8},{"x":22,"y":-11,"z":8},{"x":22,"y":-12,"z":8},{"x":23,"y":-11,"z":8},{"x":23,"y":-12,"z":8},{"x":21,"y":-11,"z":9},{"x":21,"y":-12,"z":9},{"x":22,"y":-11,"z":9},{"x":22,"y":-12,"z":9},{"x":23,"y":-11,"z":9},{"x":23,"y":-12,"z":9}]},"preRequisite":[],"mechType":"Tomb"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":28,"y":-21,"z":27},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":17,"y":-11,"z":2},{"x":17,"y":-12,"z":2},{"x":18,"y":-11,"z":2},{"x":18,"y":-12,"z":2},{"x":19,"y":-11,"z":2},{"x":19,"y":-12,"z":2},{"x":17,"y":-11,"z":3},{"x":17,"y":-12,"z":3},{"x":18,"y":-11,"z":3},{"x":18,"y":-12,"z":3},{"x":19,"y":-11,"z":3},{"x":19,"y":-12,"z":3},{"x":17,"y":-11,"z":4},{"x":17,"y":-12,"z":4},{"x":18,"y":-11,"z":4},{"x":18,"y":-12,"z":4},{"x":19,"y":-11,"z":4},{"x":19,"y":-12,"z":4}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":25,"y":-11,"z":28},{"x":25,"y":-12,"z":28},{"x":26,"y":-11,"z":28},{"x":26,"y":-12,"z":28},{"x":27,"y":-11,"z":28},{"x":27,"y":-12,"z":28},{"x":25,"y":-11,"z":29},{"x":25,"y":-12,"z":29},{"x":26,"y":-11,"z":29},{"x":26,"y":-12,"z":29},{"x":27,"y":-11,"z":29},{"x":27,"y":-12,"z":29},{"x":25,"y":-11,"z":30},{"x":25,"y":-12,"z":30},{"x":26,"y":-11,"z":30},{"x":26,"y":-12,"z":30},{"x":27,"y":-11,"z":30},{"x":27,"y":-12,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":40,"y":1,"z":2},{"x":40,"y":0,"z":2},{"x":41,"y":1,"z":2},{"x":41,"y":0,"z":2},{"x":40,"y":1,"z":3},{"x":40,"y":0,"z":3},{"x":41,"y":1,"z":3},{"x":41,"y":0,"z":3},{"x":40,"y":1,"z":4},{"x":40,"y":0,"z":4},{"x":41,"y":1,"z":4},{"x":41,"y":0,"z":4}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":34,"y":1,"z":2},{"x":34,"y":0,"z":2},{"x":35,"y":1,"z":2},{"x":35,"y":0,"z":2},{"x":34,"y":1,"z":3},{"x":34,"y":0,"z":3},{"x":35,"y":1,"z":3},{"x":35,"y":0,"z":3},{"x":34,"y":1,"z":4},{"x":34,"y":0,"z":4},{"x":35,"y":1,"z":4},{"x":35,"y":0,"z":4}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":2,"y":2,"z":26},{"x":2,"y":1,"z":26},{"x":3,"y":2,"z":26},{"x":3,"y":1,"z":26},{"x":4,"y":2,"z":26},{"x":4,"y":1,"z":26},{"x":2,"y":2,"z":27},{"x":2,"y":1,"z":27},{"x":3,"y":2,"z":27},{"x":3,"y":1,"z":27},{"x":4,"y":2,"z":27},{"x":4,"y":1,"z":27}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":7,"y":-13,"z":29},"secretType":"ESSENCE","preRequisite":[]}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9139cb1c-b6f3-4bac-92de-909b1eb73449.json b/src/main/resources/dgroomdata/9139cb1c-b6f3-4bac-92de-909b1eb73449.json
new file mode 100644
index 0000000..d44ceed
--- /dev/null
+++ b/src/main/resources/dgroomdata/9139cb1c-b6f3-4bac-92de-909b1eb73449.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,18,18,0,171,171,171,0,0,0,0,7,1,1,171,7,7,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,7,7,7,0,0,0,0,0,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,1,1,171,18,0,0,0,0,0,171,171,171,0,0,159,35,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9139cb1c-b6f3-4bac-92de-909b1eb73449","name":"puzzle-water","processorId":"puzzle_water_solver","properties":{"doors":{"offsetPointList":[{"x":16,"y":-13,"z":15},{"x":17,"y":-13,"z":15},{"x":18,"y":-13,"z":15},{"x":19,"y":-13,"z":15},{"x":20,"y":-13,"z":15}]},"levers":{"offsetPointList":[{"x":11,"y":-9,"z":11},{"x":16,"y":-9,"z":11},{"x":21,"y":-9,"z":11},{"x":21,"y":-9,"z":21},{"x":16,"y":-9,"z":21},{"x":11,"y":-9,"z":21}]},"back":{"offsetPointList":[{"x":28,"y":12,"z":7},{"x":28,"y":11,"z":7},{"x":28,"y":10,"z":7},{"x":28,"y":9,"z":7},{"x":28,"y":8,"z":7},{"x":28,"y":7,"z":7},{"x":28,"y":6,"z":7},{"x":28,"y":5,"z":7},{"x":28,"y":4,"z":7},{"x":28,"y":3,"z":7},{"x":28,"y":2,"z":7},{"x":28,"y":1,"z":7},{"x":28,"y":0,"z":7},{"x":28,"y":-1,"z":7},{"x":28,"y":-2,"z":7},{"x":28,"y":-3,"z":7},{"x":28,"y":-4,"z":7},{"x":28,"y":-5,"z":7},{"x":28,"y":-6,"z":7},{"x":28,"y":-7,"z":7},{"x":28,"y":-8,"z":7},{"x":28,"y":-9,"z":7},{"x":28,"y":-10,"z":7},{"x":28,"y":-11,"z":7},{"x":28,"y":-12,"z":7},{"x":28,"y":12,"z":8},{"x":28,"y":11,"z":8},{"x":28,"y":10,"z":8},{"x":28,"y":9,"z":8},{"x":28,"y":8,"z":8},{"x":28,"y":7,"z":8},{"x":28,"y":6,"z":8},{"x":28,"y":5,"z":8},{"x":28,"y":4,"z":8},{"x":28,"y":3,"z":8},{"x":28,"y":2,"z":8},{"x":28,"y":1,"z":8},{"x":28,"y":0,"z":8},{"x":28,"y":-1,"z":8},{"x":28,"y":-2,"z":8},{"x":28,"y":-3,"z":8},{"x":28,"y":-4,"z":8},{"x":28,"y":-5,"z":8},{"x":28,"y":-6,"z":8},{"x":28,"y":-7,"z":8},{"x":28,"y":-8,"z":8},{"x":28,"y":-9,"z":8},{"x":28,"y":-10,"z":8},{"x":28,"y":-11,"z":8},{"x":28,"y":-12,"z":8},{"x":28,"y":12,"z":9},{"x":28,"y":11,"z":9},{"x":28,"y":10,"z":9},{"x":28,"y":9,"z":9},{"x":28,"y":8,"z":9},{"x":28,"y":7,"z":9},{"x":28,"y":6,"z":9},{"x":28,"y":5,"z":9},{"x":28,"y":4,"z":9},{"x":28,"y":3,"z":9},{"x":28,"y":2,"z":9},{"x":28,"y":1,"z":9},{"x":28,"y":0,"z":9},{"x":28,"y":-1,"z":9},{"x":28,"y":-2,"z":9},{"x":28,"y":-3,"z":9},{"x":28,"y":-4,"z":9},{"x":28,"y":-5,"z":9},{"x":28,"y":-6,"z":9},{"x":28,"y":-7,"z":9},{"x":28,"y":-8,"z":9},{"x":28,"y":-9,"z":9},{"x":28,"y":-10,"z":9},{"x":28,"y":-11,"z":9},{"x":28,"y":-12,"z":9},{"x":28,"y":12,"z":10},{"x":28,"y":11,"z":10},{"x":28,"y":10,"z":10},{"x":28,"y":9,"z":10},{"x":28,"y":8,"z":10},{"x":28,"y":7,"z":10},{"x":28,"y":6,"z":10},{"x":28,"y":5,"z":10},{"x":28,"y":4,"z":10},{"x":28,"y":3,"z":10},{"x":28,"y":2,"z":10},{"x":28,"y":1,"z":10},{"x":28,"y":0,"z":10},{"x":28,"y":-1,"z":10},{"x":28,"y":-2,"z":10},{"x":28,"y":-3,"z":10},{"x":28,"y":-4,"z":10},{"x":28,"y":-5,"z":10},{"x":28,"y":-6,"z":10},{"x":28,"y":-7,"z":10},{"x":28,"y":-8,"z":10},{"x":28,"y":-9,"z":10},{"x":28,"y":-10,"z":10},{"x":28,"y":-11,"z":10},{"x":28,"y":-12,"z":10},{"x":28,"y":12,"z":11},{"x":28,"y":11,"z":11},{"x":28,"y":10,"z":11},{"x":28,"y":9,"z":11},{"x":28,"y":8,"z":11},{"x":28,"y":7,"z":11},{"x":28,"y":6,"z":11},{"x":28,"y":5,"z":11},{"x":28,"y":4,"z":11},{"x":28,"y":3,"z":11},{"x":28,"y":2,"z":11},{"x":28,"y":1,"z":11},{"x":28,"y":0,"z":11},{"x":28,"y":-1,"z":11},{"x":28,"y":-2,"z":11},{"x":28,"y":-3,"z":11},{"x":28,"y":-4,"z":11},{"x":28,"y":-5,"z":11},{"x":28,"y":-6,"z":11},{"x":28,"y":-7,"z":11},{"x":28,"y":-8,"z":11},{"x":28,"y":-9,"z":11},{"x":28,"y":-10,"z":11},{"x":28,"y":-11,"z":11},{"x":28,"y":-12,"z":11},{"x":28,"y":12,"z":12},{"x":28,"y":11,"z":12},{"x":28,"y":10,"z":12},{"x":28,"y":9,"z":12},{"x":28,"y":8,"z":12},{"x":28,"y":7,"z":12},{"x":28,"y":6,"z":12},{"x":28,"y":5,"z":12},{"x":28,"y":4,"z":12},{"x":28,"y":3,"z":12},{"x":28,"y":2,"z":12},{"x":28,"y":1,"z":12},{"x":28,"y":0,"z":12},{"x":28,"y":-1,"z":12},{"x":28,"y":-2,"z":12},{"x":28,"y":-3,"z":12},{"x":28,"y":-4,"z":12},{"x":28,"y":-5,"z":12},{"x":28,"y":-6,"z":12},{"x":28,"y":-7,"z":12},{"x":28,"y":-8,"z":12},{"x":28,"y":-9,"z":12},{"x":28,"y":-10,"z":12},{"x":28,"y":-11,"z":12},{"x":28,"y":-12,"z":12},{"x":28,"y":12,"z":13},{"x":28,"y":11,"z":13},{"x":28,"y":10,"z":13},{"x":28,"y":9,"z":13},{"x":28,"y":8,"z":13},{"x":28,"y":7,"z":13},{"x":28,"y":6,"z":13},{"x":28,"y":5,"z":13},{"x":28,"y":4,"z":13},{"x":28,"y":3,"z":13},{"x":28,"y":2,"z":13},{"x":28,"y":1,"z":13},{"x":28,"y":0,"z":13},{"x":28,"y":-1,"z":13},{"x":28,"y":-2,"z":13},{"x":28,"y":-3,"z":13},{"x":28,"y":-4,"z":13},{"x":28,"y":-5,"z":13},{"x":28,"y":-6,"z":13},{"x":28,"y":-7,"z":13},{"x":28,"y":-8,"z":13},{"x":28,"y":-9,"z":13},{"x":28,"y":-10,"z":13},{"x":28,"y":-11,"z":13},{"x":28,"y":-12,"z":13},{"x":28,"y":12,"z":14},{"x":28,"y":11,"z":14},{"x":28,"y":10,"z":14},{"x":28,"y":9,"z":14},{"x":28,"y":8,"z":14},{"x":28,"y":7,"z":14},{"x":28,"y":6,"z":14},{"x":28,"y":5,"z":14},{"x":28,"y":4,"z":14},{"x":28,"y":3,"z":14},{"x":28,"y":2,"z":14},{"x":28,"y":1,"z":14},{"x":28,"y":0,"z":14},{"x":28,"y":-1,"z":14},{"x":28,"y":-2,"z":14},{"x":28,"y":-3,"z":14},{"x":28,"y":-4,"z":14},{"x":28,"y":-5,"z":14},{"x":28,"y":-6,"z":14},{"x":28,"y":-7,"z":14},{"x":28,"y":-8,"z":14},{"x":28,"y":-9,"z":14},{"x":28,"y":-10,"z":14},{"x":28,"y":-11,"z":14},{"x":28,"y":-12,"z":14},{"x":28,"y":12,"z":15},{"x":28,"y":11,"z":15},{"x":28,"y":10,"z":15},{"x":28,"y":9,"z":15},{"x":28,"y":8,"z":15},{"x":28,"y":7,"z":15},{"x":28,"y":6,"z":15},{"x":28,"y":5,"z":15},{"x":28,"y":4,"z":15},{"x":28,"y":3,"z":15},{"x":28,"y":2,"z":15},{"x":28,"y":1,"z":15},{"x":28,"y":0,"z":15},{"x":28,"y":-1,"z":15},{"x":28,"y":-2,"z":15},{"x":28,"y":-3,"z":15},{"x":28,"y":-4,"z":15},{"x":28,"y":-5,"z":15},{"x":28,"y":-6,"z":15},{"x":28,"y":-7,"z":15},{"x":28,"y":-8,"z":15},{"x":28,"y":-9,"z":15},{"x":28,"y":-10,"z":15},{"x":28,"y":-11,"z":15},{"x":28,"y":-12,"z":15},{"x":28,"y":12,"z":16},{"x":28,"y":11,"z":16},{"x":28,"y":10,"z":16},{"x":28,"y":9,"z":16},{"x":28,"y":8,"z":16},{"x":28,"y":7,"z":16},{"x":28,"y":6,"z":16},{"x":28,"y":5,"z":16},{"x":28,"y":4,"z":16},{"x":28,"y":3,"z":16},{"x":28,"y":2,"z":16},{"x":28,"y":1,"z":16},{"x":28,"y":0,"z":16},{"x":28,"y":-1,"z":16},{"x":28,"y":-2,"z":16},{"x":28,"y":-3,"z":16},{"x":28,"y":-4,"z":16},{"x":28,"y":-5,"z":16},{"x":28,"y":-6,"z":16},{"x":28,"y":-7,"z":16},{"x":28,"y":-8,"z":16},{"x":28,"y":-9,"z":16},{"x":28,"y":-10,"z":16},{"x":28,"y":-11,"z":16},{"x":28,"y":-12,"z":16},{"x":28,"y":12,"z":17},{"x":28,"y":11,"z":17},{"x":28,"y":10,"z":17},{"x":28,"y":9,"z":17},{"x":28,"y":8,"z":17},{"x":28,"y":7,"z":17},{"x":28,"y":6,"z":17},{"x":28,"y":5,"z":17},{"x":28,"y":4,"z":17},{"x":28,"y":3,"z":17},{"x":28,"y":2,"z":17},{"x":28,"y":1,"z":17},{"x":28,"y":0,"z":17},{"x":28,"y":-1,"z":17},{"x":28,"y":-2,"z":17},{"x":28,"y":-3,"z":17},{"x":28,"y":-4,"z":17},{"x":28,"y":-5,"z":17},{"x":28,"y":-6,"z":17},{"x":28,"y":-7,"z":17},{"x":28,"y":-8,"z":17},{"x":28,"y":-9,"z":17},{"x":28,"y":-10,"z":17},{"x":28,"y":-11,"z":17},{"x":28,"y":-12,"z":17},{"x":28,"y":12,"z":18},{"x":28,"y":11,"z":18},{"x":28,"y":10,"z":18},{"x":28,"y":9,"z":18},{"x":28,"y":8,"z":18},{"x":28,"y":7,"z":18},{"x":28,"y":6,"z":18},{"x":28,"y":5,"z":18},{"x":28,"y":4,"z":18},{"x":28,"y":3,"z":18},{"x":28,"y":2,"z":18},{"x":28,"y":1,"z":18},{"x":28,"y":0,"z":18},{"x":28,"y":-1,"z":18},{"x":28,"y":-2,"z":18},{"x":28,"y":-3,"z":18},{"x":28,"y":-4,"z":18},{"x":28,"y":-5,"z":18},{"x":28,"y":-6,"z":18},{"x":28,"y":-7,"z":18},{"x":28,"y":-8,"z":18},{"x":28,"y":-9,"z":18},{"x":28,"y":-10,"z":18},{"x":28,"y":-11,"z":18},{"x":28,"y":-12,"z":18},{"x":28,"y":12,"z":19},{"x":28,"y":11,"z":19},{"x":28,"y":10,"z":19},{"x":28,"y":9,"z":19},{"x":28,"y":8,"z":19},{"x":28,"y":7,"z":19},{"x":28,"y":6,"z":19},{"x":28,"y":5,"z":19},{"x":28,"y":4,"z":19},{"x":28,"y":3,"z":19},{"x":28,"y":2,"z":19},{"x":28,"y":1,"z":19},{"x":28,"y":0,"z":19},{"x":28,"y":-1,"z":19},{"x":28,"y":-2,"z":19},{"x":28,"y":-3,"z":19},{"x":28,"y":-4,"z":19},{"x":28,"y":-5,"z":19},{"x":28,"y":-6,"z":19},{"x":28,"y":-7,"z":19},{"x":28,"y":-8,"z":19},{"x":28,"y":-9,"z":19},{"x":28,"y":-10,"z":19},{"x":28,"y":-11,"z":19},{"x":28,"y":-12,"z":19},{"x":28,"y":12,"z":20},{"x":28,"y":11,"z":20},{"x":28,"y":10,"z":20},{"x":28,"y":9,"z":20},{"x":28,"y":8,"z":20},{"x":28,"y":7,"z":20},{"x":28,"y":6,"z":20},{"x":28,"y":5,"z":20},{"x":28,"y":4,"z":20},{"x":28,"y":3,"z":20},{"x":28,"y":2,"z":20},{"x":28,"y":1,"z":20},{"x":28,"y":0,"z":20},{"x":28,"y":-1,"z":20},{"x":28,"y":-2,"z":20},{"x":28,"y":-3,"z":20},{"x":28,"y":-4,"z":20},{"x":28,"y":-5,"z":20},{"x":28,"y":-6,"z":20},{"x":28,"y":-7,"z":20},{"x":28,"y":-8,"z":20},{"x":28,"y":-9,"z":20},{"x":28,"y":-10,"z":20},{"x":28,"y":-11,"z":20},{"x":28,"y":-12,"z":20},{"x":28,"y":12,"z":21},{"x":28,"y":11,"z":21},{"x":28,"y":10,"z":21},{"x":28,"y":9,"z":21},{"x":28,"y":8,"z":21},{"x":28,"y":7,"z":21},{"x":28,"y":6,"z":21},{"x":28,"y":5,"z":21},{"x":28,"y":4,"z":21},{"x":28,"y":3,"z":21},{"x":28,"y":2,"z":21},{"x":28,"y":1,"z":21},{"x":28,"y":0,"z":21},{"x":28,"y":-1,"z":21},{"x":28,"y":-2,"z":21},{"x":28,"y":-3,"z":21},{"x":28,"y":-4,"z":21},{"x":28,"y":-5,"z":21},{"x":28,"y":-6,"z":21},{"x":28,"y":-7,"z":21},{"x":28,"y":-8,"z":21},{"x":28,"y":-9,"z":21},{"x":28,"y":-10,"z":21},{"x":28,"y":-11,"z":21},{"x":28,"y":-12,"z":21},{"x":28,"y":12,"z":22},{"x":28,"y":11,"z":22},{"x":28,"y":10,"z":22},{"x":28,"y":9,"z":22},{"x":28,"y":8,"z":22},{"x":28,"y":7,"z":22},{"x":28,"y":6,"z":22},{"x":28,"y":5,"z":22},{"x":28,"y":4,"z":22},{"x":28,"y":3,"z":22},{"x":28,"y":2,"z":22},{"x":28,"y":1,"z":22},{"x":28,"y":0,"z":22},{"x":28,"y":-1,"z":22},{"x":28,"y":-2,"z":22},{"x":28,"y":-3,"z":22},{"x":28,"y":-4,"z":22},{"x":28,"y":-5,"z":22},{"x":28,"y":-6,"z":22},{"x":28,"y":-7,"z":22},{"x":28,"y":-8,"z":22},{"x":28,"y":-9,"z":22},{"x":28,"y":-10,"z":22},{"x":28,"y":-11,"z":22},{"x":28,"y":-12,"z":22},{"x":28,"y":12,"z":23},{"x":28,"y":11,"z":23},{"x":28,"y":10,"z":23},{"x":28,"y":9,"z":23},{"x":28,"y":8,"z":23},{"x":28,"y":7,"z":23},{"x":28,"y":6,"z":23},{"x":28,"y":5,"z":23},{"x":28,"y":4,"z":23},{"x":28,"y":3,"z":23},{"x":28,"y":2,"z":23},{"x":28,"y":1,"z":23},{"x":28,"y":0,"z":23},{"x":28,"y":-1,"z":23},{"x":28,"y":-2,"z":23},{"x":28,"y":-3,"z":23},{"x":28,"y":-4,"z":23},{"x":28,"y":-5,"z":23},{"x":28,"y":-6,"z":23},{"x":28,"y":-7,"z":23},{"x":28,"y":-8,"z":23},{"x":28,"y":-9,"z":23},{"x":28,"y":-10,"z":23},{"x":28,"y":-11,"z":23},{"x":28,"y":-12,"z":23},{"x":28,"y":12,"z":24},{"x":28,"y":11,"z":24},{"x":28,"y":10,"z":24},{"x":28,"y":9,"z":24},{"x":28,"y":8,"z":24},{"x":28,"y":7,"z":24},{"x":28,"y":6,"z":24},{"x":28,"y":5,"z":24},{"x":28,"y":4,"z":24},{"x":28,"y":3,"z":24},{"x":28,"y":2,"z":24},{"x":28,"y":1,"z":24},{"x":28,"y":0,"z":24},{"x":28,"y":-1,"z":24},{"x":28,"y":-2,"z":24},{"x":28,"y":-3,"z":24},{"x":28,"y":-4,"z":24},{"x":28,"y":-5,"z":24},{"x":28,"y":-6,"z":24},{"x":28,"y":-7,"z":24},{"x":28,"y":-8,"z":24},{"x":28,"y":-9,"z":24},{"x":28,"y":-10,"z":24},{"x":28,"y":-11,"z":24},{"x":28,"y":-12,"z":24},{"x":28,"y":12,"z":25},{"x":28,"y":11,"z":25},{"x":28,"y":10,"z":25},{"x":28,"y":9,"z":25},{"x":28,"y":8,"z":25},{"x":28,"y":7,"z":25},{"x":28,"y":6,"z":25},{"x":28,"y":5,"z":25},{"x":28,"y":4,"z":25},{"x":28,"y":3,"z":25},{"x":28,"y":2,"z":25},{"x":28,"y":1,"z":25},{"x":28,"y":0,"z":25},{"x":28,"y":-1,"z":25},{"x":28,"y":-2,"z":25},{"x":28,"y":-3,"z":25},{"x":28,"y":-4,"z":25},{"x":28,"y":-5,"z":25},{"x":28,"y":-6,"z":25},{"x":28,"y":-7,"z":25},{"x":28,"y":-8,"z":25},{"x":28,"y":-9,"z":25},{"x":28,"y":-10,"z":25},{"x":28,"y":-11,"z":25},{"x":28,"y":-12,"z":25}]},"water-lever":{"x":6,"y":-10,"z":16},"front":{"offsetPointList":[{"x":27,"y":12,"z":7},{"x":27,"y":11,"z":7},{"x":27,"y":10,"z":7},{"x":27,"y":9,"z":7},{"x":27,"y":8,"z":7},{"x":27,"y":7,"z":7},{"x":27,"y":6,"z":7},{"x":27,"y":5,"z":7},{"x":27,"y":4,"z":7},{"x":27,"y":3,"z":7},{"x":27,"y":2,"z":7},{"x":27,"y":1,"z":7},{"x":27,"y":0,"z":7},{"x":27,"y":-1,"z":7},{"x":27,"y":-2,"z":7},{"x":27,"y":-3,"z":7},{"x":27,"y":-4,"z":7},{"x":27,"y":-5,"z":7},{"x":27,"y":-6,"z":7},{"x":27,"y":-7,"z":7},{"x":27,"y":-8,"z":7},{"x":27,"y":-9,"z":7},{"x":27,"y":-10,"z":7},{"x":27,"y":-11,"z":7},{"x":27,"y":-12,"z":7},{"x":27,"y":12,"z":8},{"x":27,"y":11,"z":8},{"x":27,"y":10,"z":8},{"x":27,"y":9,"z":8},{"x":27,"y":8,"z":8},{"x":27,"y":7,"z":8},{"x":27,"y":6,"z":8},{"x":27,"y":5,"z":8},{"x":27,"y":4,"z":8},{"x":27,"y":3,"z":8},{"x":27,"y":2,"z":8},{"x":27,"y":1,"z":8},{"x":27,"y":0,"z":8},{"x":27,"y":-1,"z":8},{"x":27,"y":-2,"z":8},{"x":27,"y":-3,"z":8},{"x":27,"y":-4,"z":8},{"x":27,"y":-5,"z":8},{"x":27,"y":-6,"z":8},{"x":27,"y":-7,"z":8},{"x":27,"y":-8,"z":8},{"x":27,"y":-9,"z":8},{"x":27,"y":-10,"z":8},{"x":27,"y":-11,"z":8},{"x":27,"y":-12,"z":8},{"x":27,"y":12,"z":9},{"x":27,"y":11,"z":9},{"x":27,"y":10,"z":9},{"x":27,"y":9,"z":9},{"x":27,"y":8,"z":9},{"x":27,"y":7,"z":9},{"x":27,"y":6,"z":9},{"x":27,"y":5,"z":9},{"x":27,"y":4,"z":9},{"x":27,"y":3,"z":9},{"x":27,"y":2,"z":9},{"x":27,"y":1,"z":9},{"x":27,"y":0,"z":9},{"x":27,"y":-1,"z":9},{"x":27,"y":-2,"z":9},{"x":27,"y":-3,"z":9},{"x":27,"y":-4,"z":9},{"x":27,"y":-5,"z":9},{"x":27,"y":-6,"z":9},{"x":27,"y":-7,"z":9},{"x":27,"y":-8,"z":9},{"x":27,"y":-9,"z":9},{"x":27,"y":-10,"z":9},{"x":27,"y":-11,"z":9},{"x":27,"y":-12,"z":9},{"x":27,"y":12,"z":10},{"x":27,"y":11,"z":10},{"x":27,"y":10,"z":10},{"x":27,"y":9,"z":10},{"x":27,"y":8,"z":10},{"x":27,"y":7,"z":10},{"x":27,"y":6,"z":10},{"x":27,"y":5,"z":10},{"x":27,"y":4,"z":10},{"x":27,"y":3,"z":10},{"x":27,"y":2,"z":10},{"x":27,"y":1,"z":10},{"x":27,"y":0,"z":10},{"x":27,"y":-1,"z":10},{"x":27,"y":-2,"z":10},{"x":27,"y":-3,"z":10},{"x":27,"y":-4,"z":10},{"x":27,"y":-5,"z":10},{"x":27,"y":-6,"z":10},{"x":27,"y":-7,"z":10},{"x":27,"y":-8,"z":10},{"x":27,"y":-9,"z":10},{"x":27,"y":-10,"z":10},{"x":27,"y":-11,"z":10},{"x":27,"y":-12,"z":10},{"x":27,"y":12,"z":11},{"x":27,"y":11,"z":11},{"x":27,"y":10,"z":11},{"x":27,"y":9,"z":11},{"x":27,"y":8,"z":11},{"x":27,"y":7,"z":11},{"x":27,"y":6,"z":11},{"x":27,"y":5,"z":11},{"x":27,"y":4,"z":11},{"x":27,"y":3,"z":11},{"x":27,"y":2,"z":11},{"x":27,"y":1,"z":11},{"x":27,"y":0,"z":11},{"x":27,"y":-1,"z":11},{"x":27,"y":-2,"z":11},{"x":27,"y":-3,"z":11},{"x":27,"y":-4,"z":11},{"x":27,"y":-5,"z":11},{"x":27,"y":-6,"z":11},{"x":27,"y":-7,"z":11},{"x":27,"y":-8,"z":11},{"x":27,"y":-9,"z":11},{"x":27,"y":-10,"z":11},{"x":27,"y":-11,"z":11},{"x":27,"y":-12,"z":11},{"x":27,"y":12,"z":12},{"x":27,"y":11,"z":12},{"x":27,"y":10,"z":12},{"x":27,"y":9,"z":12},{"x":27,"y":8,"z":12},{"x":27,"y":7,"z":12},{"x":27,"y":6,"z":12},{"x":27,"y":5,"z":12},{"x":27,"y":4,"z":12},{"x":27,"y":3,"z":12},{"x":27,"y":2,"z":12},{"x":27,"y":1,"z":12},{"x":27,"y":0,"z":12},{"x":27,"y":-1,"z":12},{"x":27,"y":-2,"z":12},{"x":27,"y":-3,"z":12},{"x":27,"y":-4,"z":12},{"x":27,"y":-5,"z":12},{"x":27,"y":-6,"z":12},{"x":27,"y":-7,"z":12},{"x":27,"y":-8,"z":12},{"x":27,"y":-9,"z":12},{"x":27,"y":-10,"z":12},{"x":27,"y":-11,"z":12},{"x":27,"y":-12,"z":12},{"x":27,"y":12,"z":13},{"x":27,"y":11,"z":13},{"x":27,"y":10,"z":13},{"x":27,"y":9,"z":13},{"x":27,"y":8,"z":13},{"x":27,"y":7,"z":13},{"x":27,"y":6,"z":13},{"x":27,"y":5,"z":13},{"x":27,"y":4,"z":13},{"x":27,"y":3,"z":13},{"x":27,"y":2,"z":13},{"x":27,"y":1,"z":13},{"x":27,"y":0,"z":13},{"x":27,"y":-1,"z":13},{"x":27,"y":-2,"z":13},{"x":27,"y":-3,"z":13},{"x":27,"y":-4,"z":13},{"x":27,"y":-5,"z":13},{"x":27,"y":-6,"z":13},{"x":27,"y":-7,"z":13},{"x":27,"y":-8,"z":13},{"x":27,"y":-9,"z":13},{"x":27,"y":-10,"z":13},{"x":27,"y":-11,"z":13},{"x":27,"y":-12,"z":13},{"x":27,"y":12,"z":14},{"x":27,"y":11,"z":14},{"x":27,"y":10,"z":14},{"x":27,"y":9,"z":14},{"x":27,"y":8,"z":14},{"x":27,"y":7,"z":14},{"x":27,"y":6,"z":14},{"x":27,"y":5,"z":14},{"x":27,"y":4,"z":14},{"x":27,"y":3,"z":14},{"x":27,"y":2,"z":14},{"x":27,"y":1,"z":14},{"x":27,"y":0,"z":14},{"x":27,"y":-1,"z":14},{"x":27,"y":-2,"z":14},{"x":27,"y":-3,"z":14},{"x":27,"y":-4,"z":14},{"x":27,"y":-5,"z":14},{"x":27,"y":-6,"z":14},{"x":27,"y":-7,"z":14},{"x":27,"y":-8,"z":14},{"x":27,"y":-9,"z":14},{"x":27,"y":-10,"z":14},{"x":27,"y":-11,"z":14},{"x":27,"y":-12,"z":14},{"x":27,"y":12,"z":15},{"x":27,"y":11,"z":15},{"x":27,"y":10,"z":15},{"x":27,"y":9,"z":15},{"x":27,"y":8,"z":15},{"x":27,"y":7,"z":15},{"x":27,"y":6,"z":15},{"x":27,"y":5,"z":15},{"x":27,"y":4,"z":15},{"x":27,"y":3,"z":15},{"x":27,"y":2,"z":15},{"x":27,"y":1,"z":15},{"x":27,"y":0,"z":15},{"x":27,"y":-1,"z":15},{"x":27,"y":-2,"z":15},{"x":27,"y":-3,"z":15},{"x":27,"y":-4,"z":15},{"x":27,"y":-5,"z":15},{"x":27,"y":-6,"z":15},{"x":27,"y":-7,"z":15},{"x":27,"y":-8,"z":15},{"x":27,"y":-9,"z":15},{"x":27,"y":-10,"z":15},{"x":27,"y":-11,"z":15},{"x":27,"y":-12,"z":15},{"x":27,"y":12,"z":16},{"x":27,"y":11,"z":16},{"x":27,"y":10,"z":16},{"x":27,"y":9,"z":16},{"x":27,"y":8,"z":16},{"x":27,"y":7,"z":16},{"x":27,"y":6,"z":16},{"x":27,"y":5,"z":16},{"x":27,"y":4,"z":16},{"x":27,"y":3,"z":16},{"x":27,"y":2,"z":16},{"x":27,"y":1,"z":16},{"x":27,"y":0,"z":16},{"x":27,"y":-1,"z":16},{"x":27,"y":-2,"z":16},{"x":27,"y":-3,"z":16},{"x":27,"y":-4,"z":16},{"x":27,"y":-5,"z":16},{"x":27,"y":-6,"z":16},{"x":27,"y":-7,"z":16},{"x":27,"y":-8,"z":16},{"x":27,"y":-9,"z":16},{"x":27,"y":-10,"z":16},{"x":27,"y":-11,"z":16},{"x":27,"y":-12,"z":16},{"x":27,"y":12,"z":17},{"x":27,"y":11,"z":17},{"x":27,"y":10,"z":17},{"x":27,"y":9,"z":17},{"x":27,"y":8,"z":17},{"x":27,"y":7,"z":17},{"x":27,"y":6,"z":17},{"x":27,"y":5,"z":17},{"x":27,"y":4,"z":17},{"x":27,"y":3,"z":17},{"x":27,"y":2,"z":17},{"x":27,"y":1,"z":17},{"x":27,"y":0,"z":17},{"x":27,"y":-1,"z":17},{"x":27,"y":-2,"z":17},{"x":27,"y":-3,"z":17},{"x":27,"y":-4,"z":17},{"x":27,"y":-5,"z":17},{"x":27,"y":-6,"z":17},{"x":27,"y":-7,"z":17},{"x":27,"y":-8,"z":17},{"x":27,"y":-9,"z":17},{"x":27,"y":-10,"z":17},{"x":27,"y":-11,"z":17},{"x":27,"y":-12,"z":17},{"x":27,"y":12,"z":18},{"x":27,"y":11,"z":18},{"x":27,"y":10,"z":18},{"x":27,"y":9,"z":18},{"x":27,"y":8,"z":18},{"x":27,"y":7,"z":18},{"x":27,"y":6,"z":18},{"x":27,"y":5,"z":18},{"x":27,"y":4,"z":18},{"x":27,"y":3,"z":18},{"x":27,"y":2,"z":18},{"x":27,"y":1,"z":18},{"x":27,"y":0,"z":18},{"x":27,"y":-1,"z":18},{"x":27,"y":-2,"z":18},{"x":27,"y":-3,"z":18},{"x":27,"y":-4,"z":18},{"x":27,"y":-5,"z":18},{"x":27,"y":-6,"z":18},{"x":27,"y":-7,"z":18},{"x":27,"y":-8,"z":18},{"x":27,"y":-9,"z":18},{"x":27,"y":-10,"z":18},{"x":27,"y":-11,"z":18},{"x":27,"y":-12,"z":18},{"x":27,"y":12,"z":19},{"x":27,"y":11,"z":19},{"x":27,"y":10,"z":19},{"x":27,"y":9,"z":19},{"x":27,"y":8,"z":19},{"x":27,"y":7,"z":19},{"x":27,"y":6,"z":19},{"x":27,"y":5,"z":19},{"x":27,"y":4,"z":19},{"x":27,"y":3,"z":19},{"x":27,"y":2,"z":19},{"x":27,"y":1,"z":19},{"x":27,"y":0,"z":19},{"x":27,"y":-1,"z":19},{"x":27,"y":-2,"z":19},{"x":27,"y":-3,"z":19},{"x":27,"y":-4,"z":19},{"x":27,"y":-5,"z":19},{"x":27,"y":-6,"z":19},{"x":27,"y":-7,"z":19},{"x":27,"y":-8,"z":19},{"x":27,"y":-9,"z":19},{"x":27,"y":-10,"z":19},{"x":27,"y":-11,"z":19},{"x":27,"y":-12,"z":19},{"x":27,"y":12,"z":20},{"x":27,"y":11,"z":20},{"x":27,"y":10,"z":20},{"x":27,"y":9,"z":20},{"x":27,"y":8,"z":20},{"x":27,"y":7,"z":20},{"x":27,"y":6,"z":20},{"x":27,"y":5,"z":20},{"x":27,"y":4,"z":20},{"x":27,"y":3,"z":20},{"x":27,"y":2,"z":20},{"x":27,"y":1,"z":20},{"x":27,"y":0,"z":20},{"x":27,"y":-1,"z":20},{"x":27,"y":-2,"z":20},{"x":27,"y":-3,"z":20},{"x":27,"y":-4,"z":20},{"x":27,"y":-5,"z":20},{"x":27,"y":-6,"z":20},{"x":27,"y":-7,"z":20},{"x":27,"y":-8,"z":20},{"x":27,"y":-9,"z":20},{"x":27,"y":-10,"z":20},{"x":27,"y":-11,"z":20},{"x":27,"y":-12,"z":20},{"x":27,"y":12,"z":21},{"x":27,"y":11,"z":21},{"x":27,"y":10,"z":21},{"x":27,"y":9,"z":21},{"x":27,"y":8,"z":21},{"x":27,"y":7,"z":21},{"x":27,"y":6,"z":21},{"x":27,"y":5,"z":21},{"x":27,"y":4,"z":21},{"x":27,"y":3,"z":21},{"x":27,"y":2,"z":21},{"x":27,"y":1,"z":21},{"x":27,"y":0,"z":21},{"x":27,"y":-1,"z":21},{"x":27,"y":-2,"z":21},{"x":27,"y":-3,"z":21},{"x":27,"y":-4,"z":21},{"x":27,"y":-5,"z":21},{"x":27,"y":-6,"z":21},{"x":27,"y":-7,"z":21},{"x":27,"y":-8,"z":21},{"x":27,"y":-9,"z":21},{"x":27,"y":-10,"z":21},{"x":27,"y":-11,"z":21},{"x":27,"y":-12,"z":21},{"x":27,"y":12,"z":22},{"x":27,"y":11,"z":22},{"x":27,"y":10,"z":22},{"x":27,"y":9,"z":22},{"x":27,"y":8,"z":22},{"x":27,"y":7,"z":22},{"x":27,"y":6,"z":22},{"x":27,"y":5,"z":22},{"x":27,"y":4,"z":22},{"x":27,"y":3,"z":22},{"x":27,"y":2,"z":22},{"x":27,"y":1,"z":22},{"x":27,"y":0,"z":22},{"x":27,"y":-1,"z":22},{"x":27,"y":-2,"z":22},{"x":27,"y":-3,"z":22},{"x":27,"y":-4,"z":22},{"x":27,"y":-5,"z":22},{"x":27,"y":-6,"z":22},{"x":27,"y":-7,"z":22},{"x":27,"y":-8,"z":22},{"x":27,"y":-9,"z":22},{"x":27,"y":-10,"z":22},{"x":27,"y":-11,"z":22},{"x":27,"y":-12,"z":22},{"x":27,"y":12,"z":23},{"x":27,"y":11,"z":23},{"x":27,"y":10,"z":23},{"x":27,"y":9,"z":23},{"x":27,"y":8,"z":23},{"x":27,"y":7,"z":23},{"x":27,"y":6,"z":23},{"x":27,"y":5,"z":23},{"x":27,"y":4,"z":23},{"x":27,"y":3,"z":23},{"x":27,"y":2,"z":23},{"x":27,"y":1,"z":23},{"x":27,"y":0,"z":23},{"x":27,"y":-1,"z":23},{"x":27,"y":-2,"z":23},{"x":27,"y":-3,"z":23},{"x":27,"y":-4,"z":23},{"x":27,"y":-5,"z":23},{"x":27,"y":-6,"z":23},{"x":27,"y":-7,"z":23},{"x":27,"y":-8,"z":23},{"x":27,"y":-9,"z":23},{"x":27,"y":-10,"z":23},{"x":27,"y":-11,"z":23},{"x":27,"y":-12,"z":23},{"x":27,"y":12,"z":24},{"x":27,"y":11,"z":24},{"x":27,"y":10,"z":24},{"x":27,"y":9,"z":24},{"x":27,"y":8,"z":24},{"x":27,"y":7,"z":24},{"x":27,"y":6,"z":24},{"x":27,"y":5,"z":24},{"x":27,"y":4,"z":24},{"x":27,"y":3,"z":24},{"x":27,"y":2,"z":24},{"x":27,"y":1,"z":24},{"x":27,"y":0,"z":24},{"x":27,"y":-1,"z":24},{"x":27,"y":-2,"z":24},{"x":27,"y":-3,"z":24},{"x":27,"y":-4,"z":24},{"x":27,"y":-5,"z":24},{"x":27,"y":-6,"z":24},{"x":27,"y":-7,"z":24},{"x":27,"y":-8,"z":24},{"x":27,"y":-9,"z":24},{"x":27,"y":-10,"z":24},{"x":27,"y":-11,"z":24},{"x":27,"y":-12,"z":24},{"x":27,"y":12,"z":25},{"x":27,"y":11,"z":25},{"x":27,"y":10,"z":25},{"x":27,"y":9,"z":25},{"x":27,"y":8,"z":25},{"x":27,"y":7,"z":25},{"x":27,"y":6,"z":25},{"x":27,"y":5,"z":25},{"x":27,"y":4,"z":25},{"x":27,"y":3,"z":25},{"x":27,"y":2,"z":25},{"x":27,"y":1,"z":25},{"x":27,"y":0,"z":25},{"x":27,"y":-1,"z":25},{"x":27,"y":-2,"z":25},{"x":27,"y":-3,"z":25},{"x":27,"y":-4,"z":25},{"x":27,"y":-5,"z":25},{"x":27,"y":-6,"z":25},{"x":27,"y":-7,"z":25},{"x":27,"y":-8,"z":25},{"x":27,"y":-9,"z":25},{"x":27,"y":-10,"z":25},{"x":27,"y":-11,"z":25},{"x":27,"y":-12,"z":25}]}},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/95c57abe-34d4-443c-baac-11d43cbc821f.json b/src/main/resources/dgroomdata/95c57abe-34d4-443c-baac-11d43cbc821f.json
new file mode 100644
index 0000000..4cde284
--- /dev/null
+++ b/src/main/resources/dgroomdata/95c57abe-34d4-443c-baac-11d43cbc821f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,4,109,0,0,0,0,0,0,0,4,98,98,98,4,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,4,98,98,98,98,98,0,0,0,0,0,134,17,98,98,98,98,98,4,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,98,98,98,98,98,98,98,50,0,0,0,0,0,50,98,98,98,98,4,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,109,0,0,0,109,98,98,98,98,98,4,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,4,98,98,98,98,98,98,0,0,0,109,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,4,98,98,4,0,0,0,0,0,0,0,144,159,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,4,98,98,98,98,98,98,4,0,0,0,0,0,0,0,0,159,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,159,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,98,98,98,98,98,98,0,0,0,0,0,0,0,98,0,144,0,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,50,109,98,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,50,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,98,159,98,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,101,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,50,109,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,4,50,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,44,109,98,98,98,0,0,144,98,0,0,0,0,0,0,0,98,98,98,98,98,98,98,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,44,98,98,159,159,159,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,4,98,159,159,159,144,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,144,98,98,159,159,159,0,0,0,0,0,0,0,0,98,98,1,101,101,101,101,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,4,0,0,0,109,109,98,98,50,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,101,0,0,98,98,98,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,4,50,0,0,0,0,0,0,-1,98,0,0,0,0,0,-1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,4,98,98,98,0,0,0,0,0,0,0,-1,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,4,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,50,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"95c57abe-34d4-443c-baac-11d43cbc821f","name":"Multicolored","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":27,"y":0,"z":26},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":20,"y":1,"z":26},{"x":20,"y":0,"z":26},{"x":20,"y":-1,"z":26},{"x":20,"y":1,"z":27},{"x":20,"y":0,"z":27},{"x":20,"y":-1,"z":27}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9650cb39-5f22-45f4-86cd-5d197a4266e5.json b/src/main/resources/dgroomdata/9650cb39-5f22-45f4-86cd-5d197a4266e5.json
new file mode 100644
index 0000000..f94cd14
--- /dev/null
+++ b/src/main/resources/dgroomdata/9650cb39-5f22-45f4-86cd-5d197a4266e5.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,159,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,159,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,101,159,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,159,98,98,5,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,98,98,98,1,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,1,98,1,0,0,0,0,0,1,18,18,0,0,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,-1,-1,1,98,98,98,109,98,98,98,101,101,101,98,1,98,98,109,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,18,0,0,18,1,18,0,5,5,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,18,18,0,134,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,5,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,5,136,0,0,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,109,98,44,98,98,101,101,101,98,98,98,109,98,1,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,98,98,98,98,1,0,0,0,0,0,1,98,1,18,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,134,5,98,18,18,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,98,18,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,17,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,136,5,0,0,0,0,0,0,0,0,98,4,4,44,0,0,0,44,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,5,5,1,0,0,0,0,0,0,0,98,1,98,0,0,0,0,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9650cb39-5f22-45f4-86cd-5d197a4266e5","name":"Overgrown","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":7,"y":9,"z":16},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":28,"y":11,"z":16},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":4,"y":12,"z":21},{"x":4,"y":11,"z":21},{"x":4,"y":10,"z":21},{"x":4,"y":9,"z":21},{"x":5,"y":12,"z":21},{"x":5,"y":11,"z":21},{"x":5,"y":10,"z":21},{"x":5,"y":9,"z":21},{"x":6,"y":12,"z":21},{"x":6,"y":11,"z":21},{"x":6,"y":10,"z":21},{"x":6,"y":9,"z":21},{"x":7,"y":12,"z":21},{"x":7,"y":11,"z":21},{"x":7,"y":10,"z":21},{"x":7,"y":9,"z":21}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":5,"y":-1,"z":4},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"essence-1":{"mechType":"Secret","secretPoint":{"x":6,"y":17,"z":20},"secretType":"ESSENCE","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":1,"z":11},{"x":5,"y":0,"z":11},{"x":5,"y":-1,"z":11},{"x":6,"y":1,"z":11},{"x":6,"y":0,"z":11},{"x":6,"y":-1,"z":11}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9890fbac-d382-4525-ab88-fe1ebc118702.json b/src/main/resources/dgroomdata/9890fbac-d382-4525-ab88-fe1ebc118702.json
new file mode 100644
index 0000000..5acc137
--- /dev/null
+++ b/src/main/resources/dgroomdata/9890fbac-d382-4525-ab88-fe1ebc118702.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,139,98,159,109,50,0,0,0,0,0,0,109,0,0,98,98,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,144,159,109,0,0,0,0,0,0,0,98,0,0,98,139,0,0,98,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,98,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,159,98,139,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,139,98,159,98,98,0,0,0,0,0,98,109,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,139,98,159,144,0,0,0,0,0,0,0,98,0,0,0,0,0,0,139,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,17,17,17,0,1,159,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,-1,-1,-1,-1,98,98,159,0,0,0,0,0,0,0,18,98,0,0,50,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,139,159,144,0,0,0,0,0,0,0,98,98,98,98,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,139,98,139,0,0,0,0,0,0,98,98,98,109,0,0,0,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,159,98,98,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,144,159,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,144,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,159,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,164,5,139,98,98,98,0,0,0,0,0,0,139,139,139,0,0,0,0,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,164,5,139,98,98,139,0,0,0,0,0,0,109,98,98,98,109,109,98,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,98,109,0,0,0,0,0,0,0,109,0,0,0,0,98,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,98,109,0,0,0,0,0,0,67,98,0,0,0,0,109,0,0,69,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,109,98,98,98,0,0,0,0,0,0,67,98,0,101,0,101,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,101,101,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,98,0,0,0,0,50,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,50,109,101,101,101,109,0,0,0,0,0,0,67,98,17,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9890fbac-d382-4525-ab88-fe1ebc118702","name":"Knight","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":6,"y":-1,"z":2},"secretType":"CHEST","preRequisite":["dummy-1:click"]},"dummy-1":{"secretPoint":{"x":7,"y":-1,"z":2},"preRequisite":["door-1:open"],"mechType":"Dummy"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":28,"y":0,"z":22},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":2,"z":11},{"x":5,"y":1,"z":11},{"x":5,"y":0,"z":11},{"x":5,"y":-1,"z":11},{"x":6,"y":2,"z":11},{"x":6,"y":1,"z":11},{"x":6,"y":0,"z":11},{"x":6,"y":-1,"z":11},{"x":7,"y":2,"z":11},{"x":7,"y":1,"z":11},{"x":7,"y":0,"z":11},{"x":7,"y":-1,"z":11},{"x":8,"y":2,"z":11},{"x":8,"y":1,"z":11},{"x":8,"y":0,"z":11},{"x":8,"y":-1,"z":11}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":25,"y":5,"z":10},"secretType":"BAT","preRequisite":[]}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/990f6e4c-f7cf-4d27-ae91-11219b85861f.json b/src/main/resources/dgroomdata/990f6e4c-f7cf-4d27-ae91-11219b85861f.json
new file mode 100644
index 0000000..44e0f94
--- /dev/null
+++ b/src/main/resources/dgroomdata/990f6e4c-f7cf-4d27-ae91-11219b85861f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,109,109,109,98,98,98,98,98,98,98,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,0,0,0,98,1,1,43,43,1,1,43,43,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,0,0,0,98,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,109,109,1,98,98,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,1,79,79,79,79,79,1,1,0,0,0,0,0,0,0,0,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,1,79,79,79,79,79,1,1,0,0,0,0,0,0,0,0,109,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,-1,79,79,79,79,79,79,1,0,0,0,0,0,0,0,0,109,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,1,79,79,79,79,79,1,1,0,0,0,0,0,0,0,0,109,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,1,79,79,79,79,79,1,1,0,0,0,0,0,0,0,0,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,98,1,-1,-1,-1],[-1,-1,-1,7,0,0,0,0,0,0,0,0,1,1,-1,-1,1,1,1,1,1,1,1,109,109,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,0,0,0,1,98,98,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,0,0,0,1,1,1,43,43,43,43,43,43,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,109,109,109,98,98,98,98,98,98,98,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"990f6e4c-f7cf-4d27-ae91-11219b85861f","name":"puzzle-icefill","processorId":"puzzle_icefill","properties":{"33-level":"4:3:0:1:3:1","55-board":{"offsetPointList":[{"x":13,"y":1,"z":14},{"x":14,"y":1,"z":14},{"x":15,"y":1,"z":14},{"x":16,"y":1,"z":14},{"x":17,"y":1,"z":14},{"x":18,"y":1,"z":14},{"x":13,"y":1,"z":15},{"x":14,"y":1,"z":15},{"x":15,"y":1,"z":15},{"x":16,"y":1,"z":15},{"x":17,"y":1,"z":15},{"x":18,"y":1,"z":15},{"x":13,"y":1,"z":16},{"x":14,"y":1,"z":16},{"x":15,"y":1,"z":16},{"x":16,"y":1,"z":16},{"x":17,"y":1,"z":16},{"x":18,"y":1,"z":16},{"x":13,"y":1,"z":17},{"x":14,"y":1,"z":17},{"x":15,"y":1,"z":17},{"x":16,"y":1,"z":17},{"x":17,"y":1,"z":17},{"x":18,"y":1,"z":17},{"x":13,"y":1,"z":18},{"x":14,"y":1,"z":18},{"x":15,"y":1,"z":18},{"x":16,"y":1,"z":18},{"x":17,"y":1,"z":18},{"x":18,"y":1,"z":18}]},"55-level":"6:5:0:2:5:2","77-board":{"offsetPointList":[{"x":20,"y":2,"z":13},{"x":21,"y":2,"z":13},{"x":22,"y":2,"z":13},{"x":23,"y":2,"z":13},{"x":24,"y":2,"z":13},{"x":25,"y":2,"z":13},{"x":26,"y":2,"z":13},{"x":27,"y":2,"z":13},{"x":20,"y":2,"z":14},{"x":21,"y":2,"z":14},{"x":22,"y":2,"z":14},{"x":23,"y":2,"z":14},{"x":24,"y":2,"z":14},{"x":25,"y":2,"z":14},{"x":26,"y":2,"z":14},{"x":27,"y":2,"z":14},{"x":20,"y":2,"z":15},{"x":21,"y":2,"z":15},{"x":22,"y":2,"z":15},{"x":23,"y":2,"z":15},{"x":24,"y":2,"z":15},{"x":25,"y":2,"z":15},{"x":26,"y":2,"z":15},{"x":27,"y":2,"z":15},{"x":20,"y":2,"z":16},{"x":21,"y":2,"z":16},{"x":22,"y":2,"z":16},{"x":23,"y":2,"z":16},{"x":24,"y":2,"z":16},{"x":25,"y":2,"z":16},{"x":26,"y":2,"z":16},{"x":27,"y":2,"z":16},{"x":20,"y":2,"z":17},{"x":21,"y":2,"z":17},{"x":22,"y":2,"z":17},{"x":23,"y":2,"z":17},{"x":24,"y":2,"z":17},{"x":25,"y":2,"z":17},{"x":26,"y":2,"z":17},{"x":27,"y":2,"z":17},{"x":20,"y":2,"z":18},{"x":21,"y":2,"z":18},{"x":22,"y":2,"z":18},{"x":23,"y":2,"z":18},{"x":24,"y":2,"z":18},{"x":25,"y":2,"z":18},{"x":26,"y":2,"z":18},{"x":27,"y":2,"z":18},{"x":20,"y":2,"z":19},{"x":21,"y":2,"z":19},{"x":22,"y":2,"z":19},{"x":23,"y":2,"z":19},{"x":24,"y":2,"z":19},{"x":25,"y":2,"z":19},{"x":26,"y":2,"z":19},{"x":27,"y":2,"z":19}]},"77-level":"8:7:0:3:7:3","33-board":{"offsetPointList":[{"x":8,"y":0,"z":15},{"x":9,"y":0,"z":15},{"x":10,"y":0,"z":15},{"x":11,"y":0,"z":15},{"x":8,"y":0,"z":16},{"x":9,"y":0,"z":16},{"x":10,"y":0,"z":16},{"x":11,"y":0,"z":16},{"x":8,"y":0,"z":17},{"x":9,"y":0,"z":17},{"x":10,"y":0,"z":17},{"x":11,"y":0,"z":17}]},"levels":"33,55,77"},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9a0e71bf-babd-421e-a785-442c13d5a8b2.json b/src/main/resources/dgroomdata/9a0e71bf-babd-421e-a785-442c13d5a8b2.json
new file mode 100644
index 0000000..524d1bc
--- /dev/null
+++ b/src/main/resources/dgroomdata/9a0e71bf-babd-421e-a785-442c13d5a8b2.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,98,98,98,98,98,98,98,98,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,1,1,1,1,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,109,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,35,1,1,1,1,1,1,1,1,1,1,1,41,0,0,0,98,-1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,35,35,1,1,1,1,1,1,1,1,1,1,144,0,0,0,98,-1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,35,7,1,1,1,1,1,1,1,1,1,0,0,0,98,-1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,7,98,1,1,1,1,1,1,1,0,0,50,98,-1,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,4,109,109,53,53,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,4,109,109,53,5,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,4,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,109,98,1,1,1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,1,1,1,1,1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,109,98,1,1,1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,134,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,4,109,109,0,0,0,134,-1,-1,-1,-1],[-1,-1,-1,-1,134,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,134,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,1,1,1,1,1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9a0e71bf-babd-421e-a785-442c13d5a8b2","name":"Silvers-sword","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":19,"y":-1,"z":14},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":22,"y":1,"z":13},{"x":22,"y":0,"z":13},{"x":22,"y":1,"z":14},{"x":22,"y":0,"z":14},{"x":22,"y":-1,"z":14},{"x":22,"y":0,"z":15},{"x":22,"y":-1,"z":15},{"x":22,"y":1,"z":16},{"x":22,"y":0,"z":16},{"x":22,"y":-1,"z":16}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9b949f89-1542-4bcf-9bf3-063ec69bc5f4.json b/src/main/resources/dgroomdata/9b949f89-1542-4bcf-9bf3-063ec69bc5f4.json
new file mode 100644
index 0000000..3ab526c
--- /dev/null
+++ b/src/main/resources/dgroomdata/9b949f89-1542-4bcf-9bf3-063ec69bc5f4.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,4,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,17,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,17,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,4,1,4,0,0,0,0,0,98,98,98,0,0,0,0,0,1,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,0,0,0,0,98,69,98,0,0,0,0,98,98,1,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,0,0,0,0,98,9,98,134,134,134,134,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,9,0,5,134,134,5,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,134,5,65,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,134,134,5,65,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,9,0,5,134,134,5,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,98,98,0,0,0,0,98,9,98,134,134,134,134,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,0,0,0,0,98,98,98,0,0,0,0,98,98,1,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,0,0,0,0,0,98,98,98,0,0,0,0,0,1,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9b949f89-1542-4bcf-9bf3-063ec69bc5f4","name":"Water","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":3,"y":-1,"z":6},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":16,"y":0,"z":8},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":2,"z":5},{"x":8,"y":1,"z":5},{"x":8,"y":0,"z":5},{"x":8,"y":-1,"z":5},{"x":8,"y":2,"z":6},{"x":8,"y":1,"z":6},{"x":8,"y":0,"z":6},{"x":8,"y":-1,"z":6}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":13,"y":-3,"z":6},"secretType":"BAT","preRequisite":[]}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9cd523a2-0c7f-4072-a374-9b99d59554ea.json b/src/main/resources/dgroomdata/9cd523a2-0c7f-4072-a374-9b99d59554ea.json
new file mode 100644
index 0000000..6fcb7c9
--- /dev/null
+++ b/src/main/resources/dgroomdata/9cd523a2-0c7f-4072-a374-9b99d59554ea.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,43,43,43,43,43,1,109,18,0,0,0,0,0,0,0,0,7,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,1,98,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,43,43,43,43,43,98,109,0,0,0,0,0,0,0,0,35,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,43,43,43,43,43,1,98,0,0,0,0,0,0,0,0,0,7,1,1,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,-1,-1,-1,-1],[-1,-1,-1,-1,43,43,43,43,43,98,98,50,0,0,0,0,0,0,0,0,35,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,43,43,43,43,43,5,5,134,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,5,134,0,0,0,0,0,0,0,0,50,98,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,5,134,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,1,98,98,109,0,0,0,0,0,0,0,7,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,1,98,98,0,0,0,0,0,0,0,0,35,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,44,144,0,0,98,98,98,109,0,0,0,0,0,0,0,0,35,35,35,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,50,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,50,139,98,18,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,139,0,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,109,98,98,89,98,98,89,98,98,89,98,98,109,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,43,43,43,43,43,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,43,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,109,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,98,98,109,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,0,0,0,109,1,1,109,0,18,18,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,50,98,98,109,50,0,18,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,98,98,98,98,98,1,98,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,98,98,98,98,98,1,98,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,159,159,159,159,159,159,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,98,98,98,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,0,-1,-1,-1,0,1,1,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,109,109,0,109,98,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,1,1,0,-1,-1,-1,0,1,1,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,139,0,0,139,0,0,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,-1,-1,-1,0,0,0,98,98,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,109,51,0,0,0,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,-1,-1,-1,0,0,0,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,-1,-1,-1,0,0,0,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,144,0,0,-1,-1,-1,0,0,0,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,109,51,0,0,0,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,1,1,0,-1,-1,-1,0,1,1,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,139,0,0,139,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,0,-1,-1,-1,0,1,1,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,44,109,98,109,109,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,159,159,159,159,159,159,159,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,159,159,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,159,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,1,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,35,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,1,159,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,1,1,1,159,159,0,1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,159,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,159,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,35,159,1,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,41,35,35,35,35,35,1,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,43,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,43,43,43,43,43,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,188,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,159,159,0,0,0,0,0,0,0,0,98,139,0,0,109,98,1,89,98,98,89,98,98,89,98,98,109,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,159,1,159,159,0,0,0,0,0,0,0,139,98,98,98,98,1,98,1,98,98,98,98,98,1,98,98,98,98,98,98,98,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,159,1,1,159,159,50,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,1,159,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,50,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,159,159,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,17,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,159,159,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,35,0,0,0,0,0,0,0,188,0,188,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,1,1,1,1,1,1,1,0,0,0,0,0,159,159,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,159,1,1,1,159,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,0,0,0,1,1,1,7,0,0,0,0,0,0,0,159,159,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,159,35,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,1,1,35,0,0,0,0,0,0,0,35,159,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,159,35,41,144,0,0,0,0,0,0,18,35,35,35,35,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,35,0,0,0,0,1,35,18,106,0,0,0,0,0,0,35,159,159,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,35,0,0,17,0,0,0,0,0,0,0,0,35,1,1,1,35,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,1,35,18,0,0,0,0,0,0,0,35,159,159,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,0,0,0,0,0,0,0,0,0,35,1,1,1,159,0,134,134,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,159,159,159,1,159,35,0,0,0,0,0,0,0,0,0,35,159,159,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,159,159,0,0,0,0,0,0,0,35,159,1,1,159,159,0,134,134,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,159,1,1,1,1,159,0,0,0,0,0,0,0,159,159,159,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,159,0,0,0,0,0,0,0,35,1,1,1,1,159,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,159,159,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,159,159,0,0,0,0,0,0,18,159,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9cd523a2-0c7f-4072-a374-9b99d59554ea","name":"Atlas","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":12,"y":12,"z":32},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":37,"y":-13,"z":16},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":32,"y":8,"z":53},"secretType":"CHEST","preRequisite":[]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":61,"y":20,"z":34},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":7,"y":13,"z":25},{"x":7,"y":12,"z":25},{"x":7,"y":11,"z":25},{"x":7,"y":10,"z":25},{"x":8,"y":13,"z":25},{"x":8,"y":12,"z":25},{"x":8,"y":11,"z":25},{"x":8,"y":10,"z":25},{"x":9,"y":13,"z":25},{"x":9,"y":12,"z":25},{"x":9,"y":11,"z":25},{"x":9,"y":10,"z":25}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":54,"y":-3,"z":32},"preRequisite":[],"triggering":"cage-1"},"bat-1":{"mechType":"Secret","secretPoint":{"x":7,"y":2,"z":58},"secretType":"BAT","preRequisite":[]},"cage-1":{"secretPoint":{"offsetPointList":[{"x":31,"y":3,"z":31},{"x":32,"y":3,"z":31},{"x":33,"y":3,"z":31},{"x":31,"y":3,"z":32},{"x":32,"y":3,"z":32},{"x":33,"y":3,"z":32},{"x":31,"y":3,"z":33},{"x":32,"y":3,"z":33},{"x":33,"y":3,"z":33}]},"preRequisite":["lever-2:open"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":56,"y":6,"z":29},"secretType":"ITEM_DROP","preRequisite":[""]},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":4,"y":0,"z":21},{"x":4,"y":-1,"z":21},{"x":5,"y":0,"z":21},{"x":5,"y":-1,"z":21},{"x":6,"y":0,"z":21},{"x":6,"y":-1,"z":21},{"x":7,"y":0,"z":21},{"x":7,"y":-1,"z":21},{"x":4,"y":0,"z":22},{"x":4,"y":-1,"z":22},{"x":5,"y":0,"z":22},{"x":5,"y":-1,"z":22},{"x":6,"y":0,"z":22},{"x":6,"y":-1,"z":22},{"x":7,"y":0,"z":22},{"x":7,"y":-1,"z":22},{"x":4,"y":0,"z":23},{"x":4,"y":-1,"z":23},{"x":5,"y":0,"z":23},{"x":5,"y":-1,"z":23},{"x":6,"y":0,"z":23},{"x":6,"y":-1,"z":23},{"x":7,"y":0,"z":23},{"x":7,"y":-1,"z":23}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":29,"y":9,"z":9},{"x":29,"y":8,"z":9},{"x":30,"y":9,"z":9},{"x":30,"y":8,"z":9},{"x":31,"y":9,"z":9},{"x":31,"y":8,"z":9},{"x":29,"y":9,"z":10},{"x":29,"y":8,"z":10},{"x":30,"y":9,"z":10},{"x":30,"y":8,"z":10},{"x":31,"y":9,"z":10},{"x":31,"y":8,"z":10},{"x":29,"y":9,"z":11},{"x":29,"y":8,"z":11},{"x":30,"y":9,"z":11},{"x":30,"y":8,"z":11},{"x":31,"y":9,"z":11},{"x":31,"y":8,"z":11},{"x":29,"y":9,"z":12},{"x":29,"y":8,"z":12},{"x":30,"y":9,"z":12},{"x":30,"y":8,"z":12},{"x":31,"y":9,"z":12},{"x":31,"y":8,"z":12}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":29,"y":9,"z":4},{"x":29,"y":8,"z":4},{"x":30,"y":9,"z":4},{"x":30,"y":8,"z":4},{"x":31,"y":9,"z":4},{"x":31,"y":8,"z":4},{"x":29,"y":9,"z":5},{"x":29,"y":8,"z":5},{"x":30,"y":9,"z":5},{"x":30,"y":8,"z":5},{"x":31,"y":9,"z":5},{"x":31,"y":8,"z":5},{"x":29,"y":9,"z":6},{"x":29,"y":8,"z":6},{"x":30,"y":9,"z":6},{"x":30,"y":8,"z":6},{"x":31,"y":9,"z":6},{"x":31,"y":8,"z":6},{"x":29,"y":9,"z":7},{"x":29,"y":8,"z":7},{"x":30,"y":9,"z":7},{"x":30,"y":8,"z":7},{"x":31,"y":9,"z":7},{"x":31,"y":8,"z":7}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":8,"y":1,"z":26},{"x":8,"y":0,"z":26},{"x":9,"y":1,"z":26},{"x":9,"y":0,"z":26},{"x":10,"y":1,"z":26},{"x":10,"y":0,"z":26},{"x":8,"y":1,"z":27},{"x":8,"y":0,"z":27},{"x":9,"y":1,"z":27},{"x":9,"y":0,"z":27},{"x":10,"y":1,"z":27},{"x":10,"y":0,"z":27},{"x":8,"y":1,"z":28},{"x":8,"y":0,"z":28},{"x":9,"y":1,"z":28},{"x":9,"y":0,"z":28},{"x":10,"y":1,"z":28},{"x":10,"y":0,"z":28},{"x":8,"y":1,"z":29},{"x":8,"y":0,"z":29},{"x":9,"y":1,"z":29},{"x":9,"y":0,"z":29},{"x":10,"y":1,"z":29},{"x":10,"y":0,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":39,"y":8,"z":5},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":1,"z":35},{"x":8,"y":0,"z":35},{"x":9,"y":1,"z":35},{"x":9,"y":0,"z":35},{"x":10,"y":1,"z":35},{"x":10,"y":0,"z":35},{"x":8,"y":1,"z":36},{"x":8,"y":0,"z":36},{"x":9,"y":1,"z":36},{"x":9,"y":0,"z":36},{"x":10,"y":1,"z":36},{"x":10,"y":0,"z":36},{"x":8,"y":1,"z":37},{"x":8,"y":0,"z":37},{"x":9,"y":1,"z":37},{"x":9,"y":0,"z":37},{"x":10,"y":1,"z":37},{"x":10,"y":0,"z":37},{"x":8,"y":1,"z":38},{"x":8,"y":0,"z":38},{"x":9,"y":1,"z":38},{"x":9,"y":0,"z":38},{"x":10,"y":1,"z":38},{"x":10,"y":0,"z":38}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/9fa09d68-c483-4320-872e-9e07b049ee37.json b/src/main/resources/dgroomdata/9fa09d68-c483-4320-872e-9e07b049ee37.json
new file mode 100644
index 0000000..1700b33
--- /dev/null
+++ b/src/main/resources/dgroomdata/9fa09d68-c483-4320-872e-9e07b049ee37.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,13,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,98,98,13,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,3,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,98,31,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,98,18,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,31,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,98,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,1,0,0,0,1,1,0,0,0,0,0,0,98,1,0,0,0,1,98,98,1,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,1,0,0,0,1,1,7,0,0,0,0,1,1,1,-1,-1,-1,1,1,1,1,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,4,4,48,48,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,13,1,1,7,1,0,0,0,1,1,0,0,0,0,109,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,7,7,7,13,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,7,7,82,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,13,7,0,82,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,13,1,1,7,0,0,0,0,1,1,0,0,0,0,0,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,67,0,0,0,4,1,1,1,144,0,144,1,1,1,1,0,0,0,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,1,1,0,0,0,0,0,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,0,0,0,5,5,0,0,0,0,0,17,17,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,0,0,0,0,5,5,0,0,0,0,0,0,144,4,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"9fa09d68-c483-4320-872e-9e07b049ee37","name":"Pillars","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":20,"y":-1,"z":7},"secretType":"CHEST","preRequisite":["door-1:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":19,"y":5,"z":11},{"x":19,"y":4,"z":11},{"x":19,"y":3,"z":11},{"x":19,"y":2,"z":11},{"x":19,"y":1,"z":11},{"x":19,"y":0,"z":11},{"x":19,"y":-1,"z":11},{"x":20,"y":5,"z":11},{"x":20,"y":4,"z":11},{"x":20,"y":3,"z":11},{"x":20,"y":2,"z":11},{"x":20,"y":1,"z":11},{"x":20,"y":0,"z":11},{"x":20,"y":-1,"z":11},{"x":21,"y":5,"z":11},{"x":21,"y":4,"z":11},{"x":21,"y":3,"z":11},{"x":21,"y":2,"z":11},{"x":21,"y":1,"z":11},{"x":21,"y":0,"z":11},{"x":21,"y":-1,"z":11}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":4,"y":18,"z":7},"preRequisite":[],"triggering":"door-1"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a053f4fa-d6b2-4aef-ae3e-97c7eee0252e.json b/src/main/resources/dgroomdata/a053f4fa-d6b2-4aef-ae3e-97c7eee0252e.json
new file mode 100644
index 0000000..deb0663
--- /dev/null
+++ b/src/main/resources/dgroomdata/a053f4fa-d6b2-4aef-ae3e-97c7eee0252e.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,98,109,109,98,98,98,98,109,109,98,98,98,98,98,98,98,109,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,0,159,159,109,109,0,0,0,0,109,109,0,0,0,160,160,109,1,0,0,0,0,109,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,-1,-1,-1],[-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,1,-1,-1,-1],[-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,1,-1,-1,-1],[-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,1,-1,-1,-1],[-1,-1,-1,1,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,-1,-1,-1],[-1,-1,-1,0,0,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,51,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,-1,-1],[-1,-1,-1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,1,-1,-1,-1],[-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,1,-1,-1,-1],[-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,1,-1,-1,-1],[-1,-1,-1,1,1,7,0,1,109,0,0,160,0,109,109,0,0,0,0,0,1,1,0,0,0,0,109,109,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,98,1,1,109,160,79,98,98,98,98,109,109,98,98,98,98,98,98,109,109,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,174,174,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a053f4fa-d6b2-4aef-ae3e-97c7eee0252e","name":"puzzle-silverfish","processorId":"puzzle_silverfish","properties":{"width":19,"endnodes":{"offsetPointList":[{"x":26,"y":-3,"z":15},{"x":26,"y":-3,"z":16},{"x":26,"y":-3,"z":17}]},"board":{"offsetPointList":[{"x":8,"y":-3,"z":7},{"x":9,"y":-3,"z":7},{"x":10,"y":-3,"z":7},{"x":11,"y":-3,"z":7},{"x":12,"y":-3,"z":7},{"x":13,"y":-3,"z":7},{"x":14,"y":-3,"z":7},{"x":15,"y":-3,"z":7},{"x":16,"y":-3,"z":7},{"x":17,"y":-3,"z":7},{"x":18,"y":-3,"z":7},{"x":19,"y":-3,"z":7},{"x":20,"y":-3,"z":7},{"x":21,"y":-3,"z":7},{"x":22,"y":-3,"z":7},{"x":23,"y":-3,"z":7},{"x":24,"y":-3,"z":7},{"x":25,"y":-3,"z":7},{"x":26,"y":-3,"z":7},{"x":8,"y":-3,"z":8},{"x":9,"y":-3,"z":8},{"x":10,"y":-3,"z":8},{"x":11,"y":-3,"z":8},{"x":12,"y":-3,"z":8},{"x":13,"y":-3,"z":8},{"x":14,"y":-3,"z":8},{"x":15,"y":-3,"z":8},{"x":16,"y":-3,"z":8},{"x":17,"y":-3,"z":8},{"x":18,"y":-3,"z":8},{"x":19,"y":-3,"z":8},{"x":20,"y":-3,"z":8},{"x":21,"y":-3,"z":8},{"x":22,"y":-3,"z":8},{"x":23,"y":-3,"z":8},{"x":24,"y":-3,"z":8},{"x":25,"y":-3,"z":8},{"x":26,"y":-3,"z":8},{"x":8,"y":-3,"z":9},{"x":9,"y":-3,"z":9},{"x":10,"y":-3,"z":9},{"x":11,"y":-3,"z":9},{"x":12,"y":-3,"z":9},{"x":13,"y":-3,"z":9},{"x":14,"y":-3,"z":9},{"x":15,"y":-3,"z":9},{"x":16,"y":-3,"z":9},{"x":17,"y":-3,"z":9},{"x":18,"y":-3,"z":9},{"x":19,"y":-3,"z":9},{"x":20,"y":-3,"z":9},{"x":21,"y":-3,"z":9},{"x":22,"y":-3,"z":9},{"x":23,"y":-3,"z":9},{"x":24,"y":-3,"z":9},{"x":25,"y":-3,"z":9},{"x":26,"y":-3,"z":9},{"x":8,"y":-3,"z":10},{"x":9,"y":-3,"z":10},{"x":10,"y":-3,"z":10},{"x":11,"y":-3,"z":10},{"x":12,"y":-3,"z":10},{"x":13,"y":-3,"z":10},{"x":14,"y":-3,"z":10},{"x":15,"y":-3,"z":10},{"x":16,"y":-3,"z":10},{"x":17,"y":-3,"z":10},{"x":18,"y":-3,"z":10},{"x":19,"y":-3,"z":10},{"x":20,"y":-3,"z":10},{"x":21,"y":-3,"z":10},{"x":22,"y":-3,"z":10},{"x":23,"y":-3,"z":10},{"x":24,"y":-3,"z":10},{"x":25,"y":-3,"z":10},{"x":26,"y":-3,"z":10},{"x":8,"y":-3,"z":11},{"x":9,"y":-3,"z":11},{"x":10,"y":-3,"z":11},{"x":11,"y":-3,"z":11},{"x":12,"y":-3,"z":11},{"x":13,"y":-3,"z":11},{"x":14,"y":-3,"z":11},{"x":15,"y":-3,"z":11},{"x":16,"y":-3,"z":11},{"x":17,"y":-3,"z":11},{"x":18,"y":-3,"z":11},{"x":19,"y":-3,"z":11},{"x":20,"y":-3,"z":11},{"x":21,"y":-3,"z":11},{"x":22,"y":-3,"z":11},{"x":23,"y":-3,"z":11},{"x":24,"y":-3,"z":11},{"x":25,"y":-3,"z":11},{"x":26,"y":-3,"z":11},{"x":8,"y":-3,"z":12},{"x":9,"y":-3,"z":12},{"x":10,"y":-3,"z":12},{"x":11,"y":-3,"z":12},{"x":12,"y":-3,"z":12},{"x":13,"y":-3,"z":12},{"x":14,"y":-3,"z":12},{"x":15,"y":-3,"z":12},{"x":16,"y":-3,"z":12},{"x":17,"y":-3,"z":12},{"x":18,"y":-3,"z":12},{"x":19,"y":-3,"z":12},{"x":20,"y":-3,"z":12},{"x":21,"y":-3,"z":12},{"x":22,"y":-3,"z":12},{"x":23,"y":-3,"z":12},{"x":24,"y":-3,"z":12},{"x":25,"y":-3,"z":12},{"x":26,"y":-3,"z":12},{"x":8,"y":-3,"z":13},{"x":9,"y":-3,"z":13},{"x":10,"y":-3,"z":13},{"x":11,"y":-3,"z":13},{"x":12,"y":-3,"z":13},{"x":13,"y":-3,"z":13},{"x":14,"y":-3,"z":13},{"x":15,"y":-3,"z":13},{"x":16,"y":-3,"z":13},{"x":17,"y":-3,"z":13},{"x":18,"y":-3,"z":13},{"x":19,"y":-3,"z":13},{"x":20,"y":-3,"z":13},{"x":21,"y":-3,"z":13},{"x":22,"y":-3,"z":13},{"x":23,"y":-3,"z":13},{"x":24,"y":-3,"z":13},{"x":25,"y":-3,"z":13},{"x":26,"y":-3,"z":13},{"x":8,"y":-3,"z":14},{"x":9,"y":-3,"z":14},{"x":10,"y":-3,"z":14},{"x":11,"y":-3,"z":14},{"x":12,"y":-3,"z":14},{"x":13,"y":-3,"z":14},{"x":14,"y":-3,"z":14},{"x":15,"y":-3,"z":14},{"x":16,"y":-3,"z":14},{"x":17,"y":-3,"z":14},{"x":18,"y":-3,"z":14},{"x":19,"y":-3,"z":14},{"x":20,"y":-3,"z":14},{"x":21,"y":-3,"z":14},{"x":22,"y":-3,"z":14},{"x":23,"y":-3,"z":14},{"x":24,"y":-3,"z":14},{"x":25,"y":-3,"z":14},{"x":26,"y":-3,"z":14},{"x":8,"y":-3,"z":15},{"x":9,"y":-3,"z":15},{"x":10,"y":-3,"z":15},{"x":11,"y":-3,"z":15},{"x":12,"y":-3,"z":15},{"x":13,"y":-3,"z":15},{"x":14,"y":-3,"z":15},{"x":15,"y":-3,"z":15},{"x":16,"y":-3,"z":15},{"x":17,"y":-3,"z":15},{"x":18,"y":-3,"z":15},{"x":19,"y":-3,"z":15},{"x":20,"y":-3,"z":15},{"x":21,"y":-3,"z":15},{"x":22,"y":-3,"z":15},{"x":23,"y":-3,"z":15},{"x":24,"y":-3,"z":15},{"x":25,"y":-3,"z":15},{"x":26,"y":-3,"z":15},{"x":8,"y":-3,"z":16},{"x":9,"y":-3,"z":16},{"x":10,"y":-3,"z":16},{"x":11,"y":-3,"z":16},{"x":12,"y":-3,"z":16},{"x":13,"y":-3,"z":16},{"x":14,"y":-3,"z":16},{"x":15,"y":-3,"z":16},{"x":16,"y":-3,"z":16},{"x":17,"y":-3,"z":16},{"x":18,"y":-3,"z":16},{"x":19,"y":-3,"z":16},{"x":20,"y":-3,"z":16},{"x":21,"y":-3,"z":16},{"x":22,"y":-3,"z":16},{"x":23,"y":-3,"z":16},{"x":24,"y":-3,"z":16},{"x":25,"y":-3,"z":16},{"x":26,"y":-3,"z":16},{"x":8,"y":-3,"z":17},{"x":9,"y":-3,"z":17},{"x":10,"y":-3,"z":17},{"x":11,"y":-3,"z":17},{"x":12,"y":-3,"z":17},{"x":13,"y":-3,"z":17},{"x":14,"y":-3,"z":17},{"x":15,"y":-3,"z":17},{"x":16,"y":-3,"z":17},{"x":17,"y":-3,"z":17},{"x":18,"y":-3,"z":17},{"x":19,"y":-3,"z":17},{"x":20,"y":-3,"z":17},{"x":21,"y":-3,"z":17},{"x":22,"y":-3,"z":17},{"x":23,"y":-3,"z":17},{"x":24,"y":-3,"z":17},{"x":25,"y":-3,"z":17},{"x":26,"y":-3,"z":17},{"x":8,"y":-3,"z":18},{"x":9,"y":-3,"z":18},{"x":10,"y":-3,"z":18},{"x":11,"y":-3,"z":18},{"x":12,"y":-3,"z":18},{"x":13,"y":-3,"z":18},{"x":14,"y":-3,"z":18},{"x":15,"y":-3,"z":18},{"x":16,"y":-3,"z":18},{"x":17,"y":-3,"z":18},{"x":18,"y":-3,"z":18},{"x":19,"y":-3,"z":18},{"x":20,"y":-3,"z":18},{"x":21,"y":-3,"z":18},{"x":22,"y":-3,"z":18},{"x":23,"y":-3,"z":18},{"x":24,"y":-3,"z":18},{"x":25,"y":-3,"z":18},{"x":26,"y":-3,"z":18},{"x":8,"y":-3,"z":19},{"x":9,"y":-3,"z":19},{"x":10,"y":-3,"z":19},{"x":11,"y":-3,"z":19},{"x":12,"y":-3,"z":19},{"x":13,"y":-3,"z":19},{"x":14,"y":-3,"z":19},{"x":15,"y":-3,"z":19},{"x":16,"y":-3,"z":19},{"x":17,"y":-3,"z":19},{"x":18,"y":-3,"z":19},{"x":19,"y":-3,"z":19},{"x":20,"y":-3,"z":19},{"x":21,"y":-3,"z":19},{"x":22,"y":-3,"z":19},{"x":23,"y":-3,"z":19},{"x":24,"y":-3,"z":19},{"x":25,"y":-3,"z":19},{"x":26,"y":-3,"z":19},{"x":8,"y":-3,"z":20},{"x":9,"y":-3,"z":20},{"x":10,"y":-3,"z":20},{"x":11,"y":-3,"z":20},{"x":12,"y":-3,"z":20},{"x":13,"y":-3,"z":20},{"x":14,"y":-3,"z":20},{"x":15,"y":-3,"z":20},{"x":16,"y":-3,"z":20},{"x":17,"y":-3,"z":20},{"x":18,"y":-3,"z":20},{"x":19,"y":-3,"z":20},{"x":20,"y":-3,"z":20},{"x":21,"y":-3,"z":20},{"x":22,"y":-3,"z":20},{"x":23,"y":-3,"z":20},{"x":24,"y":-3,"z":20},{"x":25,"y":-3,"z":20},{"x":26,"y":-3,"z":20},{"x":8,"y":-3,"z":21},{"x":9,"y":-3,"z":21},{"x":10,"y":-3,"z":21},{"x":11,"y":-3,"z":21},{"x":12,"y":-3,"z":21},{"x":13,"y":-3,"z":21},{"x":14,"y":-3,"z":21},{"x":15,"y":-3,"z":21},{"x":16,"y":-3,"z":21},{"x":17,"y":-3,"z":21},{"x":18,"y":-3,"z":21},{"x":19,"y":-3,"z":21},{"x":20,"y":-3,"z":21},{"x":21,"y":-3,"z":21},{"x":22,"y":-3,"z":21},{"x":23,"y":-3,"z":21},{"x":24,"y":-3,"z":21},{"x":25,"y":-3,"z":21},{"x":26,"y":-3,"z":21},{"x":8,"y":-3,"z":22},{"x":9,"y":-3,"z":22},{"x":10,"y":-3,"z":22},{"x":11,"y":-3,"z":22},{"x":12,"y":-3,"z":22},{"x":13,"y":-3,"z":22},{"x":14,"y":-3,"z":22},{"x":15,"y":-3,"z":22},{"x":16,"y":-3,"z":22},{"x":17,"y":-3,"z":22},{"x":18,"y":-3,"z":22},{"x":19,"y":-3,"z":22},{"x":20,"y":-3,"z":22},{"x":21,"y":-3,"z":22},{"x":22,"y":-3,"z":22},{"x":23,"y":-3,"z":22},{"x":24,"y":-3,"z":22},{"x":25,"y":-3,"z":22},{"x":26,"y":-3,"z":22},{"x":8,"y":-3,"z":23},{"x":9,"y":-3,"z":23},{"x":10,"y":-3,"z":23},{"x":11,"y":-3,"z":23},{"x":12,"y":-3,"z":23},{"x":13,"y":-3,"z":23},{"x":14,"y":-3,"z":23},{"x":15,"y":-3,"z":23},{"x":16,"y":-3,"z":23},{"x":17,"y":-3,"z":23},{"x":18,"y":-3,"z":23},{"x":19,"y":-3,"z":23},{"x":20,"y":-3,"z":23},{"x":21,"y":-3,"z":23},{"x":22,"y":-3,"z":23},{"x":23,"y":-3,"z":23},{"x":24,"y":-3,"z":23},{"x":25,"y":-3,"z":23},{"x":26,"y":-3,"z":23},{"x":8,"y":-3,"z":24},{"x":9,"y":-3,"z":24},{"x":10,"y":-3,"z":24},{"x":11,"y":-3,"z":24},{"x":12,"y":-3,"z":24},{"x":13,"y":-3,"z":24},{"x":14,"y":-3,"z":24},{"x":15,"y":-3,"z":24},{"x":16,"y":-3,"z":24},{"x":17,"y":-3,"z":24},{"x":18,"y":-3,"z":24},{"x":19,"y":-3,"z":24},{"x":20,"y":-3,"z":24},{"x":21,"y":-3,"z":24},{"x":22,"y":-3,"z":24},{"x":23,"y":-3,"z":24},{"x":24,"y":-3,"z":24},{"x":25,"y":-3,"z":24},{"x":26,"y":-3,"z":24},{"x":8,"y":-3,"z":25},{"x":9,"y":-3,"z":25},{"x":10,"y":-3,"z":25},{"x":11,"y":-3,"z":25},{"x":12,"y":-3,"z":25},{"x":13,"y":-3,"z":25},{"x":14,"y":-3,"z":25},{"x":15,"y":-3,"z":25},{"x":16,"y":-3,"z":25},{"x":17,"y":-3,"z":25},{"x":18,"y":-3,"z":25},{"x":19,"y":-3,"z":25},{"x":20,"y":-3,"z":25},{"x":21,"y":-3,"z":25},{"x":22,"y":-3,"z":25},{"x":23,"y":-3,"z":25},{"x":24,"y":-3,"z":25},{"x":25,"y":-3,"z":25},{"x":26,"y":-3,"z":25}]},"height":19},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a069f006-0728-4952-8d9f-1d318cee60d8.json b/src/main/resources/dgroomdata/a069f006-0728-4952-8d9f-1d318cee60d8.json
new file mode 100644
index 0000000..2760d04
--- /dev/null
+++ b/src/main/resources/dgroomdata/a069f006-0728-4952-8d9f-1d318cee60d8.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":7,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,109,109,109,98,98,98,98,98,0,0,0,31,0,1,5,164,0,0,0,4,169,35,18,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,1,1,1,98,1,164,0,0,0,0,0,0,0,0,0,126,126,1,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,0,0,38,38,1,0,164,5,0,0,0,136,4,44,18,18,0,0,0,0,0,0,0,0,0,0,44,44,98,1,1,1,1,1,1,1,1,1,1,159,5,164,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,31,31,4,0,0,0,0,0,0,0,136,5,98,98,44,18,0,0,0,0,0,0,0,0,0,188,0,98,98,1,1,1,1,98,1,1,1,1,159,5,5,134,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,44,98,98,98,98,4,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,50,17,5,5,98,1,98,0,98,159,1,1,159,5,134,134,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,98,98,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,134,0,98,101,188,0,44,159,1,98,1,0,0,0,0,0,0,0,0,0,0,0,0,1,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,44,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,0,0,43,159,98,1,0,0,0,0,0,0,0,0,0,0,144,18,1,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,98,98,98,1,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,77,44,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,50,0,98,159,0,0,17,0,0,0,0,0,0,0,0,17,18,18,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,98,98,98,98,98,98,98,98,4,98,98,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,44,1,0,0,134,134,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,98,98,98,98,98,98,98,0,0,0,109,109,98,98,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,17,126,126,17,109,109,109,17,0,0,17,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,44,44,44,4,0,0,0,0,0,0,0,0,0,4,98,98,134,134,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,0,0,98,0,0,0,0,0,0,98,50,0,1,188,188,188,1,126,126,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,17,44,0,0,98,0,0,0,0,0,0,0,0,0,109,98,1,98,4,44,0,0,0,0,0,0,0,0,4,171,188,98,98,5,17,5,0,0,0,0,0,0,0,0,0,0,0,48,48,98,98,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,98,98,0,1,98,98,0,0,0,0,0,0,0,0,109,98,98,109,0,0,0,0,0,0,0,0,0,44,171,171,144,188,0,98,169,5,0,0,0,0,0,0,0,0,0,0,109,109,18,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,1,98,98,98,98,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,0,44,171,0,0,0,0,17,0,4,98,0,0,0,0,0,0,0,0,0,0,109,109,0,0,98,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,4,98,4,98,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,4,0,0,0,0,0,0,0,0,0,4,98,0,0,0,0,0,0,0,0,0,0,0,0,0,109,188,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,4,98,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,4,0,0,0,0,0,0,0,0,5,17,0,4,0,0,0,0,0,0,0,0,0,0,0,0,17,98,0,50,44,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,4,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,5,0,0,0,0,0,0,0,0,164,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,98,98,98,0,0,0,109,154,98,98,98,98,109,0,0,0,0,0,0,164,164,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,0,0,0,0,0,44,4,98,4,98,109,109,0,0,0,0,0,0,0,0,0,0,0,188,98,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,98,44,0,0,0,0,0,0,0,0,0,17,109,98,0,0,0,98,159,1,1,1,1,109,0,0,0,0,0,0,164,5,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,5,109,0,126,17,126,126,17,0,0,0,0,0,0,0,98,98,98,98,98,98,109,0,0,109,0,0,0,0,0,0,0,0,109,1,98,5,5,0,0,0,0,0,0,0,0,0,0,0,0,98,1,109,109,109,0,0,0,0,0,0,0,0,109,98,0,0,0,98,1,1,1,1,1,109,0,0,0,0,0,144,164,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,98,98,4,98,109,109,4,4,98,98,4,98,0,0,0,109,4,98,98,98,1,98,98,109,0,98,98,98,0,0,0,0,0,0,0,109,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,101,98,98,43,43,109,0,0,0,0,0,0,0,0,109,98,0,0,0,98,1,98,98,98,98,98,0,0,0,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,4,0,98,17,126,17,98,126,0,0,0,0,0,0,44,4,98,98,1,98,98,98,98,98,98,98,0,0,0,0,0,0,109,98,98,109,4,0,0,0,0,0,0,0,0,0,101,101,101,0,98,43,43,109,17,0,0,0,0,0,0,0,0,0,0,0,0,164,1,1,1,1,1,1,159,159,159,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,109,109,109,98,4,0,0,0,0,0,0,0,101,101,0,0,0,0,98,1,1,98,154,0,0,0,0,0,0,0,0,0,0,0,164,5,1,1,1,1,1,1,169,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,77,98,98,4,1,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,171,0,0,101,0,0,0,0,0,98,1,1,1,98,17,0,0,0,0,0,0,0,0,0,0,0,17,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,1,4,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,171,5,5,101,101,0,0,0,0,98,1,1,1,1,1,109,109,109,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,0,171,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,139,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,171,5,98,98,0,0,0,50,98,1,1,1,1,1,1,43,43,109,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,98,98,98,1,1,98,0,188,98,1,1,1,1,1,1,1,43,43,1,1,82,0,134,134,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,7,17,5,164,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a069f006-0728-4952-8d9f-1d318cee60d8","name":"Diagonal","processorId":"default","properties":{},"mechanics":{"fairysoul-1":{"secretPoint":{"x":32,"y":-2,"z":4},"preRequisite":[],"mechType":"Fairysoul"},"chest-2":{"mechType":"Secret","secretPoint":{"x":70,"y":-10,"z":30},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":12,"y":-10,"z":10},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":91,"y":7,"z":15},"secretType":"CHEST","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":33,"y":2,"z":6},"secretType":"BAT","preRequisite":[]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":18,"y":6,"z":21},{"x":18,"y":5,"z":21},{"x":19,"y":6,"z":21},{"x":19,"y":5,"z":21},{"x":18,"y":6,"z":22},{"x":18,"y":5,"z":22},{"x":19,"y":6,"z":22},{"x":19,"y":5,"z":22},{"x":18,"y":6,"z":23},{"x":18,"y":5,"z":23},{"x":19,"y":6,"z":23},{"x":19,"y":5,"z":23}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":21,"y":6,"z":21},{"x":21,"y":5,"z":21},{"x":22,"y":6,"z":21},{"x":22,"y":5,"z":21},{"x":21,"y":6,"z":22},{"x":21,"y":5,"z":22},{"x":22,"y":6,"z":22},{"x":22,"y":5,"z":22},{"x":21,"y":6,"z":23},{"x":21,"y":5,"z":23},{"x":22,"y":6,"z":23},{"x":22,"y":5,"z":23}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":83,"y":6,"z":13},{"x":83,"y":5,"z":13},{"x":84,"y":6,"z":13},{"x":84,"y":5,"z":13},{"x":85,"y":6,"z":13},{"x":85,"y":5,"z":13},{"x":86,"y":6,"z":13},{"x":86,"y":5,"z":13},{"x":83,"y":6,"z":14},{"x":83,"y":5,"z":14},{"x":84,"y":6,"z":14},{"x":84,"y":5,"z":14},{"x":85,"y":6,"z":14},{"x":85,"y":5,"z":14},{"x":86,"y":6,"z":14},{"x":86,"y":5,"z":14},{"x":83,"y":6,"z":15},{"x":83,"y":5,"z":15},{"x":84,"y":6,"z":15},{"x":84,"y":5,"z":15},{"x":85,"y":6,"z":15},{"x":85,"y":5,"z":15},{"x":86,"y":6,"z":15},{"x":86,"y":5,"z":15}]},"preRequisite":[],"mechType":"Tomb"},"journal-1":{"secretPoint":{"x":56,"y":5,"z":28},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a0c57185-4e1a-4fdd-979d-6ed0957e78fb.json b/src/main/resources/dgroomdata/a0c57185-4e1a-4fdd-979d-6ed0957e78fb.json
new file mode 100644
index 0000000..17c7d67
--- /dev/null
+++ b/src/main/resources/dgroomdata/a0c57185-4e1a-4fdd-979d-6ed0957e78fb.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":35,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,98,139,0,0,0,0,0,0,0,0,0,0,0,98,98,1,0,0,109,98,98,139,98,0,0,0,0,0,0,0,98,139,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,98,0,0,109,98,98,44,0,0,0,0,0,0,0,0,0,44,98,98,1,98,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,98,0,0,109,1,98,98,0,0,0,0,0,0,0,0,0,44,1,98,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,98,0,0,109,159,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,0,0,109,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,44,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,1,159,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,1,159,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,159,0,0,0,0,0,44,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,50,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,44,44,44,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,0,0,0,0,0,0,0,0,3,159,159,159,159,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,0,0,0,0,0,0,159,3,3,159,159,159,159,159,159,3,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,159,159,3,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,159,159,3,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,65,159,159,159,159,0,0,0,0,0,0,0,0,1,98,98,1,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,159,3,3,3,0,0,0,0,0,0,0,0,0,0,1,98,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,1,1,1,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,159,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,98,1,1,159,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,159,159,0,0,0,0,139,98,0,0,0,0,0,0,159,1,1,1,1,98,1,1,159,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a0c57185-4e1a-4fdd-979d-6ed0957e78fb","name":"Lava-ravine","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":5,"y":16,"z":16},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":34,"y":18,"z":56},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":40,"y":-3,"z":6},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":55,"y":14,"z":21},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":38,"y":22,"z":53},{"x":38,"y":21,"z":53},{"x":38,"y":20,"z":53},{"x":38,"y":19,"z":53},{"x":38,"y":18,"z":53},{"x":38,"y":22,"z":54},{"x":38,"y":21,"z":54},{"x":38,"y":20,"z":54},{"x":38,"y":19,"z":54},{"x":38,"y":18,"z":54},{"x":38,"y":22,"z":55},{"x":38,"y":21,"z":55},{"x":38,"y":20,"z":55},{"x":38,"y":19,"z":55},{"x":38,"y":18,"z":55},{"x":38,"y":22,"z":56},{"x":38,"y":21,"z":56},{"x":38,"y":20,"z":56},{"x":38,"y":19,"z":56},{"x":38,"y":18,"z":56},{"x":38,"y":22,"z":57},{"x":38,"y":21,"z":57},{"x":38,"y":20,"z":57},{"x":38,"y":19,"z":57},{"x":38,"y":18,"z":57}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":48,"y":-19,"z":31},"secretType":"ITEM_DROP","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":53,"y":-6,"z":27},"secretType":"BAT","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":11,"y":17,"z":21},{"x":11,"y":16,"z":21},{"x":12,"y":17,"z":21},{"x":12,"y":16,"z":21},{"x":13,"y":17,"z":21},{"x":13,"y":16,"z":21},{"x":14,"y":17,"z":21},{"x":14,"y":16,"z":21},{"x":11,"y":17,"z":22},{"x":11,"y":16,"z":22},{"x":12,"y":17,"z":22},{"x":12,"y":16,"z":22},{"x":13,"y":17,"z":22},{"x":13,"y":16,"z":22},{"x":14,"y":17,"z":22},{"x":14,"y":16,"z":22},{"x":11,"y":17,"z":23},{"x":11,"y":16,"z":23},{"x":12,"y":17,"z":23},{"x":12,"y":16,"z":23},{"x":13,"y":17,"z":23},{"x":13,"y":16,"z":23},{"x":14,"y":17,"z":23},{"x":14,"y":16,"z":23}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":17,"z":9},{"x":11,"y":16,"z":9},{"x":12,"y":17,"z":9},{"x":12,"y":16,"z":9},{"x":13,"y":17,"z":9},{"x":13,"y":16,"z":9},{"x":14,"y":17,"z":9},{"x":14,"y":16,"z":9},{"x":11,"y":17,"z":10},{"x":11,"y":16,"z":10},{"x":12,"y":17,"z":10},{"x":12,"y":16,"z":10},{"x":13,"y":17,"z":10},{"x":13,"y":16,"z":10},{"x":14,"y":17,"z":10},{"x":14,"y":16,"z":10},{"x":11,"y":17,"z":11},{"x":11,"y":16,"z":11},{"x":12,"y":17,"z":11},{"x":12,"y":16,"z":11},{"x":13,"y":17,"z":11},{"x":13,"y":16,"z":11},{"x":14,"y":17,"z":11},{"x":14,"y":16,"z":11}]},"preRequisite":[],"mechType":"Tomb"},"chest-4":{"mechType":"Secret","secretPoint":{"x":34,"y":18,"z":54},"secretType":"CHEST","preRequisite":["door-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":36,"y":0,"z":5},{"x":36,"y":-1,"z":5},{"x":36,"y":-2,"z":5},{"x":36,"y":-3,"z":5},{"x":36,"y":0,"z":6},{"x":36,"y":-1,"z":6},{"x":36,"y":-2,"z":6},{"x":36,"y":-3,"z":6},{"x":36,"y":0,"z":7},{"x":36,"y":-1,"z":7},{"x":36,"y":-2,"z":7},{"x":36,"y":-3,"z":7}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a1c8fd24-c105-49b6-ba56-51dfbb7023cb.json b/src/main/resources/dgroomdata/a1c8fd24-c105-49b6-ba56-51dfbb7023cb.json
new file mode 100644
index 0000000..28d11a0
--- /dev/null
+++ b/src/main/resources/dgroomdata/a1c8fd24-c105-49b6-ba56-51dfbb7023cb.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,18,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,98,109,109,109,109,109,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,2,2,3,1,98,98,98,1,1,109,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,1,98,3,3,109,98,1,1,1,1,1,98,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,109,3,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,109,109,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,109,98,1,1,1,1,3,109,109,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,109,98,1,1,1,1,1,3,3,109,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,109,1,1,1,1,1,3,3,3,3,109,18,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,18,0,0,0,0,98,98,98,1,1,1,3,3,3,3,3,98,98,50,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,4,109,109,4,98,98,18,1,1,1,109,3,1,3,3,98,98,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,2,2,2,3,1,1,1,1,1,1,1,1,109,3,98,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,18,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,162,162,0,0,0,0,0,162,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a1c8fd24-c105-49b6-ba56-51dfbb7023cb","name":"Beams","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":29,"y":11,"z":8},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":6,"y":22,"z":9},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":24,"y":22,"z":13},{"x":24,"y":21,"z":13},{"x":25,"y":22,"z":13},{"x":25,"y":21,"z":13},{"x":26,"y":22,"z":13},{"x":26,"y":21,"z":13},{"x":24,"y":22,"z":14},{"x":24,"y":21,"z":14},{"x":25,"y":22,"z":14},{"x":25,"y":21,"z":14},{"x":26,"y":22,"z":14},{"x":26,"y":21,"z":14},{"x":24,"y":22,"z":15},{"x":24,"y":21,"z":15},{"x":25,"y":22,"z":15},{"x":25,"y":21,"z":15},{"x":26,"y":22,"z":15},{"x":26,"y":21,"z":15},{"x":24,"y":22,"z":16},{"x":24,"y":21,"z":16},{"x":25,"y":22,"z":16},{"x":25,"y":21,"z":16},{"x":26,"y":22,"z":16},{"x":26,"y":21,"z":16},{"x":24,"y":22,"z":17},{"x":24,"y":21,"z":17},{"x":25,"y":22,"z":17},{"x":25,"y":21,"z":17},{"x":26,"y":22,"z":17},{"x":26,"y":21,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":2,"z":26},{"x":15,"y":1,"z":26},{"x":16,"y":2,"z":26},{"x":16,"y":1,"z":26},{"x":17,"y":2,"z":26},{"x":17,"y":1,"z":26},{"x":15,"y":2,"z":27},{"x":15,"y":1,"z":27},{"x":16,"y":2,"z":27},{"x":16,"y":1,"z":27},{"x":17,"y":2,"z":27},{"x":17,"y":1,"z":27},{"x":15,"y":2,"z":28},{"x":15,"y":1,"z":28},{"x":16,"y":2,"z":28},{"x":16,"y":1,"z":28},{"x":17,"y":2,"z":28},{"x":17,"y":1,"z":28},{"x":15,"y":2,"z":29},{"x":15,"y":1,"z":29},{"x":16,"y":2,"z":29},{"x":16,"y":1,"z":29},{"x":17,"y":2,"z":29},{"x":17,"y":1,"z":29}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a2c5d503-55e7-4e5c-8fc0-5d37f2ac19bf.json b/src/main/resources/dgroomdata/a2c5d503-55e7-4e5c-8fc0-5d37f2ac19bf.json
new file mode 100644
index 0000000..846e96c
--- /dev/null
+++ b/src/main/resources/dgroomdata/a2c5d503-55e7-4e5c-8fc0-5d37f2ac19bf.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,7,7,1,35,0,0,0,0,0,0,0,0,159,159,35,35,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,109,109,109,109,98,109,98,109,109,109,109,109,109,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,109,109,109,109,98,109,98,109,109,109,109,109,109,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,97,98,98,98,0,0,0,0,0,0,0,0,44,97,97,109,109,98,98,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,97,98,98,98,0,0,0,0,0,0,0,44,98,98,98,98,98,139,139,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,139,139,0,0,0,0,0,0,0,0,0,139,139,98,98,139,139,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,109,98,139,139,0,0,0,0,0,0,0,0,0,139,139,97,97,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,97,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,139,139,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,50,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,139,139,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,109,0,0,0,0,139,139,0,0,0,0,0,139,139,98,98,139,139,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,109,0,0,0,0,139,139,0,0,0,0,0,139,139,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,98,109,109,109,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,98,159,159,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,98,159,159,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,98,159,159,159,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,98,159,159,159,1,1,18,0,0,-1,-1,-1,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,159,159,159,159,98,98,97,50,0,-1,-1,-1,0,50,98,98,1,144,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,159,159,159,159,159,159,159,97,0,-1,-1,-1,0,98,98,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a2c5d503-55e7-4e5c-8fc0-5d37f2ac19bf","name":"Dip","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":15,"y":8,"z":19},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":7,"y":8,"z":3},"secretType":"CHEST","preRequisite":[]},"door-1":{"secretPoint":{"offsetPointList":[{"x":18,"y":12,"z":17},{"x":18,"y":11,"z":17},{"x":18,"y":10,"z":17},{"x":18,"y":9,"z":17},{"x":18,"y":8,"z":17},{"x":18,"y":12,"z":18},{"x":18,"y":11,"z":18},{"x":18,"y":10,"z":18},{"x":18,"y":9,"z":18},{"x":18,"y":8,"z":18}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":5,"y":9,"z":20},"preRequisite":["crypt-3:open"],"triggering":"door-1"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":18,"y":0,"z":26},{"x":18,"y":-1,"z":26},{"x":19,"y":0,"z":26},{"x":19,"y":-1,"z":26},{"x":20,"y":0,"z":26},{"x":20,"y":-1,"z":26},{"x":18,"y":0,"z":27},{"x":18,"y":-1,"z":27},{"x":19,"y":0,"z":27},{"x":19,"y":-1,"z":27},{"x":20,"y":0,"z":27},{"x":20,"y":-1,"z":27},{"x":18,"y":0,"z":28},{"x":18,"y":-1,"z":28},{"x":19,"y":0,"z":28},{"x":19,"y":-1,"z":28},{"x":20,"y":0,"z":28},{"x":20,"y":-1,"z":28},{"x":18,"y":0,"z":29},{"x":18,"y":-1,"z":29},{"x":19,"y":0,"z":29},{"x":19,"y":-1,"z":29},{"x":20,"y":0,"z":29},{"x":20,"y":-1,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":4,"y":9,"z":21},{"x":4,"y":8,"z":21},{"x":5,"y":9,"z":21},{"x":5,"y":8,"z":21},{"x":6,"y":9,"z":21},{"x":6,"y":8,"z":21},{"x":4,"y":9,"z":22},{"x":4,"y":8,"z":22},{"x":5,"y":9,"z":22},{"x":5,"y":8,"z":22},{"x":6,"y":9,"z":22},{"x":6,"y":8,"z":22},{"x":4,"y":9,"z":23},{"x":4,"y":8,"z":23},{"x":5,"y":9,"z":23},{"x":5,"y":8,"z":23},{"x":6,"y":9,"z":23},{"x":6,"y":8,"z":23},{"x":4,"y":9,"z":24},{"x":4,"y":8,"z":24},{"x":5,"y":9,"z":24},{"x":5,"y":8,"z":24},{"x":6,"y":9,"z":24},{"x":6,"y":8,"z":24}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":24,"y":9,"z":3},{"x":24,"y":8,"z":3},{"x":25,"y":9,"z":3},{"x":25,"y":8,"z":3},{"x":26,"y":9,"z":3},{"x":26,"y":8,"z":3},{"x":24,"y":9,"z":4},{"x":24,"y":8,"z":4},{"x":25,"y":9,"z":4},{"x":25,"y":8,"z":4},{"x":26,"y":9,"z":4},{"x":26,"y":8,"z":4},{"x":24,"y":9,"z":5},{"x":24,"y":8,"z":5},{"x":25,"y":9,"z":5},{"x":25,"y":8,"z":5},{"x":26,"y":9,"z":5},{"x":26,"y":8,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":18,"y":0,"z":26},{"x":18,"y":-1,"z":26},{"x":19,"y":0,"z":26},{"x":19,"y":-1,"z":26},{"x":20,"y":0,"z":26},{"x":20,"y":-1,"z":26},{"x":18,"y":0,"z":27},{"x":18,"y":-1,"z":27},{"x":19,"y":0,"z":27},{"x":19,"y":-1,"z":27},{"x":20,"y":0,"z":27},{"x":20,"y":-1,"z":27},{"x":18,"y":0,"z":28},{"x":18,"y":-1,"z":28},{"x":19,"y":0,"z":28},{"x":19,"y":-1,"z":28},{"x":20,"y":0,"z":28},{"x":20,"y":-1,"z":28},{"x":18,"y":0,"z":29},{"x":18,"y":-1,"z":29},{"x":19,"y":0,"z":29},{"x":19,"y":-1,"z":29},{"x":20,"y":0,"z":29},{"x":20,"y":-1,"z":29}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a5b419e7-49ee-4d6d-bdce-470f508b315d.json b/src/main/resources/dgroomdata/a5b419e7-49ee-4d6d-bdce-470f508b315d.json
new file mode 100644
index 0000000..82180f6
--- /dev/null
+++ b/src/main/resources/dgroomdata/a5b419e7-49ee-4d6d-bdce-470f508b315d.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,159,159,159,159,1,1,1,1,1,1,1,1,1,1,1,1,159,159,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,144,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,98,98,0,50,98,98,98,50,0,98,98,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,139,98,0,0,1,1,1,0,0,98,139,0,0,0,0,0,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,172,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,172,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,139,98,0,1,1,1,1,0,0,98,139,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,98,98,50,44,98,98,98,50,0,98,98,154,0,0,0,154,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,0,0,0,98,98,98,98,98,98,4,98,98,98,98,98,109,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,154,0,0,0,154,0,0,98,139,0,0,0,0,98,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,98,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,44,44,98,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,109,0,0,109,44,0,98,0,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,109,0,0,109,44,44,98,0,0,0,0,0,0,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,109,44,109,98,0,0,109,109,109,98,0,0,0,0,0,0,109,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a5b419e7-49ee-4d6d-bdce-470f508b315d","name":"Granite","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":15,"y":-9,"z":25},"secretType":"ITEM_DROP","preRequisite":[]},"essence-1":{"mechType":"Secret","secretPoint":{"x":14,"y":-9,"z":30},"secretType":"ESSENCE","preRequisite":[]}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a7321dea-d35f-44f9-a5b0-0bcaf414dc12.json b/src/main/resources/dgroomdata/a7321dea-d35f-44f9-a5b0-0bcaf414dc12.json
new file mode 100644
index 0000000..fc01d6d
--- /dev/null
+++ b/src/main/resources/dgroomdata/a7321dea-d35f-44f9-a5b0-0bcaf414dc12.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,109,0,0,0,109,98,0,0,0,0,0,0,0,0,0,1,109,0,0,0,0,134,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,50,98,98,0,0,0,0,0,101,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,109,139,0,139,0,0,0,139,0,139,109,98,0,0,0,0,0,101,-1,-1,-1,-1],[-1,-1,-1,-1,98,101,0,0,109,98,1,98,1,1,98,101,0,101,1,98,98,98,98,1,98,101,101,101,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,98,98,98,98,109,109,98,0,0,0,98,98,98,98,98,98,98,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,98,139,0,0,0,0,0,0,0,1,1,1,50,139,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,159,35,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,50,0,0,0,0,0,0,159,1,1,35,7,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,139,98,139,0,0,0,0,1,1,1,1,1,1,7,139,50,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,101,98,98,98,98,109,0,0,101,1,98,1,1,1,1,1,98,98,101,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,98,98,98,0,0,0,98,98,1,1,1,1,1,4,98,0,0,144,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,139,0,0,0,0,0,139,1,1,1,1,1,1,4,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,50,0,1,1,1,1,4,4,4,1,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,67,4,1,1,1,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,44,4,1,1,4,4,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,7,7,67,1,4,4,4,1,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a7321dea-d35f-44f9-a5b0-0bcaf414dc12","name":"Leaves","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":4,"y":11,"z":15},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"prince-1":{"secretPoint":{"offsetPointList":[{"x":8,"y":12,"z":14},{"x":8,"y":11,"z":14},{"x":9,"y":12,"z":14},{"x":9,"y":11,"z":14},{"x":10,"y":12,"z":14},{"x":10,"y":11,"z":14},{"x":8,"y":12,"z":15},{"x":8,"y":11,"z":15},{"x":9,"y":12,"z":15},{"x":9,"y":11,"z":15},{"x":10,"y":12,"z":15},{"x":10,"y":11,"z":15},{"x":8,"y":12,"z":16},{"x":8,"y":11,"z":16},{"x":9,"y":12,"z":16},{"x":9,"y":11,"z":16},{"x":10,"y":12,"z":16},{"x":10,"y":11,"z":16}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"fairysoul-7":{"secretPoint":{"x":3,"y":4,"z":3},"preRequisite":[],"mechType":"Fairysoul"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":16,"y":14,"z":14},{"x":16,"y":13,"z":14},{"x":16,"y":14,"z":15},{"x":16,"y":13,"z":15},{"x":16,"y":12,"z":15},{"x":16,"y":11,"z":15},{"x":16,"y":14,"z":16},{"x":16,"y":13,"z":16},{"x":16,"y":12,"z":16}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/a7f00d0f-bbf5-4d80-8eed-f3e28477879c.json b/src/main/resources/dgroomdata/a7f00d0f-bbf5-4d80-8eed-f3e28477879c.json
new file mode 100644
index 0000000..27bcb55
--- /dev/null
+++ b/src/main/resources/dgroomdata/a7f00d0f-bbf5-4d80-8eed-f3e28477879c.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":35,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,109,18,0,0,0,0,0,0,98,1,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,98,98,18,0,0,0,0,0,0,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,162,162,0,0,0,162,162,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,162,162,0,0,0,162,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,18,98,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,98,98,98,44,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,1,1,1,98,98,98,98,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,98,98,98,98,0,0,0,0,0,0,98,98,50,0,0,98,109,0,0,0,0,0,0,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,109,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,173,67,67,0,0,0,0,4,173,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,139,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,4,109,109,109,109,4,1,1,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,50,0,0,1,98,98,0,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,67,4,1,1,1,1,1,1,1,1,1,1,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,109,109,109,98,98,98,98,98,0,0,0,0,0,50,98,98,98,0,0,0,0,4,1,1,1,1,1,109,1,1,1,1,1,1,1,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,2,1,1,1,1,98,98,98,0,0,0,0,0,0,98,98,98,0,0,0,4,1,1,1,1,1,1,109,109,109,109,1,1,1,1,1,4,67,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,98,98,0,0,0,4,1,1,1,1,1,1,1,109,1,1,109,109,109,1,1,1,1,4,4,0,0,0,0,0,0,0,0,109,98,0,0,0,0,18,0,-1,-1,-1,-1],[-1,-1,-1,-1,2,2,1,1,1,1,1,98,0,0,0,0,0,0,0,0,109,109,0,0,173,1,1,1,109,1,1,1,1,109,1,1,109,109,1,1,1,1,1,1,4,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,109,109,0,173,1,1,1,109,109,109,1,1,1,109,109,109,109,1,1,1,109,109,1,1,1,1,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,2,1,2,1,2,1,1,98,0,0,0,0,0,0,0,0,1,98,0,4,1,1,1,1,109,1,1,1,1,1,1,1,1,1,1,109,109,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,2,2,2,2,2,2,1,98,98,0,0,0,0,0,0,0,98,98,98,4,1,1,1,1,1,1,1,1,109,109,109,109,109,109,1,1,1,1,1,1,1,4,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,2,3,1,2,1,1,98,0,0,0,0,0,0,0,98,1,1,4,1,1,1,109,109,109,109,1,109,0,0,0,0,109,1,109,109,109,109,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,109,109,109,1,1,109,1,1,109,0,0,0,0,0,0,0,0,0,0,0,162,162,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,109,1,109,1,1,109,1,1,109,0,0,0,0,0,0,0,0,0,0,0,162,162,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,65,109,1,109,109,109,109,1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,109,1,1,109,1,1,1,1,4,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,109,109,109,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,1,1,1,1,109,1,1,1,1,67,0,0,0,0,0,0,0,0,0,0,162,162,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,1,109,109,1,1,1,1,4,4,0,0,0,0,0,0,0,0,0,0,0,162,162,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,1,1,109,1,1,1,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,109,1,1,1,1,1,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,4,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,1,4,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,173,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,98,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,98,0,0,0,0,139,139,0,0,0,139,18,139,0,0,0,139,139,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,98,0,0,0,0,139,139,0,0,0,139,139,139,0,0,0,139,139,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,98,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,98,0,0,0,0,1,98,98,98,0,0,0,0,0,98,98,98,98,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,98,98,67,67,67,67,98,98,1,98,0,0,0,0,0,98,98,98,98,67,67,67,67,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,67,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,67,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,98,98,0,0,0,0,0,0,50,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,1,1,98,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"a7f00d0f-bbf5-4d80-8eed-f3e28477879c","name":"Withermancers","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":48,"y":34,"z":43},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":4,"y":-15,"z":18},"secretType":"CHEST","preRequisite":["prince-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":34,"y":41,"z":48},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":39,"y":-9,"z":60},"preRequisite":["superboom-1:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":37,"y":45,"z":47},{"x":37,"y":44,"z":47},{"x":37,"y":43,"z":47},{"x":37,"y":42,"z":47},{"x":37,"y":41,"z":47},{"x":37,"y":45,"z":48},{"x":37,"y":44,"z":48},{"x":37,"y":43,"z":48},{"x":37,"y":42,"z":48},{"x":37,"y":41,"z":48},{"x":37,"y":45,"z":49},{"x":37,"y":44,"z":49},{"x":37,"y":43,"z":49},{"x":37,"y":42,"z":49},{"x":37,"y":41,"z":49}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":36,"y":0,"z":57},{"x":37,"y":0,"z":57},{"x":38,"y":0,"z":57},{"x":36,"y":0,"z":58},{"x":37,"y":0,"z":58},{"x":38,"y":0,"z":58},{"x":39,"y":0,"z":58},{"x":36,"y":0,"z":59},{"x":37,"y":0,"z":59},{"x":38,"y":0,"z":59},{"x":39,"y":0,"z":59},{"x":40,"y":0,"z":59},{"x":39,"y":0,"z":60},{"x":40,"y":0,"z":60}]},"preRequisite":[],"mechType":"BreakableWall"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":46,"y":-9,"z":57},{"x":46,"y":-10,"z":57},{"x":47,"y":-9,"z":57},{"x":47,"y":-10,"z":57},{"x":48,"y":-9,"z":57},{"x":48,"y":-10,"z":57},{"x":49,"y":-9,"z":57},{"x":49,"y":-10,"z":57},{"x":46,"y":-9,"z":58},{"x":46,"y":-10,"z":58},{"x":47,"y":-9,"z":58},{"x":47,"y":-10,"z":58},{"x":48,"y":-9,"z":58},{"x":48,"y":-10,"z":58},{"x":49,"y":-9,"z":58},{"x":49,"y":-10,"z":58},{"x":46,"y":-9,"z":59},{"x":46,"y":-10,"z":59},{"x":47,"y":-9,"z":59},{"x":47,"y":-10,"z":59},{"x":48,"y":-9,"z":59},{"x":48,"y":-10,"z":59},{"x":49,"y":-9,"z":59},{"x":49,"y":-10,"z":59},{"x":46,"y":-9,"z":60},{"x":46,"y":-10,"z":60},{"x":47,"y":-9,"z":60},{"x":47,"y":-10,"z":60},{"x":48,"y":-9,"z":60},{"x":48,"y":-10,"z":60},{"x":49,"y":-9,"z":60},{"x":49,"y":-10,"z":60}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":46,"y":-9,"z":47},{"x":46,"y":-10,"z":47},{"x":47,"y":-9,"z":47},{"x":47,"y":-10,"z":47},{"x":48,"y":-9,"z":47},{"x":48,"y":-10,"z":47},{"x":49,"y":-9,"z":47},{"x":49,"y":-10,"z":47},{"x":46,"y":-9,"z":48},{"x":46,"y":-10,"z":48},{"x":47,"y":-9,"z":48},{"x":47,"y":-10,"z":48},{"x":48,"y":-9,"z":48},{"x":48,"y":-10,"z":48},{"x":49,"y":-9,"z":48},{"x":49,"y":-10,"z":48},{"x":46,"y":-9,"z":49},{"x":46,"y":-10,"z":49},{"x":47,"y":-9,"z":49},{"x":47,"y":-10,"z":49},{"x":48,"y":-9,"z":49},{"x":48,"y":-10,"z":49},{"x":49,"y":-9,"z":49},{"x":49,"y":-10,"z":49},{"x":46,"y":-9,"z":50},{"x":46,"y":-10,"z":50},{"x":47,"y":-9,"z":50},{"x":47,"y":-10,"z":50},{"x":48,"y":-9,"z":50},{"x":48,"y":-10,"z":50},{"x":49,"y":-9,"z":50},{"x":49,"y":-10,"z":50}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":56,"y":2,"z":56},{"x":56,"y":1,"z":56},{"x":57,"y":2,"z":56},{"x":57,"y":1,"z":56},{"x":58,"y":2,"z":56},{"x":58,"y":1,"z":56},{"x":59,"y":2,"z":56},{"x":59,"y":1,"z":56},{"x":56,"y":2,"z":57},{"x":56,"y":1,"z":57},{"x":57,"y":2,"z":57},{"x":57,"y":1,"z":57},{"x":58,"y":2,"z":57},{"x":58,"y":1,"z":57},{"x":59,"y":2,"z":57},{"x":59,"y":1,"z":57},{"x":56,"y":2,"z":58},{"x":56,"y":1,"z":58},{"x":57,"y":2,"z":58},{"x":57,"y":1,"z":58},{"x":58,"y":2,"z":58},{"x":58,"y":1,"z":58},{"x":59,"y":2,"z":58},{"x":59,"y":1,"z":58},{"x":56,"y":2,"z":59},{"x":56,"y":1,"z":59},{"x":57,"y":2,"z":59},{"x":57,"y":1,"z":59},{"x":58,"y":2,"z":59},{"x":58,"y":1,"z":59},{"x":59,"y":2,"z":59},{"x":59,"y":1,"z":59}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":3,"y":-15,"z":24},{"x":3,"y":-16,"z":24},{"x":4,"y":-15,"z":24},{"x":4,"y":-16,"z":24},{"x":5,"y":-15,"z":24},{"x":5,"y":-16,"z":24},{"x":6,"y":-15,"z":24},{"x":6,"y":-16,"z":24},{"x":3,"y":-15,"z":25},{"x":3,"y":-16,"z":25},{"x":4,"y":-15,"z":25},{"x":4,"y":-16,"z":25},{"x":5,"y":-15,"z":25},{"x":5,"y":-16,"z":25},{"x":6,"y":-15,"z":25},{"x":6,"y":-16,"z":25},{"x":3,"y":-15,"z":26},{"x":3,"y":-16,"z":26},{"x":4,"y":-15,"z":26},{"x":4,"y":-16,"z":26},{"x":5,"y":-15,"z":26},{"x":5,"y":-16,"z":26},{"x":6,"y":-15,"z":26},{"x":6,"y":-16,"z":26}]},"preRequisite":["prince-1:open"],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":62,"y":41,"z":48},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":-15,"z":10},{"x":3,"y":-16,"z":10},{"x":4,"y":-15,"z":10},{"x":4,"y":-16,"z":10},{"x":5,"y":-15,"z":10},{"x":5,"y":-16,"z":10},{"x":6,"y":-15,"z":10},{"x":6,"y":-16,"z":10},{"x":3,"y":-15,"z":11},{"x":3,"y":-16,"z":11},{"x":4,"y":-15,"z":11},{"x":4,"y":-16,"z":11},{"x":5,"y":-15,"z":11},{"x":5,"y":-16,"z":11},{"x":6,"y":-15,"z":11},{"x":6,"y":-16,"z":11},{"x":3,"y":-15,"z":12},{"x":3,"y":-16,"z":12},{"x":4,"y":-15,"z":12},{"x":4,"y":-16,"z":12},{"x":5,"y":-15,"z":12},{"x":5,"y":-16,"z":12},{"x":6,"y":-15,"z":12},{"x":6,"y":-16,"z":12}]},"preRequisite":["prince-1:open"],"mechType":"Tomb"},"prince-1":{"secretPoint":{"offsetPointList":[{"x":33,"y":3,"z":28},{"x":33,"y":2,"z":28},{"x":33,"y":1,"z":28},{"x":34,"y":3,"z":28},{"x":34,"y":2,"z":28},{"x":34,"y":1,"z":28},{"x":35,"y":3,"z":28},{"x":35,"y":2,"z":28},{"x":35,"y":1,"z":28},{"x":36,"y":3,"z":28},{"x":36,"y":2,"z":28},{"x":36,"y":1,"z":28},{"x":33,"y":3,"z":29},{"x":33,"y":2,"z":29},{"x":33,"y":1,"z":29},{"x":34,"y":3,"z":29},{"x":34,"y":2,"z":29},{"x":34,"y":1,"z":29},{"x":35,"y":3,"z":29},{"x":35,"y":2,"z":29},{"x":35,"y":1,"z":29},{"x":36,"y":3,"z":29},{"x":36,"y":2,"z":29},{"x":36,"y":1,"z":29},{"x":33,"y":3,"z":30},{"x":33,"y":2,"z":30},{"x":33,"y":1,"z":30},{"x":34,"y":3,"z":30},{"x":34,"y":2,"z":30},{"x":34,"y":1,"z":30},{"x":35,"y":3,"z":30},{"x":35,"y":2,"z":30},{"x":35,"y":1,"z":30},{"x":36,"y":3,"z":30},{"x":36,"y":2,"z":30},{"x":36,"y":1,"z":30},{"x":33,"y":3,"z":31},{"x":33,"y":2,"z":31},{"x":33,"y":1,"z":31},{"x":34,"y":3,"z":31},{"x":34,"y":2,"z":31},{"x":34,"y":1,"z":31},{"x":35,"y":3,"z":31},{"x":35,"y":2,"z":31},{"x":35,"y":1,"z":31},{"x":36,"y":3,"z":31},{"x":36,"y":2,"z":31},{"x":36,"y":1,"z":31}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/ae5b48ac-43ec-4837-a34e-ac70cba71481.json b/src/main/resources/dgroomdata/ae5b48ac-43ec-4837-a34e-ac70cba71481.json
new file mode 100644
index 0000000..3115572
--- /dev/null
+++ b/src/main/resources/dgroomdata/ae5b48ac-43ec-4837-a34e-ac70cba71481.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,159,51,101,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,159,159,139,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,109,98,0,0,98,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,4,17,0,0,0,0,0,17,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,4,67,67,98,98,109,0,0,0,0,98,98,98,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,171,0,0,0,0,0,0,98,98,44,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,171,0,0,0,0,0,139,4,44,0,0,0,0,101,51,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,0,0,98,144,44,44,4,0,0,0,0,44,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,188,0,0,188,0,0,188,0,0,188,0,0,134,5,98,98,98,0,0,98,159,159,159,4,44,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,188,134,98,43,1,0,0,0,5,1,98,98,98,98,0,0,0,0,101,51,-1,-1,-1,-1],[-1,-1,-1,-1,188,0,164,169,5,5,134,0,50,0,0,0,0,134,5,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,43,43,0,0,0,0,164,5,98,98,98,109,50,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,164,164,134,5,5,188,0,0,0,0,0,134,5,5,50,0,0,0,0,0,188,0,188,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,98,1,188,0,0,0,0,134,169,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,171,171,44,98,98,98,44,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,134,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,171,171,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,188,0,188,0,0,0,0,5,5,5,5,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,98,98,5,134,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,44,98,98,98,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,5,98,98,5,5,164,164,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,164,188,0,0,188,0,0,5,5,5,5,0,0,0,188,0,0,0,171,171,0,0,0,0,0,0,171,17,98,98,1,5,169,164,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,171,171,43,43,0,0,0,0,0,0,98,98,98,98,98,98,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,171,164,43,43,1,44,43,44,144,1,98,98,98,98,98,17,0,0,17,5,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,188,0,0,0,0,0,188,0,134,134,0,0,0,0,0,0,84,84,188,0,0,188,0,50,5,5,5,5,0,0,0,188,0,0,0,188,5,164,98,98,159,159,159,159,98,98,98,98,98,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,98,164,5,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,144,0,44,44,1,188,0,0,109,98,0,0,0,101,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,101,101,0,101,101,98,5,5,0,0,0,0,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,109,98,50,0,0,101,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,67,98,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,17,0,0,17,134,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,4,50,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,98,98,98,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,0,0,0,101,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,164,164,98,1,0,0,0,171,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,67,0,0,0,0,0,4,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,5,164,0,0,0,0,0,0,0,0,0,0,0,0,0,171,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"ae5b48ac-43ec-4837-a34e-ac70cba71481","name":"Skull","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":53,"y":21,"z":8},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":3,"y":18,"z":16},"secretType":"CHEST","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":53,"y":-7,"z":20},{"x":53,"y":-8,"z":20},{"x":54,"y":-7,"z":20},{"x":54,"y":-8,"z":20},{"x":55,"y":-7,"z":20},{"x":55,"y":-8,"z":20},{"x":53,"y":-7,"z":21},{"x":53,"y":-8,"z":21},{"x":54,"y":-7,"z":21},{"x":54,"y":-8,"z":21},{"x":55,"y":-7,"z":21},{"x":55,"y":-8,"z":21},{"x":53,"y":-7,"z":22},{"x":53,"y":-8,"z":22},{"x":54,"y":-7,"z":22},{"x":54,"y":-8,"z":22},{"x":55,"y":-7,"z":22},{"x":55,"y":-8,"z":22},{"x":53,"y":-7,"z":23},{"x":53,"y":-8,"z":23},{"x":54,"y":-7,"z":23},{"x":54,"y":-8,"z":23},{"x":55,"y":-7,"z":23},{"x":55,"y":-8,"z":23}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/b2dce4ed-2bda-4303-a4d7-3ebb914db318.json b/src/main/resources/dgroomdata/b2dce4ed-2bda-4303-a4d7-3ebb914db318.json
new file mode 100644
index 0000000..6eced45
--- /dev/null
+++ b/src/main/resources/dgroomdata/b2dce4ed-2bda-4303-a4d7-3ebb914db318.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,17,17,17,1,1,43,43,43,43,43,43,43,43,43,43,43,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,98,98,109,109,98,98,0,109,43,43,43,43,43,43,43,43,43,43,17,109,0,98,98,98,98,98,98,-1,-1,-1],[-1,-1,-1,139,0,0,0,0,0,0,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,139,-1,-1,-1],[-1,-1,-1,139,0,0,0,0,0,159,109,43,43,43,43,43,43,43,43,43,43,17,109,0,0,0,0,0,0,139,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,159,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,18,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,1,0,0,0,0,0,0,109,43,43,43,43,43,43,43,43,43,43,43,109,0,0,0,0,0,0,139,-1,-1,-1],[-1,-1,-1,139,0,0,0,0,0,0,109,43,17,17,43,43,43,43,43,17,17,43,109,0,0,0,0,0,0,139,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,109,43,43,17,43,43,43,43,43,17,43,43,109,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,1,1,109,109,109,109,109,109,109,109,109,109,109,1,1,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,1,1,0,159,18,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,139,0,0,0,0,0,0,0,0,0,0,44,0,0,0,44,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1],[-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,50,0,0,77,0,0,50,0,0,0,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,77,43,77,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,44,0,0,0,77,0,0,0,0,0,0,0,0,0,77,0,0,0,44,0,0,0,0,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,77,43,77,0,0,0,0,0,0,0,77,43,77,0,0,0,0,0,0,0,-1,-1,-1],[-1,-1,-1,1,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,1,-1,-1,-1],[-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1],[-1,-1,-1,1,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,1,98,-1,-1,-1],[-1,-1,-1,98,1,98,98,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"b2dce4ed-2bda-4303-a4d7-3ebb914db318","name":"puzzle_kahoooooooot!","processorId":"puzzle_trivia","properties":{"A":{"x":11,"y":0,"z":25},"B":{"x":16,"y":0,"z":22},"C":{"x":21,"y":0,"z":25}},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/b2df250c-4af2-4201-963c-0ee1cb6bd3de.json b/src/main/resources/dgroomdata/b2df250c-4af2-4201-963c-0ee1cb6bd3de.json
new file mode 100644
index 0000000..d779d72
--- /dev/null
+++ b/src/main/resources/dgroomdata/b2df250c-4af2-4201-963c-0ee1cb6bd3de.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,169,4,44,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,48,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,48,67,0,0,44,98,1,1,1,1,1,1,1,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,188,98,1,1,1,1,1,1,1,1,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,139,188,98,1,1,1,1,1,1,1,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,188,0,98,98,1,1,1,1,1,1,1,98,109,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,5,5,5,5,1,1,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,5,5,0,0,1,1,1,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,7,7,7,7,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,44,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,109,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,18,1,1,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,13,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,98,98,98,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,13,1,1,18,0,0,0,0,0,0,0,0,1,1,1,98,98,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,13,18,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,7,1,7,7,7,0,0,0,0,0,0,0,0,109,98,109,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,1,1,1,1,82,0,0,0,0,0,0,0,109,98,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,82,0,0,0,1,1,1,1,1,1,1,82,0,0,0,0,0,1,1,1,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,1,1,1,1,1,1,1,1,1,7,0,0,18,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,82,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"b2df250c-4af2-4201-963c-0ee1cb6bd3de","name":"lava-pool","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":4,"y":22,"z":8},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":14,"y":-7,"z":16},"secretType":"CHEST","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":13,"y":0,"z":3},"secretType":"BAT","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":23,"z":19},{"x":6,"y":22,"z":19},{"x":6,"y":21,"z":19},{"x":6,"y":20,"z":19},{"x":7,"y":23,"z":19},{"x":7,"y":22,"z":19},{"x":7,"y":21,"z":19},{"x":7,"y":20,"z":19},{"x":8,"y":23,"z":19},{"x":8,"y":22,"z":19},{"x":8,"y":21,"z":19},{"x":8,"y":20,"z":19}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/b58cfdf5-a11d-4f28-b3c4-6576e5157374.json b/src/main/resources/dgroomdata/b58cfdf5-a11d-4f28-b3c4-6576e5157374.json
new file mode 100644
index 0000000..bd19160
--- /dev/null
+++ b/src/main/resources/dgroomdata/b58cfdf5-a11d-4f28-b3c4-6576e5157374.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":17,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,126,134,134,134,98,0,0,0,0,0,0,0,0,0,0,126,171,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,126,0,0,0,98,0,144,0,0,17,0,0,0,0,0,17,126,109,0,0,0,126,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,126,0,0,17,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,126,126,126,126,17,0,0,0,0,0,17,0,98,188,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,17,98,14,14,14,14,126,0,0,0,0,0,0,126,98,17,0,0,0,0,0,188,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,98,98,14,14,14,14,126,0,0,0,0,0,0,126,98,98,98,0,0,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,98,98,98,98,109,0,0,0,44,109,98,98,14,126,0,0,0,188,164,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,126,41,41,98,98,159,159,159,159,159,159,98,98,14,126,0,0,0,0,164,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,126,41,41,98,1,7,0,0,0,0,7,1,98,14,126,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,126,126,126,98,1,7,0,0,0,0,7,1,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,17,98,17,171,188,0,0,0,0,17,98,17,188,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,188,0,0,0,0,0,50,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,126,126,126,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,14,171,126,0,0,0,0,17,98,17,0,0,0,0,0,0,17,98,17,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,14,14,126,0,0,0,0,0,98,1,0,0,0,0,0,0,14,109,0,0,0,0,126,41,41,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,109,98,98,98,1,14,0,0,0,0,0,171,44,0,0,0,0,126,41,169,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,126,41,98,1,14,0,0,0,0,0,1,44,50,0,0,0,126,171,41,-1,-1,-1,-1],[-1,-1,-1,-1,144,0,0,0,0,0,126,17,98,17,14,0,0,0,50,0,17,98,17,0,0,0,126,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,188,0,101,0,0,0,0,0,144,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,44,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,44,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,50,0,0,0,0,0,0,1,101,0,0,0,0,0,44,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,126,126,17,98,17,0,0,0,0,0,0,17,98,17,0,0,0,0,44,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,126,14,171,98,14,0,0,0,0,0,0,1,98,50,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,188,0,0,0,0,126,1,1,98,14,0,0,0,0,0,0,1,98,98,98,0,0,109,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,126,50,0,0,0,0,1,1,98,0,0,0,0,0,0,14,1,98,0,188,0,0,0,134,14,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,0,0,0,0,17,98,17,0,0,126,126,0,0,17,98,17,0,0,0,0,134,134,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,44,0,0,0,0,0,101,0,0,0,0,0,0,0,50,101,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,44,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,144,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,0,0,0,0,0,0,101,188,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,44,0,0,126,126,17,98,17,188,0,0,0,0,0,17,98,17,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,109,0,0,126,171,14,98,0,0,0,0,0,0,1,169,98,50,0,0,0,0,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,1,1,1,98,171,0,0,0,0,0,14,1,98,0,0,0,0,0,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,0,0,98,98,1,98,1,0,0,0,0,0,14,1,98,109,0,0,98,98,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,41,134,17,0,0,0,50,17,98,17,50,0,0,0,0,0,17,98,17,0,0,98,98,50,126,-1,-1,-1,-1],[-1,-1,-1,-1,169,134,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,44,98,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,134,134,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,44,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,14,101,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,17,98,17,14,0,0,50,0,14,17,98,17,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,126,126,98,1,169,14,0,0,188,14,1,98,126,126,126,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,126,171,98,98,98,98,98,98,98,98,98,109,14,171,126,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,44,0,144,109,0,0,126,14,98,41,41,41,164,188,44,44,98,109,14,14,126,0,0,50,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,98,0,0,98,98,98,41,41,41,164,0,0,144,126,98,98,109,109,0,0,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,44,44,109,98,0,0,188,98,164,164,164,164,164,0,0,0,126,14,14,126,0,0,0,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,126,0,0,0,0,0,0,98,14,14,126,0,0,0,0,0,126,14,14,126,0,0,0,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,126,0,0,0,0,0,0,109,126,126,126,0,0,0,0,0,126,171,14,126,0,0,0,0,126,-1,-1,-1,-1],[-1,-1,-1,-1,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,126,126,126,126,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,126,0,0,0,0,0,0,0,0,0,0,0,0,0,50,109,50,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,126,126,126,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,164,164,164,171,41,98,44,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"b58cfdf5-a11d-4f28-b3c4-6576e5157374","name":"Gold","processorId":"default","properties":{},"mechanics":{"secret-1":{"mechType":"Secret","secretPoint":{"x":18,"y":-1,"z":15},"secretType":"ESSENCE","preRequisite":[]},"journal-3":{"secretPoint":{"x":16,"y":-1,"z":23},"preRequisite":[],"mechType":"Journal"},"journal-2":{"secretPoint":{"x":13,"y":-1,"z":27},"preRequisite":[],"mechType":"Journal"},"journal-1":{"secretPoint":{"x":14,"y":-1,"z":37},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/b9e8fcee-dce8-40fd-8f3a-d8cb5c3edd70.json b/src/main/resources/dgroomdata/b9e8fcee-dce8-40fd-8f3a-d8cb5c3edd70.json
new file mode 100644
index 0000000..95bd698
--- /dev/null
+++ b/src/main/resources/dgroomdata/b9e8fcee-dce8-40fd-8f3a-d8cb5c3edd70.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,44,4,144,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,98,4,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,44,0,0,0,0,0,0,0,0,1,0,0,144,1,98,1,139,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,98,159,159,159,0,0,50,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,44,0,0,0,0,109,159,159,98,98,98,98,159,144,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,0,0,0,0,0,1,144,0,1,1,98,98,98,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,98,98,159,159,159,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,44,0,0,0,0,0,0,0,0,98,1,0,0,0,1,1,1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,101,101,101,1,98,98,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,1,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,159,159,159,109,0,0,0,0,0,0,0,0,0,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,159,159,1,44,0,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,44,44,44,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,1,98,50,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,44,44,44,1,139,0,0,0,139,1,139,0,0,0,139,1,159,98,44,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,159,159,159,1,98,0,0,0,98,98,109,0,0,144,109,98,1,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,159,159,159,1,1,159,159,159,159,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"b9e8fcee-dce8-40fd-8f3a-d8cb5c3edd70","name":"Andesite","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":30,"y":-1,"z":3},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"essence-1":{"mechType":"Secret","secretPoint":{"x":25,"y":-1,"z":9},"secretType":"ESSENCE","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":28,"y":4,"z":11},{"x":28,"y":3,"z":11},{"x":28,"y":2,"z":11},{"x":28,"y":1,"z":11},{"x":28,"y":0,"z":11},{"x":29,"y":2,"z":11},{"x":29,"y":1,"z":11},{"x":29,"y":0,"z":11}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/c1b1eaf0-d6de-4d1f-944b-e1b3205ef7d0.json b/src/main/resources/dgroomdata/c1b1eaf0-d6de-4d1f-944b-e1b3205ef7d0.json
new file mode 100644
index 0000000..4e4c355
--- /dev/null
+++ b/src/main/resources/dgroomdata/c1b1eaf0-d6de-4d1f-944b-e1b3205ef7d0.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,1,1,4,98,98,139,0,0,0,0,0,139,139,0,0,0,0,0,98,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,4,4,98,1,109,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,4,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,1,4,4,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,4,4,4,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,4,1,4,1,4,98,139,98,0,0,0,0,0,0,0,0,0,0,0,0,139,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,4,1,1,4,4,98,98,139,0,0,0,0,0,0,0,0,0,0,98,0,98,139,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,4,4,1,4,4,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,1,98,0,0,0,67,0,0,1,0,0,4,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,1,1,4,98,139,139,0,4,0,0,4,0,0,1,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,4,4,4,1,1,98,98,139,0,1,0,0,1,0,50,1,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,4,4,4,1,98,98,98,98,98,98,98,98,98,1,98,98,109,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,4,4,4,4,98,1,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,4,4,1,1,98,98,98,98,98,98,98,1,98,98,98,98,98,98,67,67,67,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,1,1,1,1,1,4,1,1,4,4,1,1,1,1,1,4,1,1,1,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,1,1,4,4,4,4,4,1,4,1,1,1,1,1,4,4,1,1,1,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,1,4,1,4,1,4,1,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,1,4,1,4,1,1,4,4,1,4,4,4,4,1,4,4,1,4,4,4,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,1,1,1,1,1,1,98,98,109,109,98,109,109,98,98,1,4,4,4,1,4,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,4,1,1,1,4,67,0,0,0,0,0,0,0,67,4,4,4,1,4,1,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,67,0,0,0,0,0,0,0,67,1,4,4,4,4,4,4,4,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"c1b1eaf0-d6de-4d1f-944b-e1b3205ef7d0","name":"Duncan","processorId":"default","properties":{},"mechanics":{"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":19,"y":19,"z":24},"secretType":"ITEM_DROP","preRequisite":[]},"Duncan":{"secretPoint":{"x":18,"y":18,"z":26},"preRequisite":[],"mechType":"Npc"},"journal-1":{"secretPoint":{"x":19,"y":19,"z":25},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/c2ea0a41-d495-437f-86cc-235a71c49f22.json b/src/main/resources/dgroomdata/c2ea0a41-d495-437f-86cc-235a71c49f22.json
new file mode 100644
index 0000000..b6a231a
--- /dev/null
+++ b/src/main/resources/dgroomdata/c2ea0a41-d495-437f-86cc-235a71c49f22.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,144,4,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,4,4,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,50,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,0,144,0,0,0,0,0,0,101,0,0,0,0,4,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,101,0,0,0,0,4,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,101,0,1,101,101,1,1,0,0,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,101,0,0,0,0,4,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,101,0,0,0,0,7,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,50,0,0,0,50,1,1,0,0,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,98,4,4,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,4,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,98,109,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,159,98,98,98,0,0,0,109,98,109,159,159,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,1,0,0,0,0,0,0,0,0,0,1,159,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,98,144,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,144,98,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,1,0,0,0,0,0,0,0,0,0,1,159,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,159,98,98,0,0,0,0,0,98,98,159,159,0,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"c2ea0a41-d495-437f-86cc-235a71c49f22","name":"puzzle-riddle","processorId":"puzzle_riddle_solver","properties":{},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/c6c65c08-893a-42f7-ad9e-cecc0f0bdeaf.json b/src/main/resources/dgroomdata/c6c65c08-893a-42f7-ad9e-cecc0f0bdeaf.json
new file mode 100644
index 0000000..0a96c78
--- /dev/null
+++ b/src/main/resources/dgroomdata/c6c65c08-893a-42f7-ad9e-cecc0f0bdeaf.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":15,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,1,98,98,98,4,109,0,0,0,0,0,109,4,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,98,0,0,67,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,35,0,0,0,0,0,0,50,0,159,0,0,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,1,98,1,98,4,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,35,0,0,0,0,0,0,67,1,67,67,1,0,0,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,1,1,98,98,98,4,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,159,1,1,1,1,35,0,0,0,0,0,0,0,67,4,67,67,4,0,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,4,4,4,109,0,0,0,0,0,109,4,109,0,0,0,0,0,109,109,50,0,0,139,98,0,0,0,0,50,98,98,0,0,0,0,0,139,98,50,0,0,0,0,139,98,0,0,0,0,50,139,98,0,0,0,0,0,139,98,0,0,0,0,0,139,98,0,0,0,0,50,1,139,0,0,0,0,0,1,1,0,0,0,0,0,139,98,0,0,0,0,0,0,0,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,98,0,0,109,109,0,0,0,0,0,109,109,109,0,0,0,0,0,109,98,98,98,98,98,98,0,0,0,0,0,139,98,0,0,0,0,0,139,98,0,0,0,0,0,139,98,0,0,0,0,0,139,139,0,0,0,0,0,139,98,0,0,0,0,0,98,98,0,0,0,0,0,139,98,0,0,0,0,0,139,98,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,67,159,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,67,67,67,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,50,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,159,159,0,0,0,0,0,0,0,1,67,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,109,98,98,98,98,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,159,159,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,4,109,0,0,0,0,0,109,109,0,0,0,98,139,0,0,0,0,44,44,139,44,44,0,0,0,0,0,0,0,0,0,0,0,44,44,139,44,44,0,0,0,0,0,0,0,0,0,0,0,44,44,139,44,44,0,0,0,0,0,0,0,0,0,0,0,44,44,139,44,44,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,1,159,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,162,162,162,139,0,0,0,0,0,0,0,0,0,0,0,139,162,162,162,139,0,0,0,0,0,0,0,0,0,0,0,139,162,162,162,139,0,0,0,0,0,0,0,0,0,0,0,139,162,162,162,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,44,162,162,162,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,4,109,0,0,0,0,0,109,109,0,0,0,98,139,0,0,0,0,44,44,139,44,44,0,0,0,0,0,0,0,0,0,0,0,44,44,139,44,44,0,0,0,0,0,0,0,0,0,0,0,44,44,139,44,44,0,0,0,0,0,0,0,0,0,0,0,44,44,139,44,44,0,0,0,0,98,139,0,0,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,109,98,98,98,98,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,159,159,159,159,0,0,0,0,0,0,0,35,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,159,0,0,0,0,0,0,35,1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,159,0,0,0,0,35,159,1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,159,0,0,0,0,0,159,159,159,0,50,0,0,0,0,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,109,109,0,0,0,109,109,0,0,0,0,0,109,109,109,0,0,0,0,0,109,98,98,98,98,98,98,0,0,0,0,0,139,139,0,0,0,0,0,98,139,0,0,0,0,0,98,1,0,0,0,0,0,139,98,0,0,0,0,0,139,98,0,0,0,0,0,98,139,0,0,0,0,0,139,98,0,0,0,0,0,139,1,0,0,0,0,0,139,139,35,35,1,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,67,4,4,4,4,4,4,109,0,0,0,0,0,109,4,109,0,0,0,0,0,109,109,50,0,0,139,139,0,0,0,0,0,1,1,0,0,0,0,0,139,1,50,0,0,0,0,98,139,0,0,0,0,0,98,139,0,0,0,0,0,98,139,0,0,0,0,0,98,139,50,0,0,0,0,98,139,0,0,0,0,0,98,1,0,0,0,0,0,98,98,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,1,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,0,0,0,0,0,0,0,35,35,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,109,0,0,0,0,0,109,4,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,4,67,0,0,98,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,159,159,0,0,0,159,1,1,159,35,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"c6c65c08-893a-42f7-ad9e-cecc0f0bdeaf","name":"Pit","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":21,"y":21,"z":10},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":114,"y":22,"z":29},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":8,"y":-5,"z":8},"secretType":"CHEST","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":4,"y":6,"z":28},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":46,"y":13,"z":3},{"x":46,"y":12,"z":3},{"x":47,"y":13,"z":3},{"x":47,"y":12,"z":3},{"x":48,"y":13,"z":3},{"x":48,"y":12,"z":3},{"x":49,"y":13,"z":3},{"x":49,"y":12,"z":3},{"x":50,"y":13,"z":3},{"x":50,"y":12,"z":3},{"x":46,"y":13,"z":4},{"x":46,"y":12,"z":4},{"x":47,"y":13,"z":4},{"x":47,"y":12,"z":4},{"x":48,"y":13,"z":4},{"x":48,"y":12,"z":4},{"x":49,"y":13,"z":4},{"x":49,"y":12,"z":4},{"x":50,"y":13,"z":4},{"x":50,"y":12,"z":4},{"x":46,"y":13,"z":5},{"x":46,"y":12,"z":5},{"x":47,"y":13,"z":5},{"x":47,"y":12,"z":5},{"x":48,"y":13,"z":5},{"x":48,"y":12,"z":5},{"x":49,"y":13,"z":5},{"x":49,"y":12,"z":5},{"x":50,"y":13,"z":5},{"x":50,"y":12,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"bat-1":{"mechType":"Secret","secretPoint":{"x":9,"y":8,"z":29},"secretType":"BAT","preRequisite":["superboom-1:open"]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":46,"y":13,"z":27},{"x":46,"y":12,"z":27},{"x":47,"y":13,"z":27},{"x":47,"y":12,"z":27},{"x":48,"y":13,"z":27},{"x":48,"y":12,"z":27},{"x":49,"y":13,"z":27},{"x":49,"y":12,"z":27},{"x":50,"y":13,"z":27},{"x":50,"y":12,"z":27},{"x":46,"y":13,"z":28},{"x":46,"y":12,"z":28},{"x":47,"y":13,"z":28},{"x":47,"y":12,"z":28},{"x":48,"y":13,"z":28},{"x":48,"y":12,"z":28},{"x":49,"y":13,"z":28},{"x":49,"y":12,"z":28},{"x":50,"y":13,"z":28},{"x":50,"y":12,"z":28},{"x":46,"y":13,"z":29},{"x":46,"y":12,"z":29},{"x":47,"y":13,"z":29},{"x":47,"y":12,"z":29},{"x":48,"y":13,"z":29},{"x":48,"y":12,"z":29},{"x":49,"y":13,"z":29},{"x":49,"y":12,"z":29},{"x":50,"y":13,"z":29},{"x":50,"y":12,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":78,"y":13,"z":27},{"x":78,"y":12,"z":27},{"x":79,"y":13,"z":27},{"x":79,"y":12,"z":27},{"x":80,"y":13,"z":27},{"x":80,"y":12,"z":27},{"x":81,"y":13,"z":27},{"x":81,"y":12,"z":27},{"x":82,"y":13,"z":27},{"x":82,"y":12,"z":27},{"x":78,"y":13,"z":28},{"x":78,"y":12,"z":28},{"x":79,"y":13,"z":28},{"x":79,"y":12,"z":28},{"x":80,"y":13,"z":28},{"x":80,"y":12,"z":28},{"x":81,"y":13,"z":28},{"x":81,"y":12,"z":28},{"x":82,"y":13,"z":28},{"x":82,"y":12,"z":28},{"x":78,"y":13,"z":29},{"x":78,"y":12,"z":29},{"x":79,"y":13,"z":29},{"x":79,"y":12,"z":29},{"x":80,"y":13,"z":29},{"x":80,"y":12,"z":29},{"x":81,"y":13,"z":29},{"x":81,"y":12,"z":29},{"x":82,"y":13,"z":29},{"x":82,"y":12,"z":29}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":78,"y":13,"z":3},{"x":78,"y":12,"z":3},{"x":79,"y":13,"z":3},{"x":79,"y":12,"z":3},{"x":80,"y":13,"z":3},{"x":80,"y":12,"z":3},{"x":81,"y":13,"z":3},{"x":81,"y":12,"z":3},{"x":82,"y":13,"z":3},{"x":82,"y":12,"z":3},{"x":78,"y":13,"z":4},{"x":78,"y":12,"z":4},{"x":79,"y":13,"z":4},{"x":79,"y":12,"z":4},{"x":80,"y":13,"z":4},{"x":80,"y":12,"z":4},{"x":81,"y":13,"z":4},{"x":81,"y":12,"z":4},{"x":82,"y":13,"z":4},{"x":82,"y":12,"z":4},{"x":78,"y":13,"z":5},{"x":78,"y":12,"z":5},{"x":79,"y":13,"z":5},{"x":79,"y":12,"z":5},{"x":80,"y":13,"z":5},{"x":80,"y":12,"z":5},{"x":81,"y":13,"z":5},{"x":81,"y":12,"z":5},{"x":82,"y":13,"z":5},{"x":82,"y":12,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":9,"y":10,"z":24},{"x":9,"y":9,"z":24},{"x":9,"y":8,"z":24},{"x":9,"y":7,"z":24},{"x":9,"y":6,"z":24},{"x":10,"y":10,"z":24},{"x":10,"y":9,"z":24},{"x":10,"y":8,"z":24},{"x":10,"y":7,"z":24},{"x":10,"y":6,"z":24}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/c6ebcdb2-4ea8-4387-b997-031bd56f7e3b.json b/src/main/resources/dgroomdata/c6ebcdb2-4ea8-4387-b997-031bd56f7e3b.json
new file mode 100644
index 0000000..c9761ad
--- /dev/null
+++ b/src/main/resources/dgroomdata/c6ebcdb2-4ea8-4387-b997-031bd56f7e3b.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,58,58,0,0,50,98,98,98,0,0,0,0,0,98,98,98,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,58,58,0,0,0,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,-1,-1,-1,-1],[-1,-1,-1,-1,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,164,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,98,0,0,0,164,164,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,98,98,98,0,0,0,0,0,98,98,98,0,0,0,164,5,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"c6ebcdb2-4ea8-4387-b997-031bd56f7e3b","name":"Mirror","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":4,"y":-15,"z":18},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":12,"y":-13,"z":17},{"x":12,"y":-14,"z":17},{"x":12,"y":-15,"z":17},{"x":12,"y":-13,"z":18},{"x":12,"y":-14,"z":18},{"x":12,"y":-15,"z":18},{"x":12,"y":-16,"z":18},{"x":12,"y":-14,"z":19},{"x":12,"y":-15,"z":19},{"x":12,"y":-16,"z":19}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/c9078cd2-91d4-457d-ae30-3579293821da.json b/src/main/resources/dgroomdata/c9078cd2-91d4-457d-ae30-3579293821da.json
new file mode 100644
index 0000000..1ff0c8b
--- /dev/null
+++ b/src/main/resources/dgroomdata/c9078cd2-91d4-457d-ae30-3579293821da.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,159,98,98,139,0,0,0,0,0,0,0,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,139,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,159,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,0,144,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,139,0,0,0,0,0,98,98,0,17,17,0,0,0,0,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,1,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,17,98,98,17,0,0,17,17,17,118,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,101,101,101,101,101,101,101,98,98,101,101,101,101,101,101,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,109,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,139,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,139,98,0,0,0,0,0,0,118,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,98,118,0,0,0,0,0,0,109,109,0,0,0,0,0,118,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,159,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,159,43,98,1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,98,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"c9078cd2-91d4-457d-ae30-3579293821da","name":"Bridges","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":4,"y":12,"z":16},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":42,"y":-18,"z":22},"secretType":"CHEST","preRequisite":[]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":55,"y":-11,"z":29},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":10,"y":16,"z":15},{"x":10,"y":15,"z":15},{"x":10,"y":14,"z":15},{"x":10,"y":13,"z":15},{"x":10,"y":12,"z":15},{"x":10,"y":11,"z":15},{"x":10,"y":16,"z":16},{"x":10,"y":15,"z":16},{"x":10,"y":14,"z":16},{"x":10,"y":13,"z":16},{"x":10,"y":12,"z":16},{"x":10,"y":11,"z":16},{"x":10,"y":16,"z":17},{"x":10,"y":15,"z":17},{"x":10,"y":14,"z":17},{"x":10,"y":13,"z":17},{"x":10,"y":12,"z":17},{"x":10,"y":11,"z":17}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-1":{"mechType":"Secret","secretPoint":{"x":49,"y":27,"z":3},"secretType":"BAT","preRequisite":["superboom-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":48,"y":26,"z":12},{"x":48,"y":25,"z":12},{"x":48,"y":24,"z":12},{"x":48,"y":23,"z":12},{"x":49,"y":27,"z":12},{"x":49,"y":26,"z":12},{"x":49,"y":25,"z":12},{"x":49,"y":24,"z":12},{"x":49,"y":23,"z":12},{"x":50,"y":25,"z":12},{"x":50,"y":24,"z":12},{"x":50,"y":23,"z":12}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":56,"y":11,"z":18},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":48,"y":24,"z":15},{"x":48,"y":23,"z":15},{"x":49,"y":24,"z":15},{"x":49,"y":23,"z":15},{"x":50,"y":24,"z":15},{"x":50,"y":23,"z":15},{"x":48,"y":24,"z":16},{"x":48,"y":23,"z":16},{"x":49,"y":24,"z":16},{"x":49,"y":23,"z":16},{"x":50,"y":24,"z":16},{"x":50,"y":23,"z":16},{"x":48,"y":24,"z":17},{"x":48,"y":23,"z":17},{"x":49,"y":24,"z":17},{"x":49,"y":23,"z":17},{"x":50,"y":24,"z":17},{"x":50,"y":23,"z":17},{"x":48,"y":24,"z":18},{"x":48,"y":23,"z":18},{"x":49,"y":24,"z":18},{"x":49,"y":23,"z":18},{"x":50,"y":24,"z":18},{"x":50,"y":23,"z":18},{"x":48,"y":24,"z":19},{"x":48,"y":23,"z":19},{"x":49,"y":24,"z":19},{"x":49,"y":23,"z":19},{"x":50,"y":24,"z":19},{"x":50,"y":23,"z":19}]},"preRequisite":[],"mechType":"Tomb"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":55,"y":24,"z":23},{"x":55,"y":23,"z":23},{"x":56,"y":24,"z":23},{"x":56,"y":23,"z":23},{"x":57,"y":24,"z":23},{"x":57,"y":23,"z":23},{"x":55,"y":24,"z":24},{"x":55,"y":23,"z":24},{"x":56,"y":24,"z":24},{"x":56,"y":23,"z":24},{"x":57,"y":24,"z":24},{"x":57,"y":23,"z":24},{"x":55,"y":24,"z":25},{"x":55,"y":23,"z":25},{"x":56,"y":24,"z":25},{"x":56,"y":23,"z":25},{"x":57,"y":24,"z":25},{"x":57,"y":23,"z":25},{"x":55,"y":24,"z":26},{"x":55,"y":23,"z":26},{"x":56,"y":24,"z":26},{"x":56,"y":23,"z":26},{"x":57,"y":24,"z":26},{"x":57,"y":23,"z":26},{"x":55,"y":24,"z":27},{"x":55,"y":23,"z":27},{"x":56,"y":24,"z":27},{"x":56,"y":23,"z":27},{"x":57,"y":24,"z":27},{"x":57,"y":23,"z":27}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":5,"y":12,"z":7},{"x":5,"y":11,"z":7},{"x":6,"y":12,"z":7},{"x":6,"y":11,"z":7},{"x":7,"y":12,"z":7},{"x":7,"y":11,"z":7},{"x":8,"y":12,"z":7},{"x":8,"y":11,"z":7},{"x":9,"y":12,"z":7},{"x":9,"y":11,"z":7},{"x":5,"y":12,"z":8},{"x":5,"y":11,"z":8},{"x":6,"y":12,"z":8},{"x":6,"y":11,"z":8},{"x":7,"y":12,"z":8},{"x":7,"y":11,"z":8},{"x":8,"y":12,"z":8},{"x":8,"y":11,"z":8},{"x":9,"y":12,"z":8},{"x":9,"y":11,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":5,"y":12,"z":24},{"x":5,"y":11,"z":24},{"x":6,"y":12,"z":24},{"x":6,"y":11,"z":24},{"x":7,"y":12,"z":24},{"x":7,"y":11,"z":24},{"x":8,"y":12,"z":24},{"x":8,"y":11,"z":24},{"x":9,"y":12,"z":24},{"x":9,"y":11,"z":24},{"x":5,"y":12,"z":25},{"x":5,"y":11,"z":25},{"x":6,"y":12,"z":25},{"x":6,"y":11,"z":25},{"x":7,"y":12,"z":25},{"x":7,"y":11,"z":25},{"x":8,"y":12,"z":25},{"x":8,"y":11,"z":25},{"x":9,"y":12,"z":25},{"x":9,"y":11,"z":25}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":56,"y":0,"z":5},{"x":56,"y":-1,"z":5},{"x":57,"y":0,"z":5},{"x":57,"y":-1,"z":5},{"x":56,"y":0,"z":6},{"x":56,"y":-1,"z":6},{"x":57,"y":0,"z":6},{"x":57,"y":-1,"z":6},{"x":56,"y":0,"z":7},{"x":56,"y":-1,"z":7},{"x":57,"y":0,"z":7},{"x":57,"y":-1,"z":7},{"x":56,"y":0,"z":8},{"x":56,"y":-1,"z":8},{"x":57,"y":0,"z":8},{"x":57,"y":-1,"z":8},{"x":56,"y":0,"z":9},{"x":56,"y":-1,"z":9},{"x":57,"y":0,"z":9},{"x":57,"y":-1,"z":9}]},"preRequisite":[],"mechType":"Tomb"},"essence-2":{"mechType":"Secret","secretPoint":{"x":54,"y":-18,"z":18},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":39,"y":-6,"z":15},{"x":39,"y":-7,"z":15},{"x":40,"y":-6,"z":15},{"x":40,"y":-7,"z":15},{"x":41,"y":-6,"z":15},{"x":41,"y":-7,"z":15},{"x":42,"y":-6,"z":15},{"x":42,"y":-7,"z":15},{"x":43,"y":-6,"z":15},{"x":43,"y":-7,"z":15},{"x":39,"y":-6,"z":16},{"x":39,"y":-7,"z":16},{"x":40,"y":-6,"z":16},{"x":40,"y":-7,"z":16},{"x":41,"y":-6,"z":16},{"x":41,"y":-7,"z":16},{"x":42,"y":-6,"z":16},{"x":42,"y":-7,"z":16},{"x":43,"y":-6,"z":16},{"x":43,"y":-7,"z":16},{"x":39,"y":-6,"z":17},{"x":39,"y":-7,"z":17},{"x":40,"y":-6,"z":17},{"x":40,"y":-7,"z":17},{"x":41,"y":-6,"z":17},{"x":41,"y":-7,"z":17},{"x":42,"y":-6,"z":17},{"x":42,"y":-7,"z":17},{"x":43,"y":-6,"z":17},{"x":43,"y":-7,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":54,"y":-17,"z":14},"secretType":"ESSENCE","preRequisite":[]}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/cab054ed-b9ea-4f54-9d23-9864a50789f0.json b/src/main/resources/dgroomdata/cab054ed-b9ea-4f54-9d23-9864a50789f0.json
new file mode 100644
index 0000000..ab45ff3
--- /dev/null
+++ b/src/main/resources/dgroomdata/cab054ed-b9ea-4f54-9d23-9864a50789f0.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,98,98,98,1,1,98,98,98,1,1,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,109,109,98,98,98,98,98,109,109,98,98,98,98,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,4,0,0,0,0,0,109,98,0,0,0,109,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,67,4,4,4,67,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,67,0,98,0,67,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,188,0,0,0,188,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,98,101,0,101,98,101,0,101,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,101,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,101,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,109,109,98,109,109,98,109,109,98,109,109,98,98,98,109,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,0,0,50,0,0,0,0,0,50,0,0,98,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"cab054ed-b9ea-4f54-9d23-9864a50789f0","name":"Jumping-skulls","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":27,"y":-8,"z":24},"secretType":"CHEST","preRequisite":[]}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/cf44c95c-950e-49e0-aa4c-82c2b18d0acc.json b/src/main/resources/dgroomdata/cf44c95c-950e-49e0-aa4c-82c2b18d0acc.json
new file mode 100644
index 0000000..9133803
--- /dev/null
+++ b/src/main/resources/dgroomdata/cf44c95c-950e-49e0-aa4c-82c2b18d0acc.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,7,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,7,7,0,0,0,0,0,0,0,7,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,7,7,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,159,7,0,0,0,0,0,0,0,0,0,0,159,159,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,35,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,44,44,44,0,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,44,44,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,1,4,169,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,18,0,0,0,0,7,7,7,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,35,35,35,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"cf44c95c-950e-49e0-aa4c-82c2b18d0acc","name":"puzzle-blaze-down-to-top","processorId":"puzzle_blaze_solver","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":3,"y":48,"z":28},"secretType":"CHEST","preRequisite":[]}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/cf6d49d3-4f1e-4ec9-836e-049573793ddd.json b/src/main/resources/dgroomdata/cf6d49d3-4f1e-4ec9-836e-049573793ddd.json
new file mode 100644
index 0000000..79453c0
--- /dev/null
+++ b/src/main/resources/dgroomdata/cf6d49d3-4f1e-4ec9-836e-049573793ddd.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,44,1,1,1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,1,1,101,101,101,101,101,1,1,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,98,0,0,0,0,0,98,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"cf6d49d3-4f1e-4ec9-836e-049573793ddd","name":"puzzle-box","processorId":"puzzle_box","properties":{"board":{"offsetPointList":[{"x":7,"y":-5,"z":7},{"x":10,"y":-5,"z":7},{"x":13,"y":-5,"z":7},{"x":16,"y":-5,"z":7},{"x":19,"y":-5,"z":7},{"x":22,"y":-5,"z":7},{"x":25,"y":-5,"z":7},{"x":7,"y":-5,"z":10},{"x":10,"y":-5,"z":10},{"x":13,"y":-5,"z":10},{"x":16,"y":-5,"z":10},{"x":19,"y":-5,"z":10},{"x":22,"y":-5,"z":10},{"x":25,"y":-5,"z":10},{"x":7,"y":-5,"z":13},{"x":10,"y":-5,"z":13},{"x":13,"y":-5,"z":13},{"x":16,"y":-5,"z":13},{"x":19,"y":-5,"z":13},{"x":22,"y":-5,"z":13},{"x":25,"y":-5,"z":13},{"x":7,"y":-5,"z":16},{"x":10,"y":-5,"z":16},{"x":13,"y":-5,"z":16},{"x":16,"y":-5,"z":16},{"x":19,"y":-5,"z":16},{"x":22,"y":-5,"z":16},{"x":25,"y":-5,"z":16},{"x":7,"y":-5,"z":19},{"x":10,"y":-5,"z":19},{"x":13,"y":-5,"z":19},{"x":16,"y":-5,"z":19},{"x":19,"y":-5,"z":19},{"x":22,"y":-5,"z":19},{"x":25,"y":-5,"z":19},{"x":7,"y":-5,"z":22},{"x":10,"y":-5,"z":22},{"x":13,"y":-5,"z":22},{"x":16,"y":-5,"z":22},{"x":19,"y":-5,"z":22},{"x":22,"y":-5,"z":22},{"x":25,"y":-5,"z":22},{"x":7,"y":-5,"z":25},{"x":10,"y":-5,"z":25},{"x":13,"y":-5,"z":25},{"x":16,"y":-5,"z":25},{"x":19,"y":-5,"z":25},{"x":22,"y":-5,"z":25},{"x":25,"y":-5,"z":25}]}},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/d3e61abf-4198-4520-a950-a03761a0eb6f.json b/src/main/resources/dgroomdata/d3e61abf-4198-4520-a950-a03761a0eb6f.json
new file mode 100644
index 0000000..0c3e557
--- /dev/null
+++ b/src/main/resources/dgroomdata/d3e61abf-4198-4520-a950-a03761a0eb6f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,0,0,0,35,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,7,7,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,159,159,0,0,0,0,0,0,18,0,1,1,1,1,1,0,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,159,1,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,0,0,1,1,-1,-1,-1],[-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1],[-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,35,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,98,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,1,1,1,0,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,1,1,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,0,98,0,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,159,159,159,159,0,0,0,0,0,0,0,0,18,35,1,1,1,1,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,7,1,1,1,98,0,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,35,0,0,0,0,1,1,1,1,1,98,0,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,0,0,1,1,1,1,1,98,1,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"d3e61abf-4198-4520-a950-a03761a0eb6f","name":"puzzle-blaze-top-bottom","processorId":"puzzle_blaze_solver","properties":{"order":true},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":28,"y":-2,"z":29},"secretType":"CHEST","preRequisite":[]}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/d4a015ae-f123-4696-8fb6-719b5a21b623.json b/src/main/resources/dgroomdata/d4a015ae-f123-4696-8fb6-719b5a21b623.json
new file mode 100644
index 0000000..7be8f93
--- /dev/null
+++ b/src/main/resources/dgroomdata/d4a015ae-f123-4696-8fb6-719b5a21b623.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,50,0,0,0,50,0,35,1,1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,35,1,1,1,0,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,35,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,35,1,1,1,35,0,0,0,0,0,0,0,101,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,35,1,1,7,7,0,0,0,0,0,0,1,1,101,0,101,101,101,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,1,1,1,7,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,98,98,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,-1,-1,-1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,-1,-1,-1,0,1,1,1,1,5,0,0,50,1,144,0,0,98,50,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,-1,-1,-1,0,1,1,1,5,5,0,0,98,98,159,159,159,98,98,98,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,98,98,98,1,1,1,1,0,0,0,98,1,1,1,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,98,1,1,1,1,1,1,109,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,98,1,1,1,1,1,1,1,1,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"d4a015ae-f123-4696-8fb6-719b5a21b623","name":"Raccoon","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":5,"y":14,"z":23},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":4,"y":-1,"z":7},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":25,"y":7,"z":7},"secretType":"CHEST","preRequisite":[]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":7,"y":0,"z":3},"preRequisite":["superboom-2:open"],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":6,"y":2,"z":13},{"x":6,"y":1,"z":13},{"x":6,"y":0,"z":13},{"x":6,"y":-1,"z":13},{"x":7,"y":2,"z":13},{"x":7,"y":1,"z":13},{"x":7,"y":0,"z":13},{"x":7,"y":-1,"z":13},{"x":8,"y":2,"z":13},{"x":8,"y":1,"z":13},{"x":8,"y":0,"z":13},{"x":8,"y":-1,"z":13}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":7,"y":0,"z":20},{"x":7,"y":-1,"z":20},{"x":8,"y":0,"z":20},{"x":8,"y":-1,"z":20},{"x":9,"y":0,"z":20},{"x":9,"y":-1,"z":20},{"x":7,"y":0,"z":21},{"x":7,"y":-1,"z":21},{"x":8,"y":0,"z":21},{"x":8,"y":-1,"z":21},{"x":9,"y":0,"z":21},{"x":9,"y":-1,"z":21},{"x":7,"y":0,"z":22},{"x":7,"y":-1,"z":22},{"x":8,"y":0,"z":22},{"x":8,"y":-1,"z":22},{"x":9,"y":0,"z":22},{"x":9,"y":-1,"z":22}]},"preRequisite":[],"mechType":"Tomb"},"fairysoul-5":{"secretPoint":{"x":12,"y":13,"z":23},"preRequisite":[],"mechType":"Fairysoul"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":0,"z":16},{"x":3,"y":-1,"z":16},{"x":4,"y":0,"z":16},{"x":4,"y":-1,"z":16},{"x":5,"y":0,"z":16},{"x":5,"y":-1,"z":16},{"x":3,"y":0,"z":17},{"x":3,"y":-1,"z":17},{"x":4,"y":0,"z":17},{"x":4,"y":-1,"z":17},{"x":5,"y":0,"z":17},{"x":5,"y":-1,"z":17},{"x":3,"y":0,"z":18},{"x":3,"y":-1,"z":18},{"x":4,"y":0,"z":18},{"x":4,"y":-1,"z":18},{"x":5,"y":0,"z":18},{"x":5,"y":-1,"z":18},{"x":3,"y":0,"z":16},{"x":3,"y":-1,"z":16},{"x":4,"y":0,"z":16},{"x":4,"y":-1,"z":16},{"x":5,"y":0,"z":16},{"x":5,"y":-1,"z":16},{"x":3,"y":0,"z":17},{"x":3,"y":-1,"z":17},{"x":4,"y":0,"z":17},{"x":4,"y":-1,"z":17},{"x":5,"y":0,"z":17},{"x":5,"y":-1,"z":17},{"x":3,"y":0,"z":18},{"x":3,"y":-1,"z":18},{"x":4,"y":0,"z":18},{"x":4,"y":-1,"z":18},{"x":5,"y":0,"z":18},{"x":5,"y":-1,"z":18}]},"preRequisite":[],"mechType":"Tomb"},"journal-1":{"secretPoint":{"x":26,"y":11,"z":27},"preRequisite":[],"mechType":"Journal"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":6,"y":4,"z":9},{"x":7,"y":4,"z":9},{"x":6,"y":4,"z":10},{"x":7,"y":4,"z":10},{"x":6,"y":6,"z":8},{"x":6,"y":5,"z":8},{"x":7,"y":6,"z":8},{"x":7,"y":5,"z":8}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-4":{"mechType":"Secret","secretPoint":{"x":10,"y":-1,"z":7},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":5,"y":7,"z":16},{"x":5,"y":6,"z":16},{"x":6,"y":9,"z":16},{"x":6,"y":8,"z":16},{"x":6,"y":7,"z":16},{"x":6,"y":6,"z":16},{"x":6,"y":5,"z":16},{"x":7,"y":10,"z":16},{"x":7,"y":9,"z":16},{"x":7,"y":8,"z":16},{"x":7,"y":7,"z":16},{"x":7,"y":6,"z":16},{"x":7,"y":5,"z":16},{"x":8,"y":8,"z":16},{"x":8,"y":6,"z":16},{"x":8,"y":5,"z":16}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/d712ae5b-903a-4d80-96ee-8ee54b050ea5.json b/src/main/resources/dgroomdata/d712ae5b-903a-4d80-96ee-8ee54b050ea5.json
new file mode 100644
index 0000000..892bb36
--- /dev/null
+++ b/src/main/resources/dgroomdata/d712ae5b-903a-4d80-96ee-8ee54b050ea5.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,4,1,44,0,0,0,0,0,0,1,1,1,1,159,1,1,1,1,1,112,112,112,112,112,112,112,4,4,1,1,1,1,1,1,1,4,0,0,0,0,0,0,0,0,44,4,4,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,1,4,44,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,112,112,112,112,112,112,112,4,1,1,1,1,1,1,4,1,1,0,0,0,0,0,0,0,44,44,1,4,4,1,4,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,4,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,50,1,1,1,112,112,112,112,112,112,112,4,1,4,4,1,1,1,1,1,1,1,0,0,0,0,0,0,44,1,1,1,1,1,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,162,1,112,112,112,112,112,112,112,4,1,4,1,1,1,1,1,1,1,1,1,0,0,0,0,4,1,48,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,112,112,112,112,112,112,0,0,0,0,1,1,1,1,1,159,159,159,1,1,1,1,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,1,4,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,159,159,159,159,159,1,1,1,1,1,1,1,1,1,4,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,159,159,0,1,1,1,1,1,1,1,1,44,44,44,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,159,18,0,0,0,1,1,1,1,1,1,1,1,0,0,44,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,1,1,1,1,1,1,1,1,1,1,159,159,1,1,1,1,1,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,50,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,67,1,1,1,1,1,1,1,1,139,0,1,1,1,159,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,18,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,1,159,1,44,0,0,0,0,0,44,44,1,98,98,98,0,0,98,98,0,0,191,0,191,0,0,98,98,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,1,159,44,44,0,0,0,0,0,0,44,1,98,44,44,0,0,98,98,98,98,98,98,98,98,98,98,98,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,44,44,0,0,0,0,0,0,44,1,98,43,0,0,18,98,98,98,98,98,98,98,98,98,98,98,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,4,1,1,1,0,0,0,0,0,1,1,1,98,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,18,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,4,1,1,159,44,0,-1,44,1,1,1,98,0,0,0,0,98,98,0,0,191,0,191,0,0,98,44,0,0,0,0,0,0,0,0,0,0,188,0,50,1,1,1,1,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,4,1,1,159,1,1,159,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,1,1,1,1,1,1,1,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,0,0,0,0,4,159,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,1,1,1,1,1,1,1,1,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,139,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,159,1,1,1,1,1,1,1,4,44,44,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,4,1,4,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,1,1,1,1,4,1,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,4,1,4,4,4,112,112,112,112,112,112,112,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,4,1,1,4,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,50,1,1,1,1,1,1,4,4,4,4,4,112,112,112,112,112,112,112,1,162,0,0,0,139,1,159,1,1,1,0,0,0,0,1,1,1,1,1,4,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,112,112,112,112,112,112,112,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,44,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,139,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,112,112,112,112,112,112,112,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,44,1,1,4,4,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,4,4,1,1,1,1,1,1,1,112,112,112,112,112,112,112,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,44,4,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"d712ae5b-903a-4d80-96ee-8ee54b050ea5","name":"mages","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":17,"y":0,"z":18},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":43,"y":-8,"z":16},"secretType":"CHEST","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":57,"y":14,"z":9},"secretType":"BAT","preRequisite":[]},"essence-1":{"mechType":"Secret","secretPoint":{"x":59,"y":12,"z":6},"secretType":"ESSENCE","preRequisite":[]}},"totalSecrets":4}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/dc5d63b3-3dc4-41f1-a79c-973271ba71c2.json b/src/main/resources/dgroomdata/dc5d63b3-3dc4-41f1-a79c-973271ba71c2.json
new file mode 100644
index 0000000..2f3f793
--- /dev/null
+++ b/src/main/resources/dgroomdata/dc5d63b3-3dc4-41f1-a79c-973271ba71c2.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":3,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,109,109,109,109,109,98,0,0,0,98,98,98,0,0,0,0,0,1,0,0,0,0,139,1,0,0,0,0,0,1,0,0,0,0,0,98,98,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,109,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,109,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,109,109,109,109,109,98,0,0,0,98,98,98,0,0,0,0,0,1,0,0,0,0,139,1,0,0,0,0,0,1,0,0,0,0,0,98,98,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,98,1,0,0,0,0,0,98,98,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"dc5d63b3-3dc4-41f1-a79c-973271ba71c2","name":"Redstone-Warrior","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":31,"y":13,"z":28},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":25,"y":-12,"z":16},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":5,"y":-8,"z":16},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":27,"y":-9,"z":15},{"x":27,"y":-10,"z":15},{"x":27,"y":-11,"z":15},{"x":27,"y":-12,"z":15},{"x":27,"y":-9,"z":16},{"x":27,"y":-10,"z":16},{"x":27,"y":-11,"z":16},{"x":27,"y":-12,"z":16},{"x":27,"y":-9,"z":17},{"x":27,"y":-10,"z":17},{"x":27,"y":-11,"z":17},{"x":27,"y":-12,"z":17}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":59,"y":8,"z":30},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":59,"y":-7,"z":15},{"x":59,"y":-8,"z":15},{"x":60,"y":-7,"z":15},{"x":60,"y":-8,"z":15},{"x":61,"y":-7,"z":15},{"x":61,"y":-8,"z":15},{"x":62,"y":-7,"z":15},{"x":62,"y":-8,"z":15},{"x":59,"y":-7,"z":16},{"x":59,"y":-8,"z":16},{"x":60,"y":-7,"z":16},{"x":60,"y":-8,"z":16},{"x":61,"y":-7,"z":16},{"x":61,"y":-8,"z":16},{"x":62,"y":-7,"z":16},{"x":62,"y":-8,"z":16},{"x":59,"y":-7,"z":17},{"x":59,"y":-8,"z":17},{"x":60,"y":-7,"z":17},{"x":60,"y":-8,"z":17},{"x":61,"y":-7,"z":17},{"x":61,"y":-8,"z":17},{"x":62,"y":-7,"z":17},{"x":62,"y":-8,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":6,"y":0,"z":7},{"x":6,"y":-1,"z":7},{"x":7,"y":0,"z":7},{"x":7,"y":-1,"z":7},{"x":8,"y":0,"z":7},{"x":8,"y":-1,"z":7},{"x":9,"y":0,"z":7},{"x":9,"y":-1,"z":7},{"x":10,"y":0,"z":7},{"x":10,"y":-1,"z":7},{"x":6,"y":0,"z":8},{"x":6,"y":-1,"z":8},{"x":7,"y":0,"z":8},{"x":7,"y":-1,"z":8},{"x":8,"y":0,"z":8},{"x":8,"y":-1,"z":8},{"x":9,"y":0,"z":8},{"x":9,"y":-1,"z":8},{"x":10,"y":0,"z":8},{"x":10,"y":-1,"z":8},{"x":6,"y":0,"z":9},{"x":6,"y":-1,"z":9},{"x":7,"y":0,"z":9},{"x":7,"y":-1,"z":9},{"x":8,"y":0,"z":9},{"x":8,"y":-1,"z":9},{"x":9,"y":0,"z":9},{"x":9,"y":-1,"z":9},{"x":10,"y":0,"z":9},{"x":10,"y":-1,"z":9}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":6,"y":0,"z":23},{"x":6,"y":-1,"z":23},{"x":7,"y":0,"z":23},{"x":7,"y":-1,"z":23},{"x":8,"y":0,"z":23},{"x":8,"y":-1,"z":23},{"x":9,"y":0,"z":23},{"x":9,"y":-1,"z":23},{"x":10,"y":0,"z":23},{"x":10,"y":-1,"z":23},{"x":6,"y":0,"z":24},{"x":6,"y":-1,"z":24},{"x":7,"y":0,"z":24},{"x":7,"y":-1,"z":24},{"x":8,"y":0,"z":24},{"x":8,"y":-1,"z":24},{"x":9,"y":0,"z":24},{"x":9,"y":-1,"z":24},{"x":10,"y":0,"z":24},{"x":10,"y":-1,"z":24},{"x":6,"y":0,"z":25},{"x":6,"y":-1,"z":25},{"x":7,"y":0,"z":25},{"x":7,"y":-1,"z":25},{"x":8,"y":0,"z":25},{"x":8,"y":-1,"z":25},{"x":9,"y":0,"z":25},{"x":9,"y":-1,"z":25},{"x":10,"y":0,"z":25},{"x":10,"y":-1,"z":25}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":15,"z":15},{"x":3,"y":14,"z":15},{"x":4,"y":15,"z":15},{"x":4,"y":14,"z":15},{"x":5,"y":15,"z":15},{"x":5,"y":14,"z":15},{"x":6,"y":15,"z":15},{"x":6,"y":14,"z":15},{"x":3,"y":15,"z":16},{"x":3,"y":14,"z":16},{"x":4,"y":15,"z":16},{"x":4,"y":14,"z":16},{"x":5,"y":15,"z":16},{"x":5,"y":14,"z":16},{"x":6,"y":15,"z":16},{"x":6,"y":14,"z":16},{"x":3,"y":15,"z":17},{"x":3,"y":14,"z":17},{"x":4,"y":15,"z":17},{"x":4,"y":14,"z":17},{"x":5,"y":15,"z":17},{"x":5,"y":14,"z":17},{"x":6,"y":15,"z":17},{"x":6,"y":14,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":58,"y":8,"z":24},{"x":58,"y":7,"z":24},{"x":59,"y":10,"z":24},{"x":59,"y":9,"z":24},{"x":59,"y":8,"z":24},{"x":59,"y":7,"z":24},{"x":60,"y":11,"z":24},{"x":60,"y":10,"z":24},{"x":60,"y":9,"z":24},{"x":60,"y":8,"z":24},{"x":60,"y":7,"z":24},{"x":61,"y":10,"z":24},{"x":61,"y":9,"z":24}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/dfe5d13c-3284-4ad3-aadf-9719f2c12a6e.json b/src/main/resources/dgroomdata/dfe5d13c-3284-4ad3-aadf-9719f2c12a6e.json
new file mode 100644
index 0000000..bfda610
--- /dev/null
+++ b/src/main/resources/dgroomdata/dfe5d13c-3284-4ad3-aadf-9719f2c12a6e.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,98,0,0,0,0,0,0,0,67,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,67,9,0,0,101,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,109,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,144,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,109,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,50,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,67,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,4,4,4,4,67,139,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,109,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,67,67,67,4,67,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,109,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,98,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,144,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,159,159,159,159,159,159,109,0,0,0,0,0,0,139,67,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,0,0,0,101,0,0,0,0,0,0,0,18,98,1,159,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,44,0,144,44,44,98,98,135,135,0,0,0,0,50,67,67,4,4,4,4,4,4,4,4,1,1,1,1,4,67,67,4,4,4,4,67,67,4,4,0,0,0,0,0,0,0,98,98,18,144,0,0,0,144,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,126,126,5,135,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,4,1,1,1,43,0,0,0,188,188,188,188,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,126,126,0,85,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,4,1,1,1,4,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,109,98,1,1,1,1,4,1,1,1,67,126,0,0,0,0,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,1,4,1,1,1,67,126,0,0,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,1,4,1,1,1,4,134,0,0,171,171,171,171,0,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,4,1,1,1,43,0,0,0,171,0,171,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,188,50,17,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,4,1,1,1,43,0,0,0,0,171,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,144,0,98,0,0,144,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,4,1,1,1,4,134,0,0,171,0,17,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,159,159,159,159,159,159,0,0,0,0,0,0,0,0,164,5,0,0,0,0,0,98,109,109,48,1,1,1,67,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,67,0,0,0,0,0,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,144,0,0,0,0,0,134,134,164,5,0,0,0,0,0,0,0,0,67,1,1,98,4,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,4,109,109,109,109,109,4,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,134,134,0,0,0,0,0,0,0,0,0,18,48,1,1,1,4,134,0,0,0,0,0,0,0,0,0,0,0,109,109,0,0,0,1,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,5,5,43,43,67,4,67,48,67,43,43,43,43,4,4,67,43,43,43,0,0,0,44,0,0,44,43,43,43,67,4,43,43,43,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,98,98,0,0,0,0,0,18,18,98,98,0,0,0,0,0,98,139,0,0,0,0,0,0,0,98,98,0,0,0,0,139,98,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,139,0,0,0,0,98,139,0,0,-1,-1,-1,0,0,98,98,18,-1,-1,-1,0,98,98,0,0,0,0,0,0,0,139,98,0,0,0,0,139,139,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,18,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,4,1,1,159,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,4,1,98,0,144,98,98,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,98,4,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,43,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,43,98,0,0,0,0,0,69,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,98,98,0,0,0,0,98,98,0,0,-1,-1,-1,0,0,139,98,0,0,0,0,0,98,139,0,0,-1,-1,-1,0,0,98,139,0,0,0,0,139,98,1,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,98,98,0,0,0,0,139,98,0,0,0,0,0,0,0,98,139,0,0,0,0,144,139,98,0,0,0,0,0,0,0,139,98,0,0,0,0,98,98,1,98,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,43,4,67,67,4,4,43,0,0,0,0,0,0,0,0,0,43,4,67,67,4,4,43,0,0,0,0,0,0,0,134,98,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,109,67,67,98,1,109,0,0,0,0,0,0,0,0,4,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,109,0,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,1,98,0,0,0,0,0,0,0,0,67,1,1,1,1,159,44,0,0,0,0,0,0,9,0,0,109,98,109,109,98,98,109,0,0,0,0,0,0,0,0,109,98,139,144,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,101,0,0,98,98,98,0,0,0,0,0,0,0,0,109,98,109,109,98,98,109,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,159,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,101,0,0,109,98,98,0,0,0,0,0,0,0,17,0,188,17,0,0,0,0,17,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,159,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,101,0,0,109,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,1,1,1,1,159,109,0,0,0,0,0,0,0,0,139,109,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,159,159,159,159,159,109,0,0,0,0,0,0,0,0,0,109,159,159,1,159,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,43,144,0,98,144,0,43,0,0,0,0,0,0,0,0,0,43,144,0,98,0,144,43,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,50,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,1,98,139,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,109,109,-1,-1,-1,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,109,109,109,98,1,98,0,0,0,0,0,0,0,0,118,43,0,0,0,0,0,43,50,0,0,0,0,0,0,50,139,43,0,0,98,0,0,43,0,0,0,0,0,0,0,0,0,109,159,159,98,98,98,1,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,1,109,109,1,1,0,0,0,0,0,0,0,0,98,98,23,159,23,33,23,1,1,109,44,144,0,144,44,109,4,4,4,4,4,4,67,67,0,0,0,0,0,0,0,0,0,109,98,1,109,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,35,35,98,98,109,109,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,159,159,159,159,159,159,159,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,35,169,35,1,35,109,0,0,0,0,0,0,0,0,0,139,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,98,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,35,169,35,98,109,0,0,0,0,0,0,0,0,0,144,159,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,35,35,1,98,109,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,1,1,1,1,1,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,109,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"dfe5d13c-3284-4ad3-aadf-9719f2c12a6e","name":"Buttons","processorId":"button_5","properties":{"buttons":{"offsetPointList":[{"x":15,"y":11,"z":54},{"x":15,"y":11,"z":52},{"x":15,"y":11,"z":50},{"x":15,"y":11,"z":48},{"x":17,"y":11,"z":54},{"x":17,"y":11,"z":52},{"x":17,"y":11,"z":50},{"x":17,"y":11,"z":48},{"x":19,"y":11,"z":54},{"x":19,"y":11,"z":52},{"x":19,"y":11,"z":50},{"x":19,"y":11,"z":48}]}},"mechanics":{"dummy-1":{"secretPoint":{"x":19,"y":10,"z":51},"preRequisite":[],"mechType":"Dummy"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":43,"y":11,"z":58},"preRequisite":["crypt-7:open"],"triggering":"door-1"},"lever-2":{"mechType":"OnewayLever","leverPoint":{"x":59,"y":0,"z":37},"preRequisite":[],"triggering":"door-2"},"crypt-20":{"secretPoint":{"offsetPointList":[{"x":39,"y":0,"z":34},{"x":39,"y":-1,"z":34},{"x":40,"y":0,"z":34},{"x":40,"y":-1,"z":34},{"x":41,"y":0,"z":34},{"x":41,"y":-1,"z":34},{"x":39,"y":0,"z":35},{"x":39,"y":-1,"z":35},{"x":40,"y":0,"z":35},{"x":40,"y":-1,"z":35},{"x":41,"y":0,"z":35},{"x":41,"y":-1,"z":35},{"x":39,"y":0,"z":36},{"x":39,"y":-1,"z":36},{"x":40,"y":0,"z":36},{"x":40,"y":-1,"z":36},{"x":41,"y":0,"z":36},{"x":41,"y":-1,"z":36},{"x":39,"y":0,"z":37},{"x":39,"y":-1,"z":37},{"x":40,"y":0,"z":37},{"x":40,"y":-1,"z":37},{"x":41,"y":0,"z":37},{"x":41,"y":-1,"z":37},{"x":39,"y":0,"z":38},{"x":39,"y":-1,"z":38},{"x":40,"y":0,"z":38},{"x":40,"y":-1,"z":38},{"x":41,"y":0,"z":38},{"x":41,"y":-1,"z":38}]},"preRequisite":[],"mechType":"Tomb"},"crypt-16":{"secretPoint":{"offsetPointList":[{"x":7,"y":11,"z":3},{"x":7,"y":10,"z":3},{"x":8,"y":11,"z":3},{"x":8,"y":10,"z":3},{"x":7,"y":11,"z":4},{"x":7,"y":10,"z":4},{"x":8,"y":11,"z":4},{"x":8,"y":10,"z":4},{"x":7,"y":11,"z":5},{"x":7,"y":10,"z":5},{"x":8,"y":11,"z":5},{"x":8,"y":10,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-17":{"secretPoint":{"offsetPointList":[{"x":23,"y":0,"z":26},{"x":23,"y":-1,"z":26},{"x":24,"y":0,"z":26},{"x":24,"y":-1,"z":26},{"x":25,"y":0,"z":26},{"x":25,"y":-1,"z":26},{"x":23,"y":0,"z":27},{"x":23,"y":-1,"z":27},{"x":24,"y":0,"z":27},{"x":24,"y":-1,"z":27},{"x":25,"y":0,"z":27},{"x":25,"y":-1,"z":27},{"x":23,"y":0,"z":28},{"x":23,"y":-1,"z":28},{"x":24,"y":0,"z":28},{"x":24,"y":-1,"z":28},{"x":25,"y":0,"z":28},{"x":25,"y":-1,"z":28},{"x":23,"y":0,"z":29},{"x":23,"y":-1,"z":29},{"x":24,"y":0,"z":29},{"x":24,"y":-1,"z":29},{"x":25,"y":0,"z":29},{"x":25,"y":-1,"z":29},{"x":23,"y":0,"z":30},{"x":23,"y":-1,"z":30},{"x":24,"y":0,"z":30},{"x":24,"y":-1,"z":30},{"x":25,"y":0,"z":30},{"x":25,"y":-1,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-18":{"secretPoint":{"offsetPointList":[{"x":23,"y":0,"z":34},{"x":23,"y":-1,"z":34},{"x":24,"y":0,"z":34},{"x":24,"y":-1,"z":34},{"x":25,"y":0,"z":34},{"x":25,"y":-1,"z":34},{"x":23,"y":0,"z":35},{"x":23,"y":-1,"z":35},{"x":24,"y":0,"z":35},{"x":24,"y":-1,"z":35},{"x":25,"y":0,"z":35},{"x":25,"y":-1,"z":35},{"x":23,"y":0,"z":36},{"x":23,"y":-1,"z":36},{"x":24,"y":0,"z":36},{"x":24,"y":-1,"z":36},{"x":25,"y":0,"z":36},{"x":25,"y":-1,"z":36},{"x":23,"y":0,"z":37},{"x":23,"y":-1,"z":37},{"x":24,"y":0,"z":37},{"x":24,"y":-1,"z":37},{"x":25,"y":0,"z":37},{"x":25,"y":-1,"z":37},{"x":23,"y":0,"z":38},{"x":23,"y":-1,"z":38},{"x":24,"y":0,"z":38},{"x":24,"y":-1,"z":38},{"x":25,"y":0,"z":38},{"x":25,"y":-1,"z":38}]},"preRequisite":[],"mechType":"Tomb"},"crypt-19":{"secretPoint":{"offsetPointList":[{"x":31,"y":0,"z":26},{"x":31,"y":-1,"z":26},{"x":32,"y":0,"z":26},{"x":32,"y":-1,"z":26},{"x":33,"y":0,"z":26},{"x":33,"y":-1,"z":26},{"x":31,"y":0,"z":27},{"x":31,"y":-1,"z":27},{"x":32,"y":0,"z":27},{"x":32,"y":-1,"z":27},{"x":33,"y":0,"z":27},{"x":33,"y":-1,"z":27},{"x":31,"y":0,"z":28},{"x":31,"y":-1,"z":28},{"x":32,"y":0,"z":28},{"x":32,"y":-1,"z":28},{"x":33,"y":0,"z":28},{"x":33,"y":-1,"z":28},{"x":31,"y":0,"z":29},{"x":31,"y":-1,"z":29},{"x":32,"y":0,"z":29},{"x":32,"y":-1,"z":29},{"x":33,"y":0,"z":29},{"x":33,"y":-1,"z":29},{"x":31,"y":0,"z":30},{"x":31,"y":-1,"z":30},{"x":32,"y":0,"z":30},{"x":32,"y":-1,"z":30},{"x":33,"y":0,"z":30},{"x":33,"y":-1,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-12":{"secretPoint":{"offsetPointList":[{"x":49,"y":11,"z":6},{"x":49,"y":10,"z":6},{"x":50,"y":11,"z":6},{"x":50,"y":10,"z":6},{"x":51,"y":11,"z":6},{"x":51,"y":10,"z":6},{"x":49,"y":11,"z":7},{"x":49,"y":10,"z":7},{"x":50,"y":11,"z":7},{"x":50,"y":10,"z":7},{"x":51,"y":11,"z":7},{"x":51,"y":10,"z":7},{"x":49,"y":11,"z":8},{"x":49,"y":10,"z":8},{"x":50,"y":11,"z":8},{"x":50,"y":10,"z":8},{"x":51,"y":11,"z":8},{"x":51,"y":10,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"crypt-13":{"secretPoint":{"offsetPointList":[{"x":41,"y":11,"z":5},{"x":41,"y":10,"z":5},{"x":42,"y":11,"z":5},{"x":42,"y":10,"z":5},{"x":43,"y":11,"z":5},{"x":43,"y":10,"z":5},{"x":41,"y":11,"z":6},{"x":41,"y":10,"z":6},{"x":42,"y":11,"z":6},{"x":42,"y":10,"z":6},{"x":43,"y":11,"z":6},{"x":43,"y":10,"z":6},{"x":41,"y":11,"z":7},{"x":41,"y":10,"z":7},{"x":42,"y":11,"z":7},{"x":42,"y":10,"z":7},{"x":43,"y":11,"z":7},{"x":43,"y":10,"z":7},{"x":41,"y":11,"z":8},{"x":41,"y":10,"z":8},{"x":42,"y":11,"z":8},{"x":42,"y":10,"z":8},{"x":43,"y":11,"z":8},{"x":43,"y":10,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"crypt-14":{"secretPoint":{"offsetPointList":[{"x":41,"y":11,"z":11},{"x":41,"y":10,"z":11},{"x":42,"y":11,"z":11},{"x":42,"y":10,"z":11},{"x":43,"y":11,"z":11},{"x":43,"y":10,"z":11},{"x":41,"y":11,"z":12},{"x":41,"y":10,"z":12},{"x":42,"y":11,"z":12},{"x":42,"y":10,"z":12},{"x":43,"y":11,"z":12},{"x":43,"y":10,"z":12},{"x":41,"y":11,"z":13},{"x":41,"y":10,"z":13},{"x":42,"y":11,"z":13},{"x":42,"y":10,"z":13},{"x":43,"y":11,"z":13},{"x":43,"y":10,"z":13},{"x":41,"y":11,"z":14},{"x":41,"y":10,"z":14},{"x":42,"y":11,"z":14},{"x":42,"y":10,"z":14},{"x":43,"y":11,"z":14},{"x":43,"y":10,"z":14}]},"preRequisite":[],"mechType":"Tomb"},"crypt-15":{"secretPoint":{"offsetPointList":[{"x":31,"y":11,"z":12},{"x":31,"y":10,"z":12},{"x":32,"y":11,"z":12},{"x":32,"y":10,"z":12},{"x":33,"y":11,"z":12},{"x":33,"y":10,"z":12},{"x":31,"y":11,"z":13},{"x":31,"y":10,"z":13},{"x":32,"y":11,"z":13},{"x":32,"y":10,"z":13},{"x":33,"y":11,"z":13},{"x":33,"y":10,"z":13},{"x":31,"y":11,"z":14},{"x":31,"y":10,"z":14},{"x":32,"y":11,"z":14},{"x":32,"y":10,"z":14},{"x":33,"y":11,"z":14},{"x":33,"y":10,"z":14},{"x":31,"y":11,"z":15},{"x":31,"y":10,"z":15},{"x":32,"y":11,"z":15},{"x":32,"y":10,"z":15},{"x":33,"y":11,"z":15},{"x":33,"y":10,"z":15}]},"preRequisite":[],"mechType":"Tomb"},"chest-2":{"mechType":"Secret","secretPoint":{"x":58,"y":-1,"z":61},"secretType":"CHEST","preRequisite":["superboom-2:open"]},"door-3":{"secretPoint":{"offsetPointList":[{"x":11,"y":14,"z":49},{"x":11,"y":13,"z":49},{"x":11,"y":12,"z":49},{"x":11,"y":11,"z":49},{"x":11,"y":10,"z":49},{"x":11,"y":14,"z":50},{"x":11,"y":13,"z":50},{"x":11,"y":12,"z":50},{"x":11,"y":11,"z":50},{"x":11,"y":10,"z":50},{"x":11,"y":14,"z":51},{"x":11,"y":13,"z":51},{"x":11,"y":12,"z":51},{"x":11,"y":11,"z":51},{"x":11,"y":10,"z":51},{"x":11,"y":14,"z":52},{"x":11,"y":13,"z":52},{"x":11,"y":12,"z":52},{"x":11,"y":11,"z":52},{"x":11,"y":10,"z":52},{"x":11,"y":14,"z":53},{"x":11,"y":13,"z":53},{"x":11,"y":12,"z":53},{"x":11,"y":11,"z":53},{"x":11,"y":10,"z":53}]},"preRequisite":["dummy-1:navigate"],"mechType":"OnewayDoor"},"chest-3":{"mechType":"Secret","secretPoint":{"x":57,"y":11,"z":3},"secretType":"CHEST","preRequisite":["door-1:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":54,"y":-15,"z":32},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":56,"y":17,"z":16},{"x":56,"y":16,"z":16},{"x":56,"y":15,"z":16},{"x":56,"y":14,"z":16},{"x":56,"y":13,"z":16},{"x":56,"y":12,"z":16},{"x":56,"y":11,"z":16},{"x":56,"y":10,"z":16},{"x":57,"y":17,"z":16},{"x":57,"y":16,"z":16},{"x":57,"y":15,"z":16},{"x":57,"y":14,"z":16},{"x":57,"y":13,"z":16},{"x":57,"y":12,"z":16},{"x":57,"y":11,"z":16},{"x":57,"y":10,"z":16},{"x":58,"y":17,"z":16},{"x":58,"y":16,"z":16},{"x":58,"y":15,"z":16},{"x":58,"y":14,"z":16},{"x":58,"y":13,"z":16},{"x":58,"y":12,"z":16},{"x":58,"y":11,"z":16},{"x":58,"y":10,"z":16}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"door-2":{"secretPoint":{"offsetPointList":[{"x":30,"y":5,"z":18},{"x":30,"y":4,"z":18},{"x":30,"y":3,"z":18},{"x":30,"y":5,"z":19},{"x":30,"y":4,"z":19},{"x":30,"y":3,"z":19},{"x":30,"y":5,"z":20},{"x":30,"y":4,"z":20},{"x":30,"y":3,"z":20}]},"preRequisite":["lever-2:triggered"],"mechType":"OnewayDoor"},"superboom-3":{"secretPoint":{"offsetPointList":[{"x":54,"y":15,"z":41},{"x":54,"y":14,"z":41},{"x":54,"y":13,"z":41},{"x":54,"y":12,"z":41},{"x":54,"y":11,"z":41},{"x":54,"y":10,"z":41},{"x":54,"y":15,"z":42},{"x":54,"y":14,"z":42},{"x":54,"y":13,"z":42},{"x":54,"y":12,"z":42},{"x":54,"y":11,"z":42},{"x":54,"y":10,"z":42},{"x":54,"y":15,"z":43},{"x":54,"y":14,"z":43},{"x":54,"y":13,"z":43},{"x":54,"y":12,"z":43},{"x":54,"y":11,"z":43},{"x":54,"y":10,"z":43}]},"preRequisite":[],"mechType":"BreakableWall"},"crypt-10":{"secretPoint":{"offsetPointList":[{"x":50,"y":11,"z":41},{"x":50,"y":10,"z":41},{"x":51,"y":11,"z":41},{"x":51,"y":10,"z":41},{"x":52,"y":11,"z":41},{"x":52,"y":10,"z":41},{"x":53,"y":11,"z":41},{"x":53,"y":10,"z":41},{"x":50,"y":11,"z":42},{"x":50,"y":10,"z":42},{"x":51,"y":11,"z":42},{"x":51,"y":10,"z":42},{"x":52,"y":11,"z":42},{"x":52,"y":10,"z":42},{"x":53,"y":11,"z":42},{"x":53,"y":10,"z":42},{"x":50,"y":11,"z":43},{"x":50,"y":10,"z":43},{"x":51,"y":11,"z":43},{"x":51,"y":10,"z":43},{"x":52,"y":11,"z":43},{"x":52,"y":10,"z":43},{"x":53,"y":11,"z":43},{"x":53,"y":10,"z":43}]},"preRequisite":[],"mechType":"Tomb"},"crypt-11":{"secretPoint":{"offsetPointList":[{"x":49,"y":11,"z":15},{"x":49,"y":10,"z":15},{"x":50,"y":11,"z":15},{"x":50,"y":10,"z":15},{"x":51,"y":11,"z":15},{"x":51,"y":10,"z":15},{"x":49,"y":11,"z":16},{"x":49,"y":10,"z":16},{"x":50,"y":11,"z":16},{"x":50,"y":10,"z":16},{"x":51,"y":11,"z":16},{"x":51,"y":10,"z":16}]},"preRequisite":[],"mechType":"Tomb"},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":56,"y":0,"z":53},{"x":56,"y":-1,"z":53},{"x":57,"y":3,"z":53},{"x":57,"y":2,"z":53},{"x":57,"y":1,"z":53},{"x":57,"y":0,"z":53},{"x":57,"y":-1,"z":53},{"x":58,"y":1,"z":53},{"x":58,"y":0,"z":53},{"x":58,"y":-1,"z":53}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-4":{"mechType":"Secret","secretPoint":{"x":32,"y":3,"z":14},"secretType":"CHEST","preRequisite":["door-2:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":16,"y":-2,"z":31},{"x":17,"y":-2,"z":31},{"x":18,"y":-2,"z":31},{"x":16,"y":-2,"z":32},{"x":17,"y":-2,"z":32},{"x":18,"y":-2,"z":32},{"x":16,"y":-2,"z":33},{"x":17,"y":-2,"z":33},{"x":18,"y":-2,"z":33}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-5":{"mechType":"Secret","secretPoint":{"x":3,"y":11,"z":51},"secretType":"CHEST","preRequisite":["door-3:open"]},"crypt-9":{"secretPoint":{"offsetPointList":[{"x":38,"y":11,"z":52},{"x":38,"y":10,"z":52},{"x":39,"y":11,"z":52},{"x":39,"y":10,"z":52},{"x":40,"y":11,"z":52},{"x":40,"y":10,"z":52},{"x":41,"y":11,"z":52},{"x":41,"y":10,"z":52},{"x":42,"y":11,"z":52},{"x":42,"y":10,"z":52},{"x":38,"y":11,"z":53},{"x":38,"y":10,"z":53},{"x":39,"y":11,"z":53},{"x":39,"y":10,"z":53},{"x":40,"y":11,"z":53},{"x":40,"y":10,"z":53},{"x":41,"y":11,"z":53},{"x":41,"y":10,"z":53},{"x":42,"y":11,"z":53},{"x":42,"y":10,"z":53}]},"preRequisite":[],"mechType":"Tomb"},"crypt-8":{"secretPoint":{"offsetPointList":[{"x":31,"y":11,"z":50},{"x":31,"y":10,"z":50},{"x":32,"y":11,"z":50},{"x":32,"y":10,"z":50},{"x":33,"y":11,"z":50},{"x":33,"y":10,"z":50},{"x":31,"y":11,"z":51},{"x":31,"y":10,"z":51},{"x":32,"y":11,"z":51},{"x":32,"y":10,"z":51},{"x":33,"y":11,"z":51},{"x":33,"y":10,"z":51},{"x":31,"y":11,"z":52},{"x":31,"y":10,"z":52},{"x":32,"y":11,"z":52},{"x":32,"y":10,"z":52},{"x":33,"y":11,"z":52},{"x":33,"y":10,"z":52},{"x":31,"y":11,"z":53},{"x":31,"y":10,"z":53},{"x":32,"y":11,"z":53},{"x":32,"y":10,"z":53},{"x":33,"y":11,"z":53},{"x":33,"y":10,"z":53}]},"preRequisite":[],"mechType":"Tomb"},"crypt-7":{"secretPoint":{"offsetPointList":[{"x":39,"y":11,"z":57},{"x":39,"y":10,"z":57},{"x":40,"y":11,"z":57},{"x":40,"y":10,"z":57},{"x":41,"y":11,"z":57},{"x":41,"y":10,"z":57},{"x":42,"y":11,"z":57},{"x":42,"y":10,"z":57},{"x":39,"y":11,"z":58},{"x":39,"y":10,"z":58},{"x":40,"y":11,"z":58},{"x":40,"y":10,"z":58},{"x":41,"y":11,"z":58},{"x":41,"y":10,"z":58},{"x":42,"y":11,"z":58},{"x":42,"y":10,"z":58},{"x":39,"y":11,"z":59},{"x":39,"y":10,"z":59},{"x":40,"y":11,"z":59},{"x":40,"y":10,"z":59},{"x":41,"y":11,"z":59},{"x":41,"y":10,"z":59},{"x":42,"y":11,"z":59},{"x":42,"y":10,"z":59}]},"preRequisite":[],"mechType":"Tomb"},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":21,"y":-14,"z":20},{"x":21,"y":-15,"z":20},{"x":22,"y":-14,"z":20},{"x":22,"y":-15,"z":20},{"x":23,"y":-14,"z":20},{"x":23,"y":-15,"z":20},{"x":21,"y":-14,"z":21},{"x":21,"y":-15,"z":21},{"x":22,"y":-14,"z":21},{"x":22,"y":-15,"z":21},{"x":23,"y":-14,"z":21},{"x":23,"y":-15,"z":21},{"x":21,"y":-14,"z":22},{"x":21,"y":-15,"z":22},{"x":22,"y":-14,"z":22},{"x":22,"y":-15,"z":22},{"x":23,"y":-14,"z":22},{"x":23,"y":-15,"z":22},{"x":21,"y":-14,"z":23},{"x":21,"y":-15,"z":23},{"x":22,"y":-14,"z":23},{"x":22,"y":-15,"z":23},{"x":23,"y":-14,"z":23},{"x":23,"y":-15,"z":23},{"x":21,"y":-14,"z":24},{"x":21,"y":-15,"z":24},{"x":22,"y":-14,"z":24},{"x":22,"y":-15,"z":24},{"x":23,"y":-14,"z":24},{"x":23,"y":-15,"z":24}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":21,"y":-14,"z":40},{"x":21,"y":-15,"z":40},{"x":22,"y":-14,"z":40},{"x":22,"y":-15,"z":40},{"x":23,"y":-14,"z":40},{"x":23,"y":-15,"z":40},{"x":21,"y":-14,"z":41},{"x":21,"y":-15,"z":41},{"x":22,"y":-14,"z":41},{"x":22,"y":-15,"z":41},{"x":23,"y":-14,"z":41},{"x":23,"y":-15,"z":41},{"x":21,"y":-14,"z":42},{"x":21,"y":-15,"z":42},{"x":22,"y":-14,"z":42},{"x":22,"y":-15,"z":42},{"x":23,"y":-14,"z":42},{"x":23,"y":-15,"z":42},{"x":21,"y":-14,"z":43},{"x":21,"y":-15,"z":43},{"x":22,"y":-14,"z":43},{"x":22,"y":-15,"z":43},{"x":23,"y":-14,"z":43},{"x":23,"y":-15,"z":43},{"x":21,"y":-14,"z":44},{"x":21,"y":-15,"z":44},{"x":22,"y":-14,"z":44},{"x":22,"y":-15,"z":44},{"x":23,"y":-14,"z":44},{"x":23,"y":-15,"z":44}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":36,"y":-14,"z":20},{"x":36,"y":-15,"z":20},{"x":37,"y":-14,"z":20},{"x":37,"y":-15,"z":20},{"x":38,"y":-14,"z":20},{"x":38,"y":-15,"z":20},{"x":36,"y":-14,"z":21},{"x":36,"y":-15,"z":21},{"x":37,"y":-14,"z":21},{"x":37,"y":-15,"z":21},{"x":38,"y":-14,"z":21},{"x":38,"y":-15,"z":21},{"x":36,"y":-14,"z":22},{"x":36,"y":-15,"z":22},{"x":37,"y":-14,"z":22},{"x":37,"y":-15,"z":22},{"x":38,"y":-14,"z":22},{"x":38,"y":-15,"z":22},{"x":36,"y":-14,"z":23},{"x":36,"y":-15,"z":23},{"x":37,"y":-14,"z":23},{"x":37,"y":-15,"z":23},{"x":38,"y":-14,"z":23},{"x":38,"y":-15,"z":23},{"x":36,"y":-14,"z":24},{"x":36,"y":-15,"z":24},{"x":37,"y":-14,"z":24},{"x":37,"y":-15,"z":24},{"x":38,"y":-14,"z":24},{"x":38,"y":-15,"z":24}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":36,"y":-14,"z":40},{"x":36,"y":-15,"z":40},{"x":37,"y":-14,"z":40},{"x":37,"y":-15,"z":40},{"x":38,"y":-14,"z":40},{"x":38,"y":-15,"z":40},{"x":36,"y":-14,"z":41},{"x":36,"y":-15,"z":41},{"x":37,"y":-14,"z":41},{"x":37,"y":-15,"z":41},{"x":38,"y":-14,"z":41},{"x":38,"y":-15,"z":41},{"x":36,"y":-14,"z":42},{"x":36,"y":-15,"z":42},{"x":37,"y":-14,"z":42},{"x":37,"y":-15,"z":42},{"x":38,"y":-14,"z":42},{"x":38,"y":-15,"z":42},{"x":36,"y":-14,"z":43},{"x":36,"y":-15,"z":43},{"x":37,"y":-14,"z":43},{"x":37,"y":-15,"z":43},{"x":38,"y":-14,"z":43},{"x":38,"y":-15,"z":43},{"x":36,"y":-14,"z":44},{"x":36,"y":-15,"z":44},{"x":37,"y":-14,"z":44},{"x":37,"y":-15,"z":44},{"x":38,"y":-14,"z":44},{"x":38,"y":-15,"z":44}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":44,"y":-14,"z":20},{"x":44,"y":-15,"z":20},{"x":45,"y":-14,"z":20},{"x":45,"y":-15,"z":20},{"x":46,"y":-14,"z":20},{"x":46,"y":-15,"z":20},{"x":44,"y":-14,"z":21},{"x":44,"y":-15,"z":21},{"x":45,"y":-14,"z":21},{"x":45,"y":-15,"z":21},{"x":46,"y":-14,"z":21},{"x":46,"y":-15,"z":21},{"x":44,"y":-14,"z":22},{"x":44,"y":-15,"z":22},{"x":45,"y":-14,"z":22},{"x":45,"y":-15,"z":22},{"x":46,"y":-14,"z":22},{"x":46,"y":-15,"z":22},{"x":44,"y":-14,"z":23},{"x":44,"y":-15,"z":23},{"x":45,"y":-14,"z":23},{"x":45,"y":-15,"z":23},{"x":46,"y":-14,"z":23},{"x":46,"y":-15,"z":23},{"x":44,"y":-14,"z":24},{"x":44,"y":-15,"z":24},{"x":45,"y":-14,"z":24},{"x":45,"y":-15,"z":24},{"x":46,"y":-14,"z":24},{"x":46,"y":-15,"z":24}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":44,"y":-14,"z":40},{"x":44,"y":-15,"z":40},{"x":45,"y":-14,"z":40},{"x":45,"y":-15,"z":40},{"x":46,"y":-14,"z":40},{"x":46,"y":-15,"z":40},{"x":44,"y":-14,"z":41},{"x":44,"y":-15,"z":41},{"x":45,"y":-14,"z":41},{"x":45,"y":-15,"z":41},{"x":46,"y":-14,"z":41},{"x":46,"y":-15,"z":41},{"x":44,"y":-14,"z":42},{"x":44,"y":-15,"z":42},{"x":45,"y":-14,"z":42},{"x":45,"y":-15,"z":42},{"x":46,"y":-14,"z":42},{"x":46,"y":-15,"z":42},{"x":44,"y":-14,"z":43},{"x":44,"y":-15,"z":43},{"x":45,"y":-14,"z":43},{"x":45,"y":-15,"z":43},{"x":46,"y":-14,"z":43},{"x":46,"y":-15,"z":43},{"x":44,"y":-14,"z":44},{"x":44,"y":-15,"z":44},{"x":45,"y":-14,"z":44},{"x":45,"y":-15,"z":44},{"x":46,"y":-14,"z":44},{"x":46,"y":-15,"z":44}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"}},"totalSecrets":5}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e0608346-08a0-490b-a6d5-96786ebd5d96.json b/src/main/resources/dgroomdata/e0608346-08a0-490b-a6d5-96786ebd5d96.json
new file mode 100644
index 0000000..016e77c
--- /dev/null
+++ b/src/main/resources/dgroomdata/e0608346-08a0-490b-a6d5-96786ebd5d96.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":51,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,50,0,0,0,0,0,0,0,0,0,0,109,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,35,35,35,35,0,0,0,0,0,0,7,35,1,1,1,1,1,1,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,67,0,0,0,0,0,0,0,0,0,0,0,109,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,50,35,35,35,35,159,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,67,0,0,0,0,0,0,0,0,0,0,50,109,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,67,0,0,0,0,0,0,0,0,0,109,98,98,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,67,67,4,0,0,0,0,0,0,0,0,0,0,67,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,67,4,1,1,1,1,1,1,1,98,98,1,4,1,1,1,1,98,3,3,7,126,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,5,53,53,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,1,98,98,1,1,4,67,1,98,98,3,3,3,7,0,31,139,35,35,35,35,7,0,17,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,134,50,0,0,0,0,0,0,0,0,0,0,0,0,0,67,4,4,1,1,1,1,1,98,98,1,44,44,44,44,44,98,98,3,3,3,7,31,1,159,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,98,98,3,3,3,3,7,1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,1,1,1,1,1,98,98,98,0,0,0,0,0,109,98,3,3,3,3,3,3,3,3,3,98,1,1,1,35,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,98,98,109,0,0,0,0,0,109,98,3,3,3,3,3,3,3,3,3,98,1,1,1,35,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,3,3,98,98,109,0,0,0,0,0,109,98,3,3,3,3,3,3,3,3,3,98,1,1,35,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,134,5,134,0,0,0,109,1,1,3,3,3,3,98,98,109,0,0,0,0,0,98,98,3,3,3,3,3,3,3,3,3,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,134,5,134,0,0,50,109,1,3,3,3,1,1,98,98,98,0,0,0,0,0,98,98,3,3,3,3,3,3,3,3,3,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,4,67,67,67,67,4,4,4,98,98,98,109,109,98,98,1,1,0,0,0,0,0,98,109,98,109,109,98,98,98,98,98,98,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,1,1,1,159,1,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,1,159,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,67,4,4,4,4,4,1,1,159,144,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,144,159,1,1,98,1,0,0,0,0,0,0,0,0,0,0,50,159,35,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,67,4,4,4,4,4,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,98,1,0,0,0,0,0,0,0,0,0,0,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,0,0,0,0,0,0,0,0,0,0,159,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,0,4,4,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,0,4,4,4,4,4,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,159,159,159,159,0,0,0,0,0,0,159,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,50,4,4,4,4,4,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,159,35,35,35,35,0,0,159,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,98,4,4,4,4,4,98,139,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,98,1,1,1,1,1,1,1,1,1,7,0,35,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,98,98,1,98,98,98,4,4,98,98,98,98,139,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,98,1,1,1,1,98,98,98,98,98,98,7,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,109,109,98,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,109,109,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,50,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,109,98,98,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,1,1,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,109,0,0,0,0,0,0,139,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,139,0,0,0,0,0,50,109,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,109,109,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,109,109,98,98,1,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,98,98,98,98,98,1,1,1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,1,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,1,98,98,98,98,98,1,98,98,98,98,139,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,67,4,1,1,98,98,139,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,98,35,35,35,35,159,35,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,0,0,0,0,0,67,1,1,4,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,35,0,0,0,0,35,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,67,4,1,4,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,35,35,1,1,1,7,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,98,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,0,0,0,18,0,0,0,0,159,159,159,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,50,159,1,98,98,159,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,159,1,0,0,0,0,18,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,159,1,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,1,98,0,0,0,0,0,0,0,0,1,50,0,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,159,1,98,98,1,1,159,0,0,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,159,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,1,1,1,98,1,1,1,1,159,1,0,0,139,139,0,0,0,0,0,0,0,0,0,139,139,0,0,1,159,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,98,109,109,98,98,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,98,139,98,98,98,98,109,109,98,98,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,0,0,50,1,1,1,98,98,0,0,0,0,0,98,98,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,1,1,98,0,0,0,0,0,109,109,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,98,0,0,0,0,0,109,109,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,98,50,0,0,0,0,0,0,0,0,0,0,109,1,1,98,44,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,109,109,109,109,109,98,98,98,98,0,0,0,109,98,1,98,139,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,98,139,50,0,0,0,50,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,98,98,98,0,144,0,109,98,109,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,7,7,0,0,0,0,0,0,0,0,0,0,0,7,35,35,35,0,7,1,1,98,1,98,159,159,159,98,98,109,1,7,50,0,0,0,0,0,0,0,0,0,0,0,0,50,7,35,35,35,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e0608346-08a0-490b-a6d5-96786ebd5d96","name":"Cathedral","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":20,"y":-10,"z":8},"secretType":"CHEST","preRequisite":["crypt-2:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":29,"y":12,"z":4},"secretType":"CHEST","preRequisite":["superboom-3:open"]},"chest-1":{"mechType":"Secret","secretPoint":{"x":39,"y":-11,"z":37},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"bat-2":{"mechType":"Secret","secretPoint":{"x":43,"y":8,"z":14},"secretType":"BAT","preRequisite":[]},"superboom-3":{"secretPoint":{"offsetPointList":[{"x":30,"y":13,"z":10},{"x":30,"y":11,"z":10},{"x":31,"y":14,"z":10},{"x":31,"y":13,"z":10},{"x":31,"y":12,"z":10},{"x":31,"y":11,"z":10},{"x":32,"y":14,"z":10},{"x":32,"y":13,"z":10},{"x":32,"y":12,"z":10},{"x":32,"y":11,"z":10},{"x":33,"y":13,"z":10},{"x":33,"y":12,"z":10}]},"preRequisite":[],"mechType":"BreakableWall"},"bat-1":{"mechType":"Secret","secretPoint":{"x":60,"y":16,"z":3},"secretType":"BAT","preRequisite":[]},"superboom-2":{"secretPoint":{"offsetPointList":[{"x":30,"y":13,"z":10},{"x":30,"y":11,"z":10},{"x":31,"y":14,"z":10},{"x":31,"y":13,"z":10},{"x":31,"y":12,"z":10},{"x":31,"y":11,"z":10},{"x":32,"y":14,"z":10},{"x":32,"y":13,"z":10},{"x":32,"y":12,"z":10},{"x":32,"y":11,"z":10},{"x":33,"y":13,"z":10},{"x":33,"y":12,"z":10}]},"preRequisite":[],"mechType":"BreakableWall"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":46,"y":-8,"z":41},{"x":46,"y":-10,"z":41},{"x":46,"y":-8,"z":42},{"x":46,"y":-9,"z":42},{"x":46,"y":-10,"z":42},{"x":46,"y":-11,"z":42},{"x":46,"y":-8,"z":43},{"x":46,"y":-9,"z":43},{"x":46,"y":-10,"z":43},{"x":46,"y":-11,"z":43},{"x":46,"y":-9,"z":44},{"x":46,"y":-10,"z":44},{"x":46,"y":-11,"z":44}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-3":{"mechType":"Secret","secretPoint":{"x":34,"y":23,"z":50},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":49,"y":-11,"z":25},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":22,"y":20,"z":44},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":4,"y":15,"z":21},{"x":4,"y":14,"z":21},{"x":5,"y":15,"z":21},{"x":5,"y":14,"z":21},{"x":6,"y":15,"z":21},{"x":6,"y":14,"z":21},{"x":7,"y":15,"z":21},{"x":7,"y":14,"z":21},{"x":8,"y":15,"z":21},{"x":8,"y":14,"z":21},{"x":4,"y":15,"z":22},{"x":4,"y":14,"z":22},{"x":5,"y":15,"z":22},{"x":5,"y":14,"z":22},{"x":6,"y":15,"z":22},{"x":6,"y":14,"z":22},{"x":7,"y":15,"z":22},{"x":7,"y":14,"z":22},{"x":8,"y":15,"z":22},{"x":8,"y":14,"z":22},{"x":4,"y":15,"z":23},{"x":4,"y":14,"z":23},{"x":5,"y":15,"z":23},{"x":5,"y":14,"z":23},{"x":6,"y":15,"z":23},{"x":6,"y":14,"z":23},{"x":7,"y":15,"z":23},{"x":7,"y":14,"z":23},{"x":8,"y":15,"z":23},{"x":8,"y":14,"z":23}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":11,"y":-10,"z":14},{"x":11,"y":-11,"z":14},{"x":12,"y":-10,"z":14},{"x":12,"y":-11,"z":14},{"x":13,"y":-10,"z":14},{"x":13,"y":-11,"z":14},{"x":14,"y":-10,"z":14},{"x":14,"y":-11,"z":14},{"x":11,"y":-10,"z":15},{"x":11,"y":-11,"z":15},{"x":12,"y":-10,"z":15},{"x":12,"y":-11,"z":15},{"x":13,"y":-10,"z":15},{"x":13,"y":-11,"z":15},{"x":14,"y":-10,"z":15},{"x":14,"y":-11,"z":15},{"x":11,"y":-10,"z":16},{"x":11,"y":-11,"z":16},{"x":12,"y":-10,"z":16},{"x":12,"y":-11,"z":16},{"x":13,"y":-10,"z":16},{"x":13,"y":-11,"z":16},{"x":14,"y":-10,"z":16},{"x":14,"y":-11,"z":16}]},"preRequisite":["crypt-2:open"],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":9,"y":0,"z":23},{"x":9,"y":-1,"z":23},{"x":10,"y":0,"z":23},{"x":10,"y":-1,"z":23},{"x":11,"y":0,"z":23},{"x":11,"y":-1,"z":23},{"x":9,"y":0,"z":24},{"x":9,"y":-1,"z":24},{"x":10,"y":0,"z":24},{"x":10,"y":-1,"z":24},{"x":11,"y":0,"z":24},{"x":11,"y":-1,"z":24},{"x":9,"y":0,"z":25},{"x":9,"y":-1,"z":25},{"x":10,"y":0,"z":25},{"x":10,"y":-1,"z":25},{"x":11,"y":0,"z":25},{"x":11,"y":-1,"z":25},{"x":9,"y":0,"z":26},{"x":9,"y":-1,"z":26},{"x":10,"y":0,"z":26},{"x":10,"y":-1,"z":26},{"x":11,"y":0,"z":26},{"x":11,"y":-1,"z":26}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":4,"y":0,"z":23},{"x":4,"y":-1,"z":23},{"x":5,"y":0,"z":23},{"x":5,"y":-1,"z":23},{"x":6,"y":0,"z":23},{"x":6,"y":-1,"z":23},{"x":4,"y":0,"z":24},{"x":4,"y":-1,"z":24},{"x":5,"y":0,"z":24},{"x":5,"y":-1,"z":24},{"x":6,"y":0,"z":24},{"x":6,"y":-1,"z":24},{"x":4,"y":0,"z":25},{"x":4,"y":-1,"z":25},{"x":5,"y":0,"z":25},{"x":5,"y":-1,"z":25},{"x":6,"y":0,"z":25},{"x":6,"y":-1,"z":25},{"x":4,"y":0,"z":26},{"x":4,"y":-1,"z":26},{"x":5,"y":0,"z":26},{"x":5,"y":-1,"z":26},{"x":6,"y":0,"z":26},{"x":6,"y":-1,"z":26}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":8}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e22c44d7-4094-4230-89ba-efa438aa3615.json b/src/main/resources/dgroomdata/e22c44d7-4094-4230-89ba-efa438aa3615.json
new file mode 100644
index 0000000..0adbe3a
--- /dev/null
+++ b/src/main/resources/dgroomdata/e22c44d7-4094-4230-89ba-efa438aa3615.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":273,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,7,7,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,1,1,7,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,7,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,7,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,1,35,35,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,7,7,35,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,7,7,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,109,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,18,18,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,44,44,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,44,44,44,44,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,44,44,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,44,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,44,44,44,44,98,98,98,0,0,0,0,0,0,0,98,98,98,44,44,44,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,1,0,0,0,0,0,0,0,98,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,44,44,44,44,98,98,98,0,0,0,0,0,0,0,98,98,98,44,44,44,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,44,0,0,0,98,98,98,0,0,0,0,0,0,0,98,1,98,0,0,0,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,44,44,44,44,109,109,0,0,0,0,0,0,0,0,0,109,109,44,44,44,44,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,44,44,44,44,109,109,0,0,0,0,0,0,0,0,0,109,109,44,44,44,44,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,109,109,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,0,0,0,0,1,98,0,0,0,0,0,0,0,0,0,98,1,0,0,0,0,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e22c44d7-4094-4230-89ba-efa438aa3615","name":"catwalk","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":16,"y":-20,"z":25},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":17,"y":-7,"z":85},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":4,"y":-7,"z":25},"secretType":"CHEST","preRequisite":[]},"journal-1":{"secretPoint":{"x":6,"y":-15,"z":88},"preRequisite":[],"mechType":"Journal"},"chest-4":{"mechType":"Secret","secretPoint":{"x":13,"y":-21,"z":90},"secretType":"CHEST","preRequisite":[]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":-17,"z":24},{"x":11,"y":-18,"z":24},{"x":11,"y":-19,"z":24},{"x":11,"y":-20,"z":24},{"x":11,"y":-17,"z":25},{"x":11,"y":-18,"z":25},{"x":11,"y":-19,"z":25},{"x":11,"y":-20,"z":25},{"x":11,"y":-17,"z":26},{"x":11,"y":-18,"z":26},{"x":11,"y":-19,"z":26},{"x":11,"y":-20,"z":26}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":25,"y":-20,"z":81},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":26,"y":-9,"z":15},{"x":26,"y":-10,"z":15},{"x":27,"y":-9,"z":15},{"x":27,"y":-10,"z":15},{"x":28,"y":-9,"z":15},{"x":28,"y":-10,"z":15},{"x":29,"y":-9,"z":15},{"x":29,"y":-10,"z":15},{"x":26,"y":-9,"z":16},{"x":26,"y":-10,"z":16},{"x":27,"y":-9,"z":16},{"x":27,"y":-10,"z":16},{"x":28,"y":-9,"z":16},{"x":28,"y":-10,"z":16},{"x":29,"y":-9,"z":16},{"x":29,"y":-10,"z":16},{"x":26,"y":-9,"z":17},{"x":26,"y":-10,"z":17},{"x":27,"y":-9,"z":17},{"x":27,"y":-10,"z":17},{"x":28,"y":-9,"z":17},{"x":28,"y":-10,"z":17},{"x":29,"y":-9,"z":17},{"x":29,"y":-10,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":19,"y":-19,"z":90},{"x":19,"y":-20,"z":90},{"x":19,"y":-21,"z":90},{"x":20,"y":-19,"z":90},{"x":20,"y":-20,"z":90},{"x":20,"y":-21,"z":90},{"x":21,"y":-19,"z":90},{"x":21,"y":-20,"z":90},{"x":21,"y":-21,"z":90},{"x":19,"y":-19,"z":91},{"x":19,"y":-20,"z":91},{"x":19,"y":-21,"z":91},{"x":20,"y":-19,"z":91},{"x":20,"y":-20,"z":91},{"x":20,"y":-21,"z":91},{"x":21,"y":-19,"z":91},{"x":21,"y":-20,"z":91},{"x":21,"y":-21,"z":91}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":27,"y":-19,"z":90},{"x":27,"y":-20,"z":90},{"x":27,"y":-21,"z":90},{"x":28,"y":-19,"z":90},{"x":28,"y":-20,"z":90},{"x":28,"y":-21,"z":90},{"x":29,"y":-19,"z":90},{"x":29,"y":-20,"z":90},{"x":29,"y":-21,"z":90},{"x":27,"y":-19,"z":91},{"x":27,"y":-20,"z":91},{"x":27,"y":-21,"z":91},{"x":28,"y":-19,"z":91},{"x":28,"y":-20,"z":91},{"x":28,"y":-21,"z":91},{"x":29,"y":-19,"z":91},{"x":29,"y":-20,"z":91},{"x":29,"y":-21,"z":91}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":27,"y":-19,"z":83},{"x":27,"y":-20,"z":83},{"x":27,"y":-21,"z":83},{"x":28,"y":-19,"z":83},{"x":28,"y":-20,"z":83},{"x":28,"y":-21,"z":83},{"x":29,"y":-19,"z":83},{"x":29,"y":-20,"z":83},{"x":29,"y":-21,"z":83},{"x":27,"y":-19,"z":84},{"x":27,"y":-20,"z":84},{"x":27,"y":-21,"z":84},{"x":28,"y":-19,"z":84},{"x":28,"y":-20,"z":84},{"x":28,"y":-21,"z":84},{"x":29,"y":-19,"z":84},{"x":29,"y":-20,"z":84},{"x":29,"y":-21,"z":84}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":23,"y":-20,"z":81},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":19,"y":-19,"z":83},{"x":19,"y":-20,"z":83},{"x":19,"y":-21,"z":83},{"x":20,"y":-19,"z":83},{"x":20,"y":-20,"z":83},{"x":20,"y":-21,"z":83},{"x":21,"y":-19,"z":83},{"x":21,"y":-20,"z":83},{"x":21,"y":-21,"z":83},{"x":19,"y":-19,"z":84},{"x":19,"y":-20,"z":84},{"x":19,"y":-21,"z":84},{"x":20,"y":-19,"z":84},{"x":20,"y":-20,"z":84},{"x":20,"y":-21,"z":84},{"x":21,"y":-19,"z":84},{"x":21,"y":-20,"z":84},{"x":21,"y":-21,"z":84}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e66fe526-22c1-45bc-b4a8-d10549d7ee3f.json b/src/main/resources/dgroomdata/e66fe526-22c1-45bc-b4a8-d10549d7ee3f.json
new file mode 100644
index 0000000..8010743
--- /dev/null
+++ b/src/main/resources/dgroomdata/e66fe526-22c1-45bc-b4a8-d10549d7ee3f.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,50,0,0,0,0,0,50,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,0,139,0,0,0,0,0,0,0,139,18,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,98,98,0,0,0,-1,-1,-1,0,0,0,98,98,98,98,98,1,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,98,98,0,50,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,98,98,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,98,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,1,1,1,98,159,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,98,0,0,0,144,-1,-1,-1,-1],[-1,-1,-1,-1,0,1,1,1,98,98,98,98,0,0,0,-1,-1,-1,0,0,0,98,98,98,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,1,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,159,1,159,0,0,0,0,0,0,0,0,0,0,0,159,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,98,0,139,0,0,0,0,0,0,0,139,0,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,131,1,98,98,98,0,0,0,0,0,0,0,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,132,159,98,98,98,0,0,0,0,0,0,0,98,98,98,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,0,0,0,132,1,159,98,0,0,0,0,0,0,0,0,18,159,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,132,44,1,109,0,50,0,0,0,0,0,50,0,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,132,44,1,98,98,98,0,0,0,0,0,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,139,132,1,1,98,98,98,0,0,0,0,0,98,98,98,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,131,1,1,1,98,0,0,0,0,0,0,0,159,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e66fe526-22c1-45bc-b4a8-d10549d7ee3f","name":"Sarcophagus","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":27,"y":-1,"z":16},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"bat-1":{"mechType":"Secret","secretPoint":{"x":9,"y":1,"z":23},"secretType":"BAT","preRequisite":[]},"essence-1":{"mechType":"Secret","secretPoint":{"x":4,"y":-2,"z":19},"secretType":"ESSENCE","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":15,"y":0,"z":14},{"x":15,"y":-1,"z":14},{"x":16,"y":0,"z":14},{"x":16,"y":-1,"z":14},{"x":17,"y":0,"z":14},{"x":17,"y":-1,"z":14},{"x":15,"y":0,"z":15},{"x":15,"y":-1,"z":15},{"x":16,"y":0,"z":15},{"x":16,"y":-1,"z":15},{"x":17,"y":0,"z":15},{"x":17,"y":-1,"z":15},{"x":15,"y":0,"z":16},{"x":15,"y":-1,"z":16},{"x":16,"y":0,"z":16},{"x":16,"y":-1,"z":16},{"x":17,"y":0,"z":16},{"x":17,"y":-1,"z":16},{"x":15,"y":0,"z":17},{"x":15,"y":-1,"z":17},{"x":16,"y":0,"z":17},{"x":16,"y":-1,"z":17},{"x":17,"y":0,"z":17},{"x":17,"y":-1,"z":17},{"x":15,"y":0,"z":18},{"x":15,"y":-1,"z":18},{"x":16,"y":0,"z":18},{"x":16,"y":-1,"z":18},{"x":17,"y":0,"z":18},{"x":17,"y":-1,"z":18},{"x":16,"y":1,"z":14},{"x":16,"y":1,"z":15},{"x":16,"y":1,"z":16},{"x":16,"y":1,"z":17},{"x":16,"y":1,"z":18}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":23,"y":2,"z":15},{"x":23,"y":1,"z":15},{"x":23,"y":2,"z":16},{"x":23,"y":1,"z":16},{"x":23,"y":0,"z":16},{"x":23,"y":-1,"z":16},{"x":23,"y":1,"z":17},{"x":23,"y":0,"z":17},{"x":23,"y":-1,"z":17}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e6d51aea-c715-4396-986d-2e09d31993e1.json b/src/main/resources/dgroomdata/e6d51aea-c715-4396-986d-2e09d31993e1.json
new file mode 100644
index 0000000..f62a99c
--- /dev/null
+++ b/src/main/resources/dgroomdata/e6d51aea-c715-4396-986d-2e09d31993e1.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,0,18,98,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,13,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,109,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,0,0,0,0,0,0,0,0,0,0,0,0,4,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,4,1,4,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,109,18,0,0,0,0,0,98,4,44,43,1,1,48,43,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,0,0,0,0,0,0,98,1,43,1,1,1,1,1,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,44,44,44,44,1,98,48,1,1,1,1,1,1,1,1,44,44,0,0,0,0,44,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,159,159,1,48,0,1,1,98,98,1,1,1,1,1,1,-1,-1,-1,1,44,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,48,0,43,98,44,0,98,1,1,4,1,1,0,0,0,43,43,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,44,98,44,139,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,4,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,98,98,98,98,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,18,18,0,18,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,0,171,171,0,4,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,109,109,109,109,4,98,44,0,0,0,0,0,44,0,1,98,98,98,0,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,1,98,0,0,0,0,0,98,98,1,1,1,0,0,0,0,0,50,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,0,0,0,0,1,1,48,0,0,0,0,139,1,1,1,126,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,44,1,48,0,0,0,0,0,98,1,1,126,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,109,98,0,0,0,0,0,98,0,126,126,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,44,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,44,44,44,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,0,0,0,0,0,98,1,50,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e6d51aea-c715-4396-986d-2e09d31993e1","name":"Lava-Skull","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":24,"y":-1,"z":6},"secretType":"CHEST","preRequisite":["door-1:open"]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":29,"y":15,"z":16},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":24,"y":3,"z":12},{"x":24,"y":2,"z":12},{"x":24,"y":1,"z":12},{"x":24,"y":0,"z":12},{"x":24,"y":-1,"z":12},{"x":25,"y":3,"z":12},{"x":25,"y":2,"z":12},{"x":25,"y":1,"z":12},{"x":25,"y":0,"z":12},{"x":25,"y":-1,"z":12},{"x":26,"y":3,"z":12},{"x":26,"y":2,"z":12},{"x":26,"y":1,"z":12},{"x":26,"y":0,"z":12},{"x":26,"y":-1,"z":12}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"bat-2":{"mechType":"Secret","secretPoint":{"x":24,"y":5,"z":7},"secretType":"BAT","preRequisite":["door-1:open"]},"bat-1":{"mechType":"Secret","secretPoint":{"x":3,"y":14,"z":20},"secretType":"BAT","preRequisite":[]},"journal-1":{"secretPoint":{"x":27,"y":15,"z":8},"preRequisite":[],"mechType":"Journal"}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e773dc09-f989-4d8f-8aba-43dbb71e7b62.json b/src/main/resources/dgroomdata/e773dc09-f989-4d8f-8aba-43dbb71e7b62.json
new file mode 100644
index 0000000..dbd53b2
--- /dev/null
+++ b/src/main/resources/dgroomdata/e773dc09-f989-4d8f-8aba-43dbb71e7b62.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,109,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,159,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,98,98,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,98,98,109,0,0,0,0,0,0,0,0,0,0,0,139,98,1,1,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,4,4,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,109,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,139,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,44,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,44,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,4,67,67,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,67,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,4,67,67,4,98,98,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,98,98,0,0,0,139,98,0,0,0,0,0,0,139,109,109,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,0,101,101,98,98,144,0,109,109,144,0,139,98,98,0,101,101,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,4,0,0,0,67,1,159,159,159,159,159,159,159,1,67,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,67,0,0,0,4,1,1,1,1,1,1,1,1,1,67,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,67,106,0,0,4,1,1,1,1,1,1,1,1,1,4,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,4,4,4,67,4,1,1,1,1,1,1,1,1,1,4,4,67,67,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e773dc09-f989-4d8f-8aba-43dbb71e7b62","name":"Locked-away","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":5,"y":5,"z":2},"secretType":"CHEST","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":4,"y":0,"z":4},{"x":4,"y":-1,"z":4},{"x":5,"y":0,"z":4},{"x":5,"y":-1,"z":4},{"x":6,"y":0,"z":4},{"x":6,"y":-1,"z":4},{"x":7,"y":0,"z":4},{"x":7,"y":-1,"z":4},{"x":4,"y":0,"z":5},{"x":4,"y":-1,"z":5},{"x":5,"y":0,"z":5},{"x":5,"y":-1,"z":5},{"x":6,"y":0,"z":5},{"x":6,"y":-1,"z":5},{"x":7,"y":0,"z":5},{"x":7,"y":-1,"z":5},{"x":4,"y":0,"z":6},{"x":4,"y":-1,"z":6},{"x":5,"y":0,"z":6},{"x":5,"y":-1,"z":6},{"x":6,"y":0,"z":6},{"x":6,"y":-1,"z":6},{"x":7,"y":0,"z":6},{"x":7,"y":-1,"z":6}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e7e0bb38-8fc3-4d7c-a0c6-1fce55ac9082.json b/src/main/resources/dgroomdata/e7e0bb38-8fc3-4d7c-a0c6-1fce55ac9082.json
new file mode 100644
index 0000000..77992ff
--- /dev/null
+++ b/src/main/resources/dgroomdata/e7e0bb38-8fc3-4d7c-a0c6-1fce55ac9082.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,98,159,159,159,98,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,109,109,109,98,98,98,98,98,109,144,0,0,109,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,50,0,0,0,1,159,1,98,1,139,0,0,0,139,1,109,109,98,98,98,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,98,0,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,98,0,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,109,109,98,98,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,98,0,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,139,98,139,0,0,0,0,0,0,0,0,0,98,0,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,1,159,0,50,1,98,1,139,0,0,0,139,1,98,109,109,98,98,98,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,1,1,1,98,98,98,98,98,98,0,0,0,98,98,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,98,0,0,0,0,0,0,0,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,98,98,1,0,0,0,0,0,1,98,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,4,4,0,0,0,0,0,0,0,0,0,98,109,109,98,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,51,4,-1,0,0,0,0,0,0,0,0,101,0,0,0,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,51,4,-1,0,0,0,0,0,0,0,0,101,0,0,0,109,0,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,51,4,-1,0,0,0,0,0,0,0,0,0,0,0,0,109,0,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,51,4,-1,0,0,0,0,0,0,0,0,101,0,0,0,98,98,98,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,4,4,4,0,0,0,0,0,0,0,0,0,98,109,109,98,98,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e7e0bb38-8fc3-4d7c-a0c6-1fce55ac9082","name":"Prison-cell","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":11,"y":6,"z":24},"secretType":"CHEST","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":11,"y":0,"z":24},{"x":11,"y":-1,"z":24},{"x":11,"y":0,"z":25},{"x":11,"y":-1,"z":25},{"x":11,"y":0,"z":26},{"x":11,"y":-1,"z":26},{"x":11,"y":0,"z":27},{"x":11,"y":-1,"z":27}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e83ed91c-4a35-4020-985a-d0306f17117a.json b/src/main/resources/dgroomdata/e83ed91c-4a35-4020-985a-d0306f17117a.json
new file mode 100644
index 0000000..426ab91
--- /dev/null
+++ b/src/main/resources/dgroomdata/e83ed91c-4a35-4020-985a-d0306f17117a.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":19,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,159,159,1,1,1,1,1,1,1,1,1,4,98,98,98,98,98,98,1,98,98,98,1,98,98,98,139,0,0,0,0,0,139,139,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,50,0,0,0,0,0,0,35,35,35,35,1,35,35,7,7,4,98,98,98,98,98,98,98,1,98,98,98,98,98,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,35,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,35,159,0,65,65,0,4,98,98,98,98,98,98,98,98,98,98,159,159,98,0,0,0,0,0,0,0,0,0,98,159,159,98,1,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,50,1,1,1,1,1,0,0,0,0,0,0,0,0,17,0,0,109,98,0,0,0,109,4,1,98,98,98,98,98,98,98,98,98,144,0,98,0,0,0,0,0,0,0,0,0,1,144,0,98,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,1,1,159,1,159,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,109,4,98,98,98,98,1,98,98,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,159,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,1,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,159,1,1,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,0,0,0,0,35,1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,17,0,0,159,1,1,1,1,1,159,0,0,0,0,0,0,0,109,98,0,0,0,109,4,4,4,4,4,139,139,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,0,0,98,144,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,159,1,1,1,159,0,0,0,0,0,0,0,109,98,0,0,0,109,4,4,4,4,4,139,139,0,0,0,0,0,0,0,139,139,98,0,0,0,98,139,139,0,0,0,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,159,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,67,67,4,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,67,67,4,4,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,109,4,4,4,4,4,1,139,0,0,0,0,0,0,0,139,139,98,0,0,0,98,98,98,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,109,4,4,4,4,4,1,1,0,0,0,0,0,0,0,139,139,0,0,0,0,0,139,139,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,98,98,98,98,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,98,98,98,98,98,1,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,98,98,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,109,109,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,98,98,0,0,0,109,4,98,98,1,1,98,98,1,98,98,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,98,98,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,98,98,0,0,0,109,4,1,98,98,1,98,98,98,98,98,98,0,0,98,0,0,0,0,0,0,0,0,0,98,0,0,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,98,98,98,98,98,98,98,98,98,98,159,159,109,0,0,0,0,0,0,0,0,0,98,159,159,1,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,1,98,98,98,98,1,1,98,1,98,98,98,109,0,0,0,0,0,0,0,0,0,1,98,98,98,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,98,98,98,98,98,98,98,98,98,98,98,98,98,139,139,0,0,0,0,0,139,98,1,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,109,109,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,67,67,4,4,4,4,4,4,4,4,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,109,98,98,109,0,0,0,0,0,109,98,98,109,4,4,4,4,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,0,98,139,0,0,0,0,0,0,0,139,98,0,67,4,4,44,44,44,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,0,50,0,0,0,0,0,0,0,0,0,0,0,67,4,4,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,67,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,67,0,98,98,0,0,0,0,0,0,0,139,98,0,4,4,4,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,67,0,98,139,0,0,0,0,0,0,0,1,98,0,4,4,4,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,50,0,0,4,4,67,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,139,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,17,44,0,0,118,0,0,44,17,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,50,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,139,50,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,50,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,109,109,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,98,159,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,1,159,1,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,1,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,5,159,1,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,98,98,98,50,0,0,0,0,0,0,0,0,0,0,139,98,0,35,1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e83ed91c-4a35-4020-985a-d0306f17117a","name":"Well","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":38,"y":21,"z":19},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"chest-3":{"mechType":"Secret","secretPoint":{"x":16,"y":19,"z":61},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":13,"y":18,"z":12},"secretType":"CHEST","preRequisite":[]},"dummy-1":{"secretPoint":{"x":4,"y":25,"z":3},"preRequisite":[],"mechType":"Dummy"},"essences-1":{"mechType":"Secret","secretPoint":{"x":7,"y":25,"z":8},"secretType":"ESSENCE","preRequisite":["dummy-1:click"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":30,"y":20,"z":4},{"x":30,"y":19,"z":4},{"x":30,"y":18,"z":4},{"x":30,"y":17,"z":4},{"x":30,"y":20,"z":5},{"x":30,"y":19,"z":5},{"x":30,"y":18,"z":5},{"x":30,"y":17,"z":5},{"x":30,"y":19,"z":6},{"x":30,"y":18,"z":6},{"x":30,"y":17,"z":6}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":27,"y":21,"z":59},"secretType":"ITEM_DROP","preRequisite":[]},"itemdrop-2":{"mechType":"Secret","secretPoint":{"x":46,"y":-13,"z":15},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":49,"y":9,"z":17},{"x":49,"y":8,"z":17},{"x":50,"y":9,"z":17},{"x":50,"y":8,"z":17},{"x":51,"y":9,"z":17},{"x":51,"y":8,"z":17},{"x":49,"y":9,"z":18},{"x":49,"y":8,"z":18},{"x":50,"y":9,"z":18},{"x":50,"y":8,"z":18},{"x":51,"y":9,"z":18},{"x":51,"y":8,"z":18},{"x":49,"y":9,"z":19},{"x":49,"y":8,"z":19},{"x":50,"y":9,"z":19},{"x":50,"y":8,"z":19},{"x":51,"y":9,"z":19},{"x":51,"y":8,"z":19},{"x":49,"y":9,"z":20},{"x":49,"y":8,"z":20},{"x":50,"y":9,"z":20},{"x":50,"y":8,"z":20},{"x":51,"y":9,"z":20},{"x":51,"y":8,"z":20}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":42,"y":9,"z":12},{"x":42,"y":8,"z":12},{"x":43,"y":9,"z":12},{"x":43,"y":8,"z":12},{"x":44,"y":9,"z":12},{"x":44,"y":8,"z":12},{"x":42,"y":9,"z":13},{"x":42,"y":8,"z":13},{"x":43,"y":9,"z":13},{"x":43,"y":8,"z":13},{"x":44,"y":9,"z":13},{"x":44,"y":8,"z":13},{"x":42,"y":9,"z":14},{"x":42,"y":8,"z":14},{"x":43,"y":9,"z":14},{"x":43,"y":8,"z":14},{"x":44,"y":9,"z":14},{"x":44,"y":8,"z":14},{"x":42,"y":9,"z":15},{"x":42,"y":8,"z":15},{"x":43,"y":9,"z":15},{"x":43,"y":8,"z":15},{"x":44,"y":9,"z":15},{"x":44,"y":8,"z":15}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":35,"y":9,"z":17},{"x":35,"y":8,"z":17},{"x":36,"y":9,"z":17},{"x":36,"y":8,"z":17},{"x":37,"y":9,"z":17},{"x":37,"y":8,"z":17},{"x":35,"y":9,"z":18},{"x":35,"y":8,"z":18},{"x":36,"y":9,"z":18},{"x":36,"y":8,"z":18},{"x":37,"y":9,"z":18},{"x":37,"y":8,"z":18},{"x":35,"y":9,"z":19},{"x":35,"y":8,"z":19},{"x":36,"y":9,"z":19},{"x":36,"y":8,"z":19},{"x":37,"y":9,"z":19},{"x":37,"y":8,"z":19},{"x":35,"y":9,"z":20},{"x":35,"y":8,"z":20},{"x":36,"y":9,"z":20},{"x":36,"y":8,"z":20},{"x":37,"y":9,"z":20},{"x":37,"y":8,"z":20}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":3,"y":-8,"z":21},{"x":3,"y":-9,"z":21},{"x":4,"y":-8,"z":21},{"x":4,"y":-9,"z":21},{"x":5,"y":-8,"z":21},{"x":5,"y":-9,"z":21},{"x":6,"y":-8,"z":21},{"x":6,"y":-9,"z":21},{"x":3,"y":-8,"z":22},{"x":3,"y":-9,"z":22},{"x":4,"y":-8,"z":22},{"x":4,"y":-9,"z":22},{"x":5,"y":-8,"z":22},{"x":5,"y":-9,"z":22},{"x":6,"y":-8,"z":22},{"x":6,"y":-9,"z":22},{"x":3,"y":-8,"z":23},{"x":3,"y":-9,"z":23},{"x":4,"y":-8,"z":23},{"x":4,"y":-9,"z":23},{"x":5,"y":-8,"z":23},{"x":5,"y":-9,"z":23},{"x":6,"y":-8,"z":23},{"x":6,"y":-9,"z":23},{"x":3,"y":-7,"z":22},{"x":4,"y":-7,"z":22},{"x":5,"y":-7,"z":22},{"x":6,"y":-7,"z":22}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":37,"y":18,"z":13},{"x":37,"y":17,"z":13},{"x":38,"y":18,"z":13},{"x":38,"y":17,"z":13},{"x":39,"y":18,"z":13},{"x":39,"y":17,"z":13},{"x":37,"y":18,"z":14},{"x":37,"y":17,"z":14},{"x":38,"y":18,"z":14},{"x":38,"y":17,"z":14},{"x":39,"y":18,"z":14},{"x":39,"y":17,"z":14},{"x":37,"y":18,"z":15},{"x":37,"y":17,"z":15},{"x":38,"y":18,"z":15},{"x":38,"y":17,"z":15},{"x":39,"y":18,"z":15},{"x":39,"y":17,"z":15},{"x":37,"y":18,"z":16},{"x":37,"y":17,"z":16},{"x":38,"y":18,"z":16},{"x":38,"y":17,"z":16},{"x":39,"y":18,"z":16},{"x":39,"y":17,"z":16},{"x":38,"y":19,"z":13},{"x":38,"y":19,"z":14},{"x":38,"y":19,"z":15},{"x":38,"y":19,"z":16}]},"preRequisite":["superboom-1:open"],"mechType":"Tomb"}},"totalSecrets":7}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/e9f4f98a-0913-4542-a02d-4ed3cec6f09b.json b/src/main/resources/dgroomdata/e9f4f98a-0913-4542-a02d-4ed3cec6f09b.json
new file mode 100644
index 0000000..3824830
--- /dev/null
+++ b/src/main/resources/dgroomdata/e9f4f98a-0913-4542-a02d-4ed3cec6f09b.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,139,139,1,1,1,0,0,7,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,134,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,134,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,166,159,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,7,35,35,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,35,139,139,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,35,35,35,159,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,35,35,35,35,0,139,98,0,0,0,0,0,98,98,0,0,0,159,159,159,159,159,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"e9f4f98a-0913-4542-a02d-4ed3cec6f09b","name":"Spikes","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":20,"y":21,"z":5},"secretType":"CHEST","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":25,"y":-15,"z":3},"secretType":"BAT","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":26,"y":22,"z":11},{"x":26,"y":21,"z":11},{"x":27,"y":22,"z":11},{"x":27,"y":21,"z":11},{"x":28,"y":22,"z":11},{"x":28,"y":21,"z":11},{"x":26,"y":22,"z":12},{"x":26,"y":21,"z":12},{"x":27,"y":22,"z":12},{"x":27,"y":21,"z":12},{"x":28,"y":22,"z":12},{"x":28,"y":21,"z":12},{"x":26,"y":22,"z":13},{"x":26,"y":21,"z":13},{"x":27,"y":22,"z":13},{"x":27,"y":21,"z":13},{"x":28,"y":22,"z":13},{"x":28,"y":21,"z":13}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":26,"y":22,"z":6},{"x":26,"y":21,"z":6},{"x":27,"y":22,"z":6},{"x":27,"y":21,"z":6},{"x":28,"y":22,"z":6},{"x":28,"y":21,"z":6},{"x":26,"y":22,"z":7},{"x":26,"y":21,"z":7},{"x":27,"y":22,"z":7},{"x":27,"y":21,"z":7},{"x":28,"y":22,"z":7},{"x":28,"y":21,"z":7},{"x":26,"y":22,"z":8},{"x":26,"y":21,"z":8},{"x":27,"y":22,"z":8},{"x":27,"y":21,"z":8},{"x":28,"y":22,"z":8},{"x":28,"y":21,"z":8}]},"preRequisite":[],"mechType":"Tomb"},"essence-1":{"mechType":"Secret","secretPoint":{"x":23,"y":-17,"z":2},"secretType":"ESSENCE","preRequisite":[]}},"totalSecrets":3}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/ed57833a-01ca-4487-b516-6c3690c6221c.json b/src/main/resources/dgroomdata/ed57833a-01ca-4487-b516-6c3690c6221c.json
new file mode 100644
index 0000000..25546de
--- /dev/null
+++ b/src/main/resources/dgroomdata/ed57833a-01ca-4487-b516-6c3690c6221c.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":4369,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,159,159,159,159,159,159,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,7,0,9,0,0,0,0,0,0,0,0,0,0,0,159,159,159,159,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,7,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,159,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,1,-1,-1,-1,-1],[-1,-1,-1,-1,159,159,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,159,-1,-1,-1,-1],[-1,-1,-1,-1,159,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,159,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,159,159,159,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,35,35,1,159,159,159,159,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,159,159,159,1,1,1,1,159,159,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,159,159,1,1,1,1,1,1,1,159,159,9,9,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,159,0,0,9,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,18,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,9,9,9,0,18,0,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,159,159,159,9,9,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,159,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,1,1,1,1,1,1,1,1,1,1,159,159,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,159,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,109,98,109,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,98,98,162,0,0,139,0,0,0,0,0,0,0,139,0,0,162,1,98,98,109,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,98,50,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,44,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,139,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,109,109,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,109,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,1,0,0,0,0,0,98,98,109,0,0,0,109,98,98,0,0,0,0,0,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,67,67,67,67,67,98,1,44,0,0,0,109,1,98,67,67,67,67,67,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,1,1,43,44,44,1,1,1,1,4,4,1,4,4,4,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,1,1,1,1,1,1,1,4,1,4,4,1,1,1,1,1,1,1,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,98,98,44,44,44,44,44,1,98,67,67,67,67,67,98,1,44,44,44,44,44,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,18,18,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,18,18,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,139,0,0,0,0,98,139,0,0,0,0,0,0,0,0,0,0,0,139,98,0,0,0,0,139,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"ed57833a-01ca-4487-b516-6c3690c6221c","name":"waterfall","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":28,"y":8,"z":83},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":10,"y":12,"z":43},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":16,"y":11,"z":122},"secretType":"CHEST","preRequisite":[]},"bat-2":{"mechType":"Secret","secretPoint":{"x":4,"y":-24,"z":89},"secretType":"BAT","preRequisite":[]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":3,"y":-26,"z":9},"secretType":"ITEM_DROP","preRequisite":[]},"bat-1":{"mechType":"Secret","secretPoint":{"x":28,"y":-9,"z":71},"secretType":"BAT","preRequisite":[]},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":26,"y":-24,"z":108},{"x":26,"y":-25,"z":108},{"x":27,"y":-24,"z":108},{"x":27,"y":-25,"z":108},{"x":28,"y":-24,"z":108},{"x":28,"y":-25,"z":108},{"x":29,"y":-24,"z":108},{"x":29,"y":-25,"z":108},{"x":26,"y":-24,"z":109},{"x":26,"y":-25,"z":109},{"x":27,"y":-24,"z":109},{"x":27,"y":-25,"z":109},{"x":28,"y":-24,"z":109},{"x":28,"y":-25,"z":109},{"x":29,"y":-24,"z":109},{"x":29,"y":-25,"z":109},{"x":26,"y":-24,"z":110},{"x":26,"y":-25,"z":110},{"x":27,"y":-24,"z":110},{"x":27,"y":-25,"z":110},{"x":28,"y":-24,"z":110},{"x":28,"y":-25,"z":110},{"x":29,"y":-24,"z":110},{"x":29,"y":-25,"z":110}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":26,"y":-24,"z":103},{"x":26,"y":-25,"z":103},{"x":27,"y":-24,"z":103},{"x":27,"y":-25,"z":103},{"x":28,"y":-24,"z":103},{"x":28,"y":-25,"z":103},{"x":29,"y":-24,"z":103},{"x":29,"y":-25,"z":103},{"x":26,"y":-24,"z":104},{"x":26,"y":-25,"z":104},{"x":27,"y":-24,"z":104},{"x":27,"y":-25,"z":104},{"x":28,"y":-24,"z":104},{"x":28,"y":-25,"z":104},{"x":29,"y":-24,"z":104},{"x":29,"y":-25,"z":104},{"x":26,"y":-24,"z":105},{"x":26,"y":-25,"z":105},{"x":27,"y":-24,"z":105},{"x":27,"y":-25,"z":105},{"x":28,"y":-24,"z":105},{"x":28,"y":-25,"z":105},{"x":29,"y":-24,"z":105},{"x":29,"y":-25,"z":105}]},"preRequisite":[],"mechType":"Tomb"},"chest-4":{"mechType":"Secret","secretPoint":{"x":8,"y":14,"z":35},"secretType":"CHEST","preRequisite":[]},"prince-1":{"secretPoint":{"offsetPointList":[{"x":27,"y":-30,"z":105},{"x":27,"y":-31,"z":105},{"x":28,"y":-30,"z":105},{"x":28,"y":-31,"z":105},{"x":29,"y":-30,"z":105},{"x":29,"y":-31,"z":105},{"x":27,"y":-30,"z":106},{"x":27,"y":-31,"z":106},{"x":28,"y":-30,"z":106},{"x":28,"y":-31,"z":106},{"x":29,"y":-30,"z":106},{"x":29,"y":-31,"z":106},{"x":27,"y":-30,"z":107},{"x":27,"y":-31,"z":107},{"x":28,"y":-30,"z":107},{"x":28,"y":-31,"z":107},{"x":29,"y":-30,"z":107},{"x":29,"y":-31,"z":107},{"x":27,"y":-30,"z":108},{"x":27,"y":-31,"z":108},{"x":28,"y":-30,"z":108},{"x":28,"y":-31,"z":108},{"x":29,"y":-30,"z":108},{"x":29,"y":-31,"z":108}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":-23,"z":48},{"x":3,"y":-24,"z":48},{"x":3,"y":-25,"z":48},{"x":3,"y":-26,"z":48},{"x":4,"y":-23,"z":48},{"x":4,"y":-24,"z":48},{"x":4,"y":-25,"z":48},{"x":4,"y":-26,"z":48}]},"preRequisite":[],"mechType":"BreakableWall"},"chest-5":{"mechType":"Secret","secretPoint":{"x":4,"y":-26,"z":54},"secretType":"CHEST","preRequisite":["superboom-1:open:::::::::"]}},"totalSecrets":8}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/ef097340-7c03-407d-b634-7bf7af551d01.json b/src/main/resources/dgroomdata/ef097340-7c03-407d-b634-7bf7af551d01.json
new file mode 100644
index 0000000..222f917
--- /dev/null
+++ b/src/main/resources/dgroomdata/ef097340-7c03-407d-b634-7bf7af551d01.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,98,98,98,98,98,1,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,98,1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,109,1,98,98,1,98,98,98,109,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,109,109,98,98,98,98,18,98,109,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,109,109,109,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,139,0,0,0,0,0,0,0,1,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"ef097340-7c03-407d-b634-7bf7af551d01","name":"Small-stairs","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":4,"y":12,"z":7},"secretType":"CHEST","preRequisite":["superboom-1:open"]},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":25,"y":-7,"z":3},"secretType":"ITEM_DROP","preRequisite":[]},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":27,"y":12,"z":15},{"x":27,"y":11,"z":15},{"x":28,"y":12,"z":15},{"x":28,"y":11,"z":15},{"x":29,"y":12,"z":15},{"x":29,"y":11,"z":15},{"x":27,"y":12,"z":16},{"x":27,"y":11,"z":16},{"x":28,"y":12,"z":16},{"x":28,"y":11,"z":16},{"x":29,"y":12,"z":16},{"x":29,"y":11,"z":16},{"x":27,"y":12,"z":17},{"x":27,"y":11,"z":17},{"x":28,"y":12,"z":17},{"x":28,"y":11,"z":17},{"x":29,"y":12,"z":17},{"x":29,"y":11,"z":17},{"x":27,"y":12,"z":18},{"x":27,"y":11,"z":18},{"x":28,"y":12,"z":18},{"x":28,"y":11,"z":18},{"x":29,"y":12,"z":18},{"x":29,"y":11,"z":18}]},"preRequisite":[],"mechType":"Tomb"},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":3,"y":14,"z":14},{"x":3,"y":13,"z":14},{"x":3,"y":12,"z":14},{"x":3,"y":11,"z":14},{"x":4,"y":14,"z":14},{"x":4,"y":13,"z":14},{"x":4,"y":12,"z":14},{"x":4,"y":11,"z":14},{"x":5,"y":14,"z":14},{"x":5,"y":13,"z":14},{"x":5,"y":12,"z":14},{"x":5,"y":11,"z":14}]},"preRequisite":[],"mechType":"BreakableWall"}},"totalSecrets":2}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/f8bee714-de5b-4007-a572-575fcd467c82.json b/src/main/resources/dgroomdata/f8bee714-de5b-4007-a572-575fcd467c82.json
new file mode 100644
index 0000000..a7066f1
--- /dev/null
+++ b/src/main/resources/dgroomdata/f8bee714-de5b-4007-a572-575fcd467c82.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,98,159,1,1,1,4,50,0,0,0,50,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,-1,-1,-1,4,1,1,4,0,0,0,0,0,4,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,-1,-1,-1,4,1,1,4,1,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,-1,-1,-1,4,1,1,1,4,-1,-1,-1,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,50,-1,-1,-1,50,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,98,98,0,0,0,0,0,98,98,1,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,98,98,98,0,0,0,0,0,1,98,98,0,0,0,0,0,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,98,50,-1,-1,-1,50,1,1,1,50,-1,-1,-1,50,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,67,-1,-1,-1,4,1,1,1,67,-1,-1,-1,67,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,-1,-1,-1,4,1,1,1,4,-1,-1,-1,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,4,4,4,4,4,-1,-1,-1,4,1,1,1,4,-1,-1,-1,4,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,159,98,159,1,1,1,1,1,159,98,159,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"f8bee714-de5b-4007-a572-575fcd467c82","name":"sanctuary","processorId":"default","properties":{},"mechanics":{"chest-1":{"mechType":"Secret","secretPoint":{"x":18,"y":-1,"z":5},"secretType":"CHEST","preRequisite":["door-1:open"]},"door-1":{"secretPoint":{"offsetPointList":[{"x":17,"y":1,"z":9},{"x":17,"y":0,"z":9},{"x":17,"y":-1,"z":9},{"x":18,"y":1,"z":9},{"x":18,"y":0,"z":9},{"x":18,"y":-1,"z":9},{"x":19,"y":1,"z":9},{"x":19,"y":0,"z":9},{"x":19,"y":-1,"z":9}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":2,"y":10,"z":14},"preRequisite":[],"triggering":"door-1"},"crypt-10":{"secretPoint":{"offsetPointList":[{"x":17,"y":0,"z":22},{"x":17,"y":-1,"z":22},{"x":18,"y":0,"z":22},{"x":18,"y":-1,"z":22},{"x":19,"y":0,"z":22},{"x":19,"y":-1,"z":22},{"x":17,"y":0,"z":23},{"x":17,"y":-1,"z":23},{"x":18,"y":0,"z":23},{"x":18,"y":-1,"z":23},{"x":19,"y":0,"z":23},{"x":19,"y":-1,"z":23},{"x":17,"y":0,"z":24},{"x":17,"y":-1,"z":24},{"x":18,"y":0,"z":24},{"x":18,"y":-1,"z":24},{"x":19,"y":0,"z":24},{"x":19,"y":-1,"z":24},{"x":17,"y":0,"z":25},{"x":17,"y":-1,"z":25},{"x":18,"y":0,"z":25},{"x":18,"y":-1,"z":25},{"x":19,"y":0,"z":25},{"x":19,"y":-1,"z":25}]},"preRequisite":[],"mechType":"Tomb"},"crypt-9":{"secretPoint":{"offsetPointList":[{"x":9,"y":0,"z":22},{"x":9,"y":-1,"z":22},{"x":10,"y":0,"z":22},{"x":10,"y":-1,"z":22},{"x":11,"y":0,"z":22},{"x":11,"y":-1,"z":22},{"x":9,"y":0,"z":23},{"x":9,"y":-1,"z":23},{"x":10,"y":0,"z":23},{"x":10,"y":-1,"z":23},{"x":11,"y":0,"z":23},{"x":11,"y":-1,"z":23},{"x":9,"y":0,"z":24},{"x":9,"y":-1,"z":24},{"x":10,"y":0,"z":24},{"x":10,"y":-1,"z":24},{"x":11,"y":0,"z":24},{"x":11,"y":-1,"z":24},{"x":9,"y":0,"z":25},{"x":9,"y":-1,"z":25},{"x":10,"y":0,"z":25},{"x":10,"y":-1,"z":25},{"x":11,"y":0,"z":25},{"x":11,"y":-1,"z":25}]},"preRequisite":[],"mechType":"Tomb"},"crypt-8":{"secretPoint":{"offsetPointList":[{"x":9,"y":0,"z":7},{"x":9,"y":-1,"z":7},{"x":10,"y":0,"z":7},{"x":10,"y":-1,"z":7},{"x":11,"y":0,"z":7},{"x":11,"y":-1,"z":7},{"x":9,"y":0,"z":8},{"x":9,"y":-1,"z":8},{"x":10,"y":0,"z":8},{"x":10,"y":-1,"z":8},{"x":11,"y":0,"z":8},{"x":11,"y":-1,"z":8},{"x":9,"y":0,"z":9},{"x":9,"y":-1,"z":9},{"x":10,"y":0,"z":9},{"x":10,"y":-1,"z":9},{"x":11,"y":0,"z":9},{"x":11,"y":-1,"z":9},{"x":9,"y":0,"z":10},{"x":9,"y":-1,"z":10},{"x":10,"y":0,"z":10},{"x":10,"y":-1,"z":10},{"x":11,"y":0,"z":10},{"x":11,"y":-1,"z":10}]},"preRequisite":[],"mechType":"Tomb"},"crypt-7":{"secretPoint":{"offsetPointList":[{"x":9,"y":6,"z":27},{"x":9,"y":5,"z":27},{"x":10,"y":6,"z":27},{"x":10,"y":5,"z":27},{"x":11,"y":6,"z":27},{"x":11,"y":5,"z":27},{"x":9,"y":6,"z":28},{"x":9,"y":5,"z":28},{"x":10,"y":6,"z":28},{"x":10,"y":5,"z":28},{"x":11,"y":6,"z":28},{"x":11,"y":5,"z":28},{"x":9,"y":6,"z":29},{"x":9,"y":5,"z":29},{"x":10,"y":6,"z":29},{"x":10,"y":5,"z":29},{"x":11,"y":6,"z":29},{"x":11,"y":5,"z":29},{"x":9,"y":6,"z":30},{"x":9,"y":5,"z":30},{"x":10,"y":6,"z":30},{"x":10,"y":5,"z":30},{"x":11,"y":6,"z":30},{"x":11,"y":5,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-6":{"secretPoint":{"offsetPointList":[{"x":17,"y":6,"z":27},{"x":17,"y":5,"z":27},{"x":18,"y":6,"z":27},{"x":18,"y":5,"z":27},{"x":19,"y":6,"z":27},{"x":19,"y":5,"z":27},{"x":17,"y":6,"z":28},{"x":17,"y":5,"z":28},{"x":18,"y":6,"z":28},{"x":18,"y":5,"z":28},{"x":19,"y":6,"z":28},{"x":19,"y":5,"z":28},{"x":17,"y":6,"z":29},{"x":17,"y":5,"z":29},{"x":18,"y":6,"z":29},{"x":18,"y":5,"z":29},{"x":19,"y":6,"z":29},{"x":19,"y":5,"z":29},{"x":17,"y":6,"z":30},{"x":17,"y":5,"z":30},{"x":18,"y":6,"z":30},{"x":18,"y":5,"z":30},{"x":19,"y":6,"z":30},{"x":19,"y":5,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-5":{"secretPoint":{"offsetPointList":[{"x":25,"y":6,"z":27},{"x":25,"y":5,"z":27},{"x":26,"y":6,"z":27},{"x":26,"y":5,"z":27},{"x":27,"y":6,"z":27},{"x":27,"y":5,"z":27},{"x":25,"y":6,"z":28},{"x":25,"y":5,"z":28},{"x":26,"y":6,"z":28},{"x":26,"y":5,"z":28},{"x":27,"y":6,"z":28},{"x":27,"y":5,"z":28},{"x":25,"y":6,"z":29},{"x":25,"y":5,"z":29},{"x":26,"y":6,"z":29},{"x":26,"y":5,"z":29},{"x":27,"y":6,"z":29},{"x":27,"y":5,"z":29},{"x":25,"y":6,"z":30},{"x":25,"y":5,"z":30},{"x":26,"y":6,"z":30},{"x":26,"y":5,"z":30},{"x":27,"y":6,"z":30},{"x":27,"y":5,"z":30}]},"preRequisite":[],"mechType":"Tomb"},"crypt-4":{"secretPoint":{"offsetPointList":[{"x":23,"y":3,"z":14},{"x":23,"y":2,"z":14},{"x":24,"y":3,"z":14},{"x":24,"y":2,"z":14},{"x":25,"y":3,"z":14},{"x":25,"y":2,"z":14},{"x":26,"y":3,"z":14},{"x":26,"y":2,"z":14},{"x":27,"y":3,"z":14},{"x":27,"y":2,"z":14},{"x":23,"y":3,"z":15},{"x":23,"y":2,"z":15},{"x":24,"y":3,"z":15},{"x":24,"y":2,"z":15},{"x":25,"y":3,"z":15},{"x":25,"y":2,"z":15},{"x":26,"y":3,"z":15},{"x":26,"y":2,"z":15},{"x":27,"y":3,"z":15},{"x":27,"y":2,"z":15},{"x":23,"y":3,"z":16},{"x":23,"y":2,"z":16},{"x":24,"y":3,"z":16},{"x":24,"y":2,"z":16},{"x":25,"y":3,"z":16},{"x":25,"y":2,"z":16},{"x":26,"y":3,"z":16},{"x":26,"y":2,"z":16},{"x":27,"y":3,"z":16},{"x":27,"y":2,"z":16},{"x":23,"y":3,"z":17},{"x":23,"y":2,"z":17},{"x":24,"y":3,"z":17},{"x":24,"y":2,"z":17},{"x":25,"y":3,"z":17},{"x":25,"y":2,"z":17},{"x":26,"y":3,"z":17},{"x":26,"y":2,"z":17},{"x":27,"y":3,"z":17},{"x":27,"y":2,"z":17},{"x":23,"y":3,"z":18},{"x":23,"y":2,"z":18},{"x":24,"y":3,"z":18},{"x":24,"y":2,"z":18},{"x":25,"y":3,"z":18},{"x":25,"y":2,"z":18},{"x":26,"y":3,"z":18},{"x":26,"y":2,"z":18},{"x":27,"y":3,"z":18},{"x":27,"y":2,"z":18}]},"preRequisite":[],"mechType":"Tomb"},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":25,"y":6,"z":2},{"x":25,"y":5,"z":2},{"x":26,"y":6,"z":2},{"x":26,"y":5,"z":2},{"x":27,"y":6,"z":2},{"x":27,"y":5,"z":2},{"x":25,"y":6,"z":3},{"x":25,"y":5,"z":3},{"x":26,"y":6,"z":3},{"x":26,"y":5,"z":3},{"x":27,"y":6,"z":3},{"x":27,"y":5,"z":3},{"x":25,"y":6,"z":4},{"x":25,"y":5,"z":4},{"x":26,"y":6,"z":4},{"x":26,"y":5,"z":4},{"x":27,"y":6,"z":4},{"x":27,"y":5,"z":4},{"x":25,"y":6,"z":5},{"x":25,"y":5,"z":5},{"x":26,"y":6,"z":5},{"x":26,"y":5,"z":5},{"x":27,"y":6,"z":5},{"x":27,"y":5,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":17,"y":6,"z":2},{"x":17,"y":5,"z":2},{"x":18,"y":6,"z":2},{"x":18,"y":5,"z":2},{"x":19,"y":6,"z":2},{"x":19,"y":5,"z":2},{"x":17,"y":6,"z":3},{"x":17,"y":5,"z":3},{"x":18,"y":6,"z":3},{"x":18,"y":5,"z":3},{"x":19,"y":6,"z":3},{"x":19,"y":5,"z":3},{"x":17,"y":6,"z":4},{"x":17,"y":5,"z":4},{"x":18,"y":6,"z":4},{"x":18,"y":5,"z":4},{"x":19,"y":6,"z":4},{"x":19,"y":5,"z":4},{"x":17,"y":6,"z":5},{"x":17,"y":5,"z":5},{"x":18,"y":6,"z":5},{"x":18,"y":5,"z":5},{"x":19,"y":6,"z":5},{"x":19,"y":5,"z":5}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":9,"y":6,"z":2},{"x":9,"y":5,"z":2},{"x":9,"y":4,"z":2},{"x":10,"y":6,"z":2},{"x":10,"y":5,"z":2},{"x":10,"y":4,"z":2},{"x":11,"y":6,"z":2},{"x":11,"y":5,"z":2},{"x":11,"y":4,"z":2},{"x":9,"y":6,"z":3},{"x":9,"y":5,"z":3},{"x":9,"y":4,"z":3},{"x":10,"y":6,"z":3},{"x":10,"y":5,"z":3},{"x":10,"y":4,"z":3},{"x":11,"y":6,"z":3},{"x":11,"y":5,"z":3},{"x":11,"y":4,"z":3},{"x":9,"y":6,"z":4},{"x":9,"y":5,"z":4},{"x":9,"y":4,"z":4},{"x":10,"y":6,"z":4},{"x":10,"y":5,"z":4},{"x":10,"y":4,"z":4},{"x":11,"y":6,"z":4},{"x":11,"y":5,"z":4},{"x":11,"y":4,"z":4},{"x":9,"y":6,"z":5},{"x":9,"y":5,"z":5},{"x":9,"y":4,"z":5},{"x":10,"y":6,"z":5},{"x":10,"y":5,"z":5},{"x":10,"y":4,"z":5},{"x":11,"y":6,"z":5},{"x":11,"y":5,"z":5},{"x":11,"y":4,"z":5}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":1}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/fd34b23c-ce7c-4df6-9f5b-0aa23ba9a758.json b/src/main/resources/dgroomdata/fd34b23c-ce7c-4df6-9f5b-0aa23ba9a758.json
new file mode 100644
index 0000000..140aa1e
--- /dev/null
+++ b/src/main/resources/dgroomdata/fd34b23c-ce7c-4df6-9f5b-0aa23ba9a758.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":7,"color":63,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,44,4,4,4,44,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,0,0,0,0,0,0,0,109,1,98,98,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,1,98,98,98,98,1,98,44,4,4,4,44,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,109,98,98,0,0,0,0,0,0,0,98,98,1,98,159,159,159,159,1,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,98,1,98,44,4,4,4,44,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,98,98,0,0,43,43,43,0,0,98,159,44,0,0,0,0,0,0,0,109,98,1,98,109,109,109,109,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,98,98,1,98,98,98,98,98,44,44,44,44,44,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,1,0,0,43,43,43,0,0,98,159,0,0,0,0,0,0,0,0,109,1,98,98,0,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,1,98,1,98,98,98,98,98,98,98,98,98,98,1,109,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,188,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,43,43,43,0,0,98,98,98,0,0,0,0,0,0,0,98,98,98,109,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,98,98,98,98,98,98,98,139,30,0,0,0,0,98,1,17,0,0,0,17,98,98,0,0,0,0,0,98,98,98,98,98,0,0,109,98,0,0,0,0,0,109,98,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,0,98,159,98,98,109,0,0,0,0,109,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,1,98,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,139,0,0,0,0,0,98,98,0,0,0,0,0,98,139,0,0,0,0,0,98,98,98,1,98,159,159,98,98,0,0,0,0,0,109,98,0,0,0,0,0,0,0,98,98,98,98,0,0,0,0,0,109,44,159,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,1,0,0,0,0,0,98,98,109,109,98,98,1,98,98,98,98,1,98,98,98,98,98,98,98,98,0,18,0,0,0,0,0,0,154,0,0,0,0,0,154,0,0,0,0,0,85,0,85,109,98,98,98,98,159,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,109,109,0,0,0,0,0,0,0,0,0,144,159,1,98,-1,-1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,50,98,98,17,0,171,171,0,17,98,1,98,1,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,159,98,0,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,65,98,109,109,98,98,1,1,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,85,0,98,98,98,98,159,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,139,0,0,0,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,1,98,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,98,98,98,98,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,69,98,98,98,98,98,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,109,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,-1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,98,98,98,98,98,98,109,44,144,0,0,109,109,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,159,159,159,159,159,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,98,98,0,0,0,0,0,0,98,98,1,1,98,98,98,98,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,1,98,98,98,98,98,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,0,0,0,50,109,-1,-1,-1,-1],[-1,-1,-1,-1,50,0,0,0,0,0,0,98,1,17,0,171,171,0,17,98,98,98,98,98,98,98,1,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,159,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,144,0,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,109,109,109,109,98,98,98,98,98,98,98,98,98,98,98,98,1,98,0,0,0,0,0,0,0,0,154,0,0,0,0,0,154,0,0,0,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,98,159,159,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,1,98,98,98,98,98,98,98,98,98,98,98,1,0,0,0,0,0,98,98,0,0,0,0,0,1,1,0,0,0,0,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,109,109,98,0,0,0,0,0,139,1,0,0,0,0,0,109,44,159,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,1,1,98,1,98,98,98,98,98,18,0,0,0,0,98,98,0,0,0,0,0,98,98,0,0,0,0,0,98,1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,98,98,1,139,0,0,0,0,98,98,0,0,0,0,0,109,159,98,98,1,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,98,98,98,98,98,98,1,1,109,0,0,0,0,0,0,109,109,0,0,0,0,0,109,109,98,98,98,98,98,1,98,1,98,98,1,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,1,98,98,1,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,98,98,98,98,1,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,98,98,98,98,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,98,98,98,98,98,98,1,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,1,98,98,98,98,98,98,98,98,98,98,98,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,1,98,98,98,98,98,1,98,-1,-1,-1,-1],[-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,98,98,98,98,98,1,98,98,98,98,98,98,98,98,1,98,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,98,98,98,98,1,98,98,98,98,98,98,98,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,98,98,98,98,98,1,98,98,-1,-1,-1,-1],[-1,-1,-1,-1,98,0,0,0,0,0,98,98,0,0,0,0,0,0,0,98,1,98,98,98,98,1,98,98,98,98,1,98,98,98,98,98,1,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,159,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,144,0,0,0,144,98,98,0,0,0,0,0,98,98,98,98,98,98,98,98,98,1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"fd34b23c-ce7c-4df6-9f5b-0aa23ba9a758","name":"Deathmite","processorId":"default","properties":{},"mechanics":{"chest-2":{"mechType":"Secret","secretPoint":{"x":68,"y":12,"z":16},"secretType":"CHEST","preRequisite":[]},"chest-3":{"mechType":"Secret","secretPoint":{"x":84,"y":22,"z":28},"secretType":"CHEST","preRequisite":[]},"chest-1":{"mechType":"Secret","secretPoint":{"x":70,"y":-10,"z":11},"secretType":"CHEST","preRequisite":[]},"lever-1":{"mechType":"OnewayLever","leverPoint":{"x":54,"y":0,"z":16},"preRequisite":[],"triggering":"door-1"},"door-1":{"secretPoint":{"offsetPointList":[{"x":28,"y":0,"z":15},{"x":28,"y":-1,"z":15},{"x":28,"y":-2,"z":15},{"x":28,"y":-3,"z":15},{"x":28,"y":-4,"z":15},{"x":28,"y":-5,"z":15},{"x":28,"y":0,"z":16},{"x":28,"y":-1,"z":16},{"x":28,"y":-2,"z":16},{"x":28,"y":-3,"z":16},{"x":28,"y":-4,"z":16},{"x":28,"y":-5,"z":16},{"x":28,"y":0,"z":17},{"x":28,"y":-1,"z":17},{"x":28,"y":-2,"z":17},{"x":28,"y":-3,"z":17},{"x":28,"y":-4,"z":17},{"x":28,"y":-5,"z":17}]},"preRequisite":["lever-1:triggered"],"mechType":"OnewayDoor"},"deathmite-1":{"secretPoint":{"offsetPointList":[{"x":14,"y":14,"z":14},{"x":15,"y":14,"z":14},{"x":14,"y":14,"z":15},{"x":15,"y":14,"z":15},{"x":14,"y":14,"z":16},{"x":15,"y":14,"z":16},{"x":14,"y":14,"z":17},{"x":15,"y":14,"z":17}]},"preRequisite":[],"mechType":"Tomb"},"bat-1":{"mechType":"Secret","secretPoint":{"x":85,"y":26,"z":26},"secretType":"BAT","preRequisite":[]},"chest-4":{"mechType":"Secret","secretPoint":{"x":13,"y":-1,"z":16},"secretType":"CHEST","preRequisite":["door-1:open"]},"superboom-1":{"secretPoint":{"offsetPointList":[{"x":89,"y":1,"z":11},{"x":89,"y":0,"z":11},{"x":89,"y":-1,"z":11},{"x":90,"y":2,"z":11},{"x":90,"y":1,"z":11},{"x":90,"y":0,"z":11},{"x":90,"y":-1,"z":11}]},"preRequisite":[],"mechType":"BreakableWall"},"itemdrop-1":{"mechType":"Secret","secretPoint":{"x":89,"y":-1,"z":7},"secretType":"ITEM_DROP","preRequisite":["superboom-1:open"]},"crypt-3":{"secretPoint":{"offsetPointList":[{"x":45,"y":17,"z":4},{"x":45,"y":16,"z":4},{"x":46,"y":17,"z":4},{"x":46,"y":16,"z":4},{"x":47,"y":17,"z":4},{"x":47,"y":16,"z":4},{"x":45,"y":17,"z":5},{"x":45,"y":16,"z":5},{"x":46,"y":17,"z":5},{"x":46,"y":16,"z":5},{"x":47,"y":17,"z":5},{"x":47,"y":16,"z":5},{"x":45,"y":17,"z":6},{"x":45,"y":16,"z":6},{"x":46,"y":17,"z":6},{"x":46,"y":16,"z":6},{"x":47,"y":17,"z":6},{"x":47,"y":16,"z":6},{"x":45,"y":17,"z":7},{"x":45,"y":16,"z":7},{"x":46,"y":17,"z":7},{"x":46,"y":16,"z":7},{"x":47,"y":17,"z":7},{"x":47,"y":16,"z":7}]},"preRequisite":[],"mechType":"Tomb"},"crypt-2":{"secretPoint":{"offsetPointList":[{"x":35,"y":17,"z":25},{"x":35,"y":16,"z":25},{"x":36,"y":17,"z":25},{"x":36,"y":16,"z":25},{"x":37,"y":17,"z":25},{"x":37,"y":16,"z":25},{"x":35,"y":17,"z":26},{"x":35,"y":16,"z":26},{"x":36,"y":17,"z":26},{"x":36,"y":16,"z":26},{"x":37,"y":17,"z":26},{"x":37,"y":16,"z":26},{"x":35,"y":17,"z":27},{"x":35,"y":16,"z":27},{"x":36,"y":17,"z":27},{"x":36,"y":16,"z":27},{"x":37,"y":17,"z":27},{"x":37,"y":16,"z":27},{"x":35,"y":17,"z":28},{"x":35,"y":16,"z":28},{"x":36,"y":17,"z":28},{"x":36,"y":16,"z":28},{"x":37,"y":17,"z":28},{"x":37,"y":16,"z":28}]},"preRequisite":[],"mechType":"Tomb"},"crypt-1":{"secretPoint":{"offsetPointList":[{"x":40,"y":17,"z":25},{"x":40,"y":16,"z":25},{"x":41,"y":17,"z":25},{"x":41,"y":16,"z":25},{"x":42,"y":17,"z":25},{"x":42,"y":16,"z":25},{"x":40,"y":17,"z":26},{"x":40,"y":16,"z":26},{"x":41,"y":17,"z":26},{"x":41,"y":16,"z":26},{"x":42,"y":17,"z":26},{"x":42,"y":16,"z":26},{"x":40,"y":17,"z":27},{"x":40,"y":16,"z":27},{"x":41,"y":17,"z":27},{"x":41,"y":16,"z":27},{"x":42,"y":17,"z":27},{"x":42,"y":16,"z":27},{"x":40,"y":17,"z":28},{"x":40,"y":16,"z":28},{"x":41,"y":17,"z":28},{"x":41,"y":16,"z":28},{"x":42,"y":17,"z":28},{"x":42,"y":16,"z":28}]},"preRequisite":[],"mechType":"Tomb"}},"totalSecrets":6}
\ No newline at end of file
diff --git a/src/main/resources/dgroomdata/ffd5411b-6ff4-4f60-b387-72f00510ec50.json b/src/main/resources/dgroomdata/ffd5411b-6ff4-4f60-b387-72f00510ec50.json
new file mode 100644
index 0000000..22f58c9
--- /dev/null
+++ b/src/main/resources/dgroomdata/ffd5411b-6ff4-4f60-b387-72f00510ec50.json
@@ -0,0 +1 @@
+{"isUserMade":false,"shape":1,"color":66,"blocks":[[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,-1,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,-1,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,-1,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,0,0,0,0,0,0,0,-1,-1,0,0,0,0,0,-1,-1,1,-1,-1,-1],[-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,0,0,0,0,0,0,0,-1,0,-1,0,0,0,-1,0,-1,0,0,0,0,0,0,0,-1,1,-1,-1,-1],[-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,0,0,0,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,-1,0,0,0,0,0,-1,1,1,1,1,1,-1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,-1,0,0,0,0,0,-1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,1,1,1,1,1,1,1,1,1,1,-1,0,0,0,0,0,-1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"uuid":"ffd5411b-6ff4-4f60-b387-72f00510ec50","name":"puzzle-teleport2","processorId":"puzzle_teleport_solver","properties":{},"mechanics":{},"totalSecrets":0}
\ No newline at end of file
diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info
index 322f01d..36b6796 100644
--- a/src/main/resources/mcmod.info
+++ b/src/main/resources/mcmod.info
@@ -4,11 +4,10 @@
"name": "Dungeon Rooms Mod",
"description": "Adds Secret Waypoints and tells you the name of your current room in Skyblock Dungeons.",
"version": "${version}",
- "mcversion": "${mcversion}",
+ "mcversion": "1.8.9",
"url": "https://discord.gg/7B5RbsArYK",
"updateUrl": "",
"authorList": ["_risk (aka Quantizr)"],
- "credits": "",
"logoFile": "assets/dungeonrooms/logo.png",
"screenshots": [],
"dependencies": []
diff --git a/src/main/resources/roomdataindex.txt b/src/main/resources/roomdataindex.txt
new file mode 100644
index 0000000..a313784
--- /dev/null
+++ b/src/main/resources/roomdataindex.txt
@@ -0,0 +1,118 @@
+roomdata/e773dc09-f989-4d8f-8aba-43dbb71e7b62.json
+roomdata/e22c44d7-4094-4230-89ba-efa438aa3615.json
+roomdata/12080b02-4ccc-49ce-9eaf-e7d8946f3984.json
+roomdata/44d9b135-d2ca-4350-969e-6e9c34af2fe6.json
+roomdata/b2dce4ed-2bda-4303-a4d7-3ebb914db318.json
+roomdata/7d975e04-15c8-40cb-8c12-d664edc1b0d7.json
+roomdata/2f7927cc-4ce0-4f02-a81a-88d5709248e8.json
+roomdata/990f6e4c-f7cf-4d27-ae91-11219b85861f.json
+roomdata/4f8be93c-f3e7-47ca-9e0d-87261f5fc386.json
+roomdata/1ae1d65c-2c72-4ed6-afab-84d0de759e1e.json
+roomdata/dc5d63b3-3dc4-41f1-a79c-973271ba71c2.json
+roomdata/01949106-2ddc-4601-9b4c-e934f5d373a6.json
+roomdata/4ed557b1-553c-4ecc-b3c1-88dd9da6d33c.json
+roomdata/b2df250c-4af2-4201-963c-0ee1cb6bd3de.json
+roomdata/c9078cd2-91d4-457d-ae30-3579293821da.json
+roomdata/1df3a849-2a5b-451d-8bd7-971eb608363c.json
+roomdata/e6d51aea-c715-4396-986d-2e09d31993e1.json
+roomdata/e66fe526-22c1-45bc-b4a8-d10549d7ee3f.json
+roomdata/9890fbac-d382-4525-ab88-fe1ebc118702.json
+roomdata/4ffce449-eab8-470b-bc8c-d30507248fc2.json
+roomdata/95c57abe-34d4-443c-baac-11d43cbc821f.json
+roomdata/e7e0bb38-8fc3-4d7c-a0c6-1fce55ac9082.json
+roomdata/23d6e1f6-efa3-476b-b452-ad5cf6a37be9.json
+roomdata/9b949f89-1542-4bcf-9bf3-063ec69bc5f4.json
+roomdata/0877607a-b8a2-433a-b893-f4de7c83378a.json
+roomdata/54aaf168-7039-48dc-99a3-8d1f02d79097.json
+roomdata/65d8264d-f47c-4306-b89f-46e28b117511.json
+roomdata/067df8a7-9d28-4fdd-a538-c6d38f126cd2.json
+roomdata/b58cfdf5-a11d-4f28-b3c4-6576e5157374.json
+roomdata/2b5cb4ef-00a3-4aae-baec-d2094a158d60.json
+roomdata/5b6968ce-4a5b-4a48-8cb3-423ff9a7788d.json
+roomdata/9a0e71bf-babd-421e-a785-442c13d5a8b2.json
+roomdata/ffd5411b-6ff4-4f60-b387-72f00510ec50.json
+roomdata/4538898f-8e79-4d53-aae6-08e4df6abb61.json
+roomdata/ae5b48ac-43ec-4837-a34e-ac70cba71481.json
+roomdata/9087fdc7-43e2-4736-b53b-33477ac65351.json
+roomdata/d4a015ae-f123-4696-8fb6-719b5a21b623.json
+roomdata/25956a46-7094-4a9e-b5d9-c9f8291ffef4.json
+roomdata/6367a338-dd48-4c30-9e03-7ff6b5c7a936.json
+roomdata/5000be9d-3081-4a5e-8563-dd826705663a.json
+roomdata/70a1451a-5430-40bd-b20b-13245aac910a.json
+roomdata/54008e69-d31e-4ed2-9ad0-870a3ad5ee1a.json
+roomdata/3acb9949-d252-4f16-9983-a1fcdc38a6cf.json
+roomdata/2ccc73b5-883f-4436-9b8f-1a32123b2cb9.json
+roomdata/41086d97-5e36-41a5-88ff-d3fb296791ce.json
+roomdata/cab054ed-b9ea-4f54-9d23-9864a50789f0.json
+roomdata/a5b419e7-49ee-4d6d-bdce-470f508b315d.json
+roomdata/40fb4b64-18d7-4301-b899-0da7b1d466c1.json
+roomdata/d3e61abf-4198-4520-a950-a03761a0eb6f.json
+roomdata/a7321dea-d35f-44f9-a5b0-0bcaf414dc12.json
+roomdata/2d9705f3-2e69-4035-905d-6b11d6ee270b.json
+roomdata/09c3072e-3099-4019-a577-7ddc17a9e29d.json
+roomdata/b9e8fcee-dce8-40fd-8f3a-d8cb5c3edd70.json
+roomdata/6b0dfb3e-c86c-41d1-8526-a172027dbb8d.json
+roomdata/83e1ab6b-ad44-469e-a6bf-71c6bebcab4b.json
+roomdata/9fa09d68-c483-4320-872e-9e07b049ee37.json
+roomdata/35fb741d-b0b1-471a-a5b6-8224f99a1133.json
+roomdata/42029218-9142-4286-b184-e17b3734886f.json
+roomdata/e83ed91c-4a35-4020-985a-d0306f17117a.json
+roomdata/3406a386-c56d-47de-a0ad-aa0ab74d2abb.json
+roomdata/cf6d49d3-4f1e-4ec9-836e-049573793ddd.json
+roomdata/296fd7ea-4ac5-46e5-beb9-5d27019e3796.json
+roomdata/91068a01-bd3e-402c-99aa-e148f9f04c41.json
+roomdata/e9f4f98a-0913-4542-a02d-4ed3cec6f09b.json
+roomdata/4e8087d2-0c64-4558-b4ff-4be94275a320.json
+roomdata/02b94b9a-8990-446a-993a-9b59de987b16.json
+roomdata/6dcddc04-c094-4b9b-8c05-b101e8f3dd27.json
+roomdata/15083814-fb7b-4791-b5d7-0810dd396b01.json
+roomdata/5aef2a82-42a3-495a-9e72-63a9b611e1cb.json
+roomdata/43c74bd0-77f6-4a2b-8edb-c227a72abf0f.json
+roomdata/ed57833a-01ca-4487-b516-6c3690c6221c.json
+roomdata/81cf3e0b-70c5-4803-9169-7e7864b096ce.json
+roomdata/8f317c52-6550-42dd-829b-2a477389fe89.json
+roomdata/7a594650-2a42-46e5-81a6-9b7d198e9c1c.json
+roomdata/250624ee-bb7a-4330-b698-a78f5e44ba99.json
+roomdata/00d66020-b34e-429d-9fd3-696bc15cfce2.json
+roomdata/a053f4fa-d6b2-4aef-ae3e-97c7eee0252e.json
+roomdata/fd34b23c-ce7c-4df6-9f5b-0aa23ba9a758.json
+roomdata/a7f00d0f-bbf5-4d80-8eed-f3e28477879c.json
+roomdata/9cd523a2-0c7f-4072-a374-9b99d59554ea.json
+roomdata/86a3b53b-6ede-43bd-8988-135001149d4b.json
+roomdata/ef097340-7c03-407d-b634-7bf7af551d01.json
+roomdata/6b7256ae-8673-4c2f-825f-6cd727801ea9.json
+roomdata/1e8d4327-7465-4bff-a8c7-505528273985.json
+roomdata/05ba6123-3468-4ec3-8e32-0553a8e5d3b2.json
+roomdata/a069f006-0728-4952-8d9f-1d318cee60d8.json
+roomdata/845aec22-bc9e-4d50-b8de-db67188232e9.json
+roomdata/e0608346-08a0-490b-a6d5-96786ebd5d96.json
+roomdata/8b4ec0bf-b783-4e66-b5fa-89493ac6efa1.json
+roomdata/31766264-1004-492f-9d65-cb5deaff82f0.json
+roomdata/8116e928-56f1-4e0b-933a-f86b841938c8.json
+roomdata/c1b1eaf0-d6de-4d1f-944b-e1b3205ef7d0.json
+roomdata/8c184746-6857-480a-958e-f22e09bb1295.json
+roomdata/9139cb1c-b6f3-4bac-92de-909b1eb73449.json
+roomdata/07ce87bb-a49a-412b-a8f7-c9dde9f884de.json
+roomdata/38affd31-fc6f-44cd-a41e-ae7d0589ba0d.json
+roomdata/d712ae5b-903a-4d80-96ee-8ee54b050ea5.json
+roomdata/a2c5d503-55e7-4e5c-8fc0-5d37f2ac19bf.json
+roomdata/4067578d-c259-4f89-8b88-a891b2decbbf.json
+roomdata/f8bee714-de5b-4007-a572-575fcd467c82.json
+roomdata/388e95fc-4775-4747-8473-5329fbb8e5cc.json
+roomdata/340c5665-e59b-42c1-bf84-8fc03d38981f.json
+roomdata/31749ba0-8b9d-4129-b3c9-ee78d9fdb9d7.json
+roomdata/8e6409d8-ea3f-4348-ae30-f8f1e15d05b9.json
+roomdata/7dd6596f-c647-4144-9eec-fb4690e12251.json
+roomdata/c6c65c08-893a-42f7-ad9e-cecc0f0bdeaf.json
+roomdata/a1c8fd24-c105-49b6-ba56-51dfbb7023cb.json
+roomdata/a0c57185-4e1a-4fdd-979d-6ed0957e78fb.json
+roomdata/cf44c95c-950e-49e0-aa4c-82c2b18d0acc.json
+roomdata/6fac9602-c596-458f-9750-9b331e2cb845.json
+roomdata/11982f7f-703e-4d98-9d27-4e07ba3fef71.json
+roomdata/dfe5d13c-3284-4ad3-aadf-9719f2c12a6e.json
+roomdata/63634341-8ef3-4197-aafa-17f5875dd307.json
+roomdata/c6ebcdb2-4ea8-4387-b997-031bd56f7e3b.json
+roomdata/c2ea0a41-d495-437f-86cc-235a71c49f22.json
+roomdata/9650cb39-5f22-45f4-86cd-5d197a4266e5.json
+roomdata/4b5f4983-0453-4402-821c-804f092d1ecd.json
+roomdata/34639497-d991-4137-83c4-db0a25542b71.json