/// /// import SoopyGuiElement from "../../../guimanager/GuiElement/SoopyGuiElement"; import SoopyTextElement from "../../../guimanager/GuiElement/SoopyTextElement"; import Feature from "../../featureClass/class"; import GuiPage from "../soopyGui/GuiPage"; import SoopyMarkdownElement from '../../../guimanager/GuiElement/SoopyMarkdownElement.js'; import metadata from "../../metadata"; import ButtonWithArrow from "../../../guimanager/GuiElement/ButtonWithArrow"; import SoopyMouseClickEvent from "../../../guimanager/EventListener/SoopyMouseClickEvent"; import ProgressBar from "../../../guimanager/GuiElement/ProgressBar" import SoopyRenderEvent from "../../../guimanager/EventListener/SoopyRenderEvent" import { fetch } from "../../utils/networkUtils"; const File = Java.type("java.io.File") const URL = Java.type("java.net.URL"); const PrintStream = Java.type("java.io.PrintStream"); const Byte = Java.type("java.lang.Byte"); class ChangeLogGui extends Feature { constructor() { super() } onEnable(){ this.initVariables() this.ChangelogPage = new ChangelogPage() this.latestAnnouncedVersion = this.ChangelogPage.currVersionId // this.registerEvent("worldLoad", this.worldLoad) } // worldLoad(){ // if(!this.FeatureManager.features["globalSettings"]) return // if(!this.FeatureManager.features["globalSettings"].class.notifyNewVersion.getValue()) return // if(this.ChangelogPage.downloadableVersion === -1) return // if(this.latestAnnouncedVersion < this.ChangelogPage.downloadableVersion){ // let version = "" // this.ChangelogPage.changelogData.forEach(data=>{ // if(this.ChangelogPage.downloadableVersion === data.versionId && this.ChangelogPage.downloadableVersion > this.ChangelogPage.currVersionId){ // //add button to download this version // version = data.version // } // }) // ChatLib.chat("&1" + ChatLib.getChatBreak("-").substr(1)) // ChatLib.chat(" &6New Soopyaddons Version is avalible (" + version + ")") // ChatLib.chat("") // new TextComponent(" &e[CLICK] &7- View changelog and download update").setHover("show_text", "&2Open changelog").setClick("run_command", "/soopyv2 changelog").chat() // ChatLib.chat("&1" + ChatLib.getChatBreak("-").substr(1)) // this.latestAnnouncedVersion = this.ChangelogPage.downloadableVersion // } // } initVariables(){ this.ChangelogPage = undefined } onDisable(){ this.initVariables() } } class ChangelogPage extends GuiPage { constructor(){ super(9) this.name = "Changelog" this.pages = [this.newPage()] this.changelogData = [] this.downloadableVersion = -1 let changelogTitle = new SoopyTextElement().setText("§0Changelog").setMaxTextScale(3).setLocation(0.1, 0.05, 0.8, 0.1) this.pages[0].addChild(changelogTitle) this.changelogArea = new SoopyGuiElement().setLocation(0.1, 0.2, 0.8, 0.8).setScrollable(true) this.pages[0].addChild(this.changelogArea) //Update confirmation page this.updatingSidebar =new SoopyGuiElement().setLocation(0,0,1,1) this.updatingSidebarConfirmPage = new SoopyGuiElement().setLocation(0,0,1,1) this.updatingSidebar.addChild(this.updatingSidebarConfirmPage) this.updateTitle = new SoopyTextElement().setText("§0Update to SoopyAddons ").setMaxTextScale(3).setLocation(0.1, 0.05, 0.8, 0.1) this.updatingSidebarConfirmPage.addChild(this.updateTitle) // this.warningMessage = new SoopyMarkdownElement().setLocation(0.1, 0.2, 0.8, 0.8) // this.warningMessage.setText(`# NOTE // Updating SoopyAddons through this method is downloading the code from _§cmy server_ // This means that there is _§cno_ third party that is double checking the code to ensure there is no virus in it. // This is fine if you trust me to not put a virus in it, but if you dont you should instead wait for the update to be checked and verified by the chattriggers people.`) // this.updatingSidebarConfirmPage.addChild(this.warningMessage) // this.updateButton = new ButtonWithArrow().setText("§0Update").setLocation(0.3, 0.3+this.warningMessage.getHeight(), 0.4, 0.2) // this.updatingSidebarConfirmPage.addChild(this.updateButton) // this.updatingSidebarConfirmPage.setScrollable(true) // this.updateButton.addEvent(new SoopyRenderEvent().setHandler(()=>{ // this.updateButton.location.location.y.set(0.3+this.warningMessage.getHeight(),0) // })) // this.updateButton.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ // this.downloadUpdate() // })) // this.updatingSidebarLoadingPage = new SoopyGuiElement().setLocation(1,0,1,1) // this.updatingSidebar.addChild(this.updatingSidebarLoadingPage) // let updatingTitle = new SoopyTextElement().setText("§0Updating...").setMaxTextScale(3).setLocation(0.1, 0.05, 0.8, 0.1) // this.updatingSidebarLoadingPage.addChild(updatingTitle) // this.progressBar = new ProgressBar().setLocation(0.1, 0.2, 0.8, 0.1) // this.updatingSidebarLoadingPage.addChild(this.progressBar) this.currVersionId = metadata.versionId this.finaliseLoading() this.loadChangeLog() } loadChangeLog(){ fetch("http://soopymc.my.to/api/soopyv2/changelog.json").json(data=>{ this.changelogData = data.changelog.reverse() this.downloadableVersion = data.downloadableVersion this.updateText() }) } onOpen(){ this.loadChangeLog() } // showConfirmUpdatePage(){ // let version = "" // this.changelogData.forEach(data=>{ // if(this.downloadableVersion === data.versionId && this.downloadableVersion > this.currVersionId){ // //add button to download this version // version = data.version // } // }) // this.updateTitle.setText("§0Update to SoopyAddons " + version) // this.updateButton.location.location.y.set(0.3+this.warningMessage.getHeight(),0) // this.openSidebarPage(this.updatingSidebar) // } // downloadUpdate(){ // new Thread(()=>{ // this.updatingSidebarConfirmPage.location.location.x.set(-1,500) // this.updatingSidebarLoadingPage.location.location.x.set(0,500) // new File("./config/ChatTriggers/modules/SoopyAddonsTempDownload").mkdir() // this.progressBar.setProgress(0.1) // this.urlToFile("http://soopymc.my.to/api/soopyv2/downloadLatest.zip", "./config/ChatTriggers/modules/SoopyAddonsTempDownload/SoopyAddons.zip", 10000, 20000) // this.progressBar.setProgress(0.5) // FileLib.unzip("./config/ChatTriggers/modules/SoopyAddonsTempDownload/SoopyAddons.zip", "./config/ChatTriggers/modules/SoopyAddonsTempDownload/SoopyAddons/") // this.progressBar.setProgress(0.75) // FileLib.deleteDirectory(new File("./config/ChatTriggers/modules/SoopyV2")) // this.progressBar.setProgress(0.9) // new File("./config/ChatTriggers/modules/SoopyAddonsTempDownload/SoopyAddons/SoopyV2").renameTo(new File("./config/ChatTriggers/modules/SoopyV2")) // FileLib.deleteDirectory(new File("./config/ChatTriggers/modules/SoopyAddonsTempDownload")) // this.progressBar.setProgress(1) // Client.currentGui.close() // ChatLib.command("ct load", true) // }).start() // } // urlToFile(url, destination, connecttimeout, readtimeout) { // const d = new File(destination); // d.getParentFile().mkdirs(); // const connection = new URL(url).openConnection(); // connection.setDoOutput(true); // connection.setConnectTimeout(connecttimeout); // connection.setReadTimeout(readtimeout); // const IS = connection.getInputStream(); // const FilePS = new PrintStream(destination); // let buf = new Packages.java.lang.reflect.Array.newInstance(Byte.TYPE, 65536); // let len; // while ((len = IS.read(buf)) > 0) { // FilePS.write(buf, 0, len); // } // IS.close(); // FilePS.close(); // } updateText(){ this.changelogArea.children = [] let height = 0 this.changelogData.forEach(data=>{ // if(this.downloadableVersion === data.versionId && this.downloadableVersion > this.currVersionId){ // //add button to download this version // let button = new ButtonWithArrow().setText("§0Download this version").setLocation(0.7, height, 0.3, 0.1) // this.changelogArea.addChild(button) // button.addEvent(new SoopyMouseClickEvent().setHandler(()=>{ // this.showConfirmUpdatePage() // })) // height += 0.05 // } let changes = new SoopyMarkdownElement().setLocation(0,height, 1, 0) this.changelogArea.addChild(changes) changes.setText("# __" + data.version + "__" + (data.versionId === this.currVersionId?" §7Current" : "") + "\n" + data.description) height += changes.getHeight() height += 0.1 }) } } module.exports = { class: new ChangeLogGui() }