From 082d9cf4af63495a3d8709b0ee87dc935ed986dc Mon Sep 17 00:00:00 2001 From: Soopyboo32 <49228220+Soopyboo32@users.noreply.github.com> Date: Mon, 18 Apr 2022 00:25:15 +0800 Subject: Many changes --- featureClass/class.js | 72 +- featureClass/featureManager.js | 399 +++++----- features/betterGuis/dungeonReadyGui.js | 4 +- features/betterGuis/index.js | 20 +- features/betterGuis/museumGui.js | 166 ++--- features/dataLoader/index.js | 15 +- features/dungeonMap/index.js | 12 +- features/dungeonSolvers/index.js | 1185 +++++++++++++++++------------- features/globalSettings/firstLoadPage.js | 2 + features/globalSettings/index.js | 5 +- features/hud/HudTextElement.js | 125 ++-- features/hud/index.js | 365 +++++---- features/lockedFeatures/index.js | 2 +- metadata.json | 4 +- 14 files changed, 1291 insertions(+), 1085 deletions(-) diff --git a/featureClass/class.js b/featureClass/class.js index d1ddbc6..bb438d9 100644 --- a/featureClass/class.js +++ b/featureClass/class.js @@ -2,7 +2,7 @@ /// class Feature { - constructor(){ + constructor() { this.FeatureManager = undefined this.events = {} this.customEvents = {} @@ -14,27 +14,27 @@ class Feature { this.enabled = false } - setId(id){ + setId(id) { this.id = id } - getId(){ + getId() { return this.id } - _onDisable(){ - Object.values(this.events).forEach(e=>this.FeatureManager.unregisterEvent(e)) //calling parent unregister to avoid the set in unregister event - Object.values(this.customEvents).forEach(e=>this.FeatureManager.unregisterCustom(e)) //calling parent unregister to avoid the set in unregister event - Object.values(this.forgeEvents).forEach(e=>this.FeatureManager.unregisterForge(e)) //calling parent unregister to avoid the set in unregister event - Object.values(this.soopyEvents).forEach(e=>this.FeatureManager.unregisterSoopy(e)) //calling parent unregister to avoid the set in unregister event + _onDisable() { + Object.values(this.events).forEach(e => this.FeatureManager.unregisterEvent(e)) //calling parent unregister to avoid the set in unregister event + Object.values(this.customEvents).forEach(e => this.FeatureManager.unregisterCustom(e)) //calling parent unregister to avoid the set in unregister event + Object.values(this.forgeEvents).forEach(e => this.FeatureManager.unregisterForge(e)) //calling parent unregister to avoid the set in unregister event + Object.values(this.soopyEvents).forEach(e => this.FeatureManager.unregisterSoopy(e)) //calling parent unregister to avoid the set in unregister event this.onDisable() - + this.events = {} this.customEvents = {} this.enabled = false } - _onEnable(parent){ + _onEnable(parent) { this.FeatureManager = parent this.enabled = true @@ -42,10 +42,10 @@ class Feature { this.onEnable() } - onDisable(){} - onEnable(){} + onDisable() { } + onEnable() { } - registerEvent(event, func){ + registerEvent(event, func) { let theEvent = this.FeatureManager.registerEvent(event, func, this) this.events[theEvent.id] = theEvent @@ -53,12 +53,12 @@ class Feature { return theEvent } - unregisterEvent(event){ + unregisterEvent(event) { this.FeatureManager.unregisterEvent(event) delete this.events[event.id] } - registerSoopy(event, func){ + registerSoopy(event, func) { let theEvent = this.FeatureManager.registerSoopy(event, func, this) this.soopyEvents[theEvent.id] = theEvent @@ -66,48 +66,48 @@ class Feature { return theEvent } - unregisterSoopy(event){ + unregisterSoopy(event) { this.FeatureManager.unregisterSoopy(event) delete this.soopyEvents[event.id] } - registerForge(event, func, messageIfError){ + registerForge(event, func, messageIfError) { let theEvent - try{ - theEvent = this.FeatureManager.registerForge(event, func, this) - }catch(e){ - if(!messageIfError) messageIfError = "An error occured while registering the event " + event.class.toString().split(".").pop() + ", this may cause " + this.constructor.name + " to not work properly." + try { + theEvent = this.FeatureManager.registerForge(event, func, this) + } catch (e) { //TODO: option to disable this chat message + fallback register for some that support (eg fallback of RenderWorldLastEvent to ct 'renderWorld') + if (!messageIfError) messageIfError = "An error occured while registering the event " + event.class.toString().split(".").pop() + ", this may cause " + this.constructor.name + " to not work properly." ChatLib.chat(this.FeatureManager.messagePrefix + messageIfError) } - if(theEvent)this.forgeEvents[theEvent.id] = theEvent + if (theEvent) this.forgeEvents[theEvent.id] = theEvent return theEvent } - unregisterForge(event){ - if(!event) return - + unregisterForge(event) { + if (!event) return + this.FeatureManager.unregisterForge(event) delete this.forgeEvents[event.id] } - registerChat(criteria, func){ + registerChat(criteria, func) { let theEvent = this.FeatureManager.registerChat(criteria, func, this) this.customEvents[theEvent.id] = theEvent return theEvent } - registerActionBar(criteria, func){ + registerActionBar(criteria, func) { let theEvent = this.FeatureManager.registerActionBar(criteria, func, this) this.customEvents[theEvent.id] = theEvent return theEvent } - registerStep(isFps, interval, func){ + registerStep(isFps, interval, func) { let theEvent = this.FeatureManager.registerStep(isFps, interval, func, this) this.customEvents[theEvent.id] = theEvent @@ -115,7 +115,7 @@ class Feature { return theEvent } - registerCustom(event, func){ + registerCustom(event, func) { let theEvent = this.FeatureManager.registerCustom(event, func, this) this.customEvents[theEvent.id] = theEvent @@ -123,28 +123,28 @@ class Feature { return theEvent } - registerCommand(name, func){ + registerCommand(name, func) { this.FeatureManager.commandFuncs[name] = func - this.FeatureManager.registerCommand(name, (...args)=>{ - if(this.FeatureManager.commandFuncs[name]){ + this.FeatureManager.registerCommand(name, (...args) => { + if (this.FeatureManager.commandFuncs[name]) { this.FeatureManager.commandFuncs[name].call(this, ...(args || [])) - }else{ + } else { ChatLib.chat(this.FeatureManager.messagePrefix + "This command is not available atm") } }, this) } - unregisterCommand(name){ + unregisterCommand(name) { delete this.FeatureManager.commandFuncs[name] } - unregisterCustom(event){ + unregisterCustom(event) { this.FeatureManager.unregisterCustom(event) delete this.customEvents[event.id] } - createCustomEvent(eventId){ + createCustomEvent(eventId) { return this.FeatureManager.createCustomEvent(eventId) } } diff --git a/featureClass/featureManager.js b/featureClass/featureManager.js index 809e608..78e06dd 100644 --- a/featureClass/featureManager.js +++ b/featureClass/featureManager.js @@ -6,7 +6,7 @@ const File = Java.type("java.io.File") import metadata from "../metadata.js" import soopyV2Server from "../socketConnection"; import { fetch } from "../utils/networkUtils"; -import { registerForge as registerForgeBase, unregisterForge as unregisterForgeBase} from "./forgeEvents.js" +import { registerForge as registerForgeBase, unregisterForge as unregisterForgeBase } from "./forgeEvents.js" const JSLoader = Java.type("com.chattriggers.ctjs.engine.langs.js.JSLoader") const UrlModuleSourceProvider = Java.type("org.mozilla.javascript.commonjs.module.provider.UrlModuleSourceProvider") @@ -15,22 +15,22 @@ const StrongCachingModuleScriptProviderClass = Java.type("org.mozilla.javascript let StrongCachingModuleScriptProvider = new StrongCachingModuleScriptProviderClass(UrlModuleSourceProviderInstance) let CTRequire = new JSLoader.CTRequire(StrongCachingModuleScriptProvider) -let loadedModules = [] +let loadedModules = new Set() -function RequireNoCache(place){ - if(loadedModules.includes(place)){ - loadedModules.push(place) +function RequireNoCache(place) { + if (!logger.isDev) return require(place) + if (!loadedModules.has(place)) { + loadedModules.add(place) return require(place) //performance optimisation } - if(!logger.isDev) return require(place) - + StrongCachingModuleScriptProvider = new StrongCachingModuleScriptProviderClass(UrlModuleSourceProviderInstance) CTRequire = new JSLoader.CTRequire(StrongCachingModuleScriptProvider) return CTRequire(place) } class FeatureManager { - constructor(){ + constructor() { this.isDev = logger.isDev @@ -71,29 +71,29 @@ class FeatureManager { this.featureSettingsData = {} - let fetchD = fetch("http://soopymc.my.to/api/soopyv2/ping").async(d=>{ - if(fetchD.responseCode() >= 400 || fetchD.responseCode() === -1){ - ChatLib.chat(this.messagePrefix + "&cError: Could not connect to Soopy's server. This may cause issues with features breaking but will (hopefully) be back soon.") + let fetchD = fetch("http://soopymc.my.to/api/soopyv2/ping").async(d => { + if (fetchD.responseCode() >= 400 || fetchD.responseCode() === -1) { + ChatLib.chat(this.messagePrefix + "&cError: Could not connect to Soopy's server. This may cause issues with some features but will (hopefully) be back soon.") } - - new Thread(()=>{ + + new Thread(() => { this.loadFeatureMetas() - + this.loadFeatureSettings() - - Object.keys(this.featureMetas).forEach((feature)=>{ - if(this.featureSettingsData[feature] && this.featureSettingsData[feature].enabled){ + + Object.keys(this.featureMetas).forEach((feature) => { + if (this.featureSettingsData[feature] && this.featureSettingsData[feature].enabled) { this.loadFeature(feature) } }) - + this.finishedLoading = true }).start() }, true) - this.registerStep(false, 30, ()=>{ - if(this.featureSettingsDataLastUpdated){ - new Thread(()=>{ + this.registerStep(false, 30, () => { + if (this.featureSettingsDataLastUpdated) { + new Thread(() => { this.saveFeatureSettings() }).start() } @@ -101,69 +101,72 @@ class FeatureManager { this.registerEvent("worldUnload", this.saveFeatureSettings, this) - this.registerEvent("gameUnload", ()=>{ + this.registerEvent("gameUnload", () => { this.saveFeatureSettings() this.unloadAllFeatures() this.enabled = false }, this) - this.registerStep(true, 2, ()=>{ - if(this.reloadModuleTime!==0 && Date.now()-this.reloadModuleTime > 0){ - new Thread(()=>{ - this.reloadModuleTime = 0 - this.reloadingModules.forEach(m=>{ - this.unloadFeature(m) - }) - this.reloadingModules.forEach(m=>{ - this.loadFeature(m) - }) - this.reloadingModules = [] - }).start() - } - }, this) - this.watches = {} - this.addedWatches = [] - this.watchService = Java.type("java.nio.file.FileSystems").getDefault().newWatchService(); - this.reloadingModules = [] - this.reloadModuleTime = 0 - new Thread(()=>{ - while(this.enabled){ - key = this.watchService.take(); - let moduleToReload = this.watches[key] - if(this.features[moduleToReload] && !this.reloadingModules.includes(moduleToReload)){ //if enabled && not alr in queue - this.reloadingModules.push(moduleToReload) - this.reloadModuleTime = Date.now()+5000 + if (this.isDev) { + this.registerStep(true, 2, () => { + if (this.reloadModuleTime !== 0 && Date.now() - this.reloadModuleTime > 0) { + new Thread(() => { + this.reloadModuleTime = 0 + this.reloadingModules.forEach(m => { + this.unloadFeature(m) + }) + this.reloadingModules.forEach(m => { + this.loadFeature(m) + }) + this.reloadingModules = [] + }).start() } - key.pollEvents()/*.forEach(event=>{ + }, this) + + this.watches = {} + this.addedWatches = [] + this.watchService = Java.type("java.nio.file.FileSystems").getDefault().newWatchService(); + this.reloadingModules = [] + this.reloadModuleTime = 0 + new Thread(() => { + while (this.enabled) { + key = this.watchService.take(); + let moduleToReload = this.watches[key] + if (this.features[moduleToReload] && !this.reloadingModules.includes(moduleToReload)) { //if enabled && not alr in queue + this.reloadingModules.push(moduleToReload) + this.reloadModuleTime = Date.now() + 5000 + } + key.pollEvents()/*.forEach(event=>{ console.log(event.context().toString()) })*/ - key.reset(); - } - }).start() + key.reset(); + } + }).start() + } - this.registerCommand("soopyunloadfeature", (args)=>{ - new Thread(()=>{ + this.registerCommand("soopyunloadfeature", (args) => { + new Thread(() => { this.unloadFeature(args) }).start() }, this) - this.registerCommand("soopyloadfeature", (args)=>{ - new Thread(()=>{ + this.registerCommand("soopyloadfeature", (args) => { + new Thread(() => { this.loadFeature(args) }).start() }, this) - this.registerCommand("soopyreloadfeature", (args)=>{ - new Thread(()=>{ + this.registerCommand("soopyreloadfeature", (args) => { + new Thread(() => { this.unloadFeature(args) - + this.loadFeature(args) }).start() }, this) - this.registerCommand("soopysetlongeventtime", (args)=>{ + this.registerCommand("soopysetlongeventtime", (args) => { this.longEventTime = parseInt(args) }, this) - this.registerCommand("soopylaginformation", (args)=>{ //TODO: make this a dedicated GUI - new Thread(()=>{ + this.registerCommand("soopylaginformation", (args) => { //TODO: make this a dedicated GUI + new Thread(() => { this.recordingPerformanceUsage = true this.performanceUsage = {} ChatLib.chat(this.messagePrefix + "Recording performance impact, this will take 10 seconds to complete!") @@ -173,21 +176,21 @@ class FeatureManager { let totalMsGlobal = 0 this.recordingPerformanceUsage = false ChatLib.chat(this.messagePrefix + "Performance impact:") - Object.keys(this.performanceUsage).sort((a, b)=>{ + Object.keys(this.performanceUsage).sort((a, b) => { let totalMsA = 0 - Object.keys(this.performanceUsage[a]).forEach((event)=>{ + Object.keys(this.performanceUsage[a]).forEach((event) => { totalMsA += this.performanceUsage[a][event].time }) let totalMsB = 0 - Object.keys(this.performanceUsage[b]).forEach((event)=>{ + Object.keys(this.performanceUsage[b]).forEach((event) => { totalMsB += this.performanceUsage[b][event].time }) - return totalMsA-totalMsB - }).forEach((moduleName)=>{ + return totalMsA - totalMsB + }).forEach((moduleName) => { let totalMs = 0 let totalCalls = 0 - Object.keys(this.performanceUsage[moduleName]).forEach((event)=>{ + Object.keys(this.performanceUsage[moduleName]).forEach((event) => { totalMs += this.performanceUsage[moduleName][event].time totalCalls += this.performanceUsage[moduleName][event].count }) @@ -196,8 +199,8 @@ class FeatureManager { ChatLib.chat("&eModule: &7" + moduleName) ChatLib.chat("&eTotal: &7" + totalMs.toFixed(2) + "ms (" + totalCalls + " calls)") - Object.keys(this.performanceUsage[moduleName]).sort((a, b)=>{return this.performanceUsage[moduleName][a].time-this.performanceUsage[moduleName][b].time}).forEach((event)=>{ - ChatLib.chat(" &eEvent:&7 " + event + " - " + this.performanceUsage[moduleName][event].time.toFixed(2) + "ms (" + this.performanceUsage[moduleName][event].count + " calls) [" + ((this.performanceUsage[moduleName][event].time/this.performanceUsage[moduleName][event].count).toFixed(2)) + "ms avg]") + Object.keys(this.performanceUsage[moduleName]).sort((a, b) => { return this.performanceUsage[moduleName][a].time - this.performanceUsage[moduleName][b].time }).forEach((event) => { + ChatLib.chat(" &eEvent:&7 " + event + " - " + this.performanceUsage[moduleName][event].time.toFixed(2) + "ms (" + this.performanceUsage[moduleName][event].count + " calls) [" + ((this.performanceUsage[moduleName][event].time / this.performanceUsage[moduleName][event].count).toFixed(2)) + "ms avg]") }) }) @@ -206,12 +209,12 @@ class FeatureManager { }, this) } - loadFeatureSettings(){ + loadFeatureSettings() { logger.logMessage("Loading settings", 4) let data = FileLib.read("soopyAddonsData", "soopyaddonsbetafeaturesdata.json") - if(!data){ + if (!data) { this.loadDefaultFeatureSettings(); return; } @@ -223,44 +226,44 @@ class FeatureManager { this.ensureNewSettingsExist() } - saveFeatureSettings(){ - if(!this.featureSettingsDataLastUpdated) return - + saveFeatureSettings() { + if (!this.featureSettingsDataLastUpdated) return + FileLib.write("soopyAddonsData", "soopyaddonsbetafeaturesdata.json", JSON.stringify(this.featureSettingsData)) - + this.featureSettingsDataLastUpdated = false logger.logMessage("Saved settings", 4) } - loadDefaultFeatureSettings(){ - Object.keys(this.featureMetas).forEach((feature)=>{ + loadDefaultFeatureSettings() { + Object.keys(this.featureMetas).forEach((feature) => { this.featureSettingsData[feature] = { enabled: this.featureMetas[feature].defaultEnabled, subSettings: {} } }) - - this.featureSettingsDataLastUpdated= true + + this.featureSettingsDataLastUpdated = true logger.logMessage("Loaded default settings", 4) } - ensureNewSettingsExist(){ - Object.keys(this.featureMetas).forEach((feature)=>{ - if(!this.featureSettingsData[feature]){ + ensureNewSettingsExist() { + Object.keys(this.featureMetas).forEach((feature) => { + if (!this.featureSettingsData[feature]) { this.featureSettingsData[feature] = { enabled: this.featureMetas[feature].defaultEnabled, subSettings: {} } - this.featureSettingsDataLastUpdated= true + this.featureSettingsDataLastUpdated = true logger.logMessage("Loaded default settings for " + feature, 4) } }) } - startCatchingEvent(event){ - if(this.eventObjects[event]) return + startCatchingEvent(event) { + if (this.eventObjects[event]) return //SBA compatability or something (removed) // if(event === "renderOverlay"){ @@ -273,60 +276,62 @@ class FeatureManager { // } // }) // }else{ - this.eventObjects[event] = register(event, (...args)=>{ - // let start = Date.now() - this.triggerEvent(event, args) - // this.eventTimingData[event] = (this.eventTimingData[event] || 0)+(Date.now()-start) - }) + this.eventObjects[event] = register(event, (...args) => { + // let start = Date.now() + this.triggerEvent(event, args) + // this.eventTimingData[event] = (this.eventTimingData[event] || 0)+(Date.now()-start) + }) //} logger.logMessage("Registered " + event + " event", 4) } - triggerEvent(event, args){ - if(this.events[event]) - try{ - for(Event of Object.values(this.events[event])){ - if(Event.context.enabled){ - this.startRecordingPerformance(Event.context.constructor.name, event) - let start = Date.now() - Event.func.call(Event.context, ...args) - let time = Date.now()-start - if(time > this.longEventTime){ - logger.logMessage("Long event triggered [" + time + "ms] (" + Event.context.constructor.name + "/" + event + ")", 3) + triggerEvent(event, args) { + if (this.events[event]) { + try { + for (Event of Object.values(this.events[event])) { + if (Event.context.enabled) { + this.startRecordingPerformance(Event.context.constructor.name, event) + let start = Date.now() + Event.func.call(Event.context, ...args) + let time = Date.now() - start + if (time > this.longEventTime) { + logger.logMessage("Long event triggered [" + time + "ms] (" + Event.context.constructor.name + "/" + event + ")", 3) + } + this.stopRecordingPerformance(Event.context.constructor.name, event) } - this.stopRecordingPerformance(Event.context.constructor.name, event) } + } catch (e) { + logger.logMessage("Error in " + event + " event: " + JSON.stringify(e, undefined, 2), 2) + + soopyV2Server.reportError(e, "Error in " + event + " event.") } - }catch(e){ - logger.logMessage("Error in " + event + " event: " + JSON.stringify(e, undefined, 2), 2) - - soopyV2Server.reportError(e, "Error in " + event + " event.") } } - triggerSoopy(event, args){ - if(this.soopyEventHandlers[event]) - try{ - for(Event of Object.values(this.soopyEventHandlers[event])){ - if(Event.context.enabled){ - this.startRecordingPerformance(Event.context.constructor.name, event) - let start = Date.now() - Event.func.call(Event.context, ...args) - let time = Date.now()-start - if(time > this.longEventTime){ - logger.logMessage("Long event triggered [" + time + "ms] (" + Event.context.constructor.name + "/" + event + ")", 3) + triggerSoopy(event, args) { + if (this.soopyEventHandlers[event]) { + try { + for (Event of Object.values(this.soopyEventHandlers[event])) { + if (Event.context.enabled) { + this.startRecordingPerformance(Event.context.constructor.name, event) + let start = Date.now() + Event.func.call(Event.context, ...args) + let time = Date.now() - start + if (time > this.longEventTime) { + logger.logMessage("Long event triggered [" + time + "ms] (" + Event.context.constructor.name + "/" + event + ")", 3) + } + this.stopRecordingPerformance(Event.context.constructor.name, event) } - this.stopRecordingPerformance(Event.context.constructor.name, event) } + } catch (e) { + logger.logMessage("Error in soopy " + event + " event: " + JSON.stringify(e, undefined, 2), 2) + soopyV2Server.reportError(e, "Error in soopy " + event + " event.") } - }catch(e){ - logger.logMessage("Error in soopy " + event + " event: " + JSON.stringify(e, undefined, 2), 2) - soopyV2Server.reportError(e, "Error in soopy " + event + " event.") } } - stopCatchingEvent(event){ - if(!this.eventObjects[event]) return + stopCatchingEvent(event) { + if (!this.eventObjects[event]) return this.eventObjects[event].unregister() delete this.eventObjects[event] @@ -334,8 +339,8 @@ class FeatureManager { logger.logMessage("Unregistered " + event + " event", 4) } - registerEvent(event, func, context){ - if(!this.events[event]){ + registerEvent(event, func, context) { + if (!this.events[event]) { this.events[event] = [] this.startCatchingEvent(event) } @@ -350,8 +355,8 @@ class FeatureManager { return theEvent } - registerSoopy(event, func, context){ - if(!this.soopyEventHandlers[event]){ + registerSoopy(event, func, context) { + if (!this.soopyEventHandlers[event]) { this.soopyEventHandlers[event] = [] } @@ -366,7 +371,7 @@ class FeatureManager { return theEvent } - registerChat(criteria, func, context){ + registerChat(criteria, func, context) { let event = this.registerCustom("chat", func, context) event.trigger.setChatCriteria(criteria) @@ -374,7 +379,7 @@ class FeatureManager { return event } - registerActionBar(criteria, func, context){ + registerActionBar(criteria, func, context) { let event = this.registerCustom("actionBar", func, context) @@ -382,7 +387,7 @@ class FeatureManager { return event } - registerCommand(commandName, func, context){ + registerCommand(commandName, func, context) { let event = this.registerCustom("command", func, context) @@ -390,35 +395,35 @@ class FeatureManager { return event } - registerStep(isFps, interval, func, context){ + registerStep(isFps, interval, func, context) { let event = this.registerCustom("step", func, context) - event.trigger[isFps?"setFps":"setDelay"](interval) + event.trigger[isFps ? "setFps" : "setDelay"](interval) return event } - registerCustom(type, func, context){ + registerCustom(type, func, context) { let id = this.lastChatEventId++ this.customEvents[id] = { func: func, context: context, - trigger: register(type, (...args)=>{ - try{ - if(context.enabled){ + trigger: register(type, (...args) => { + try { + if (context.enabled) { this.startRecordingPerformance(context.constructor.name, type) let start = Date.now() func.call(context, ...(args || [])) - let time = Date.now()-start - if(time > this.longEventTime){ + let time = Date.now() - start + if (time > this.longEventTime) { logger.logMessage("Long event triggered [" + time + "ms] (" + context.constructor.name + "/" + type + ")", 3) } this.stopRecordingPerformance(context.constructor.name, type) } - }catch(e){ + } catch (e) { logger.logMessage("Error in " + type + " event: " + JSON.stringify(e, undefined, 2), 2) - + soopyV2Server.reportError(e, "Error in " + type + " event.") } }), @@ -428,27 +433,27 @@ class FeatureManager { return this.customEvents[id] } - registerForge(event, func, context){ + registerForge(event, func, context) { let id = this.lastForgeEventId++ this.forgeEvents[id] = { func: func, context: context, - trigger: registerForgeBase(event, (...args)=>{ - try{ - if(context.enabled){ + trigger: registerForgeBase(event, (...args) => { + try { + if (context.enabled) { this.startRecordingPerformance(context.constructor.name, event.class.name) let start = Date.now() func.call(context, ...(args || [])) - let time = Date.now()-start - if(time > this.longEventTime){ + let time = Date.now() - start + if (time > this.longEventTime) { logger.logMessage("Long (forge) event triggered (" + context.constructor.name + "/" + event.class.toString() + ")", 3) } this.stopRecordingPerformance(context.constructor.name, event.class.name) } - }catch(e){ + } catch (e) { logger.logMessage("Error in " + event.class.toString() + " (forge) event: " + JSON.stringify(e, undefined, 2), 2) - + soopyV2Server.reportError(e, "Error in " + event.class.toString() + " (forge) event.") } }), @@ -458,84 +463,84 @@ class FeatureManager { return this.forgeEvents[id] } - unregisterForge(event){ + unregisterForge(event) { unregisterForgeBase(this.forgeEvents[event.id].trigger) delete this.forgeEvents[event.id] } - unregisterCustom(event){ + unregisterCustom(event) { event.trigger.unregister() delete this.customEvents[event.id] } - unregisterEvent(event){ - if(!this.events[event.event]) return + unregisterEvent(event) { + if (!this.events[event.event]) return - this.events[event.event] = this.events[event.event].filter((e)=>{ + this.events[event.event] = this.events[event.event].filter((e) => { return e.id !== event.id }) - - if(this.events[event.event].length === 0){ + + if (this.events[event.event].length === 0) { this.stopCatchingEvent(event.event) delete this.events[event.event] } } - unregisterSoopy(event){ - if(!this.soopyEventHandlers[event.event]) return + unregisterSoopy(event) { + if (!this.soopyEventHandlers[event.event]) return - this.soopyEventHandlers[event.event] = this.soopyEventHandlers[event.event].filter((e)=>{ + this.soopyEventHandlers[event.event] = this.soopyEventHandlers[event.event].filter((e) => { return e.id !== event.id }) - - if(this.soopyEventHandlers[event.event].length === 0){ + + if (this.soopyEventHandlers[event.event].length === 0) { delete this.events[event.event] } } - loadFeatureMetas(){ + loadFeatureMetas() { let featuresDir = new File("./config/ChatTriggers/modules/" + metadata.name + "/features") - featuresDir.list().forEach((pathName)=>{ - if(pathName.includes(".")) return; + featuresDir.list().forEach((pathName) => { + if (pathName.includes(".")) return; - try{ - let data = JSON.parse(FileLib.read( metadata.name + "/features/" + pathName,"metadata.json")) - if(data === null){ + try { + let data = JSON.parse(FileLib.read(metadata.name + "/features/" + pathName, "metadata.json")) + if (data === null) { return; } data.id = pathName this.featureMetas[pathName] = data - }catch(e){ + } catch (e) { console.log("Error loading feature metadata for " + pathName) console.log(JSON.stringify(e, undefined, 2)) } }) } - loadFeature(feature){ //run in seperate thread so onenable can do network requests - if(this.features[feature]) return - - try{ - + loadFeature(feature) { //run in seperate thread so onenable can do network requests + if (this.features[feature]) return + + try { + let LoadedFeature = RequireNoCache("../features/" + feature + "/index.js") // let LoadedFeature = RequireNoCache(new File("config/ChatTriggers/modules/" + metadata.name + "/features/" + feature + "/index.js")) - + this.features[feature] = LoadedFeature - + LoadedFeature.class.setId(feature) - + LoadedFeature.class._onEnable(this) - + logger.logMessage("Loaded feature " + feature, 3) - if(this.isDev && !this.addedWatches.includes(feature)){ + if (this.isDev && !this.addedWatches.includes(feature)) { this.addedWatches.push(feature) let path = Java.type("java.nio.file.Paths").get("./config/ChatTriggers/modules/SoopyV2/features/" + feature + "/"); this.watches[path.register(this.watchService, Java.type("java.nio.file.StandardWatchEventKinds").ENTRY_MODIFY)] = feature } - }catch(e){ + } catch (e) { logger.logMessage("Error loading feature " + feature, 1) console.log(JSON.stringify(e, undefined, 2)) ChatLib.chat(this.messagePrefix + "Error loading feature " + feature) @@ -546,8 +551,8 @@ class FeatureManager { return this } - unloadFeature(feature){ - if(!this.features[feature]) return + unloadFeature(feature) { + if (!this.features[feature]) return this.features[feature].class._onDisable() @@ -558,55 +563,55 @@ class FeatureManager { return this } - unloadAllFeatures(){ - Object.keys(this.features).forEach((feature)=>{ + unloadAllFeatures() { + Object.keys(this.features).forEach((feature) => { this.unloadFeature(feature) }) } - isFeatureLoaded(feature){ + isFeatureLoaded(feature) { return !!this.features[feature] } - getLoadedFeatures(){ + getLoadedFeatures() { return Object.keys(this.features) } - createCustomEvent(eventId){ + createCustomEvent(eventId) { logger.logMessage("Registered custom " + eventId + " event", 4) return { - trigger: (...args)=>{ + trigger: (...args) => { this.triggerSoopy(eventId, args) } } } - startRecordingPerformance(feature, event){ - if(!this.recordingPerformanceUsage) return + startRecordingPerformance(feature, event) { + if (!this.recordingPerformanceUsage) return - if(!this.performanceUsage[feature]) this.performanceUsage[feature] = {} - if(!this.performanceUsage[feature][event]) this.performanceUsage[feature][event] = {time: 0,count: 0} + if (!this.performanceUsage[feature]) this.performanceUsage[feature] = {} + if (!this.performanceUsage[feature][event]) this.performanceUsage[feature][event] = { time: 0, count: 0 } let instant = Instant.now() - let time = (instant.getEpochSecond() + (instant.getNano() / 1000000000))*1000; + let time = (instant.getEpochSecond() + (instant.getNano() / 1000000000)) * 1000; this.performanceUsage[feature][event].startTime = time } - stopRecordingPerformance(feature, event){ - if(!this.recordingPerformanceUsage) return + stopRecordingPerformance(feature, event) { + if (!this.recordingPerformanceUsage) return let instant = Instant.now() - let time = (instant.getEpochSecond() + (instant.getNano() / 1000000000))*1000; + let time = (instant.getEpochSecond() + (instant.getNano() / 1000000000)) * 1000; this.performanceUsage[feature][event].time += time - this.performanceUsage[feature][event].startTime this.performanceUsage[feature][event].count++ } } -if(!global.soopyv2featuremanagerthing){ +if (!global.soopyv2featuremanagerthing) { global.soopyv2featuremanagerthing = new FeatureManager() - register("gameUnload", ()=>{ + register("gameUnload", () => { global.soopyv2featuremanagerthing = undefined }) } diff --git a/features/betterGuis/dungeonReadyGui.js b/features/betterGuis/dungeonReadyGui.js index 2428f5b..956d4a6 100644 --- a/features/betterGuis/dungeonReadyGui.js +++ b/features/betterGuis/dungeonReadyGui.js @@ -25,7 +25,7 @@ class DungeonReadyGui { if(event.gui && event.gui.field_147002_h){ Player.getPlayer().field_71070_bA = event.gui.field_147002_h - if(!Player.getOpenedInventory().getName().startsWith("Catacombs - Floor ")){ + if(!Player.getContainer().getName().startsWith("Catacombs - Floor ")){ return } @@ -34,7 +34,7 @@ class DungeonReadyGui { } return } - if(name === "Start Dungeon"){ + if(name === "Start Dungeon?" || name.startsWith("Catacombs - Floor ")){ if(event.gui && event.gui.field_147002_h) Player.getPlayer().field_71070_bA = event.gui.field_147002_h this.soopyGui.open() diff --git a/features/betterGuis/index.js b/features/betterGuis/index.js index 23a7efa..1e9c144 100644 --- a/features/betterGuis/index.js +++ b/features/betterGuis/index.js @@ -118,7 +118,7 @@ class BetterGuis extends Feature { // logger.logMessage(hoveredSlotId, 4) - if(this.guiSlotClicked(ChatLib.removeFormatting(Player.getOpenedInventory().getName()), hoveredSlotId)){ + if(this.guiSlotClicked(ChatLib.removeFormatting(Player.getContainer().getName()), hoveredSlotId)){ cancel(event) } } @@ -129,19 +129,19 @@ class BetterGuis extends Feature { // if(this.dungeonReadyGuiEnabled.getValue()) this.dungeonReady.tick.call(this.dungeonReady) if(this.replaceSbMenuClicks.getValue()){ - if(Player.getOpenedInventory() && Player.getOpenedInventory().getName()==="SkyBlock Menu"){ + if(Player.getContainer() && Player.getContainer().getName()==="SkyBlock Menu"){ if(this.lastWindowId === 0){ - this.lastWindowId = Player.getOpenedInventory().getWindowId() + this.lastWindowId = Player.getContainer().getWindowId() return; } - if(Player.getOpenedInventory().getWindowId()!==this.lastWindowId){ - this.lastWindowId = Player.getOpenedInventory().getWindowId() + if(Player.getContainer().getWindowId()!==this.lastWindowId){ + this.lastWindowId = Player.getContainer().getWindowId() this.shouldHold+= 10 if(Date.now()-this.clickSlotTime >1000){ this.clickSlot = -1 } if(this.clickSlot && this.clickSlot != -1){ - Player.getOpenedInventory().click(this.clickSlot, false, "MIDDLE") + Player.getContainer().click(this.clickSlot, false, "MIDDLE") this.clickSlot = -1 } }else{ @@ -169,7 +169,7 @@ class BetterGuis extends Feature { this.clickSlot = slotId this.clickSlotTime = Date.now() }else{ - Player.getOpenedInventory().click(slotId, false, "MIDDLE") + Player.getContainer().click(slotId, false, "MIDDLE") } break; } @@ -177,18 +177,18 @@ class BetterGuis extends Feature { break default: if(this.middleClickGuis.includes(inventoryName)){ - Player.getOpenedInventory().click(slotId, false, "MIDDLE") + Player.getContainer().click(slotId, false, "MIDDLE") return true } for(let thing of this.middleClickStartsWith){ if(inventoryName.startsWith(thing)){ - Player.getOpenedInventory().click(slotId, false, "MIDDLE") + Player.getContainer().click(slotId, false, "MIDDLE") return true } } for(let thing of this.middleClickEndsWith){ if(inventoryName.endsWith(thing)){ - Player.getOpenedInventory().click(slotId, false, "MIDDLE") + Player.getContainer().click(slotId, false, "MIDDLE") return true } } diff --git a/features/betterGuis/museumGui.js b/features/betterGuis/museumGui.js index 7015e5f..0f7a3e9 100644 --- a/features/betterGuis/museumGui.js +++ b/features/betterGuis/museumGui.js @@ -46,7 +46,7 @@ class MuseumGui { this.weaponsIndicator = new SoopyBoxElement().setLocation(leftOffset, 0.05, widthPer*4/5, 0.15) this.weaponsIndicator.addEvent(new SoopyRenderEvent().setHandler(()=>{ - if(this.weaponsIndicator.hovered && ChatLib.removeFormatting(Player.getOpenedInventory().getStackInSlot(4).getName()) !== "Weapons"){ + if(this.weaponsIndicator.hovered && ChatLib.removeFormatting(Player.getContainer().getStackInSlot(4).getName()) !== "Weapons"){ this.weaponText.location.location.x.set(0.05, 500) this.weaponText.location.size.x.set(0.9, 500) this.weaponText.location.location.y.set(0.025, 500) @@ -56,7 +56,7 @@ class MuseumGui { Renderer.translate(0,0,100) Renderer.drawRect(Renderer.color(0,0,0,100), this.weaponsIndicator.location.getXExact(), this.weaponsIndicator.location.getYExact(), this.weaponsIndicator.location.getWidthExact(), this.weaponsIndicator.location.getHeightExact()) - let clicks = Player.getOpenedInventory().getName() === "Your Museum"?"1":"2" + let clicks = Player.getContainer().getName() === "Your Museum"?"1":"2" Renderer.translate(0,0,100) renderLibs.drawStringCenteredFull(clicks, this.weaponsIndicator.location.getXExact()+this.weaponsIndicator.location.getWidthExact()/2, this.weaponsIndicator.location.getYExact()+this.weaponsIndicator.location.getHeightExact()/2, Math.min(this.weaponsIndicator.location.getWidthExact()/Renderer.getStringWidth(clicks)/4, this.weaponsIndicator.location.getHeightExact()/4/2)) }else{ @@ -81,7 +81,7 @@ class MuseumGui { this.armourIndicator = new SoopyBoxElement().setLocation(leftOffset+widthPer, 0.05, widthPer*4/5, 0.15) this.armourIndicator.addEvent(new SoopyRenderEvent().setHandler(()=>{ - if(this.armourIndicator.hovered && ChatLib.removeFormatting(Player.getOpenedInventory().getStackInSlot(4).getName()) !== "Armor Sets"){ + if(this.armourIndicator.hovered && ChatLib.removeFormatting(Player.getContainer().getStackInSlot(4).getName()) !== "Armor Sets"){ this.armourText.location.location.x.set(0.05, 500) this.armourText.location.size.x.set(0.9, 500) this.armourText.location.location.y.set(0.025, 500) @@ -91,7 +91,7 @@ class MuseumGui { Renderer.translate(0,0,100) Renderer.drawRect(Renderer.color(0,0,0,100), this.armourIndicator.location.getXExact(), this.armourIndicator.location.getYExact(), this.armourIndicator.location.getWidthExact(), this.armourIndicator.location.getHeightExact()) - let clicks = Player.getOpenedInventory().getName() === "Your Museum"?"1":"2" + let clicks = Player.getContainer().getName() === "Your Museum"?"1":"2" Renderer.translate(0,0,100) renderLibs.drawStringCenteredFull(clicks, this.armourIndicator.location.getXExact()+this.armourIndicator.location.getWidthExact()/2, this.armourIndicator.location.getYExact()+this.armourIndicator.location.getHeightExact()/2, Math.min(this.armourIndicator.location.getWidthExact()/Renderer.getStringWidth(clicks)/4, this.armourIndicator.location.getHeightExact()/4/2)) }else{ @@ -115,7 +115,7 @@ class MuseumGui { this.raritiesIndicator = new SoopyBoxElement().setLocation(leftOffset+widthPer*2, 0.05, widthPer*4/5, 0.15) this.raritiesIndicator.addEvent(new SoopyRenderEvent().setHandler(()=>{ - if(this.raritiesIndicator.hovered && ChatLib.removeFormatting(Player.getOpenedInventory().getStackInSlot(4).getName()) !== "Rarities"){ + if(this.raritiesIndicator.hovered && ChatLib.removeFormatting(Player.getContainer().getStackInSlot(4).getName()) !== "Rarities"){ this.raritiesText.location.location.x.set(0.05, 500) this.raritiesText.location.size.x.set(0.9, 500) this.raritiesText.location.location.y.set(0.025, 500) @@ -125,7 +125,7 @@ class MuseumGui { Renderer.translate(0,0,100) Renderer.drawRect(Renderer.color(0,0,0,100), this.raritiesIndicator.location.getXExact(), this.raritiesIndicator.location.getYExact(), this.raritiesIndicator.location.getWidthExact(), this.raritiesIndicator.location.getHeightExact()) - let clicks = Player.getOpenedInventory().getName() === "Your Museum"?"1":"2" + let clicks = Player.getContainer().getName() === "Your Museum"?"1":"2" Renderer.translate(0,0,100) renderLibs.drawStringCenteredFull(clicks, this.raritiesIndicator.location.getXExact()+this.raritiesIndicator.location.getWidthExact()/2, this.raritiesIndicator.location.getYExact()+this.raritiesIndicator.location.getHeightExact()/2, Math.min(this.raritiesIndicator.location.getWidthExact()/Renderer.getStringWidth(clicks)/4, this.raritiesIndicator.location.getHeightExact()/4/2)) }else{ @@ -150,7 +150,7 @@ class MuseumGui { this.specialIndicator = new SoopyBoxElement().setLocation(leftOffset+widthPer*3, 0.05, widthPer*4/5, 0.15) this.specialIndicator.addEvent(new SoopyRenderEvent().setHandler(()=>{ - if(this.specialIndicator.hovered && ChatLib.removeFormatting(Player.getOpenedInventory().getStackInSlot(4).getName()) !== "Special Items"){ + if(this.specialIndicator.hovered && ChatLib.removeFormatting(Player.getContainer().getStackInSlot(4).getName()) !== "Special Items"){ this.specialText.location.location.x.set(0.05, 500) this.specialText.location.size.x.set(0.9, 500) this.specialText.location.location.y.set(0.025, 500) @@ -160,7 +160,7 @@ class MuseumGui { Renderer.translate(0,0,100) Renderer.drawRect(Renderer.color(0,0,0,100), this.specialIndicator.location.getXExact(), this.specialIndicator.location.getYExact(), this.specialIndicator.location.getWidthExact(), this.specialIndicator.location.getHeightExact()) - let clicks = Player.getOpenedInventory().getName() === "Your Museum"?"1":"2" + let clicks = Player.getContainer().getName() === "Your Museum"?"1":"2" Renderer.translate(0,0,100) renderLibs.drawStringCenteredFull(clicks, this.specialIndicator.location.getXExact()+this.specialIndicator.location.getWidthExact()/2, this.specialIndicator.location.getYExact()+this.specialIndicator.location.getHeightExact()/2, Math.min(this.specialIndicator.location.getWidthExact()/Renderer.getStringWidth(clicks)/4, this.specialIndicator.location.getHeightExact()/4/2)) @@ -302,61 +302,61 @@ class MuseumGui { } clickedTopButton(type){ - if(ChatLib.removeFormatting(Player.getOpenedInventory().getStackInSlot(4).getName())===type) return + if(ChatLib.removeFormatting(Player.getContainer().getStackInSlot(4).getName())===type) return - if(Player.getOpenedInventory().getName() === "Your Museum"){ + if(Player.getContainer().getName() === "Your Museum"){ //if on main page can just directly click on it switch(type){ case "Weapons": - Player.getOpenedInventory().click(19, false, "MIDDLE") + Player.getContainer().click(19, false, "MIDDLE") break case "Armor Sets": - Player.getOpenedInventory().click(21, false, "MIDDLE") + Player.getContainer().click(21, false, "MIDDLE") break case "Rarities": - Player.getOpenedInventory().click(23, false, "MIDDLE") + Player.getContainer().click(23, false, "MIDDLE") break case "Special Items": - Player.getOpenedInventory().click(25, false, "MIDDLE") + Player.getContainer().click(25, false, "MIDDLE") break } }else{ - Player.getOpenedInventory().click(48, false, "MIDDLE") + Player.getContainer().click(48, false, "MIDDLE") } } nextPage(){ let itempages = ["Weapons", "Armor Sets", "Rarities", "Special Items"] - if(itempages.includes(this.replacePage[Player.getOpenedInventory().getName().split("➜").pop()])){ - Player.getOpenedInventory().click(53, false, "MIDDLE") + if(itempages.includes(this.replacePage[Player.getContainer().getName().split("➜").pop()])){ + Player.getContainer().click(53, false, "MIDDLE") - let [currPage, pageNum] = Player.getOpenedInventory().getName().split(")")[0].split("(")[1].split("/").map(a=>parseInt(a)) + let [currPage, pageNum] = Player.getContainer().getName().split(")")[0].split("(")[1].split("/").map(a=>parseInt(a)) this.regenItems(currPage+1) } } previousPage(){ let itempages = ["Weapons", "Armor Sets", "Rarities", "Special Items"] - if(itempages.includes(this.replacePage[Player.getOpenedInventory().getName().split("➜").pop()])){ - Player.getOpenedInventory().click(45, false, "MIDDLE") + if(itempages.includes(this.replacePage[Player.getContainer().getName().split("➜").pop()])){ + Player.getContainer().click(45, false, "MIDDLE") - let [currPage, pageNum] = Player.getOpenedInventory().getName().split(")")[0].split("(")[1].split("/").map(a=>parseInt(a)) + let [currPage, pageNum] = Player.getContainer().getName().split(")")[0].split("(")[1].split("/").map(a=>parseInt(a)) this.regenItems(currPage-1) } } tickMenu(first=false){ if(!first && (this.tickI++)%5!==0){ - if(this.lastGuiTitle === Player.getOpenedInventory().getName()){ + if(this.lastGuiTitle === Player.getContainer().getName()){ return } } - this.lastGuiTitle = Player.getOpenedInventory().getName() + this.lastGuiTitle = Player.getContainer().getName() - if(Player.getOpenedInventory().getName() === "Your Museum"){//main page - if(!Player.getOpenedInventory().getStackInSlot(19)) return + if(Player.getContainer().getName() === "Your Museum"){//main page + if(!Player.getContainer().getStackInSlot(19)) return - let lore = Player.getOpenedInventory().getStackInSlot(19).getLore() + let lore = Player.getContainer().getStackInSlot(19).getLore() lore.forEach((line, i)=>{ if(i===0) return @@ -369,7 +369,7 @@ class MuseumGui { }) this.weaponsIndicator.setLore(lore) - lore = Player.getOpenedInventory().getStackInSlot(21).getLore() + lore = Player.getContainer().getStackInSlot(21).getLore() lore.forEach((line, i)=>{ if(i===0) return @@ -382,7 +382,7 @@ class MuseumGui { }) this.armourIndicator.setLore(lore) - lore = Player.getOpenedInventory().getStackInSlot(23).getLore() + lore = Player.getContainer().getStackInSlot(23).getLore() lore.forEach((line, i)=>{ if(i===0) return @@ -395,7 +395,7 @@ class MuseumGui { }) this.raritiesIndicator.setLore(lore) - lore = Player.getOpenedInventory().getStackInSlot(25).getLore() + lore = Player.getContainer().getStackInSlot(25).getLore() lore.forEach((line, i)=>{ if(i===0) return @@ -405,16 +405,16 @@ class MuseumGui { }) this.specialIndicator.setLore(lore) - if((this.pageTitle.text !== ("§5"+Player.getOpenedInventory().getName()) || first) && !this.searchText){ + if((this.pageTitle.text !== ("§5"+Player.getContainer().getName()) || first) && !this.searchText){ this.itemsBox.clearChildren() let rewardsButton = new ButtonWithArrow().setText("§5Rewards").setLocation(0.1,0.05,0.8,0.2) rewardsButton.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ - Player.getOpenedInventory().click(40, false, "MIDDLE") + Player.getContainer().click(40, false, "MIDDLE") })) this.itemsBox.addChild(rewardsButton) let browserButton = new ButtonWithArrow().setText("§5Museum Browser").setLocation(0.1,0.3,0.8,0.2) browserButton.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ - Player.getOpenedInventory().click(50, false, "MIDDLE") + Player.getContainer().click(50, false, "MIDDLE") })) this.itemsBox.addChild(browserButton) @@ -429,18 +429,18 @@ class MuseumGui { this.donateBox.visable = false let itempages = ["Weapons", "Armor Sets", "Rarities", "Special Items"] - if(itempages.includes(this.replacePage[Player.getOpenedInventory().getName().split("➜").pop()])){ - let page = this.replacePage[Player.getOpenedInventory().getName().split("➜").pop()] - let [currPage, pageNum] = Player.getOpenedInventory().getName().includes("/")?Player.getOpenedInventory().getName().split(")")[0].split("(")[1].split("/").map(a=>parseInt(a)):[1,1] + if(itempages.includes(this.replacePage[Player.getContainer().getName().split("➜").pop()])){ + let page = this.replacePage[Player.getContainer().getName().split("➜").pop()] + let [currPage, pageNum] = Player.getContainer().getName().includes("/")?Player.getContainer().getName().split(")")[0].split("(")[1].split("/").map(a=>parseInt(a)):[1,1] if(!this.searchText){ if(currPage > 1){ this.previousButton.visable = true - if(Player.getOpenedInventory().getStackInSlot(45)) this.previousButton.setLore(Player.getOpenedInventory().getStackInSlot(45).getLore()) + if(Player.getContainer().getStackInSlot(45)) this.previousButton.setLore(Player.getContainer().getStackInSlot(45).getLore()) } if(currPage < pageNum){ this.nextButton.visable = true - if(Player.getOpenedInventory().getStackInSlot(53))this.nextButton.setLore(Player.getOpenedInventory().getStackInSlot(53).getLore()) + if(Player.getContainer().getStackInSlot(53))this.nextButton.setLore(Player.getContainer().getStackInSlot(53).getLore()) } } @@ -449,7 +449,7 @@ class MuseumGui { let oldDonateItems = JSON.stringify(this.donateItems) this.donateItems = [] let donateArmorSets = {} - Player.getOpenedInventory().getItems().forEach((item, slot)=>{ + Player.getContainer().getItems().forEach((item, slot)=>{ if(!item) return if(item.getID() === -1) return item.getLore().forEach(line=>{ @@ -495,7 +495,7 @@ class MuseumGui { for(let i = 0;i<4;i++){ for(let j = 10;j<17;j++){ let slot = i*9+j - let item = Player.getOpenedInventory().getStackInSlot(slot) + let item = Player.getContainer().getStackInSlot(slot) let sb_id = utils.getSBID(item) if(!this.itemsInPages[page][currPage]) this.itemsInPages[page][currPage] = [] @@ -529,37 +529,37 @@ class MuseumGui { if(changed || this.guiUpdated || first) this.regenItems(currPage) } - if(Player.getOpenedInventory().getName() === "Confirm Donation"){ - let this_confirm_temp_str = (Player.getOpenedInventory().getStackInSlot(4)?.getName() || "") +(Player.getOpenedInventory().getStackInSlot(2)?.getName() || "") + (Player.getOpenedInventory().getStackInSlot(20)?.getName() || "") + (Player.getOpenedInventory().getStackInSlot(24)?.getName() || "")//4, 24, 20 + if(Player.getContainer().getName() === "Confirm Donation"){ + let this_confirm_temp_str = (Player.getContainer().getStackInSlot(4)?.getName() || "") +(Player.getContainer().getStackInSlot(2)?.getName() || "") + (Player.getContainer().getStackInSlot(20)?.getName() || "") + (Player.getContainer().getStackInSlot(24)?.getName() || "")//4, 24, 20 if(this.confirm_temp !== this_confirm_temp_str || first){ this.confirm_temp = this_confirm_temp_str this.itemsBox.clearChildren() - let isArmour = utils.getSBID(Player.getOpenedInventory().getStackInSlot(4))===null + let isArmour = utils.getSBID(Player.getContainer().getStackInSlot(4))===null if(isArmour){ - let name = Player.getOpenedInventory().getStackInSlot(2).getName() - let itemBox = new BoxWithText().setText(name.startsWith("§f")?"&7"+name.substr(2):name).setLocation(0.1,0.05,0.8,0.2).setLore(Player.getOpenedInventory().getStackInSlot(2).getLore()) + let name = Player.getContainer().getStackInSlot(2).getName() + let itemBox = new BoxWithText().setText(name.startsWith("§f")?"&7"+name.substr(2):name).setLocation(0.1,0.05,0.8,0.2).setLore(Player.getContainer().getStackInSlot(2).getLore()) this.itemsBox.addChild(itemBox) }else{ - let name = Player.getOpenedInventory().getStackInSlot(4).getName() - let itemBox = new BoxWithText().setText(name.startsWith("§f")?"&7"+name.substr(2):name).setLocation(0.1,0.05,0.8,0.2).setLore(Player.getOpenedInventory().getStackInSlot(4).getLore()) + let name = Player.getContainer().getStackInSlot(4).getName() + let itemBox = new BoxWithText().setText(name.startsWith("§f")?"&7"+name.substr(2):name).setLocation(0.1,0.05,0.8,0.2).setLore(Player.getContainer().getStackInSlot(4).getLore()) this.itemsBox.addChild(itemBox) } - if(Player.getOpenedInventory().getStackInSlot(24) && Player.getOpenedInventory().getStackInSlot(20)){ + if(Player.getContainer().getStackInSlot(24) && Player.getContainer().getStackInSlot(20)){ - let cancelButton = new ButtonWithArrow().setText("§cCancel").setLocation(0.1,0.4,0.35,0.2).setDirectionRight(false).setLore(Player.getOpenedInventory().getStackInSlot(24).getLore()) + let cancelButton = new ButtonWithArrow().setText("§cCancel").setLocation(0.1,0.4,0.35,0.2).setDirectionRight(false).setLore(Player.getContainer().getStackInSlot(24).getLore()) cancelButton.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ - Player.getOpenedInventory().click(24, false, "LEFT") + Player.getContainer().click(24, false, "LEFT") })) this.itemsBox.addChild(cancelButton) - let confirmButton = new ButtonWithArrow().setText("§aConfirm Donation").setLocation(0.55,0.4,0.35,0.2).setLore(Player.getOpenedInventory().getStackInSlot(20).getLore()) + let confirmButton = new ButtonWithArrow().setText("§aConfirm Donation").setLocation(0.55,0.4,0.35,0.2).setLore(Player.getContainer().getStackInSlot(20).getLore()) confirmButton.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ - Player.getOpenedInventory().click(20, false, "LEFT") + Player.getContainer().click(20, false, "LEFT") })) this.itemsBox.addChild(confirmButton) } @@ -579,7 +579,7 @@ class MuseumGui { this.favoriteTitleBox.visable = true } - this.pageTitle.setText("§5"+Player.getOpenedInventory().getName()) + this.pageTitle.setText("§5"+Player.getContainer().getName()) this.guiUpdated = false } @@ -588,7 +588,7 @@ class MuseumGui { this.donateItems.forEach((item, i)=>{ let itemButton = new ButtonWithArrow().setText(item.name.startsWith("§f")?"&7"+item.name.substr(2):item.name).setLocation(0.05,0.025+0.125*i,0.9,0.1).setLore(item.lore) itemButton.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ - Player.getOpenedInventory().click(item.slot, false, "LEFT") + Player.getContainer().click(item.slot, false, "LEFT") })) this.donateBox.addChild(itemButton) }) @@ -597,7 +597,7 @@ class MuseumGui { } showSearchItems(){ - if(Player.getOpenedInventory().getName() === "Confirm Donation") return + if(Player.getContainer().getName() === "Confirm Donation") return if(!this.searchText){ this.tickMenu(true) @@ -663,21 +663,21 @@ class MuseumGui { this.addItemToFavorites(fItem, fItem.page, fItem.page2, fItem.slotNum) return } - // Player.getOpenedInventory().click(item.slotNum, false,button===1?"RIGHT":"LEFT") + // Player.getContainer().click(item.slotNum, false,button===1?"RIGHT":"