diff options
author | Ninjune <enderknight537@gmail.com> | 2022-12-22 03:21:02 -0600 |
---|---|---|
committer | Ninjune <enderknight537@gmail.com> | 2022-12-22 03:21:02 -0600 |
commit | 329dccf50ed5e9f87531580f679522238b6a019b (patch) | |
tree | 3053852d322db744822a7dd2a05fd59d2b1e90b7 /render | |
parent | 1ffc0a89be42fcde95a04a87cc00dbc347b27ece (diff) | |
download | coleweight-329dccf50ed5e9f87531580f679522238b6a019b.tar.gz coleweight-329dccf50ed5e9f87531580f679522238b6a019b.tar.bz2 coleweight-329dccf50ed5e9f87531580f679522238b6a019b.zip |
v1.8.3
Diffstat (limited to 'render')
-rw-r--r-- | render/cwGui.js | 201 | ||||
-rw-r--r-- | render/dwarvenNotifier.js | 36 | ||||
-rw-r--r-- | render/gemstoneMiningStats.js | 125 | ||||
-rw-r--r-- | render/guis/collectionGui.js (renamed from render/collectionGui.js) | 6 | ||||
-rw-r--r-- | render/guis/coordsGui.js (renamed from render/coordsGui.js) | 14 | ||||
-rw-r--r-- | render/guis/cwGui.js | 152 | ||||
-rw-r--r-- | render/guis/downtimeGui.js (renamed from render/downtimeGui.js) | 20 | ||||
-rw-r--r-- | render/guis/powertrackerGui.js (renamed from render/powertrackerGui.js) | 4 | ||||
-rw-r--r-- | render/guis/timerGui.js (renamed from render/timerGui.js) | 4 | ||||
-rw-r--r-- | render/miningAbilities.js | 95 | ||||
-rw-r--r-- | render/naturals.js | 10 | ||||
-rw-r--r-- | render/textGuiCreator.js | 20 | ||||
-rw-r--r-- | render/treecapTimer.js | 39 |
13 files changed, 433 insertions, 293 deletions
diff --git a/render/cwGui.js b/render/cwGui.js deleted file mode 100644 index 0695e1c..0000000 --- a/render/cwGui.js +++ /dev/null @@ -1,201 +0,0 @@ -import settings from "../settings"; -import constants from "../util/constants"; -import axios from "../../axios" -const cwGui = new Gui() -let txt = "Please set your api key with /cw setkey (key)!" - -let cwValues = [], - calcCwPerHr = false, - upTimeTrack = false, - uptime = 0, - baseColeweight = 0, - stepsSinceLast = 0, - coleweightHr = 0, - cwValuesSum = 0, - cwInfo - - -export function openCwGui() -{ - cwGui.open() -} - - -export function reloadColeweight() -{ - upTimeTrack = false - stepsSinceLast = 0 - cwValues = [] - uptime = 0 - ChatLib.chat(`${PREFIX}Reloaded!`) -} - - -register("dragged", (dx, dy, x, y) => { - if (!cwGui.isOpen()) return - constants.data.x = x - constants.data.y = y - constants.data.save() -}) - -register("renderOverlay", () => { - if (cwGui.isOpen()) - { - if (constants.data.api_key != undefined) - txt = "Click anywhere to move!" - Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2) - Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2) - Renderer.drawStringWithShadow(`&aCW: &b0\n&aCW/hr: &b0\n&aUptime: &b0m\n&aColeweight Gained: &b0`, constants.data.x, constants.data.y) - } - - if(!settings.cwToggle || constants.data.api_key == undefined) return - let coleweight = constants.data.coleweight || 0, - coleweightMessage = "", - uptimeHr = Math.floor(uptime/60/60) - - coleweight > 1000 ?coleweightMessage = `&b${coleweight.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`: coleweightMessage = `&b${coleweight.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}` - if(cwValues[0] != undefined && upTimeTrack && calcCwPerHr) - { - cwValuesSum = 0 - for(let i = 0; i < cwValues.length; i++) - { - cwValuesSum += cwValues[i] - } - let eq = Math.ceil((cwValuesSum*(3600/uptime)) * 100) / 100 - eq != Infinity ? coleweightHr = eq : coleweightHr = "Calculating..." - calcCwPerHr = false - } - - if (cwGui.isOpen() || !upTimeTrack) return - - if(uptimeHr >= 1) - Renderer.drawStringWithShadow(`&aCW: &b${coleweightMessage}\n&aCW/hr: &b${coleweightHr}\n&aUptime: &b${uptimeHr}h ${Math.floor(uptime/60) - uptimeHr*60}m\n&aColeweight Gained: &b${Math.ceil(cwValuesSum*100) / 100}`, data.x, data.y) - else - Renderer.drawStringWithShadow(`&aCW: &b${coleweightMessage}\n&aCW/hr: &b${coleweightHr}\n&aUptime: &b${Math.floor(uptime/60)}m ${Math.floor(uptime%60)}s\n&aColeweight Gained: &b${Math.ceil(cwValuesSum*100) / 100}`, data.x, data.y) -}) - -register("gameLoad", () => { - axios.get(`https://ninjune.dev/api/cwinfo`) - .then(cwInfoRes => { - cwInfo = cwInfoRes.data - }) -}) - - -register("step", () => { - // updates coleweight for gui - let date_ob = new Date(), - seconds = date_ob.getSeconds() - - if(upTimeTrack == true) - uptime += 1 - if(seconds == 0 || seconds == 15 || seconds == 30 || seconds == 45) - { - try - { - let tempUuid = Player.getUUID(), - profileData = "", - coleweight = 0, - uuid = "" - - for(let i = 0; i < tempUuid.length; i++) - { - if(tempUuid[i] != "-") - { - uuid = uuid + tempUuid[i] - } - } - axios.get(`https://api.hypixel.net/skyblock/profiles?key=${constants.data.api_key}&uuid=${uuid}`) - .then(res => { - let eq = 0 - - for(let i=0; i < res.data.profiles.length; i+=1) - { - if(res.data.profiles[i].selected == true) - profileData = res.data.profiles[i] - } - - coleweight += Math.ceil((profileData.members[uuid][cwInfo.experience.name]/cwInfo.experience.req)*100) / 100 - - for(let i = 0; i < cwInfo.powder.length; i++) - { - let sourceToSearch = cwInfo.powder[i].name, - source = profileData.members[uuid].mining_core[sourceToSearch] - - if(source != undefined) - { - eq = Math.ceil(source/cwInfo.powder[i].req*100) / 100 - - if(i == 0) - { - let powder2 = profileData.members[uuid].mining_core['powder_spent_mithril'] - - if(powder2 != undefined) - eq = Math.ceil((source+powder2)/cwInfo.powder[i].req*100) / 100 - } - else - { - let powder2 = profileData.members[uuid].mining_core['powder_spent_gemstone'] - - if(powder2 != undefined) - eq = Math.ceil((source+powder2)/cwInfo.powder[i].req*100) / 100 - } - coleweight += eq - } - } - - for(let i = 0; i < cwInfo.collection.length; i++) - { - let sourceToSearch = cwInfo.collection[i].name, - source = profileData.members[uuid].collection[sourceToSearch] - - if(source != undefined) - { - eq = Math.ceil(source/cwInfo.collection[i].req*100) / 100 - coleweight += eq - } - } - for(let i = 0; i < cwInfo.miscellaneous.length; i++) - { - let sourceToSearch = cwInfo.miscellaneous[i].name - if(i == 0 || i == 1) - source = profileData.members[uuid].bestiary[sourceToSearch] - else - source = profileData.members[uuid].mining_core.crystals.jade_crystal[sourceToSearch] - if (source != undefined) - { - eq = Math.ceil(source/cwInfo.miscellaneous[i].req*100) / 100 - coleweight += eq - } - } - if(baseColeweight == 0) - { - baseColeweight = coleweight - } - else if((coleweight - baseColeweight) > 0) - { - cwValues.push(coleweight - baseColeweight) - calcCwPerHr = true - upTimeTrack = true - stepsSinceLast = 0 - baseColeweight = coleweight - } - else if(stepsSinceLast > 20) - { - uptime = 0 - upTimeTrack = false - stepsSinceLast = 0 - cwValues = [] - } - else - { - stepsSinceLast += 1 - } - - data.coleweight = Math.ceil(coleweight*100)/100 - data.save() - }) - } - catch(e) {} - } -}).setFps(1)
\ No newline at end of file diff --git a/render/dwarvenNotifier.js b/render/dwarvenNotifier.js new file mode 100644 index 0000000..33739b0 --- /dev/null +++ b/render/dwarvenNotifier.js @@ -0,0 +1,36 @@ +import settings from "../settings" +import { checkInDwarven, drawTitle } from "../util/helperFunctions" +import constants from "../util/constants" +const PREFIX = constants.PREFIX + +let drawTitleState = 0, + drawTimestamp = undefined + +register("step", () => { + if(checkInDwarven() || !settings.dwarvenNotifier) return + const scoreboard = Scoreboard.getLines() + + for(let lineIndex = 0; lineIndex < scoreboard.length; lineIndex++) + { + let line = scoreboard[lineIndex].toString() + if (line.includes("☽") || line.includes("☀")) + { + let matches = /§7(\d\d?:\d\d)(am|pm)/g.exec(line) + if(matches == undefined) return ChatLib.chat("No matches.") + if(matches[1] == "12:00" && matches[2] == "am") + { + ChatLib.chat(`${PREFIX}&aA day has passed and your Skymall perk has changed!`) + drawTitleState = 1 + } + } + } +}).setDelay(10) + +register("renderOverlay", () => { + if(drawTitleState == 1) + { + titleResults = drawTitle(`&2A day has passed and your &bSkymall &2perk has changed!`, drawTimestamp, 3) + drawTitleState = titleResults.drawTitle + drawTimestamp = titleResults.drawTimestamp + } +})
\ No newline at end of file diff --git a/render/gemstoneMiningStats.js b/render/gemstoneMiningStats.js index a44937c..b0bf4b8 100644 --- a/render/gemstoneMiningStats.js +++ b/render/gemstoneMiningStats.js @@ -1,52 +1,85 @@ import settings from "../settings" import constants from "../util/constants" +import { findTick } from "../commands/calculate/tick" +import { addCommas, getSelectedProfile } from "../util/helperFunctions" +import axios from "../../axios" +import { findCost, findHotmObject } from "../commands/calculate/hotmCalc" const NBTTagString = Java.type("net.minecraft.nbt.NBTTagString") register("itemTooltip", (lore, item) => { // this is so bad 💀 - if(item.getLore()[0] != "§o§aYour SkyBlock Profile§r" || !settings.gemstoneMiningStats) return - const list = new NBTTagList(item.getNBT().getCompoundTag("tag").getCompoundTag("display").getTagMap().get("Lore")) - - for(let index = 0; index < list.getTagCount(); index++) - { - let element = list.getStringTagAt(index) - if(element !== ` §6⸕ Mining Speed §f${element.replace(" §6⸕ Mining Speed §f", "").replace("§", "")}` || constants.data.professional == 0) - continue - let miningSpeed = element.replace(" §6⸕ Mining Speed §f", "").replace("§", ""), - professionalSpeed = parseInt(miningSpeed.toString().replace(",", "")) + Math.floor(50+(constants.data.professional*5)), - miningSpeedText = `${element} §6(§b${professionalSpeed}§6)` + if(!item.getLore()[0].startsWith("§o§aYour SkyBlock Profile") || !settings.gemstoneMiningStats) return + const list = new NBTTagList(item.getNBT().getCompoundTag("tag").getCompoundTag("display").getTagMap().get("Lore")), + tempList = [] - list.set(index, new NBTTagString(miningSpeedText)) + for(let elementIndex = 0; elementIndex < list.getTagCount(); elementIndex++) + { + tempList.push(list.getStringTagAt(elementIndex)) } - - for(let i = 0; i < list.getTagCount(); i++) + + for(let elementIndex = 0; elementIndex < list.getTagCount(); elementIndex++) { - let element = list.getStringTagAt(i) - if(element !== ` §6☘ Mining Fortune §f${element.replace(" §6☘ Mining Fortune §f", "").replace("§", "")}` || constants.data.jungle_amulet == false) + let element = list.getStringTagAt(elementIndex) + if(element !== ` §6⸕ Mining Speed §f${element.replace(" §6⸕ Mining Speed §f", "").replace("§", "")}` || constants.data.professional == 0) + { + if(element !== ` §6☘ Mining Fortune §f${element.replace(" §6☘ Mining Fortune §f", "").replace("§", "")}` || (constants.data.jungle_amulet == false && constants.data.fortunate == 0)) + continue + let miningFortune = element.replace(" §6☘ Mining Fortune §f", "").replace("§", ""), + replacedFortune + + if(constants.data.jungle_amulet && constants.data.fortunate > 0) + replacedFortune = parseInt(miningFortune.toString().replace(",", "")) + 10 + 5*constants.data.fortunate + else if(constants.data.jungle_amulet) + replacedFortune = parseInt(miningFortune.toString().replace(",", "")) + 10 + else + replacedFortune = parseInt(miningFortune.toString().replace(",", "")) + 5*constants.data.fortunate + + let miningFortuneText = `${element} §6(§b${addCommas(replacedFortune)}§6)` + + list.set(elementIndex, new NBTTagString(miningFortuneText)) continue - let miningFortune = element.replace(" §6☘ Mining Fortune §f", "").replace("§", ""), - replacedFortune = parseInt(miningFortune.toString().replace(",", "")) + 10, - miningFortuneText = `${element} §6(§b${replacedFortune}§6)` - - list.set(i, new NBTTagString(miningFortuneText)) + } + let miningSpeed = parseInt(element.replace(" §6⸕ Mining Speed §f", "").replace("§", "").replace(",", "")), + professionalSpeed = miningSpeed + Math.floor(50+(constants.data.professional*5)), + miningSpeedText = `${element} §6(§b${addCommas(professionalSpeed)}§6)`, + tick + + if(professionalSpeed > 50 && settings.tickSpeedBlock > 1) // may need to change if add tick blocks (good programming real) + tick = findTick(professionalSpeed, settings.tickSpeedBlock).currentBlockTick + else + tick = findTick(miningSpeed, settings.tickSpeedBlock).currentBlockTick + + list.set(elementIndex, new NBTTagString(miningSpeedText)) + list.set(elementIndex + 1, new NBTTagString(` §6⸕ Block Tick §f${Math.round(tick)}`)) // 1 new added + for(let i = elementIndex + 2; i < list.getTagCount(); i++) + { + list.set(i, new NBTTagString(tempList[i - 1])) + } } }) -register("itemTooltip", (lore, item) => { - if(item.getLore()[0] != "§o§aProfessional§r") return - constants.data.professional = parseInt(item.getLore()[1].replace("§5§o§7Level ", "")) - constants.data.save() +register("gameLoad", () => { + axios.get(`https://api.hypixel.net/skyblock/profiles?key=${constants.data.api_key}&uuid=${Player.getUUID()}`) + .then(res => { + let professional = getSelectedProfile(res)?.members[Player.getUUID().replace(/-/g, "")]?.mining_core?.nodes?.professional, + fortunate = getSelectedProfile(res)?.members[Player.getUUID().replace(/-/g, "")]?.mining_core?.nodes?.fortunate + + if(professional != undefined) + constants.data.professional = professional + if(fortunate != undefined) + constants.data.fortunate = fortunate + constants.data.save() + }) }) - register('step', () => { let inventoryName = Player?.getOpenedInventory()?.getName()?.toString() if(inventoryName == undefined) return - if(inventoryName.includes("Acessory Bag ")) { - for (i = 0; i < Player.getOpenedInventory().size; i++) { + if(inventoryName.includes("Accessory Bag ")) { + for (i = 0; i < Player.getOpenedInventory().getSize(); i++) { let extraAttributes = Player.getOpenedInventory().getStackInSlot(i)?.getNBT()?.getCompoundTag("tag")?.getCompoundTag("ExtraAttributes") - if (extraAttributes.getString('id') == "JUNGLE_AMULET") + if (extraAttributes?.getString('id') === "JUNGLE_AMULET") { constants.data.jungle_amulet = true constants.data.save() @@ -56,11 +89,33 @@ register('step', () => { }).setFps(2) -/* -let checked = false register("itemTooltip", (lore, item) => { - if(!settings.debug || checked) return - console.log(item.getLore()) - checked = true + if(item.getLore()[0].startsWith("§o§aFortunate§r")) + constants.data.fortunate = parseInt(item.getLore()[1].replace("§5§o§7Level ", "")) + else if (item.getLore()[0].startsWith("§o§aProfessional§r")) + constants.data.professional = parseInt(item.getLore()[1].replace("§5§o§7Level ", "")) + else return + constants.data.save() }) -*/
\ No newline at end of file + +register("itemTooltip", (lore, item) => { // powder put into each perk + if(!settings.showPowderSum || !item.getLore()[1]?.startsWith("§5§o§7Level ") || item?.getLore()[1]?.includes("💀")) return + new Thread(() => { + if(item.getLore()[1].includes("💀")) return + const list = new NBTTagList(item.getNBT().getCompoundTag("tag").getCompoundTag("display").getTagMap().get("Lore")) + let perk = item.getLore()[0].replace(/§.|\(.+\)/g, "").replace(/ /g, "") + let level = /Level (\d+)/g.exec(item.getLore()[1])[1] + let hotmObjectToFind = findHotmObject(perk) + if(hotmObjectToFind == undefined) return + + let powderSum + + if(perk == "Fortunate") + powderSum = findCost(undefined, 1, parseInt(level), true) + else + powderSum = findCost(hotmObjectToFind.costFormula, 1, parseInt(level)) + + if(item.getLore()[1].includes("💀")) return + list.set(0, new NBTTagString(item.getLore()[1] + ` §7(§b${addCommas(Math.round(powderSum))}§7)💀`)) // this is a perfect solution no cap + }).start() +})
\ No newline at end of file diff --git a/render/collectionGui.js b/render/guis/collectionGui.js index 4e6deee..8f96d4a 100644 --- a/render/collectionGui.js +++ b/render/guis/collectionGui.js @@ -1,6 +1,6 @@ -import constants from "../util/constants" -import settings from "../settings" -import { trackerGui } from "../util/helperFunctions" +import constants from "../../util/constants" +import settings from "../../settings" +import { trackerGui } from "../../util/helperFunctions" const PREFIX = constants.PREFIX const collectionMoveGui = new Gui() const collectionGui = new trackerGui("", "Collection Not set! /cw track", settings.collectionNotation) diff --git a/render/coordsGui.js b/render/guis/coordsGui.js index 9fd5f43..0c1f244 100644 --- a/render/coordsGui.js +++ b/render/guis/coordsGui.js @@ -1,25 +1,14 @@ import { AdditiveConstraint, - animate, - Animations, CenterConstraint, - ChildBasedMaxSizeConstraint, - ChildBasedSizeConstraint, ConstantColorConstraint, - FillConstraint, - MaxConstraint, - ScissorEffect, - SiblingConstraint, - SubtractiveConstraint, UIBlock, UIImage, UIWrappedText, - UIMultilineTextInput, UIText, WindowScreen, - } from "../../Elementa" + } from "../../../Elementa" -// stylla made 2 lines of code (gamer) const Color = Java.type("java.awt.Color"), URL = Java.type("java.net.URL"), WIDTH = 3.5, // not actually width more like reverse of width lmao, bigger = smaller @@ -83,6 +72,7 @@ export function openCoordsGui() coordsWindow(1, 2, "Throne", "cw throne toggle", "https://i.imgur.com/7BWzO1c.jpg", true, "Go back of throne. (image isn't loading)").setChildOf(this.getWindow()) coordsWindow(1, 3, "Yog", "cw yog toggle", "https://i.imgur.com/DojoypL.jpg", true, "Go to the leftmost corner of the topaz crystal facing bal close to bal. (image isn't loading)").setChildOf(this.getWindow()) coordsWindow(2, 1, "Divans", "cw divans toggle", "https://i.imgur.com/bkC6yp3.jpg", true, "Go to the middle of jade crystal. (image isn't loading)").setChildOf(this.getWindow()) + coordsWindow(2, 2, "Automatons", "cw automatons toggle", "https://media.discordapp.net/attachments/1049475464667856926/1052749218055475210/image.png", true, "Sit in pot somewhere (check image in command) (image isn't loading)").setChildOf(this.getWindow()) new UIText("Click box to enable/disable.") .setX(new CenterConstraint()) .setY((ScreenH-ScreenH/12).pixels()) diff --git a/render/guis/cwGui.js b/render/guis/cwGui.js new file mode 100644 index 0000000..a2645d5 --- /dev/null +++ b/render/guis/cwGui.js @@ -0,0 +1,152 @@ +import settings from "../../settings"; +import constants from "../../util/constants"; +import axios from "../../../axios" +import { getObjectValue } from "../../util/helperFunctions" +const cwGui = new Gui() +let txt = "Please set your api key with /cw setkey (key)!" + +let cwValues = [], + calcCwPerHr = false, + upTimeTrack = false, + uptime = 0, + coleweight = 0, + baseColeweight = 0, + stepsSinceLast = 0, + coleweightHr = 0, + cwValuesSum = 0, + cwInfo + + +export function openCwGui() +{ + cwGui.open() +} + + +export function reloadColeweight() +{ + upTimeTrack = false + stepsSinceLast = 0 + cwValues = [] + uptime = 0 + ChatLib.chat(`${constants.PREFIX}&bReloaded!`) +} + + +register("dragged", (dx, dy, x, y) => { + if (!cwGui.isOpen()) return + constants.data.x = x + constants.data.y = y + constants.data.save() +}) + +register("renderOverlay", () => { + if (cwGui.isOpen()) + { + if (constants.data.api_key != undefined) + txt = "Click anywhere to move!" + Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2) + Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2) + Renderer.drawStringWithShadow(`&aCW: &b0\n&aCW/hr: &b0\n&aUptime: &b0m\n&aColeweight Gained: &b0`, constants.data.x, constants.data.y) + } + + if(!settings.cwToggle || constants.data.api_key == undefined) return + let coleweightMessage = "", + uptimeHr = Math.floor(uptime/60/60) + + coleweight > 1000 ?coleweightMessage = `&b${coleweight.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`: coleweightMessage = `&b${coleweight.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}` + if(cwValues[0] != undefined && upTimeTrack && calcCwPerHr) + { + cwValuesSum = 0 + for(let i = 0; i < cwValues.length; i++) + cwValuesSum += cwValues[i] + let eq = Math.ceil((cwValuesSum*(3600/uptime)) * 100) / 100 + eq != Infinity ? coleweightHr = eq : coleweightHr = "Calculating..." + calcCwPerHr = false + } + + if (cwGui.isOpen() || !upTimeTrack) return + + if(uptimeHr >= 1) + Renderer.drawStringWithShadow(`&aCW: &b${coleweightMessage}\n&aCW/hr: &b${coleweightHr}\n&aUptime: &b${uptimeHr}h ${Math.floor(uptime/60) - uptimeHr*60}m\n&aColeweight Gained: &b${Math.ceil(cwValuesSum*100) / 100}`, constants.data.x, constants.data.y) + else + Renderer.drawStringWithShadow(`&aCW: &b${coleweightMessage}\n&aCW/hr: &b${coleweightHr}\n&aUptime: &b${Math.floor(uptime/60)}m ${Math.floor(uptime%60)}s\n&aColeweight Gained: &b${Math.ceil(cwValuesSum*100) / 100}`, constants.data.x, constants.data.y) +}) + +register("step", () => { + // updates coleweight for gui + let date_ob = new Date(), + seconds = date_ob.getSeconds(), + cwinfo = constants.CWINFO + + if(upTimeTrack == true) + uptime += 1 + if((seconds == 0 || seconds == 15 || seconds == 30 || seconds == 45) && settings.cwToggle && cwinfo.length > 1) + { + try + { + let tempUuid = Player.getUUID(), + profileData = "", + tempColeweight = 0, + uuid = "" + + for(let i = 0; i < tempUuid.length; i++) + { + if(tempUuid[i] != "-") + uuid += tempUuid[i] + } + + axios.get(`https://api.hypixel.net/skyblock/profiles?key=${constants.data.api_key}&uuid=${uuid}`) + .then(res => { + for(let i=0; i < res.data.profiles.length; i+=1) + { + if(res.data.profiles[i].selected == true) + profileData = res.data.profiles[i] + } + + for(let i = 0; i < cwinfo.length; i++) + { + let source = getObjectValue(profileData.members[uuid], cwinfo[i].path), + source2 = getObjectValue(profileData.members[uuid], cwinfo[i].path2), + eq + + if(source == undefined) continue + + eq = Math.ceil(source/cwinfo[i].cost*100) / 100 + if(source2 != undefined) + eq = Math.ceil((source+source2)/cwinfo[i].cost*100) / 100 + + if(eq != undefined) + tempColeweight += eq + } + + if(baseColeweight == 0) // case: first run + { + baseColeweight = tempColeweight + } + else if((tempColeweight - baseColeweight) > 0) // case: new coleweight + { + cwValues.push(tempColeweight - baseColeweight) + calcCwPerHr = true + upTimeTrack = true + stepsSinceLast = 0 + baseColeweight = tempColeweight + } + else if(stepsSinceLast > 20) // case: over 5m have passed with no cw updates + { + uptime = 0 + upTimeTrack = false + stepsSinceLast = 0 + cwValues = [] + } + else // case: none of the above + { + stepsSinceLast += 1 + } + + coleweight = Math.ceil(tempColeweight*100)/100 + }) + } + catch(e) { if(settings.debug) console.log(e) } + } +}).setFps(1)
\ No newline at end of file diff --git a/render/downtimeGui.js b/render/guis/downtimeGui.js index e11c376..11be0d3 100644 --- a/render/downtimeGui.js +++ b/render/guis/downtimeGui.js @@ -1,6 +1,6 @@ -import settings from "../settings" -import constants from "../util/constants" -import { textGui } from "../util/helperFunctions" +import settings from "../../settings" +import constants from "../../util/constants" +import { textGui } from "../../util/helperFunctions" const downtimeMoveGui = new Gui() const downtimeGui = new textGui() @@ -21,9 +21,9 @@ export function openDowntimeGui() register("dragged", (dx, dy, x, y) => { if (!downtimeMoveGui.isOpen()) return - constants.collectiondata.x = x - constants.collectiondata.y = y - constants.collectiondata.save() + constants.downtimedata.x = x + constants.downtimedata.y = y + constants.downtimedata.save() }) register('actionbar', (xp) => { @@ -57,16 +57,16 @@ register("renderOverlay", () => { let txt = "Drag to move." Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2) downtimeGui.guiObject = {leftValues: ["Downtime", "Overall Downtime", "Average Downtime", "Uptime"], rightValues: [0, 0, 0, 0]} - downtimeGui.x = constants.collectiondata.x - downtimeGui.y = constants.collectiondata.y + downtimeGui.x = constants.downtimedata.x + downtimeGui.y = constants.downtimedata.y downtimeGui.renderGui() return } if (downtimeCount == 0 || !trackingDowntime || !settings.downtimeTracker) return let avgDowntime = Math.ceil((overallDowntime/downtimeCount)*100) / 100 downtimeGui.guiObject = {leftValues: ["Downtime", "Overall Downtime", "Average Downtime", "Uptime"], rightValues: [downtime, overallDowntime, avgDowntime, uptime]} - downtimeGui.x = constants.collectiondata.x - downtimeGui.y = constants.collectiondata.y + downtimeGui.x = constants.downtimedata.x + downtimeGui.y = constants.downtimedata.y downtimeGui.renderGui() }) diff --git a/render/powertrackerGui.js b/render/guis/powertrackerGui.js index cf6fc2c..f6bc96b 100644 --- a/render/powertrackerGui.js +++ b/render/guis/powertrackerGui.js @@ -1,8 +1,8 @@ /* Major credit to Fabi019 for Powdertracker module. */ -import constants from "../util/constants" -import settings from "../settings" +import constants from "../../util/constants" +import settings from "../../settings" const powderGui = new Gui(), bossBar = Java.type("net.minecraft.entity.boss.BossStatus").field_82827_c diff --git a/render/timerGui.js b/render/guis/timerGui.js index 87171ff..0487f2b 100644 --- a/render/timerGui.js +++ b/render/guis/timerGui.js @@ -1,5 +1,5 @@ -import settings from "../settings"; -import constants from "../util/constants"; +import settings from "../../settings"; +import constants from "../../util/constants"; const timerGui = new Gui() diff --git a/render/miningAbilities.js b/render/miningAbilities.js new file mode 100644 index 0000000..4663327 --- /dev/null +++ b/render/miningAbilities.js @@ -0,0 +1,95 @@ +import settings from "../settings" +import constants from "../util/constants" +import { capitalizeFirst, checkInDwarven, checkInHollows, drawTitle, textGui } from "../util/helperFunctions" + +const miningAbilitiesGui = new textGui() +let activeAbilities = [] + + +export function openMiningAbilitiesGui() +{ + miningAbilitiesGui.moveGui() +} + + +register("dragged", (dx, dy, x, y) => { + if (!miningAbilitiesGui.moveGuiObject.isOpen()) return + constants.abilitydata.x = x + constants.abilitydata.y = y + constants.abilitydata.save() +}) + + +register("renderOverlay", () => { + if(!(checkInDwarven() || checkInHollows()) || !settings.miningAbilities) return + activeAbilities.forEach(ability => { + if(ability.drawTitle == 1) + { + let titleResults = drawTitle(`&6[&3&kd&6] &b&l${ability.name}&6 [&3&kd&6]`, ability.drawTimestamp) + ability.drawTitle = titleResults.drawTitle + ability.drawTimestamp = titleResults.drawTimestamp + } + }) +}) + +register("renderOverlay", () => { + if(!(checkInDwarven() || checkInHollows()) || !settings.miningAbilitiesGui) return + let leftValues = [], + rightValues = [] + + activeAbilities.forEach(ability => { + leftValues.push(`${ability.name} CD`) + rightValues.push(ability.timer + "s") + }) + + if(miningAbilitiesGui.moveGuiObject.isOpen() && leftValues.length < 1) + { + leftValues.push("Mining Speed Boost") + rightValues.push("0") + } + + miningAbilitiesGui.guiObject = {leftValues: leftValues, rightValues: rightValues} + miningAbilitiesGui.x = constants.abilitydata.x + miningAbilitiesGui.y = constants.abilitydata.y + miningAbilitiesGui.alignment = settings.miningAbilitiesAlignment + miningAbilitiesGui.renderGui() +}) + + +register("step", () => { + activeAbilities.forEach(ability => { + if(ability.timer > 0) + ability.timer -= 1 + else if (ability.drawTitle == 0) + ability.drawTitle = 1 + }) +}).setDelay(1) + + +register("chat", (abilityName, event) => { + let found = false + + activeAbilities.forEach(ability => { + if(ability.name == capitalizeFirst(abilityName)) + { + found = true + drawTimestamp = undefined + ability.drawTitle = 0 + if (capitalizeFirst(abilityName) === "Pickobulus") + ability.timer = 110 + else + ability.timer = 120 + } + }) + + if (!found) + { + let object = {timer: capitalizeFirst(abilityName) === "Pickobulus" ? 110 : 120, name: capitalizeFirst(abilityName), drawTitle: 0, drawTimestamp: undefined} + + activeAbilities.push(object) + } +}).setCriteria(/&r&aYou used your &r&6(.+) &r&aPickaxe Ability!&r/g) + +register("worldLoad", () => { + activeAbilities = [] +})
\ No newline at end of file diff --git a/render/naturals.js b/render/naturals.js index 2f9adc9..2591fb0 100644 --- a/render/naturals.js +++ b/render/naturals.js @@ -6,17 +6,11 @@ let coords = [], visibleCoords = [] register("gameLoad", res => { - axios.get(`https://ninjune.dev/api/coords`) - .then((res) => { - coords = res.data - }) - .catch((err) => { - if(settings.debug) return console.log(err) - }) + coords = JSON.parse(FileLib.read("Coleweight", "data/naturalCoords.json")) }) register("step", () => { - if(constants.serverData.map != "Crystal Hollows" || !settings.showNaturals) return + if(constants.serverData.map != "Crystal Hollows" || !settings.showNaturals || coords.length < 1) return visibleCoords = [] coords.filter(coord => (((-1 * settings.naturalRange)/2 < (parseInt(Player.getX()) - coord.x)) && ((parseInt(Player.getX()) - coord.x) < settings.naturalRange/2) diff --git a/render/textGuiCreator.js b/render/textGuiCreator.js deleted file mode 100644 index e85b7e4..0000000 --- a/render/textGuiCreator.js +++ /dev/null @@ -1,20 +0,0 @@ -export function createGui(guiObject, x, y) -// format: { leftValues: [], rightValues: [] } (must have same amount of each or error). -{ - let string = "" - guiObject.leftValues.forEach((leftValue, index) => { - if(leftValue == "Uptime") - { - let uptime = guiObject.rightValues[index], - uptimeHr = Math.floor(uptime/60/60) - - if(uptimeHr >= 1) - string += `&aUptime: &b${uptimeHr}h ${Math.floor(uptime/60) - uptimeHr*60}m\n` - else - string += `&aUptime: &b${Math.floor(uptime/60)}m ${Math.floor(uptime%60)}s\n` - } - else - string += `&a${leftValue}: &b${guiObject.rightValues[index]}\n` - }) - Renderer.drawStringWithShadow(string, x, y) -}
\ No newline at end of file diff --git a/render/treecapTimer.js b/render/treecapTimer.js new file mode 100644 index 0000000..3d9ecef --- /dev/null +++ b/render/treecapTimer.js @@ -0,0 +1,39 @@ +import settings from "../settings" +import { checkInPark } from "../util/helperFunctions" + +treecapCooldown = 0.0 +monkeyLevel = 0 + +register("renderOverlay", () => { + if(!settings.treecapTimer || !checkInPark()) return + // ChatLib.chat(Player.getHeldItem().getItemNBT().getTag('tag').getTag('ExtraAttributes').getTag("id").toString()) + let itemId = Player?.getHeldItem()?.getItemNBT()?.getTag('tag')?.getTag('ExtraAttributes')?.getTag("id")?.toString() + if(!(itemId == `"TREECAPITATOR_AXE"` || itemId == `"ASPECT_OF_THE_VOID"` || Player?.getHeldItem()?.getRegistryName() == "minecraft:fishing_rod")) return + let txt = Math.ceil(treecapCooldown*10)/10 + Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2 - Renderer.screen.getHeight()/25) +}) + +register("step", () => { + if(!settings.treecapTimer || !checkInPark()) return + if(treecapCooldown > 0) + { + let multipler = 1 + Math.floor(1/2 * parseInt(monkeyLevel))/100 + if(treecapCooldown - 0.1*multipler < 0) + treecapCooldown = 0 + else + treecapCooldown -= 0.1 * multipler + } +}).setFps(10) + +register("blockBreak", (block) => { + if(!settings.treecapTimer || !checkInPark()) return + let blockRegistryName = block.type.getRegistryName() + if (treecapCooldown > 0.5 || !(blockRegistryName == "minecraft:log" || blockRegistryName == "minecraft:log2")) return + treecapCooldown = 2.0 +}) + +register("chat", (lvl, pet, event) => { + if(!settings.treecapTimer || !checkInPark()) return + if(pet != "Monkey") return monkeyLevel = 0 + monkeyLevel = lvl +}).setCriteria(/&cAutopet &eequipped your &.\[Lvl ([0-9]+)] &.([a-zA-Z]+)&e! &a&lVIEW RULE&r/g)
\ No newline at end of file |