diff options
author | Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> | 2022-07-09 22:40:15 +0800 |
---|---|---|
committer | Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> | 2022-07-09 22:40:15 +0800 |
commit | f8cef8855971383314f475829958bcdea2d49c96 (patch) | |
tree | 72735a23f5ff597f6e270795914c69ae0c2d69af /features/dungeonMap/index.js | |
parent | 4acbd7b109bb22b07a0f13502a3173cb9e8bf63d (diff) | |
download | SoopyV2-f8cef8855971383314f475829958bcdea2d49c96.tar.gz SoopyV2-f8cef8855971383314f475829958bcdea2d49c96.tar.bz2 SoopyV2-f8cef8855971383314f475829958bcdea2d49c96.zip |
+ option to show secrets in rooms (syncs across soopyv2 users)
+ meta
Diffstat (limited to 'features/dungeonMap/index.js')
-rw-r--r-- | features/dungeonMap/index.js | 147 |
1 files changed, 142 insertions, 5 deletions
diff --git a/features/dungeonMap/index.js b/features/dungeonMap/index.js index 7a9b7cb..c675a43 100644 --- a/features/dungeonMap/index.js +++ b/features/dungeonMap/index.js @@ -40,6 +40,7 @@ class DungeonMap extends Feature { this.mapBackground = new ToggleSetting("Map Background And Border", "Puts a grey background behind the map + Black border", true, "dmap_background", this) this.showMapInBoss = new ToggleSetting("Keep showing the map in the dungeon boss room", "This will center the map when in boss to still be usefull", true, "dmap_enable_boss", this) this.borderedHeads = new ToggleSetting("Add a black border around heads on map", "", false, "dmap_border_head", this) + this.roomsecrets = new ToggleSetting("Shows secretscompleted/total secrets in room", "(works best when all of party is using soopy map)", false, "roomsecrets", this) this.brBox = new ToggleSetting("Box around doors in br", "In map category because it uses map to find location (no esp)", true, "dmap_door", this) this.spiritLeapOverlay = new ToggleSetting("Spirit leap overlay", "Cool overlay for the spirit leap menu", true, "spirit_leap_overlay", this) // this.spiritLeapOverlay = new ToggleSetting("Spirit leap overlay", "Cool overlay for the spirit leap menu", true, "spirit_leap_overlay", this).requires(this.spiritLeapOverlay) @@ -61,6 +62,8 @@ class DungeonMap extends Feature { this.mortLocationOnMap = undefined this.brBoxLoc = undefined this.keys = 0 + + this.roomDataStuff = new Map() // this.invMapImage = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB) // this.renderImage = new BufferedImage(this.IMAGE_SIZE, this.IMAGE_SIZE, BufferedImage.TYPE_INT_ARGB) this.mapData = undefined @@ -177,8 +180,28 @@ class DungeonMap extends Feature { this.registerChat("&r&r&r &r&cThe Catacombs &r&8- &r&eFloor ${*} Stats&r", () => { this.puzzles = {} }) + + let lastXY = "" + let registerActionBar = this.registerCustom("actionbar", (curr, max) => { + let loc = this.getRoomXYWorld() + + if (lastXY !== loc.join(",")) { + lastXY = loc.join(",") + return + } + if (this.roomDataStuff.get(loc.join(",")) !== curr + " " + max) { + this.roomDataStuff.set(loc.join(","), curr + " " + max) + + socketConnection.sendDungeonData2(this.people, [loc.join(","), curr + " " + max]) + } + }) + registerActionBar.trigger.setCriteria('&7${curr}/${max} Secrets').setParameter('contains'); } + updateDungeonMapData2(data) { + // console.log("Recieved: " + JSON.stringify(data, undefined, 2)) + this.roomDataStuff.set(data[0], data[1]) + } worldLoad() { this.dungeonBrBoxElm.stopRender() this.mortLocation = undefined @@ -192,6 +215,7 @@ class DungeonMap extends Feature { this.bloodOpened = false this.keys = 0 this.idToPlayer = {} + this.roomDataStuff.clear() } renderOverlay() { @@ -285,11 +309,14 @@ class DungeonMap extends Feature { Client.getMinecraft().field_71460_t.func_147701_i().func_148250_a(this.mapData, true); GlStateManager.func_179121_F(); //GlStateManager.pop() } + try { + this.drawOtherMisc(x + xOff, y + yOff, size, scale) - this.drawOtherMisc(x + xOff, y + yOff, size, scale) - - this.drawPlayersLocations(x + xOff, y + yOff, size, scale) - + this.drawPlayersLocations(x + xOff, y + yOff, size, scale) + } catch (e) { + console.error(e) + console.error(e.stack) + } renderLibs.stopScizzor() if (this.mapBackground.getValue()) Renderer.drawRect(Renderer.color(0, 0, 0), x, y, size, 2) @@ -300,7 +327,7 @@ class DungeonMap extends Feature { } } - drawOtherMisc(x2, y2, size2, scale) { + drawOtherMisc(x2, y2, size, scale) { if (this.currDungeonBossImage) return if (this.mapIcons.getValue()) { Object.keys(this.puzzles).forEach(loc => { @@ -318,6 +345,26 @@ class DungeonMap extends Feature { item.draw(x * scale * 2 + x2 - this.roomWidth / 4 * scale * 2, y * scale * 2 + y2 - this.roomWidth / 4 * scale * 2, 1.5 * scale) }) } + if (this.roomsecrets.getValue()) { + for (let ent of this.roomDataStuff.entries()) { + let [loc, val] = ent + let [x, y] = loc.split(",") + + 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 + + Renderer.translate(0, 0, 100) + renderLibs.drawStringCentered("§0" + val, x2 + renderX + scale * 1.25, y2 + renderY - 2 * scale * 1.25, scale * 1.25) + Renderer.translate(0, 0, 100) + renderLibs.drawStringCentered("§0" + val, x2 + renderX - scale * 1.25, y2 + renderY - 2 * scale * 1.25, scale * 1.25) + Renderer.translate(0, 0, 100) + renderLibs.drawStringCentered("§0" + val, x2 + renderX, y2 + renderY + scale * 1.25 - 2 * scale * 1.25, scale * 1.25) + Renderer.translate(0, 0, 100) + renderLibs.drawStringCentered("§0" + val, x2 + renderX, y2 + renderY - scale * 1.25 - 2 * scale * 1.25, scale * 1.25) + Renderer.translate(0, 0, 100) + renderLibs.drawStringCentered("§f" + val, x2 + renderX, y2 + renderY - 2 * scale * 1.25, scale * 1.25) + } + } } drawPlayersLocations(x, y, size, scale) { @@ -381,6 +428,95 @@ class DungeonMap extends Feature { this.getImageForPlayer(uuid).draw(-5, -5, 10, 10) } + getRoomXYWorld() { + let roomData = this.getRoomWorldData() + if (roomData.rotation === 4) { + return [roomData.x, roomData.y + 32] + } + + return [roomData.x, roomData.y] + } + + getRotation(x, y, width, height, roofY) { + let one = this.getTopBlockAt(x + width / 2 + 1, y + height / 2, roofY) + let two = this.getTopBlockAt(x + width / 2 - 1, y + height / 2, roofY) + let three = this.getTopBlockAt(x + width / 2, y + height / 2 + 1, roofY) + let four = this.getTopBlockAt(x + width / 2, y + height / 2 - 1, roofY) + + if (one === 0 && three === 0) return 1 + if (two === 0 && three === 0) return 2 + if (one === 0 && four === 0) return 3 + if (two === 0 && four === 0) return 4 //4 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)).getBlockId() + } + step() { if (!World.getWorld()) return if (!this.isInDungeon()) return @@ -776,6 +912,7 @@ class DungeonMap extends Feature { this.dungeonBrBoxElm.stopRender() this.initVariables() this.running = false + this.roomDataStuff.clear() } } |