diff options
Diffstat (limited to 'render/guis/powertrackerGui.js')
-rw-r--r-- | render/guis/powertrackerGui.js | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/render/guis/powertrackerGui.js b/render/guis/powertrackerGui.js new file mode 100644 index 0000000..f6bc96b --- /dev/null +++ b/render/guis/powertrackerGui.js @@ -0,0 +1,116 @@ +/* +Major credit to Fabi019 for Powdertracker module. +*/ +import constants from "../../util/constants" +import settings from "../../settings" + +const powderGui = new Gui(), + bossBar = Java.type("net.minecraft.entity.boss.BossStatus").field_82827_c + +let sessionRunning = false, + sessionChests = 0, + sessionGemstone = 0, + sessionMithril = 0, + seconds = 0, + timeSinceLastGain = 0 + +export function openPowderGui() +{ + powderGui.open() +} + +function DoublePowderActive() +{ + return bossBar.includes("2X POWDER") +} + +register("dragged", (dx, dy, x, y) => { + if (!powderGui.isOpen()) return + constants.powderdata.x = x + constants.powderdata.y = y + constants.powderdata.save() +}) + +register("chat", (value, type) => { + let powder = parseInt(value) + + if (DoublePowderActive()) + powder *= 2 + if(type.toLowerCase() == "gemstone") + { + constants.powderdata.gemstonePowder += powder + sessionGemstone += powder + } + else if (type.toLowerCase() == "mithril") + { + constants.powderdata.mithrilPowder += powder + sessionMithril += powder + } + constants.powderdata.save() + timeSinceLastGain = 0 + sessionRunning = true +}).setCriteria(/You received \+([0-9]+) ([a-zA-Z]+) Powder/g) + +register("chat", event => { + constants.powderdata.chests += 1 + sessionChests += 1 + sessionRunning = true +}).setCriteria("&r&6You have successfully picked the lock on this chest!&r"); + +register("renderOverlay", () => { + if (powderGui.isOpen()) + { + let txt = "Drag to move." + Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2) + } + if (!settings.trackerVisible || !sessionRunning) return + + let uptimeHr = Math.floor(seconds/60/60), + lines = [], + message ="" + + function addText(item, value) + { + lines.push("&a" + item + ": &b" + value) + } + + if (settings.showTotals) + { + addText("Total Chest", constants.powderdata.chests) + addText("Total Gemstone", constants.powderdata.gemstonePowder) + addText("Total Mithril", constants.powderdata.mithrilPowder) + } + + addText("Session Chests", sessionChests) + addText("Session Gemstone", sessionGemstone) + addText("Session Mithril", sessionMithril) + + + if (settings.showRates) + { + addText("Chests/hr", Math.round(((sessionChests ?? 0)/(seconds ?? 1)) * 3600)) + addText("Gemstone/hr", Math.round(((sessionGemstone ?? 0)/(seconds ?? 1)) * 3600)) + addText("Mithril/hr", Math.round(((sessionMithril ?? 0)/(seconds ?? 1)) * 3600)) + if(uptimeHr >= 1) + addText("Uptime", `${uptimeHr}h ${Math.floor(seconds/60) - uptimeHr*60}m`) + else + addText("Uptime", `${Math.floor(seconds/60)}m ${Math.floor(seconds%60)}s`) + } + + lines.forEach((line) => { + message += line + "\n" + }) + Renderer.drawStringWithShadow(message, constants.powderdata.x, constants.powderdata.y) +}) + +register("step", () => { + if(sessionRunning) + { + seconds += 1 + timeSinceLastGain += 1 + } + if(timeSinceLastGain > 300 && sessionRunning) + { + sessionRunning = false + } +}).setFps(1) |