diff options
Diffstat (limited to 'features')
-rw-r--r-- | features/dungeonMap/index.js | 32 | ||||
-rw-r--r-- | features/dungeonMap2/DungeonMapData.js | 80 | ||||
-rw-r--r-- | features/dungeonMap2/DungeonMapRoom.js | 134 | ||||
-rw-r--r-- | features/dungeonMap2/DungeonRoomStaticData.js | 19 | ||||
-rw-r--r-- | features/dungeonMap2/index.js | 199 | ||||
-rw-r--r-- | features/dungeonMap2/metadata.json | 8 | ||||
-rw-r--r-- | features/dungeonRoutes/index.js | 2 | ||||
-rw-r--r-- | features/dungeonRoutes/temproomdata.json | 2817 | ||||
-rw-r--r-- | features/waypoints/index.js | 15 |
9 files changed, 471 insertions, 2835 deletions
diff --git a/features/dungeonMap/index.js b/features/dungeonMap/index.js index ced41d2..4befbbf 100644 --- a/features/dungeonMap/index.js +++ b/features/dungeonMap/index.js @@ -194,18 +194,24 @@ class DungeonMap extends Feature { return } // if (curr === max) curr = "&a" + curr - if (this.roomDataStuff.get(loc.join(",")) !== curr + " " + max) { - this.roomDataStuff.set(loc.join(","), curr + " " + max) + if (!this.roomDataStuff.get(loc.join(",")) || this.roomDataStuff.get(loc.join(","))[0] !== curr + " " + max) { + this.roomDataStuff.set(loc.join(","), [curr + " " + max, this.getCurrentRoomId()]) - socketConnection.sendDungeonData2(this.people, [loc.join(","), curr + " " + max]) + socketConnection.sendDungeonData2(this.people, [loc.join(","), curr + " " + max, this.getCurrentRoomId()]) } }) registerActionBar.trigger.setCriteria('&7${curr}/${max} Secrets').setParameter('contains'); } + getCurrentRoomId() { + let id = Scoreboard.getLineByIndex(Scoreboard.getLines().length - 1).getName().trim().split(" ").pop() + + return id + } + updateDungeonMapData2(data) { // console.log("Recieved: " + JSON.stringify(data, undefined, 2)) - this.roomDataStuff.set(data[0], data[1]) + this.roomDataStuff.set(data[0], [data[1], data[2]]) } worldLoad() { this.dungeonBrBoxElm.stopRender() @@ -358,10 +364,12 @@ class DungeonMap extends Feature { if (this.currDungeonBossImage) return if (this.roomsecrets.getValue()) { for (let ent of this.roomDataStuffRender.entries()) { - let [loc, val] = ent + let [loc, [secrets, roomid, color]] = ent let [x, y] = loc.split(",") - let val2 = ChatLib.removeFormatting(val) + let renderText = color + secrets + + let val2 = ChatLib.removeFormatting(renderText) let renderX = (parseInt(x) + 16) / this.mapScale / 128 * size + this.offset[0] / 128 * size let renderY = (parseInt(y) + 16) / this.mapScale / 128 * size + this.offset[1] / 128 * size @@ -375,7 +383,7 @@ class DungeonMap extends Feature { Renderer.translate(0, 0, 1000) renderLibs.drawStringCentered("§0" + val2, x2 + renderX, y2 + renderY - scale * 1.25 - 2 * scale * 1.25, scale * 1.25) Renderer.translate(0, 0, 1000) - renderLibs.drawStringCentered("§f" + val, x2 + renderX, y2 + renderY - 2 * scale * 1.25, scale * 1.25) + renderLibs.drawStringCentered("§f" + renderText, x2 + renderX, y2 + renderY - 2 * scale * 1.25, scale * 1.25) } } } @@ -881,11 +889,15 @@ class DungeonMap extends Feature { } } if (isGreen) { - let total = ent[1].split(" ")[1] - this.roomDataStuff.set(loc, total + " " + total) + let total = ent[1][0].split(" ")[1] + let data = this.roomDataStuff.get(loc) + data[0] = total + " " + total + this.roomDataStuff.set(loc, data) } - this.roomDataStuffRender.set(loc, color + this.roomDataStuff.get(loc)) + let setData = [...this.roomDataStuff.get(loc)] + setData.push(color) + this.roomDataStuffRender.set(loc, setData) } } // if (!this.renderImage) return diff --git a/features/dungeonMap2/DungeonMapData.js b/features/dungeonMap2/DungeonMapData.js new file mode 100644 index 0000000..15ffcca --- /dev/null +++ b/features/dungeonMap2/DungeonMapData.js @@ -0,0 +1,80 @@ +import { m } from "../../../mappings/mappings" +import DungeonMapRoom from "./DungeonMapRoom" + +const BufferedImage = Java.type("java.awt.image.BufferedImage") + +class DungeonMapData { + constructor(floor) { + this.floor = floor + + this.greenRoom = undefined + /** + * @type {Map<String,DungeonMapRoom>} + */ + this.rooms = new Map() + + this.image = undefined + } + + setRoom(x, y, rotation, id) { + let locstr = x + "," + y + + if (this.rooms.get(locstr) && this.rooms.get(locstr).roomId !== id) { + this.rooms.get(locstr).setId(id) + this.mapChanged() + return + } + + let room = DungeonMapRoom.fromId(id, x, y, rotation) + + if (room.type === DungeonMapRoom.TYPE_SPAWN) { + this.greenRoom = locstr + } + console.log(room.type) + + this.rooms.set(locstr, room) + + this.mapChanged() + } + + mapChanged() { + if (this.image) { + this.image.getTexture()[m.deleteGlTexture]() + this.image = undefined + } + } + + /** + * @returns {Image} + */ + getImage() { + if (!this.image) { + this.image = new Image(this.render()) + } + return this.image + } + + /** + * @returns {BufferedImage} + */ + render() { + //create 256x256 image + let image = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB) + + //if green room data not found yet then map should be empty + if (!this.greenRoom) return image + + //create graphics rendering context + let graphics = image.createGraphics() + + //render rooms + for (let data of this.rooms.entries()) { + let room = data[1] + room.draw(graphics, 256, 256) + } + + return image + } +} + +export default DungeonMapData
\ No newline at end of file diff --git a/features/dungeonMap2/DungeonMapRoom.js b/features/dungeonMap2/DungeonMapRoom.js new file mode 100644 index 0000000..10f26e2 --- /dev/null +++ b/features/dungeonMap2/DungeonMapRoom.js @@ -0,0 +1,134 @@ +import DungeonRoomStaticData from "./DungeonRoomStaticData" + +const Color = Java.type("java.awt.Color") + +class DungeonMapRoom { + + static TYPE_SPAWN = 0 + static TYPE_NORMAL = 1 + static TYPE_PUZZLE = 2 + static TYPE_MINIBOSS = 3 + static TYPE_FAIRY = 4 + static TYPE_BLOOD = 5 + static TYPE_UNKNOWN = 6 + + static SHAPE_1X1 = 0 + static SHAPE_1X2 = 1 + static SHAPE_1X3 = 2 + static SHAPE_1X4 = 3 + static SHAPE_2X2 = 4 + static SHAPE_L = 5 + + static fromId(roomId, x, y, rotation) { + let data = DungeonRoomStaticData.getDataFromId(roomId) + let type = DungeonMapRoom.TYPE_NORMAL + switch (data.type) { + case "mobs": + type = DungeonMapRoom.TYPE_NORMAL + break + case "miniboss": + type = DungeonMapRoom.TYPE_NORMAL + break + case "spawn": + type = DungeonMapRoom.TYPE_SPAWN + break + case "puzzle": + type = DungeonMapRoom.TYPE_PUZZLE + break + case "gold": + type = DungeonMapRoom.TYPE_MINIBOSS + break + case "fairy": + type = DungeonMapRoom.TYPE_FAIRY + break + case "blood": + type = DungeonMapRoom.TYPE_BLOOD + break + } + + let shape = DungeonMapRoom.SHAPE_1X1 + switch (data.shape) { + case "1x1": + shape = DungeonMapRoom.SHAPE_1X1 + break + case "1x2": + shape = DungeonMapRoom.SHAPE_1X2 + break + case "1x3": + shape = DungeonMapRoom.SHAPE_1X3 + break + case "1x4": + shape = DungeonMapRoom.SHAPE_1X4 + break + case "2x2": + shape = DungeonMapRoom.SHAPE_2X2 + break + case "L": + shape = DungeonMapRoom.SHAPE_L + break + } + return new DungeonMapRoom(type, shape, rotation, x, y, roomId) + } + + /** + * + * @param {Number} type + * @param {Number} shape + * @param {Number} rotation 0-3 + * @param {Number} x + * @param {Number} y + * @param {String} roomId + */ + constructor(type, shape, rotation, x, y, roomId) { + this.type = type + this.shape = shape + this.rotation = rotation + this.roomId = roomId + + this.location = [x, y] + } + + setId(id) { + this.roomId = id + } + + /** + * Renders this room onto the given Graphics2D + * @param {Graphics2D} graphics + */ + draw(graphics, xOff, yOff) { + + graphics.setColor(this.getRoomRenderColor()) + + switch (this.shape) { + case DungeonMapRoom.SHAPE_1X1: + graphics.fillRect(this.location[0] + xOff + 3, this.location[1] + yOff + 3, 26, 26) + break; + case DungeonMapRoom.SHAPE_1X2: + graphics.fillRect(this.location[0] + xOff + 3, this.location[1] + yOff + 3, 26 + 32, 26) + break; + case DungeonMapRoom.SHAPE_1X3: + graphics.fillRect(this.location[0] + xOff + 3, this.location[1] + yOff + 3, 26 + 64, 26) + break; + case DungeonMapRoom.SHAPE_1X4: + graphics.fillRect(this.location[0] + xOff + 3, this.location[1] + yOff + 3, 26 + 96, 26) + break; + } + + } + + getRoomRenderColor() { + return roomColorMap.get(this.type) + } +} + +let roomColorMap = new Map() +roomColorMap.set(DungeonMapRoom.TYPE_SPAWN, new Color(Renderer.color(0, 124, 0, 255))) +roomColorMap.set(DungeonMapRoom.TYPE_NORMAL, new Color(Renderer.color(114, 67, 27, 255))) +roomColorMap.set(DungeonMapRoom.TYPE_PUZZLE, new Color(Renderer.color(178, 76, 216, 255))) +roomColorMap.set(DungeonMapRoom.TYPE_MINIBOSS, new Color(Renderer.color(229, 229, 51, 255))) +roomColorMap.set(DungeonMapRoom.TYPE_FAIRY, new Color(Renderer.color(242, 127, 165, 255))) +roomColorMap.set(DungeonMapRoom.TYPE_BLOOD, new Color(Renderer.color(255, 0, 0, 255))) +roomColorMap.set(DungeonMapRoom.TYPE_UNKNOWN, new Color(Renderer.color(65, 65, 65, 255))) + +export default DungeonMapRoom
\ No newline at end of file diff --git a/features/dungeonMap2/DungeonRoomStaticData.js b/features/dungeonMap2/DungeonRoomStaticData.js new file mode 100644 index 0000000..75d5b1e --- /dev/null +++ b/features/dungeonMap2/DungeonRoomStaticData.js @@ -0,0 +1,19 @@ +class DungeonRoomStaticData { + constructor() { + this.fullRoomData = JSON.parse(FileLib.read("SoopyV2", "data/roomdata.json")) + + this.idMap = new Map() + this.fullRoomData.forEach((d, i) => { + d.id.forEach(id => { + this.idMap.set(id, i) + }) + this.idMap.set(d.index, i) + }) + } + + getDataFromId(id) { + return this.fullRoomData[this.idMap.get(id)] + } +} + +export default new DungeonRoomStaticData()
\ No newline at end of file diff --git a/features/dungeonMap2/index.js b/features/dungeonMap2/index.js new file mode 100644 index 0000000..c807e85 --- /dev/null +++ b/features/dungeonMap2/index.js @@ -0,0 +1,199 @@ +/// <reference types="../../../CTAutocomplete" /> +/// <reference lib="es2015" /> + +import Feature from "../../featureClass/class"; +import renderLibs from "../../../guimanager/renderLibs"; +import DungeonMapData from "./DungeonMapData"; +import DungeonRoomStaticData from "./DungeonRoomStaticData"; + +const AlphaComposite = Java.type("java.awt.AlphaComposite") + +class DungeonMap extends Feature { + constructor() { + super() + } + + onEnable() { + if (Player.getUUID().toString() !== "dc8c3964-7b29-4e03-ae9e-d13ebd65dd29") { + new SettingBase("Coming soontm", "maby", undefined, "coming_soontm", this) + return + } + + this.lastRoomId = undefined + + /**@type {DungeonMapData} */ + this.currentDungeon = undefined + + this.registerStep(true, 5, this.update) + + this.registerEvent("renderOverlay", this.renderOverlay) + } + + update() { + if (!this.isInDungeon()) { + this.lastRoomId = undefined + this.currentDungeon = undefined + return + } + + if (!this.currentDungeon) { + this.currentDungeon = new DungeonMapData(this.FeatureManager.features["dataLoader"].class.dungeonFloor) + } + + let roomid = this.getCurrentRoomId() + if (!roomid.includes(",")) return + + if (roomid !== this.lastRoomId) { + this.lastRoomId = roomid + + let roomWorldData = this.getRoomWorldData() + this.currentDungeon.setRoom(roomWorldData.x, roomWorldData.y, roomWorldData.rotation, roomid) + } + } + + renderOverlay() { + if (this.currentDungeon) { + let x = 10 + let y = 10 + let size = 100 + this.currentDungeon.getImage().draw(x, y, size, size) + + Renderer.drawRect(Renderer.color(0, 0, 0), x, y, size, 2) + Renderer.drawRect(Renderer.color(0, 0, 0), x, y, 2, size) + Renderer.drawRect(Renderer.color(0, 0, 0), x + size - 2, y, 2, size) + Renderer.drawRect(Renderer.color(0, 0, 0), x, y + size - 2, size, 2) + } + } + + getCurrentRoomId() { + if (Scoreboard.getLines().length === 0) return undefined + let id = Scoreboard.getLineByIndex(Scoreboard.getLines().length - 1).getName().trim().split(" ").pop() + + return id + } + + isInDungeon() { + if (!this.FeatureManager || !this.FeatureManager.features["dataLoader"]) return false + return this.FeatureManager.features["dataLoader"].class.isInDungeon + } + + getRoomXYWorld() { + let roomData = this.getRoomWorldData() + if (roomData.rotation === 4) { + return [roomData.x, roomData.y + 32] + } + + return [roomData.x, roomData.y] + } + + getCurrentRoomData() { + return DungeonRoomStaticData.getDataFromId(this.getCurrentRoomId()) + } + + getRotation(x, y, width, height, roofY) { + let currRoomData = this.getCurrentRoomData() + if (!currRoomData) return -1 + + if (currRoomData.shape !== "L") { + if (this.getTopBlockAt(x, y, roofY) === 11) return 0 + if (this.getTopBlockAt(x + width, y, roofY) === 11) return 1 + if (this.getTopBlockAt(x + width, y + height, roofY) === 11) return 2 + if (this.getTopBlockAt(x, y + height, roofY) === 11) return 3 + } else { + let one = this.getTopBlockAt2(x + width / 2 + 1, y + height / 2, roofY) + let two = this.getTopBlockAt2(x + width / 2 - 1, y + height / 2, roofY) + let three = this.getTopBlockAt2(x + width / 2, y + height / 2 + 1, roofY) + let four = this.getTopBlockAt2(x + width / 2, y + height / 2 - 1, roofY) + + if (one === 0 && three === 0) return 0 + if (two === 0 && three === 0) return 1 + if (one === 0 && four === 0) return 2 + if (two === 0 && four === 0) return 3//3 IS SO TOXIK HGOLY HEL I HATE L SHAPE ROOMS WHY DO THIS TO ME + } + + return -1 + } + + getRoomWorldData() { + let x = Math.floor((Player.getX() + 8) / 32) * 32 - 8 + let y = Math.floor((Player.getZ() + 8) / 32) * 32 - 8 + let width = 30 + let height = 30 + + let roofY = this.getRoofAt(x, y) + + while (World.getBlockStateAt(new BlockPos(x - 1, roofY, y)).getBlockId() !== 0) { + x -= 32 + width += 32 + } + while (World.getBlockStateAt(new BlockPos(x, roofY, y - 1)).getBlockId() !== 0) { + y -= 32 + height += 32 + } + while (World.getBlockStateAt(new BlockPos(x - 1, roofY, y)).getBlockId() !== 0) { //second iteration incase of L shape + x -= 32 + width += 32 + } + while (World.getBlockStateAt(new BlockPos(x + width + 1, roofY, y)).getBlockId() !== 0) { + width += 32 + } + while (World.getBlockStateAt(new BlockPos(x, roofY, y + height + 1)).getBlockId() !== 0) { + height += 32 + } + while (World.getBlockStateAt(new BlockPos(x + width, roofY, y + height + 1)).getBlockId() !== 0) { //second iteration incase of L shape + height += 32 + } + while (World.getBlockStateAt(new BlockPos(x + width + 1, roofY, y + height)).getBlockId() !== 0) { //second iteration incase of L shape + width += 32 + } + while (World.getBlockStateAt(new BlockPos(x + width, roofY, y - 1)).getBlockId() !== 0) {//second iteration incase of L shape + y -= 32 + height += 32 + } + while (World.getBlockStateAt(new BlockPos(x - 1, roofY, y + height)).getBlockId() !== 0) { //third iteration incase of L shape + x -= 32 + width += 32 + } + + + return { + x, + y, + width, + height, + cx: x + width / 2, + cy: y + height / 2, + rotation: this.getRotation(x, y, width, height, roofY) + } + } + + getRoofAt(x, z) { + let y = 255 + while (y > 0 && World.getBlockStateAt(new BlockPos(x, y, z)).getBlockId() === 0) y-- + + return y + } + + getTopBlockAt(x, z, y) { + if (!y) y = this.getHeightAt(x, z) + + return World.getBlockStateAt(new BlockPos(x, y, z)).getMetadata() + } + getTopBlockAt2(x, z, y) { + if (!y) y = this.getHeightAt(x, z) + + return World.getBlockStateAt(new BlockPos(x, y, z)).getBlockId() + } + getImageForPlayer(uuid) { + let img = renderLibs.getImage("https://crafatar.com/avatars/" + uuid.replace(/-/g, "") + "?size=8&overlay") + if (!img) return this.defaultPlayerImage + + return img + } + onDisable() { + } +} + +module.exports = { + class: new DungeonMap() +}
\ No newline at end of file diff --git a/features/dungeonMap2/metadata.json b/features/dungeonMap2/metadata.json new file mode 100644 index 0000000..a32de89 --- /dev/null +++ b/features/dungeonMap2/metadata.json @@ -0,0 +1,8 @@ +{ + "name": "Dungeon Map 2", + "description": "WIP", + "isHidden": false, + "isTogglable": true, + "defaultEnabled": false, + "sortA": 1 +}
\ No newline at end of file diff --git a/features/dungeonRoutes/index.js b/features/dungeonRoutes/index.js index 3eb50c3..e84bd2b 100644 --- a/features/dungeonRoutes/index.js +++ b/features/dungeonRoutes/index.js @@ -112,7 +112,7 @@ class DungeonRoutes extends Feature { this.idMap = new Map() this.routesIndexMap = new Map() - this.fullRoomData = JSON.parse(FileLib.read("SoopyV2", "features/dungeonRoutes/temproomdata.json")) + this.fullRoomData = JSON.parse(FileLib.read("SoopyV2", "data/roomdata.json")) this.fullRoutesData = JSON.parse(FileLib.read("SoopyV2", "features/dungeonRoutes/routesData.json")) this.fullRoomData.forEach((d, i) => { d.id.forEach(id => { diff --git a/features/dungeonRoutes/temproomdata.json b/features/dungeonRoutes/temproomdata.json deleted file mode 100644 index 4f9661d..0000000 --- a/features/dungeonRoutes/temproomdata.json +++ /dev/null @@ -1,2817 +0,0 @@ -[ - { - "id": [ - "282,66", - "102,66" - ], - "name": "Spawn", - "type": "spawn", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 0 - }, - "soul": false, - "index": 0 - }, - { - "name": "Mithril Cave", - "type": "mobs", - "shape": "2x2", - "secrets": 10, - "crypts": 11, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 3, - "chest": 7 - }, - "soul": false, - "id": [ - "710,-592" - ], - "index": 1 - }, - { - "name": "Doors", - "type": "mobs", - "shape": "1x2", - "secrets": 5, - "crypts": 7, - "revive_stones": 1, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 4 - }, - "soul": false, - "id": [ - "642,-384" - ], - "index": 2 - }, - { - "name": "Locked Away", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "246,-132" - ], - "index": 3 - }, - { - "name": "Beams", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 2, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "750,-240" - ], - "index": 4 - }, - { - "name": "Hall", - "type": "mobs", - "shape": "1x1", - "doors": " ", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 0 - }, - "soul": false, - "id": [ - "30,-204" - ], - "index": 5 - }, - { - "name": "Banners", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "30,-276" - ], - "index": 6 - }, - { - "name": "Andesite", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "30,-132" - ], - "index": 7 - }, - { - "name": "Painting", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "30,-96" - ], - "index": 8 - }, - { - "name": "Multicolored", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "66,-348" - ], - "index": 9 - }, - { - "name": "Black Flag", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 3, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "534,-312" - ], - "index": 10 - }, - { - "name": "Overgrown Chains", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "642,-168" - ], - "index": 11 - }, - { - "name": "Chains", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "498,-132" - ], - "index": 12 - }, - { - "name": "Golden Oasis", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 1, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "174,-312" - ], - "index": 13 - }, - { - "name": "Redstone Warrior", - "type": "mobs", - "shape": "1x2", - "secrets": 3, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "1118,-384" - ], - "index": 14 - }, - { - "name": "Silvers Sword", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "30,-168" - ], - "index": 15 - }, - { - "name": "Pedestal", - "type": "mobs", - "shape": "1x2", - "secrets": 5, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": true, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 3 - }, - "soul": false, - "id": [ - "30,-384" - ], - "index": 16 - }, - { - "name": "Temple", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 3, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "678,-240" - ], - "index": 17 - }, - { - "name": "Big Red Flag", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 1, - "revive_stones": 1, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 2, - "chest": 0 - }, - "soul": false, - "id": [ - "102,-96" - ], - "index": 18 - }, - { - "name": "Mural", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "crypts": 0, - "secrets": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "462,-132" - ], - "index": 19 - }, - { - "name": "Perch", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "462,-96" - ], - "index": 20 - }, - { - "name": "End", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "678,-168" - ], - "index": 21 - }, - { - "name": "Cage", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "498,-276" - ], - "index": 22 - }, - { - "name": "Sloth", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 1, - "crypts": 1, - "revive_stones": 1, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "66,-276" - ], - "index": 23 - }, - { - "name": "Steps", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 0 - }, - "soul": false, - "id": [ - "138,-204" - ], - "index": 24 - }, - { - "name": "Granite", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "66,-168" - ], - "index": 25 - }, - { - "name": "Crypt", - "type": "mobs", - "shape": "1x2", - "secrets": 5, - "crypts": 2, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 4 - }, - "soul": true, - "id": [ - "438,-384" - ], - "index": 26 - }, - { - "name": "Dueces", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 3, - "crypts": 6, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "138,-168" - ], - "index": 27 - }, - { - "name": "Red Green", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 3, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 2, - "chest": 1 - }, - "soul": false, - "id": [ - "570,-240" - ], - "index": 28 - }, - { - "name": "Long Hall", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 3, - "crypts": 3, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 3 - }, - "soul": false, - "id": [ - "534,-96" - ], - "index": 29 - }, - { - "name": "Mirror", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": true, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "174,-168" - ], - "index": 30 - }, - { - "name": "Quad Lava", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "30,-348" - ], - "index": 31 - }, - { - "name": "Waterfall", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 5, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 0 - }, - "soul": false, - "id": [ - "210,-96" - ], - "index": 32 - }, - { - "name": "Basement", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 0 - }, - "soul": false, - "id": [ - "66,-96" - ], - "index": 33 - }, - { - "name": "Dip", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 2, - "crypts": 3, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "498,-240" - ], - "index": 34 - }, - { - "name": "Water", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "498,-204" - ], - "index": 35 - }, - { - "name": "Dome", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 2, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "642,-240" - ], - "index": 36 - }, - { - "name": "Scaffolding", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "210,-132" - ], - "index": 37 - }, - { - "name": "Small Stairs", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "606,-168" - ], - "index": 38 - }, - { - "name": "Tomioka", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 0 - }, - "soul": true, - "id": [ - "138,-132" - ], - "index": 39 - }, - { - "name": "Mushroom", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 1, - "crypts": 0, - "revive_stones": "100k per", - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "174,-132" - ], - "index": 40 - }, - { - "name": "Slabs", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "570,-168" - ], - "index": 41 - }, - { - "name": "Duncan", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "30,-240" - ], - "index": 42 - }, - { - "name": "Logs", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 4, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 4 - }, - "soul": false, - "id": [ - "102,-312" - ], - "index": 43 - }, - { - "name": "Cages", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "750,-168" - ], - "index": 44 - }, - { - "name": "Admin", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 0, - "crypts": 34, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 0 - }, - "soul": true, - "id": [ - "102,-168" - ], - "index": 45 - }, - { - "name": "Skull", - "type": "mobs", - "shape": "1x2", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "98,-384" - ], - "index": 46 - }, - { - "name": "Balcony", - "type": "mobs", - "shape": "1x2", - "secrets": 4, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "710,-384" - ], - "index": 47 - }, - { - "name": "Knight", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 3, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "66,-312" - ], - "index": 48 - }, - { - "name": "Sarcophagus", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 3, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "462,-204" - ], - "index": 49 - }, - { - "name": "Drop", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 2, - "crypts": 6, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "462,-168" - ], - "index": 50 - }, - { - "name": "Raccoon", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 4, - "crypts": 2, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 4 - }, - "soul": true, - "id": [ - "174,-96" - ], - "index": 51 - }, - { - "name": "Double Diamond", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 3, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "642,-96" - ], - "index": 52 - }, - { - "name": "Blue Skulls", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 1, - "crypts": 4, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "102,-132" - ], - "index": 53 - }, - { - "name": "Leaves", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": true, - "id": [ - "66,-240" - ], - "index": 54 - }, - { - "name": "Withermancers", - "type": "mobs", - "shape": "L", - "secrets": 4, - "crypts": 6, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 3 - }, - "soul": false, - "id": [ - "710,-524" - ], - "index": 55 - }, - { - "name": "Redstone Key", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 3, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "534,-168" - ], - "index": 56 - }, - { - "name": "Prison Cell", - "type": "mobs", - "shape": "1x1", - "doors": "L", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "66,-132" - ], - "index": 57 - }, - { - "name": "Cell", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 2, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 0 - }, - "soul": false, - "id": [ - "66,-204" - ], - "index": 58 - }, - { - "name": "Arrow Trap", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "534,-204" - ], - "index": 59 - }, - { - "name": "Bridges", - "type": "mobs", - "shape": "1x2", - "secrets": 6, - "crypts": 6, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 2, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "1050,-384" - ], - "index": 60 - }, - { - "name": "Cobble Wall Pillar", - "type": "mobs", - "shape": "1x1", - "doors": "X", - "secrets": 2, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "102,-348" - ], - "index": 61 - }, - { - "name": "Spikes", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 3, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "498,-168" - ], - "index": 62 - }, - { - "name": "Gold", - "type": "mobs", - "shape": "1x2", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 3, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 0 - }, - "soul": false, - "id": [ - "166,-384" - ], - "index": 63 - }, - { - "name": "Chambers", - "type": "mobs", - "shape": "L", - "secrets": 5, - "crypts": 6, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 4 - }, - "soul": false, - "id": [ - "506,-524" - ], - "index": 64 - }, - { - "name": "Lava Ravine", - "type": "mobs", - "shape": "L", - "secrets": 6, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 4 - }, - "soul": false, - "id": [ - "642,-524" - ], - "index": 65 - }, - { - "name": "Wizard", - "type": "mobs", - "shape": "1x3", - "secrets": 4, - "crypts": 8, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "530,-420" - ], - "index": 66 - }, - { - "name": "Overgrown", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 3, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "714,-240" - ], - "index": 67 - }, - { - "name": "Jumping Skulls", - "type": "mobs", - "shape": "1x1", - "doors": "I", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "102,-204" - ], - "index": 68 - }, - { - "name": "Lots of Floors", - "type": "mobs", - "shape": "1x1", - "doors": "T", - "secrets": 3, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 3 - }, - "soul": false, - "id": [ - "102,-240" - ], - "index": 69 - }, - { - "name": "Purple Flags", - "type": "mobs", - "shape": "1x2", - "secrets": 5, - "crypts": 7, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 3 - }, - "soul": false, - "id": [ - "778,-384" - ], - "index": 70 - }, - { - "name": "Archway", - "type": "mobs", - "shape": "1x2", - "secrets": 3, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 2, - "chest": 1 - }, - "soul": false, - "id": [ - "574,-384" - ], - "index": 71 - }, - { - "name": "Mage", - "type": "mobs", - "shape": "1x2", - "secrets": 4, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "506,-384" - ], - "index": 72 - }, - { - "name": "Grass Ruin", - "type": "mobs", - "shape": "1x2", - "secrets": 3, - "crypts": 4, - "revive_stones": 1, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "1322,-384" - ], - "index": 73 - }, - { - "name": "Grand Library", - "type": "mobs", - "shape": "1x2", - "secrets": 4, - "crypts": 2, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "1526,-384" - ], - "index": 74 - }, - { - "name": "Pit", - "type": "mobs", - "shape": "1x4", - "secrets": 5, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 3 - }, - "soul": false, - "id": [ - "690,-456" - ], - "index": 75 - }, - { - "name": "Atlas", - "type": "mobs", - "shape": "2x2", - "secrets": 6, - "crypts": 5, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 3 - }, - "soul": false, - "id": [ - "778,-592" - ], - "index": 76 - }, - { - "name": "Layers", - "type": "mobs", - "shape": "L", - "secrets": 8, - "crypts": 3, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 4, - "chest": 4 - }, - "soul": false, - "id": [ - "1050,-524" - ], - "index": 77 - }, - { - "name": "Cavern", - "type": "mobs", - "shape": "1x4", - "secrets": 8, - "crypts": 3, - "revive_stones": 1, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 2, - "item": 1, - "chest": 5 - }, - "soul": false, - "id": [ - "822,-456" - ], - "index": 78 - }, - { - "name": "Pressure Plate", - "type": "mobs", - "shape": "1x2", - "secrets": 6, - "crypts": 6, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 2, - "chest": 4 - }, - "soul": false, - "id": [ - "1186,-384" - ], - "index": 79 - }, - { - "name": "Super Tall", - "type": "miniboss", - "shape": "2x2", - "secrets": 6, - "crypts": 6, - "revive_stones": 2, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 2, - "item": 1, - "chest": 3 - }, - "soul": true, - "id": [ - "642,-592" - ], - "index": 80 - }, - { - "name": "Gravel", - "type": "miniboss", - "shape": "1x3", - "secrets": 6, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 2, - "redstone_key": 0, - "bat": 1, - "item": 2, - "chest": 1 - }, - "soul": false, - "id": [ - "30,-420" - ], - "index": 81 - }, - { - "name": "Cathedral", - "type": "miniboss", - "shape": "2x2", - "secrets": 8, - "crypts": 5, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 2, - "item": 3, - "chest": 3 - }, - "soul": false, - "id": [ - "506,-592" - ], - "index": 82 - }, - { - "name": "Red Blue", - "type": "miniboss", - "shape": "1x3", - "secrets": 4, - "crypts": 1, - "revive_stones": 1, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "130,-420" - ], - "index": 83 - }, - { - "name": "Spider", - "type": "miniboss", - "shape": "L", - "secrets": 9, - "crypts": 3, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 2, - "chest": 6 - }, - "soul": false, - "id": [ - "234,-524" - ], - "index": 84 - }, - { - "name": "Deathmite", - "type": "miniboss", - "shape": "1x3", - "secrets": 6, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 4 - }, - "soul": false, - "id": [ - "730,-420" - ], - "index": 85 - }, - { - "name": "Museum", - "type": "miniboss", - "shape": "2x2", - "secrets": 5, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 4 - }, - "soul": false, - "id": [ - "846,-592" - ], - "index": 86 - }, - { - "name": "Market", - "type": "miniboss", - "shape": "L", - "secrets": 5, - "crypts": 4, - "revive_stones": 1, - "journals": 0, - "spiders": true, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 3 - }, - "soul": false, - "id": [ - "574,-524" - ], - "index": 87 - }, - { - "name": "Melon", - "type": "miniboss", - "shape": "L", - "secrets": 7, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": true, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 6 - }, - "soul": false, - "id": [ - "166,-524" - ], - "index": 88 - }, - { - "name": "Mossy", - "type": "miniboss", - "shape": "1x4", - "secrets": 4, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 3 - }, - "soul": true, - "id": [ - "30,-456" - ], - "index": 89 - }, - { - "name": "Flags", - "type": "miniboss", - "shape": "2x2", - "secrets": 7, - "crypts": 8, - "revive_stones": 1, - "journals": 0, - "spiders": true, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 5 - }, - "soul": false, - "id": [ - "574,-592" - ], - "index": 90 - }, - { - "name": "Well", - "type": "miniboss", - "shape": "L", - "secrets": 7, - "crypts": 5, - "revive_stones": 0, - "journals": 0, - "spiders": true, - "secret_details": { - "wither": 2, - "redstone_key": 0, - "bat": 0, - "item": 2, - "chest": 3 - }, - "soul": false, - "id": [ - "438,-524" - ], - "index": 91 - }, - { - "id": [ - "162,-456" - ], - "name": "Hallway", - "type": "miniboss", - "shape": "1x4", - "secrets": 3, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 3 - }, - "soul": false, - "index": 92 - }, - { - "id": [ - "230,-420" - ], - "name": "Diagonal", - "type": "miniboss", - "shape": "1x3", - "secrets": 4, - "crypts": 3, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 3 - }, - "soul": true, - "index": 93 - }, - { - "name": "Catwalk", - "type": "miniboss", - "shape": "1x3", - "secrets": 6, - "crypts": 5, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 4 - }, - "soul": false, - "id": [ - "630,-420" - ], - "index": 94 - }, - { - "name": "Dino Dig Site", - "type": "miniboss", - "shape": "L", - "secrets": 4, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 2 - }, - "soul": false, - "id": [ - "778,-524" - ], - "index": 95 - }, - { - "name": "Stairs", - "type": "miniboss", - "shape": "2x2", - "secrets": 4, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 3 - }, - "soul": true, - "id": [ - "234,-592" - ], - "index": 96 - }, - { - "id": [ - "558,-456" - ], - "name": "Quartz Knight", - "type": "miniboss", - "shape": "1x4", - "secrets": 7, - "crypts": 9, - "revive_stones": 1, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 2, - "chest": 4 - }, - "soul": false, - "index": 97 - }, - { - "name": "Buttons", - "type": "miniboss", - "shape": "2x2", - "secrets": 5, - "crypts": 21, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 5 - }, - "soul": false, - "id": [ - "438,-592" - ], - "index": 98 - }, - { - "name": "Rail Track", - "type": "miniboss", - "shape": "2x2", - "secrets": 9, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 3, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 4 - }, - "soul": false, - "id": [ - "166,-592" - ], - "index": 99 - }, - { - "name": "Sanctuary", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 10, - "revive_stones": 0, - "journals": 999, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "354,-60" - ], - "index": 100 - }, - { - "name": "Pillars", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "282,-60" - ], - "index": 101 - }, - { - "name": "Sand Dragon", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 1, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "102,-60" - ], - "index": 102 - }, - { - "name": "Tombstone", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 2, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 1, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "66,-60" - ], - "index": 103 - }, - { - "id": [ - "30,-60" - ], - "name": "Stone Window", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 2, - "crypts": 1, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 2, - "item": 0, - "chest": 0 - }, - "soul": true, - "index": 104 - }, - { - "id": [ - "318,-60" - ], - "name": "Lava Pool", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 3, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 1, - "chest": 2 - }, - "soul": false, - "index": 105 - }, - { - "name": "Lava Skull", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 3, - "crypts": 1, - "revive_stones": 0, - "journals": 2, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "174,-60" - ], - "index": 106 - }, - { - "name": "Mini Rail Track", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 3, - "crypts": 3, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 2, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "210,-60" - ], - "index": 107 - }, - { - "name": "Carpets", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 4, - "revive_stones": 0, - "journals": 0, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "570,-312" - ], - "index": 108 - }, - { - "name": "Trinity", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 4, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 2, - "item": 1, - "chest": 1 - }, - "soul": false, - "id": [ - "246,-60" - ], - "index": 109 - }, - { - "name": "Hanging Vines", - "type": "rare", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 1, - "spiders": false, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "138,-60" - ], - "index": 110 - }, - { - "name": "Miniboss", - "type": "gold", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "174,66", - "246,102", - "210,66" - ], - "index": 111 - }, - { - "name": "King Midas", - "type": "gold", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "210,102" - ], - "index": 112 - }, - { - "name": "Shadow Assassin", - "type": "gold", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "318,66" - ], - "index": 113 - }, - { - "name": "Three Weirdos", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-96" - ], - "index": 114 - }, - { - "name": "Water Board", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-60" - ], - "index": 115 - }, - { - "name": "Ice Fill", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-132,-492" - ], - "index": 116 - }, - { - "name": "Creeper Beams", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-528" - ], - "index": 117 - }, - { - "name": "Teleport Maze", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-456" - ], - "index": 118 - }, - { - "name": "Higher or Lower", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "id": [ - "-60,-204", - "-96,-204" - ], - "index": 119 - }, - { - "name": "Quiz", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-600" - ], - "index": 120 - }, - { - "id": [ - "-96,-168" - ], - "name": "Tic Tac Toe", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 1, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 0, - "item": 0, - "chest": 1 - }, - "soul": false, - "index": 121 - }, - { - "name": "Bomb Defuse", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-636" - ], - "index": 122 - }, - { - "name": "Boulder", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-564" - ], - "index": 123 - }, - { - "name": "Ice Path", - "type": "puzzle", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "-60,-276" - ], - "index": 124 - }, - { - "name": "New Trap", - "type": "trap", - "shape": "1x1", - "doors": "D", - "secrets": 3, - "crypts": 1, - "revive_stones": 0, - "journals": 0, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 2 - }, - "soul": false, - "id": [ - "-384,30", - "-348,30" - ], - "index": 125 - }, - { - "name": "Old Trap", - "type": "trap", - "shape": "1x1", - "doors": "D", - "secrets": 4, - "crypts": 2, - "revive_stones": 0, - "journals": 0, - "secret_details": { - "wither": 0, - "redstone_key": 0, - "bat": 1, - "item": 0, - "chest": 3 - }, - "soul": false, - "id": [ - "-312,30" - ], - "index": 126 - }, - { - "name": "Blood", - "type": "blood", - "shape": "1x1", - "doors": "D", - "secrets": 0, - "crypts": 0, - "revive_stones": 0, - "journals": 0, - "soul": false, - "id": [ - "354,66", - "138,30", - "138,66" - ], - "index": 127 - }, - { - "name": "Fairy", - "type": "fairy", - "shape": "1x1", - "doors": "V", - "secrets": 0, - "crypts": 0, - "revive_stones": 4, - "journals": 0, - "soul": false, - "id": [ - "462,-312" - ], - "index": 128 - } -]
\ No newline at end of file diff --git a/features/waypoints/index.js b/features/waypoints/index.js index 17cd831..0760354 100644 --- a/features/waypoints/index.js +++ b/features/waypoints/index.js @@ -4,6 +4,7 @@ import { m } from "../../../mappings/mappings"; import Feature from "../../featureClass/class"; import { Waypoint } from "../../utils/renderJavaUtils"; import { drawCoolWaypoint } from "../../utils/renderUtils"; +import { calculateDistanceQuick } from "../../utils/utils"; import SettingBase from "../settings/settingThings/settingBase"; import ToggleSetting from "../settings/settingThings/toggle"; import minewaypoints_socket from "./minewaypoints_socket"; @@ -44,12 +45,6 @@ class Waypoints extends Feature { this.userWaypointsArr = Object.values(this.userWaypoints) this.updateWaypointsHashes() this.waypointsChanged = false - this.lastTp = 0 - this.registerEvent("messageSent", (m) => { - if (m.toLowerCase().startsWith("/warp")) { - this.lastTp = Date.now() - } - }) this.patcherWaypoints = [] @@ -165,7 +160,8 @@ class Waypoints extends Feature { minewaypoints_socket.setLocationHandler = (area, loc) => { this.locations[area || loc[0].area] = loc; } - + let lastLoc = [0, 0, 0] + let lastTp = 0 this.registerEvent("tick", () => { try { if (Scoreboard.getLines().length < 2) return; @@ -179,6 +175,11 @@ class Waypoints extends Feature { minewaypoints_socket.setServer(server, World.getWorld().func_82737_E()) + let loc = [Player.getX(), Player.getY(), Player.getZ()] + if (calculateDistanceQuick(lastLoc, loc) > 25) { + this.lastTp = Date.now() + } + if (Date.now() - this.lastSend > 1000 && Date.now() - this.lastTp > 5000) { Scoreboard.getLines().forEach(line => { line = ChatLib.removeFormatting(line.getName()).replace(/[^0-9A-z]/g, "") |