Ver Fonte

Added News UI.

Added News UI and implemented functionality.
Removed westeroscraft.xml as we don't need to cache it.
Updated westeroscraft.json.
Updated Electron to v2.0.0
Daniel Scalzi há 7 anos atrás
pai
commit
40de1e3cd3

+ 289 - 75
app/assets/css/launcher.css

@@ -893,6 +893,8 @@ p {
 #landingContainer {
     height: 100%;
     position: relative;
+    transition: background 2s ease;
+    overflow-y: hidden;
 }
 
 /* Upper content container. */
@@ -953,6 +955,7 @@ p {
 }
 #landingContainer > #lower > #center #content {
     position: relative;
+    z-index: 500;
     transition: top 2s ease;
     top: 10px;
 }
@@ -965,6 +968,262 @@ p {
     display: inline-flex;
 }
 
+/*******************************************************************************
+ *                                                                             *
+ * Landing View (News Styles)                                                  *
+ *                                                                             *
+ ******************************************************************************/
+
+/* Main container. */
+#newsContainer {
+    position: absolute;
+    top: 100%;
+    height: 100%;
+    width: 100%;
+    transition: top 2s ease;
+    display: flex;
+    align-items: flex-end;
+    justify-content: center;
+}
+
+/* News content container. */
+#newsContent {
+    height: 82vh;
+    width: 82vw;
+    display: flex;
+}
+
+/* News article status container (left). */
+#newsStatusContainer {
+    width: 25%;
+    height: 100%;
+    padding: 15px;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+}
+
+/* News status content. */
+#newsStatusContent {
+    display: flex;
+    flex-direction: column;
+}
+
+/* News article title styles. */
+#newsArticleTitle {
+    font-size: 20px;
+    font-weight: bold;
+    font-family: 'Avenir Medium';
+}
+#newsArticleTitle {
+    color: white;
+    text-decoration: none;
+    transition: 0.25s ease;
+}
+#newsArticleTitle:hover,
+#newsArticleTitle:focus {
+    text-shadow: 0px 0px 20px white;
+}
+#newsArticleTitle:active {
+    color: #c7c7c7;
+    text-shadow: 0px 0px 20px #c7c7c7;
+}
+
+/* News meta container. */
+#newsMetaContainer {
+    display: flex;
+    flex-direction: column;
+}
+
+/* Date and author shared styles. */
+#newsArticleDate,
+#newsArticleAuthor {
+    display: inline-block;
+    font-size: 10px;
+    color: rgb(255, 255, 255);
+    font-family: 'Avenir Book';
+    padding: 0px 5px;
+    font-weight: bold;
+    border-radius: 2px;
+}
+
+/* Date styles. */
+#newsArticleDate {
+    background: white;
+    color: black;
+    margin-top: 5px;
+}
+
+/* Author styles. */
+#newsArticleAuthor {
+    background: #a02d2a;
+}
+
+/* News article comments styles. */
+#newsArticleComments {
+    margin-top: 5px;
+    display: inline-block;
+    font-size: 10px;
+    color: rgb(255, 255, 255);
+    font-family: 'Avenir Book';
+    text-decoration: none;
+    transition: 0.25s ease;
+}
+#newsArticleComments:focus,
+#newsArticleComments:hover {
+    color: #e0e0e0;
+}
+#newsArticleComments:active {
+    color: #c7c7c7;
+}
+
+/* Article content container (right). */
+#newsArticleContainer {
+    width: 75%;
+    height: 100%;
+}
+
+/* Article content styles. */
+#newsArticleContentScrollable {
+    color: white;
+    font-family: 'Avenir Book';
+    font-size: 12px;
+    max-width: 80%;
+    margin: 25px 35px 0px 25px;
+    overflow-y: scroll;
+    height: calc(100% - 25px);
+    padding: 0px 15px 0px 15px;
+}
+#newsArticleContentScrollable img {
+    max-width: 95%;
+    display: block;
+    margin: 0 auto;
+}
+#newsArticleContentScrollable a {
+    color: rgba(202, 202, 202, 0.75);
+    transition: 0.25s ease;
+}
+#newsArticleContentScrollable a:hover,
+#newsArticleContentScrollable a:focus {
+    color: rgba(255, 255, 255, 0.75);
+}
+#newsArticleContentScrollable a:active {
+    color: rgba(165, 165, 165, 0.75);
+}
+#newsArticleContentScrollable::-webkit-scrollbar {
+    width: 2px;
+}
+#newsArticleContentScrollable::-webkit-scrollbar-track {
+    display: none;
+}
+#newsArticleContentScrollable::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.50);
+}
+
+/* News navigation container. */
+#newsNavigationContainer {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    margin-bottom: 40px;
+}
+
+/* Navigation status span. */
+#newsNavigationStatus {
+    color: white;
+    font-family: 'Avenir Book';
+    font-size: 12px;
+    margin: 0px 15px;
+}
+
+/* Left and right navigation button styles. */
+#newsNavigateLeft,
+#newsNavigateRight {
+    color: white;
+    font-family: 'Avenir Book';
+    background: none;
+    border: none;
+    outline: none;
+    height: 20px;
+    cursor: pointer;
+}
+#newsNavigateLeft:hover #newsNavigationLeftSVG,
+#newsNavigateLeft:focus #newsNavigationLeftSVG,
+#newsNavigateRight:hover #newsNavigationRightSVG,
+#newsNavigateRight:focus #newsNavigationRightSVG {
+    -webkit-filter: drop-shadow(0px 0px 2px #fff);
+}
+#newsNavigateLeft:active #newsNavigationLeftSVG .arrowLine,
+#newsNavigateRight:active #newsNavigationRightSVG .arrowLine {
+    stroke: #c7c7c7;
+}
+#newsNavigateLeft:active #newsNavigationLeftSVG,
+#newsNavigateRight:active #newsNavigationRightSVG {
+    -webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
+}
+#newsNavigateLeft:disabled #newsNavigationLeftSVG .arrowLine,
+#newsNavigateRight:disabled #newsNavigationRightSVG .arrowLine {
+    stroke: rgba(255, 255, 255, 0.75);
+}
+#newsNavigationLeftSVG {
+    transform: rotate(-90deg);
+    width: 15px;
+}
+#newsNavigationRightSVG {
+    transform: rotate(90deg);
+    width: 15px;
+}
+
+/* News error (message) container. */
+#newsErrorContainer {
+    height: 100%;
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+    justify-content: center;
+}
+#newsErrorFailed {
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+    justify-content: center;
+}
+
+/* News error content (message). */
+.newsErrorContent {
+    color: white;
+    font-size: 20px;
+    font-family: 'Avenir Book';
+}
+#newsErrorLoading {
+    display: flex;
+    width: 168.92px;
+}
+#nELoadSpan {
+    white-space: pre;
+}
+/* News error retry button styles. */
+#newsErrorRetry {
+    color: #ffffff;
+    font-family: 'Avenir Book';
+    font-size: 12px;
+    font-weight: bold;
+    cursor: pointer;
+    background: none;
+    border: none;
+    outline: none;
+    transition: 0.25s ease;
+}
+#newsErrorRetry:focus,
+#newsErrorRetry:hover {
+    text-shadow: 0px 0px 20px white;
+}
+#newsErrorRetry:active {
+    color: #c7c7c7;
+    text-shadow: 0px 0px 20px #c7c7c7;
+}
+
 /*******************************************************************************
  *                                                                             *
  * Landing View (Top Styles)                                                   *
@@ -976,16 +1235,6 @@ p {
 * * */
 
 /* Logo image. */
-/*#image_seal {
-    height: 70px;
-    width: auto;
-    position: relative;
-    margin-top: 50px;
-    border: 2px solid white;
-    border-radius: 50%;
-    box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
-}*/
-
 #image_seal {
     height: 70px;
     width: auto;
@@ -995,6 +1244,7 @@ p {
     border-radius: 50%;
 }
 
+/* Logo container styles. */
 #image_seal_container {
     position: relative;
     height: 70px;
@@ -1002,6 +1252,8 @@ p {
     border-radius: 50%;
     margin-top: 50px;
 }
+
+/* Logo container styles w/ update. */
 #image_seal_container[update]{
     cursor: pointer
 }
@@ -1023,6 +1275,7 @@ p {
     animation-delay: 2s;
 }
 
+/* Update available tooltip styles. */
 #updateAvailableTooltip {
     cursor: pointer;
     visibility: hidden;
@@ -1058,6 +1311,7 @@ p {
     transition-delay: 0s;
 }
 
+/* Update available animation. */
 @keyframes glow-grow {
     0% {
         opacity: 0;
@@ -1071,53 +1325,7 @@ p {
         opacity: 0;
     }
 }
-/*
-#image_seal {
-    height: 70px;
-    width: auto;
-    position: relative;
-    border-radius: 50%;
-    box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
-}
 
-#image_seal_container {
-    position: relative;
-    height: 70px;
-    width: 70px;
-    border-radius: 50%;
-    border: 2px solid white;
-    margin-top: 50px;
-}
-#image_seal_container:before,
-#image_seal_container:after {
-    position: absolute;
-    content: '';
-    height: 100%;
-    width: 100%;
-    top: 0%;
-    left: 0%;
-    border-radius: 50%;
-    box-shadow: 0 0 15px #43c628;
-    animation: glow-grow 3.25s ease-out infinite;
-}
-#image_seal_container{
-    animation-delay: 0s;
-}
-@keyframes glow-grow {
-    0% {
-        opacity: 0.8;
-        transform: scale(1.02);
-    }
-    50% {
-        opacity: 1;
-        transform: scale(1.07);
-    }
-    100% {
-        transform: scale(1.02);
-        opacity: 0.8;
-    }
-}
-*/
 /* * *
 * Landing View (Bottom Styles) | Right Content
 * * */
@@ -1247,9 +1455,13 @@ p {
     outline: none;
 }
 
-/* News icon colors. */
-#newsSVG {
+/* Settings icon colors. */
+#settingsSVG {
     stroke: #ffffff;
+    height: 15px;
+}
+#settingsSVG:hover {
+    height: 23px;
 }
 
 /* Twitter icon colors. */
@@ -1345,46 +1557,46 @@ p {
 * Landing View (Bottom Styles) | Center Content
 * * */
 
-/* Button which opens the menu view. */
-#menu_button {
+/* Button which opens the news view. */
+#newsButton {
     font-family: 'Avenir Book';
     background: none;
     border: none;
     cursor: pointer;
     outline: none;
 }
-#menu_button:hover #menu_text,
-#menu_button:focus #menu_text {
+#newsButton:hover #newsButtonText,
+#newsButton:focus #newsButtonText {
     text-shadow: 0px 0px 20px #fff, 0px 0px 20px #fff;
 }
-#menu_button:active {
+#newsButton:active {
     color: #c7c7c7;
     text-shadow: 0px 0px 20px #c7c7c7, 0px 0px 20px #c7c7c7;
 }
 
-#menu_button:hover #menu_img,
-#menu_button:focus #menu_img {
+#newsButton:hover #newsButtonSVG,
+#newsButton:focus #newsButtonSVG {
     -webkit-filter: drop-shadow(0px 0px 2px #fff);
 }
-#menu_button:active #menu_img .arrowLine {
+#newsButton:active #newsButtonSVG .arrowLine {
     stroke: #c7c7c7;
 }
-#menu_button:active #menu_img {
+#newsButton:active #newsButtonSVG {
     -webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
 }
-#menu_button:disabled #menu_img .arrowLine {
+#newsButton:disabled #newsButtonSVG .arrowLine {
     stroke: rgba(255, 255, 255, 0.75);
 }
 
-/* Arrow image which floats above the menu button. */
-#menu_img {
+/* Arrow image which floats above the news button. */
+#newsButtonSVG {
     height: 11px;
     margin-left: -2px;
     transition: 0.25s ease;
 }
 
-/* Span which contains the menu button text. */
-#menu_text {
+/* Span which contains the news button text. */
+#newsButtonText {
     color: white;
     font-weight: 900;
     letter-spacing: 2px;
@@ -1552,11 +1764,12 @@ p {
     transition: 0.25s ease;
 }
 #overlayContent a:hover,
-#overlayDismiss {
+#overlayContent a:focus,
+#overlayDismiss:focus {
     color: rgba(255, 255, 255, 0.75);
 }
 #overlayContent a:active,
-#overlayDismiss {
+#overlayDismiss:active {
     color: rgba(165, 165, 165, 0.75);
 }
 
@@ -1872,7 +2085,8 @@ p {
     outline: none;
     cursor: pointer;
 }
-#serverSelectCancel:hover {
+#serverSelectCancel:hover,
+#serverSelectCancel:focus {
     color: rgba(255, 255, 255, 0.75);
 }
 #serverSelectCancel:active {

+ 4 - 0
app/assets/js/assetexec.js

@@ -26,6 +26,10 @@ tracker.on('jExtracted', (jPath) => {
     process.send({task: 2, content: 'dl', jPath})
 })
 
+tracker.on('dlerror', (err) => {
+    process.send({task: 0.9, content: 'dl', err})
+})
+
 process.on('message', (msg) => {
     if(msg.task === 0){
         const func = msg.content

+ 3 - 0
app/assets/js/assetguard.js

@@ -1555,6 +1555,9 @@ class AssetGuard extends EventEmitter {
                         cb()
                     }
                 })
+                req.on('error', (err) => {
+                    self.emit('dlerror', err)
+                })
                 req.on('data', function(chunk){
                     count += chunk.length
                     self.progress += chunk.length

+ 269 - 36
app/assets/js/scripts/landing.js

@@ -22,6 +22,17 @@ const launch_details_text     = document.getElementById('launch_details_text')
 const server_selection_button = document.getElementById('server_selection_button')
 const user_text               = document.getElementById('user_text')
 
+// News Elements
+const newsContent             = document.getElementById('newsContent')
+const newsArticleTitle        = document.getElementById('newsArticleTitle')
+const newsArticleDate         = document.getElementById('newsArticleDate')
+const newsArticleAuthor       = document.getElementById('newsArticleAuthor')
+const newsArticleComments     = document.getElementById('newsArticleComments')
+const newsNavigationStatus    = document.getElementById('newsNavigationStatus')
+const newsArticleContent      = document.getElementById('newsArticleContentScrollable')
+const newsErrorContainer      = document.getElementById('newsErrorContainer')
+const nELoadSpan              = document.getElementById('nELoadSpan')
+
 /* Launch Progress Wrapper Functions */
 
 /**
@@ -127,41 +138,6 @@ server_selection_button.addEventListener('click', (e) => {
     toggleServerSelection(true)
 })
 
-let menuActive = false
-// Test menu transform.
-function slide_(up){
-    const lCUpper = document.querySelector('#landingContainer > #upper')
-    const lCLLeft = document.querySelector('#landingContainer > #lower > #left')
-    const lCLCenter = document.querySelector('#landingContainer > #lower > #center')
-    const lCLRight = document.querySelector('#landingContainer > #lower > #right')
-    const menuBtn = document.querySelector('#landingContainer > #lower > #center #content')
-
-    if(up){
-        lCUpper.style.top = '-200vh'
-        lCLLeft.style.top = '-200vh'
-        lCLCenter.style.top = '-200vh'
-        lCLRight.style.top = '-200vh'
-        menuBtn.style.top = '130vh'
-        /*setTimeout(() => {
-            lCLCenter.style.transition = 'none'
-            menuBtn.style.transition = 'none'
-        }, 2000)*/
-    } else {
-        //lCLCenter.style.transition = null
-        //menuBtn.style.transition = null
-        lCUpper.style.top = '0px'
-        lCLLeft.style.top = '0px'
-        lCLCenter.style.top = '0px'
-        lCLRight.style.top = '0px'
-        menuBtn.style.top = '10px'
-    }
-}
-
-document.getElementById('menu_button').onclick = () => {
-    slide_(!menuActive)
-    menuActive = !menuActive
-}
-
 // Update Mojang Status Color
 const refreshMojangStatuses = async function(){
     console.log('Refreshing Mojang Statuses..')
@@ -491,6 +467,18 @@ function dlAsync(login = true){
                     setLaunchDetails(eLStr + dotStr)
                 }, 750)
 
+            } else if(m.task === 0.9) {
+                
+                if(m.err.code === 'ENOENT'){
+                    setLaunchDetails('Download error.. internet?')
+                } else {
+                    setLaunchDetails('Download error.. try again.')
+                }
+
+                setTimeout(() => {
+                    toggleLaunchArea(false)
+                }, 5000)
+
             } else if(m.task === 1){
 
                 // Download will be at 100%, remove the loading from the OS progress bar.
@@ -591,4 +579,249 @@ function dlAsync(login = true){
     // Validate Forge files.
     setLaunchDetails('Loading server information..')
     aEx.send({task: 0, content: 'validateDistribution', argsArr: [ConfigManager.getSelectedServer()]})
-}
+}
+
+/**
+ * News Loading Functions
+ */
+
+// News slide caches.
+let newsActive = false
+let newsGlideCount = 0
+
+/**
+ * Show the news UI via a slide animation.
+ * 
+ * @param {boolean} up True to slide up, otherwise false. 
+ */
+function slide_(up){
+    const lCUpper = document.querySelector('#landingContainer > #upper')
+    const lCLLeft = document.querySelector('#landingContainer > #lower > #left')
+    const lCLCenter = document.querySelector('#landingContainer > #lower > #center')
+    const lCLRight = document.querySelector('#landingContainer > #lower > #right')
+    const newsBtn = document.querySelector('#landingContainer > #lower > #center #content')
+    const landingContainer = document.getElementById('landingContainer')
+    const newsContainer = document.querySelector('#landingContainer > #newsContainer')
+
+    newsGlideCount++
+
+    if(up){
+        lCUpper.style.top = '-200vh'
+        lCLLeft.style.top = '-200vh'
+        lCLCenter.style.top = '-200vh'
+        lCLRight.style.top = '-200vh'
+        newsBtn.style.top = '130vh'
+        newsContainer.style.top = '0px'
+        //date.toLocaleDateString('en-US', {month: 'short', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric'})
+        //landingContainer.style.background = 'rgba(29, 29, 29, 0.55)'
+        landingContainer.style.background = 'rgba(0, 0, 0, 0.50)'
+        setTimeout(() => {
+            if(newsGlideCount === 1){
+                lCLCenter.style.transition = 'none'
+                newsBtn.style.transition = 'none'
+            }
+            newsGlideCount--
+        }, 2000)
+    } else {
+        setTimeout(() => {
+            newsGlideCount--
+        }, 2000)
+        landingContainer.style.background = null
+        lCLCenter.style.transition = null
+        newsBtn.style.transition = null
+        newsContainer.style.top = '100%'
+        lCUpper.style.top = '0px'
+        lCLLeft.style.top = '0px'
+        lCLCenter.style.top = '0px'
+        lCLRight.style.top = '0px'
+        newsBtn.style.top = '10px'
+    }
+}
+
+// Bind news button.
+document.getElementById('newsButton').onclick = () => {
+    slide_(!newsActive)
+    newsActive = !newsActive
+}
+
+// Array to store article meta.
+let newsArr = null
+
+// News load animation listener.
+let newsLoadingListener = null
+
+/**
+ * Set the news loading animation.
+ * 
+ * @param {boolean} val True to set loading animation, otherwise false.
+ */
+function setNewsLoading(val){
+    if(val){
+        const nLStr = 'Checking for News'
+        let dotStr = '..'
+        nELoadSpan.innerHTML = nLStr + dotStr
+        newsLoadingListener = setInterval(() => {
+            if(dotStr.length >= 3){
+                dotStr = ''
+            } else {
+                dotStr += '.'
+            }
+            nELoadSpan.innerHTML = nLStr + dotStr
+        }, 750)
+    } else {
+        if(newsLoadingListener != null){
+            clearInterval(newsLoadingListener)
+            newsLoadingListener = null
+        }
+    }
+}
+
+// Bind retry button.
+newsErrorRetry.onclick = () => {
+    $('#newsErrorFailed').fadeOut(250, () => {
+        initNews()
+        $('#newsErrorLoading').fadeIn(250)
+    })
+}
+
+/**
+ * Reload the news without restarting.
+ */
+async function reloadNews(){
+    $('#newsContent').fadeOut(250, () => {
+        $('#newsErrorLoading').fadeIn(250)
+    })
+    await initNews()
+}
+
+/**
+ * Initialize News UI. This will load the news and prepare
+ * the UI accordingly.
+ */
+async function initNews(){
+    setNewsLoading(true)
+
+    let news = {}
+
+    try {
+        news = await loadNews()
+    } catch (err) {
+        // Empty
+    }
+
+    newsArr = news.articles || null
+
+    if(newsArr == null){
+        // News Loading Failed
+        setNewsLoading(false)
+
+        $('#newsErrorLoading').fadeOut(250, () => {
+            $('#newsErrorFailed').fadeIn(250)
+        })
+    } else if(newsArr.length === 0) {
+        // No News Articles
+        setNewsLoading(false)
+
+        $('#newsErrorLoading').fadeOut(250, () => {
+            $('#newsErrorNone').fadeIn(250)
+        })
+    } else {
+        // Success
+        setNewsLoading(false)
+
+        $('#newsErrorContainer').fadeOut(250, () => {
+            displayArticle(newsArr[0], 1)
+            $('#newsContent').fadeIn(250)
+        })
+
+        const switchHandler = (forward) => {
+            let cArt = parseInt(newsContent.getAttribute('article'))
+            let nxtArt = forward ? (cArt >= newsArr.length-1 ? 0 : cArt + 1) : (cArt <= 0 ? newsArr.length-1 : cArt - 1)
+    
+            displayArticle(newsArr[nxtArt], nxtArt+1)
+        }
+    
+        document.getElementById('newsNavigateRight').onclick = () => { switchHandler(true) }
+        document.getElementById('newsNavigateLeft').onclick = () => { switchHandler(false) }
+    }
+}
+
+/**
+ * Display a news article on the UI.
+ * 
+ * @param {Object} articleObject The article meta object.
+ * @param {number} index The article index.
+ */
+function displayArticle(articleObject, index){
+    newsArticleTitle.innerHTML = articleObject.title
+    newsArticleTitle.href = articleObject.link
+    newsArticleAuthor.innerHTML = 'by ' + articleObject.author
+    newsArticleDate.innerHTML = articleObject.date
+    newsArticleComments.innerHTML = articleObject.comments
+    newsArticleComments.href = articleObject.commentsLink
+    newsArticleContent.innerHTML = articleObject.content
+    newsNavigationStatus.innerHTML = index + ' of ' + newsArr.length
+    newsContent.setAttribute('article', index-1)
+}
+
+/**
+ * Load news information from the RSS feed specified in the
+ * distribution index.
+ */
+function loadNews(){
+    return new Promise((resolve, reject) => {
+        AssetGuard.retrieveDistributionData(ConfigManager.getLauncherDirectory(), true).then((v) => {
+            const newsFeed = v['news_feed']
+            const newsHost = new URL(newsFeed).origin + '/'
+            $.get(newsFeed, (data) => {
+                const items = $(data).find('item')
+                const articles = []
+
+                for(let i=0; i<items.length; i++){
+                    // JQuery Element
+                    const el = $(items[i])
+
+                    // Resolve date.
+                    const date = new Date(el.find('pubDate').text()).toLocaleDateString('en-US', {month: 'short', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric'})
+
+                    // Resolve comments.
+                    let comments = el.find('slash\\:comments').text() || '0'
+                    comments = comments + ' Comment' + (comments === '1' ? '' : 's')
+
+                    // Fix relative links in content.
+                    let content = el.find('content\\:encoded').text()
+                    let regex = /src="(?!http:\/\/|https:\/\/)(.+)"/g
+                    let matches
+                    while(matches = regex.exec(content)){
+                        content = content.replace(matches[1], newsHost + matches[1])
+                    }
+
+                    let link   = el.find('link').text()
+                    let title  = el.find('title').text()
+                    let author = el.find('dc\\:creator').text()
+
+                    // Generate article.
+                    articles.push(
+                        {
+                            link,
+                            title,
+                            date,
+                            author,
+                            content,
+                            comments,
+                            commentsLink: link + '#comments'
+                        }
+                    )
+                }
+                resolve({
+                    articles
+                })
+            }).catch(err => {
+                reject(err)
+            })
+        })
+    })
+}
+
+// Load News
+initNews()

+ 1 - 1
app/assets/js/scripts/uicore.js

@@ -164,7 +164,7 @@ $(document).on('click', 'a[href^="http"]', function(event) {
  * DevTools, for example the chrome debugger in VS Code. 
  */
 document.addEventListener('keydown', function (e) {
-    if(e.key === 'I' && e.ctrlKey && e.shiftKey){
+    if((e.key === 'I' || e.key === 'i') && e.ctrlKey && e.shiftKey){
         let window = remote.getCurrentWindow()
         window.toggleDevTools()
     }

+ 19 - 21
app/assets/westeroscraft.json

@@ -8,12 +8,12 @@
     "java": {
         "oracle": "http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html"
     },
+    "news_feed": "https://westeroscraft.com/articles/index.rss",
     "servers": [
         {
             "id": "WesterosCraft-1.11.2",
             "name": "WesterosCraft Production Server",
             "description": "Main WesterosCraft server. Connect to enter the Realm.",
-            "news_feed": "http://www.westeroscraft.com/api/rss.php?preset_id=12700544",
             "icon_url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-prod.png",
             "revision": "3.4.17",
             "server_ip": "mc.westeroscraft.com",
@@ -415,9 +415,8 @@
             "id": "WesterosCraftTest-1.11.2",
             "name": "WesterosCraft Test Server",
             "description": "Main testing server. Experimental changes are live here.",
-            "news_feed": "http://www.westeroscraft.com/api/rss.php?preset_id=12700544",
             "icon_url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-test.png",
-            "revision": "3.6.0",
+            "revision": "3.7.0",
             "server_ip": "mc.westeroscraft.com:4444",
             "mc_version": "1.11.2",
             "discord": {
@@ -769,23 +768,23 @@
                     ]
                 },
                 {
-                    "id": "com.westeroscraft:westerosblocks:3.1.0-alpha-2-134",
-                    "name": "WesterosBlocks (3.1.0-alpha-2-134)",
+                    "id": "com.westeroscraft:westerosblocks:3.1.0-alpha-2-135",
+                    "name": "WesterosBlocks (3.1.0-alpha-2-135)",
                     "type": "forgemod",
                     "artifact": {
-                        "size": 16665319,
-                         "MD5": "263cc5fb775763c811b02cef441b1471",
+                        "size": 16854431,
+                         "MD5": "ed5b2349d1ce2496895a5e8839b77f74",
                         "extension": ".jar",
                         "url": "http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/WesterosBlocks.jar"
                     }
                 },
                 {
-                    "id": "com.westeroscraft:westeroscraftrp:2018-03-10",
-                    "name": "WesterosCraft Resource Pack (2018-03-10)",
+                    "id": "com.westeroscraft:westeroscraftrp:2018-05-05",
+                    "name": "WesterosCraft Resource Pack (2018-05-05)",
                     "type": "file",
                     "artifact": {
-                        "size": 46048737,
-                        "MD5": "ecb7ea884ab99a629e123d2c1ebe4467",
+                        "size": 46067606,
+                        "MD5": "0e08b0bcf44c9d266bfe067d865ffc1e",
                         "path": "resourcepacks/WesterosCraft.zip",
                         "url": "http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/resourcepacks/WesterosCraft.zip"
                     }
@@ -817,9 +816,8 @@
             "id": "WesterosCraftTest-1.12.2",
             "name": "WesterosCraft 1.12.2 Test Server",
             "description": "Tests for our version change to 1.12.2 are live here.",
-            "news_feed": "http://www.westeroscraft.com/api/rss.php?preset_id=12700544",
             "icon_url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-test.png",
-            "revision": "4.0.1",
+            "revision": "4.1.0",
             "server_ip": "mc.westeroscraft.com:4445",
             "mc_version": "1.12.2",
             "discord": {
@@ -1168,23 +1166,23 @@
                     ]
                 },
                 {
-                    "id": "com.westeroscraft:westerosblocks:3.1.0-alpha-2-4",
-                    "name": "WesterosBlocks (3.1.0-alpha-2-4)",
+                    "id": "com.westeroscraft:westerosblocks:3.1.0-alpha-2-8",
+                    "name": "WesterosBlocks (3.1.0-alpha-2-8)",
                     "type": "forgemod",
                     "artifact": {
-                        "size": 16588650,
-                         "MD5": "d7821ea6ee4ba3d4e620bbb95109f1da",
+                        "size": 16771714,
+                         "MD5": "bb5f1d262c0fd96f1bddea40a69da956",
                         "extension": ".jar",
                         "url": "http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/WesterosBlocks.jar"
                     }
                 },
                 {
-                    "id": "com.westeroscraft:westeroscraftrp:2018-04-03",
-                    "name": "WesterosCraft Resource Pack (2018-04-03)",
+                    "id": "com.westeroscraft:westeroscraftrp:2018-05-05",
+                    "name": "WesterosCraft Resource Pack (2018-05-05)",
                     "type": "file",
                     "artifact": {
-                        "size": 46051213,
-                        "MD5": "2a3f5e68e9e27e037675d9ed56c73e50",
+                        "size": 46070075,
+                        "MD5": "e23288afd457ca56ee744c76b0e2dbed",
                         "path": "resourcepacks/WesterosCraft.zip",
                         "url": "http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/resourcepacks/WesterosCraft.zip"
                     }

+ 0 - 603
app/assets/westeroscraft.xml

@@ -1,603 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ServerPack version="3.0">
-  <Server id="WesterosCraft-1.11.2" name="WesterosCraft Production Client" newsUrl="http://www.westeroscraft.com/home/" iconUrl="http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-prod.png"
-    revision="3.4.17" serverAddress="mc.westeroscraft.com" generateList="true" version="1.11.2" autoConnect="true" mainClass="net.minecraft.launchwrapper.Launch"
-    libOverrides="com.google.guava:guava:17.0 org.apache.commons:commons-lang3:3.3.2">
-    <Module id="forge" name="Minecraft Forge 13.20.1.2429">
-        <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/forge-1.11.2-13.20.1.2429-universal.jar</URL>
-        <Required>true</Required>
-        <ModType order="1" jreArgs="-Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true" launchArgs="--tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker">Library</ModType>
-        <MD5>3fcc9b0104f0261397d3cc897e55a1c5</MD5>
-        
-        <Submodule id="launchwrapper" name="Mojang (LaunchWrapper)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/launchwrapper-1.12.jar</URL>
-            <MD5>934b2d91c7c5be4a49577c9e6b40e8da</MD5>
-            <Required>true</Required>
-            <ModType order="2">Library</ModType>
-        </Submodule>
-        <Submodule id="asm" name="Mojang (ASM)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/asm-all-5.0.3.jar</URL>
-            <MD5>c5cc4613bbdfba3ccf5f0ab85390d0b8</MD5>
-            <Required>true</Required>
-            <ModType order="3">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-lib" name="Minecraft Forge (scala-library)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-library-2.11.1.jar.pack.xz</URL>
-            <MD5>379c15c4f724421c6d5d7aecedaf87a6</MD5>
-            <Required>true</Required>
-            <ModType order="4">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-compiler" name="Minecraft Forge (scala-compiler)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-compiler-2.11.1.jar.pack.xz</URL>
-            <MD5>7d89e952f2d5c74577310cd2c28e3f20</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-actors-migration" name="Minecraft Forge (scala-actors-migration)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-actors-migration_2.11-1.1.0.jar.pack.xz</URL>
-            <MD5>04e3428b2600ace33c7ae2bf1f6c0a4c</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-continuations-library" name="Minecraft Forge (scala-continuations-library)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-continuations-library_2.11-1.0.2.jar.pack.xz</URL>
-            <MD5>ed9b1d27aba8ac4090a3749c4dfc895a</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-continuations-plugin" name="Minecraft Forge (scala-continuations-plugin)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-continuations-plugin_2.11.1-1.0.2.jar.pack.xz</URL>
-            <MD5>a8232db22a72a981de6b1399eb86dff7</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-parser-combinators" name="Minecraft Forge (scala-parser-combinators)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-parser-combinators_2.11-1.0.1.jar.pack.xz</URL>
-            <MD5>2e50a7df17680daadacca69f07f8a16d</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-reflect" name="Minecraft Forge (scala-reflect)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-reflect-2.11.1.jar.pack.xz</URL>
-            <MD5>84e5dc81c10e2bd74c579c9d0332fdd9</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-swing" name="Minecraft Forge (scala-swing)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-swing_2.11-1.0.1.jar</URL>
-            <MD5>1d360289e697022a3f57abaad344b28f</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-xml" name="Minecraft Forge (scala-xml)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-xml_2.11-1.0.2.jar.pack.xz</URL>
-            <MD5>cc891b094a4c32dedc56bfefe9b072ff</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="akka-actor" name="Minecraft Forge (akka-actor)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/akka-actor_2.11-2.3.3.jar.pack.xz</URL>
-            <MD5>25cb22c3078e9fb3f7a861c912924862</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="typesafe-config" name="Minecraft Forge (typesafe-config)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/config-1.2.1.jar.pack.xz</URL>
-            <MD5>10ec4ccabc4e68aac9cf87165ead5d7d</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="lzma" name="Mojang (LZMA)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/lzma-0.0.1.jar</URL>
-            <MD5>a3e3c3186e41c4a1a3027ba2bb23cdc6</MD5>
-            <Required>true</Required>
-            <ModType order="6">Library</ModType>
-        </Submodule>
-        <Submodule id="trove4j" name="Trove4J 3.0.3">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/trove4j-3.0.3.jar</URL>
-            <MD5>8fc4d4e0129244f9fd39650c5f30feb2</MD5>
-            <Required>true</Required>
-            <ModType order="7">Library</ModType>
-        </Submodule>
-        <Submodule id="vecmath" name="Vecmath 1.5.2">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/vecmath-1.5.2.jar</URL>
-            <MD5>e5d2b7f46c4800a32f62ce75676a5710</MD5>
-            <Required>true</Required>
-            <ModType order="8">Library</ModType>
-        </Submodule>
-        <Submodule id="jopt-simple" name="Jopt-simple 4.6">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/jopt-simple-4.6.jar</URL>
-            <MD5>13560a58a79b46b82057686543e8d727</MD5>
-            <Required>true</Required>
-            <ModType order="9">Library</ModType>
-        </Submodule>
-        <Submodule id="MercuriusUpdater" name="MercuriusUpdater 1.11.2">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/MercuriusUpdater-1.11.2.jar</URL>
-            <MD5>13560a58a79b46b82057686543e8d727</MD5>
-            <Required>true</Required>
-            <ModType order="10">Library</ModType>
-        </Submodule>
-    </Module>
-    <Module name="WesterosBlocks (3.0.0-beta-6-133)" id="WesterosBlocks">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/WesterosBlocks.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>5a89e2ab18916c18965fc93a0766cc6e</MD5>
-    </Module>
-    <Module name="OptiFine (1.11.2_HD_U_C3)" id="OptiFine">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/OptiFine.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>82f495594cd50e1fda7a8aa0246239fc</MD5>
-    </Module>
-    <Module name="JustEnoughItems (1.11.2-4.5.0.290)" id="JustEnoughItems">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/jei.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>f4d931f6db6210621a86fa1e7eae8016</MD5>
-    </Module>
-    <Module name="Waila (1.7.1_1.11.2)" id="Waila">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/Waila.jar</URL>
-        <Required isDefault="false">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>26258a3557bf333e8f4ce8b1e9481031</MD5>
-    </Module>
-    <Module name="WorldEditCUI (v2.1.1-mf-1.11.2-13.20.0.2228)" id="worldeditcuife">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/worldeditcuife.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>439f82b69f3464969163c188818c677b</MD5>
-    </Module>
-    <Module id="journeymap" name="JourneyMap (1.11.2-5.4.7)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/journeymap.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>1c3380502eb7b9a495581b2402d144df</MD5>
-    </Module>
-    <Module id="BetterFoliage" name="BetterFoliage (1.11.2-2.1.8)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/BetterFoliage.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>b2dd47e42da56fb49a07a0d38df91bc4</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/config/betterfoliage.cfg</URL>
-            <Path>/config/betterfoliage.cfg</Path>
-            <MD5>6dd38f873c4129af05a2d6c500cbe954</MD5>
-        </ConfigFile>
-    </Module>
-    <Module id="DynamicSurroundings" name="DynamicSurroundings (1.11.2-3.4.6.2)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/mods/DynamicSurroundings.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>82a6aac5420151960b8dd709deee5423</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/config/dsurround/dsurround.cfg</URL>
-            <Path>/config/dsurround/dsurround.cfg</Path>
-            <MD5>4c64fc6cbbb83b18012ed4820b0b496e</MD5>
-        </ConfigFile>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/config/dsurround/westeros.json</URL>
-            <Path>/config/dsurround/westeros.json</Path>
-            <MD5>44eab112ff24d0bd29974c270de868ba</MD5>
-        </ConfigFile>
-    </Module>
-    <Module id="WesterosCraftRP" name="WesterosCraft Resource Pack (2017-08-16)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/resourcepacks/WesterosCraft.zip</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <ModPath>/resourcepacks/WesterosCraft.zip</ModPath>
-        <MD5>ec2d9fdb14d5c2eafe5975a240202f1a</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/files/options-1.11.2.txt</URL>
-            <Path>/options.txt</Path>
-            <NoOverwrite>true</NoOverwrite>
-        </ConfigFile>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.11.2/servers.dat</URL>
-            <Path>/servers.dat</Path>
-            <MD5>71d99e229d7d2b8d2a6423e46832a4b8</MD5>
-        </ConfigFile>
-    </Module>
-  </Server>
-
-  <Server id="WesterosCraftTest-1.11.2" name="WesterosCraft Test Client" newsUrl="http://www.westeroscraft.com/home/" iconUrl="http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-test.png"
-    revision="3.6.0" serverAddress="mc.westeroscraft.com:4444" generateList="false" version="1.11.2" autoConnect="true" mainClass="net.minecraft.launchwrapper.Launch"
-    libOverrides="com.google.guava:guava:17.0 org.apache.commons:commons-lang3:3.3.2">
-    <Module id="forge" name="Minecraft Forge 13.20.1.2476">
-        <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/forge-1.11.2-13.20.1.2476-universal.jar</URL>
-        <Required>true</Required>
-        <ModType order="1" jreArgs="-Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true" launchArgs="--tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker">Library</ModType>
-        <MD5>7cef816cc01d53a04a180f0214d2982a</MD5>
-        
-        <Submodule id="launchwrapper" name="Mojang (LaunchWrapper)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/launchwrapper-1.12.jar</URL>
-            <MD5>934b2d91c7c5be4a49577c9e6b40e8da</MD5>
-            <Required>true</Required>
-            <ModType order="2">Library</ModType>
-        </Submodule>
-        <Submodule id="asm" name="Mojang (ASM)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/asm-all-5.0.3.jar</URL>
-            <MD5>c5cc4613bbdfba3ccf5f0ab85390d0b8</MD5>
-            <Required>true</Required>
-            <ModType order="3">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-lib" name="Minecraft Forge (scala-library)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-library-2.11.1.jar.pack.xz</URL>
-            <MD5>379c15c4f724421c6d5d7aecedaf87a6</MD5>
-            <Required>true</Required>
-            <ModType order="4">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-compiler" name="Minecraft Forge (scala-compiler)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-compiler-2.11.1.jar.pack.xz</URL>
-            <MD5>7d89e952f2d5c74577310cd2c28e3f20</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-actors-migration" name="Minecraft Forge (scala-actors-migration)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-actors-migration_2.11-1.1.0.jar.pack.xz</URL>
-            <MD5>04e3428b2600ace33c7ae2bf1f6c0a4c</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-continuations-library" name="Minecraft Forge (scala-continuations-library)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-continuations-library_2.11-1.0.2.jar.pack.xz</URL>
-            <MD5>ed9b1d27aba8ac4090a3749c4dfc895a</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-continuations-plugin" name="Minecraft Forge (scala-continuations-plugin)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-continuations-plugin_2.11.1-1.0.2.jar.pack.xz</URL>
-            <MD5>a8232db22a72a981de6b1399eb86dff7</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-parser-combinators" name="Minecraft Forge (scala-parser-combinators)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-parser-combinators_2.11-1.0.1.jar.pack.xz</URL>
-            <MD5>2e50a7df17680daadacca69f07f8a16d</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-reflect" name="Minecraft Forge (scala-reflect)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-reflect-2.11.1.jar.pack.xz</URL>
-            <MD5>84e5dc81c10e2bd74c579c9d0332fdd9</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-swing" name="Minecraft Forge (scala-swing)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-swing_2.11-1.0.1.jar</URL>
-            <MD5>1d360289e697022a3f57abaad344b28f</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-xml" name="Minecraft Forge (scala-xml)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/scala-xml_2.11-1.0.2.jar.pack.xz</URL>
-            <MD5>cc891b094a4c32dedc56bfefe9b072ff</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="akka-actor" name="Minecraft Forge (akka-actor)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/akka-actor_2.11-2.3.3.jar.pack.xz</URL>
-            <MD5>25cb22c3078e9fb3f7a861c912924862</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="typesafe-config" name="Minecraft Forge (typesafe-config)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/config-1.2.1.jar.pack.xz</URL>
-            <MD5>10ec4ccabc4e68aac9cf87165ead5d7d</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="lzma" name="Mojang (LZMA)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/lzma-0.0.1.jar</URL>
-            <MD5>a3e3c3186e41c4a1a3027ba2bb23cdc6</MD5>
-            <Required>true</Required>
-            <ModType order="6">Library</ModType>
-        </Submodule>
-        <Submodule id="trove4j" name="Trove4J 3.0.3">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/trove4j-3.0.3.jar</URL>
-            <MD5>8fc4d4e0129244f9fd39650c5f30feb2</MD5>
-            <Required>true</Required>
-            <ModType order="7">Library</ModType>
-        </Submodule>
-        <Submodule id="vecmath" name="Vecmath 1.5.2">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/vecmath-1.5.2.jar</URL>
-            <MD5>e5d2b7f46c4800a32f62ce75676a5710</MD5>
-            <Required>true</Required>
-            <ModType order="8">Library</ModType>
-        </Submodule>
-        <Submodule id="jopt-simple" name="Jopt-simple 4.6">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/jopt-simple-4.6.jar</URL>
-            <MD5>13560a58a79b46b82057686543e8d727</MD5>
-            <Required>true</Required>
-            <ModType order="9">Library</ModType>
-        </Submodule>
-        <Submodule id="MercuriusUpdater" name="MercuriusUpdater 1.11.2">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.11.2/MercuriusUpdater-1.11.2.jar</URL>
-            <MD5>13560a58a79b46b82057686543e8d727</MD5>
-            <Required>true</Required>
-            <ModType order="10">Library</ModType>
-        </Submodule>
-    </Module>
-    <Module name="WesterosBlocks (3.1.0-alpha-2-134)" id="WesterosBlocks">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/WesterosBlocks.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>263cc5fb775763c811b02cef441b1471</MD5>
-    </Module>
-    <Module name="OptiFine (1.11.2_HD_U_C7)" id="OptiFine">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/OptiFine.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>0dd7761e908f9b245bb0dc0fac5649f5</MD5>
-    </Module>
-    <Module name="JustEnoughItems (1.11.2-4.5.1.296)" id="JustEnoughItems">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/jei.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>584b3099d34c9a1b8649385b90831b34</MD5>
-    </Module>
-    <Module name="Waila (1.7.1_1.11.2)" id="Waila">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/Waila.jar</URL>
-        <Required isDefault="false">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>26258a3557bf333e8f4ce8b1e9481031</MD5>
-    </Module>
-    <Module name="WorldEditCUI (v2.1.2-mf-1.11.2-13.20.0.2228)" id="worldeditcuife">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/worldeditcuife.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>53f6eef360af5329d9e52b5351657908</MD5>
-    </Module>
-    <Module id="journeymap" name="JourneyMap (1.11.2-5.5.2)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/journeymap.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>4315e9939bf64bfa963c8674cb13e838</MD5>
-    </Module>
-    <Module id="BetterFoliage" name="BetterFoliage (1.11.2-2.1.10)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/BetterFoliage.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>522fdf73b6e4343cb6243872fb7b4b6c</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/config/betterfoliage.cfg</URL>
-            <Path>/config/betterfoliage.cfg</Path>
-            <MD5>6dd38f873c4129af05a2d6c500cbe954</MD5>
-        </ConfigFile>
-    </Module>
-    <Module id="DynamicSurroundings" name="DynamicSurroundings (1.11.2-3.4.9.3)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/mods/DynamicSurroundings.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>65403c66d8b3655b372f58047941d206</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/config/dsurround/dsurround.cfg</URL>
-            <Path>/config/dsurround/dsurround.cfg</Path>
-            <MD5>4c64fc6cbbb83b18012ed4820b0b496e</MD5>
-        </ConfigFile>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/config/dsurround/westeros.json</URL>
-            <Path>/config/dsurround/westeros.json</Path>
-            <MD5>44eab112ff24d0bd29974c270de868ba</MD5>
-        </ConfigFile>
-    </Module>
-    <Module id="WesterosCraftRP" name="WesterosCraft Resource Pack (2018-03-10)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/resourcepacks/WesterosCraft.zip</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <ModPath>/resourcepacks/WesterosCraft.zip</ModPath>
-        <MD5>ecb7ea884ab99a629e123d2c1ebe4467</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/files/options-1.11.2.txt</URL>
-            <Path>/options.txt</Path>
-            <NoOverwrite>true</NoOverwrite>
-        </ConfigFile>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.11.2/servers.dat</URL>
-            <Path>/servers.dat</Path>
-            <MD5>594de6063df993b5fde31c7290226ee4</MD5>
-        </ConfigFile>
-    </Module>
-  </Server>
-
-  <Server id="WesterosCraftTest-1.12.2" name="WesterosCraft Test Client (1.12.2)" newsUrl="http://www.westeroscraft.com/home/" iconUrl="http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-test.png"
-    revision="4.0.1" serverAddress="mc.westeroscraft.com:4445" generateList="false" version="1.12.2" autoConnect="true" mainClass="net.minecraft.launchwrapper.Launch"
-    libOverrides="com.google.guava:guava:21.0 org.apache.commons:commons-lang3:3.5">
-    <Module id="forge" name="Minecraft Forge 14.23.2.2618">
-        <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/forge-1.12.2-14.23.2.2651-universal.jar</URL>
-        <Required>true</Required>
-        <ModType order="1" jreArgs="-Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true" launchArgs="--tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker --versionType Forge">Library</ModType>
-        <MD5>42d3aec7cdd6e4e49b4ff77a1db7c3a9</MD5>
-        
-        <Submodule id="launchwrapper" name="Mojang (LaunchWrapper)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/launchwrapper-1.12.jar</URL>
-            <MD5>934b2d91c7c5be4a49577c9e6b40e8da</MD5>
-            <Required>true</Required>
-            <ModType order="2">Library</ModType>
-        </Submodule>
-        <Submodule id="asm" name="Mojang (ASM)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/asm-all-5.2.jar</URL>
-            <MD5>f5ad16c7f0338b541978b0430d51dc83</MD5>
-            <Required>true</Required>
-            <ModType order="3">Library</ModType>
-        </Submodule>
-        <Submodule id="jline" name="Mojang (jline)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/jline-2.13.jar</URL>
-            <MD5>f251ba666cccb260ff7215b2cbeee8d4</MD5>
-            <Required>true</Required>
-            <ModType order="3">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-lib" name="Minecraft Forge (scala-library)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-library-2.11.1.jar.pack.xz</URL>
-            <MD5>379c15c4f724421c6d5d7aecedaf87a6</MD5>
-            <Required>true</Required>
-            <ModType order="4">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-compiler" name="Minecraft Forge (scala-compiler)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-compiler-2.11.1.jar.pack.xz</URL>
-            <MD5>7d89e952f2d5c74577310cd2c28e3f20</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-actors-migration" name="Minecraft Forge (scala-actors-migration)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-actors-migration_2.11-1.1.0.jar.pack.xz</URL>
-            <MD5>04e3428b2600ace33c7ae2bf1f6c0a4c</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-continuations-library" name="Minecraft Forge (scala-continuations-library)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-continuations-library_2.11-1.0.2.jar.pack.xz</URL>
-            <MD5>ed9b1d27aba8ac4090a3749c4dfc895a</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-continuations-plugin" name="Minecraft Forge (scala-continuations-plugin)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-continuations-plugin_2.11.1-1.0.2.jar.pack.xz</URL>
-            <MD5>a8232db22a72a981de6b1399eb86dff7</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-parser-combinators" name="Minecraft Forge (scala-parser-combinators)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-parser-combinators_2.11-1.0.1.jar.pack.xz</URL>
-            <MD5>2e50a7df17680daadacca69f07f8a16d</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-reflect" name="Minecraft Forge (scala-reflect)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-reflect-2.11.1.jar.pack.xz</URL>
-            <MD5>84e5dc81c10e2bd74c579c9d0332fdd9</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-swing" name="Minecraft Forge (scala-swing)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-swing_2.11-1.0.1.jar</URL>
-            <MD5>1d360289e697022a3f57abaad344b28f</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="scala-xml" name="Minecraft Forge (scala-xml)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-xml_2.11-1.0.2.jar.pack.xz</URL>
-            <MD5>cc891b094a4c32dedc56bfefe9b072ff</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="akka-actor" name="Minecraft Forge (akka-actor)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/akka-actor_2.11-2.3.3.jar.pack.xz</URL>
-            <MD5>25cb22c3078e9fb3f7a861c912924862</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="typesafe-config" name="Minecraft Forge (typesafe-config)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/config-1.2.1.jar.pack.xz</URL>
-            <MD5>10ec4ccabc4e68aac9cf87165ead5d7d</MD5>
-            <Required>true</Required>
-            <ModType order="5">Library</ModType>
-        </Submodule>
-        <Submodule id="lzma" name="Mojang (LZMA)">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/lzma-0.0.1.jar</URL>
-            <MD5>a3e3c3186e41c4a1a3027ba2bb23cdc6</MD5>
-            <Required>true</Required>
-            <ModType order="6">Library</ModType>
-        </Submodule>
-        <Submodule id="trove4j" name="Trove4J 3.0.3">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/trove4j-3.0.3.jar</URL>
-            <MD5>8fc4d4e0129244f9fd39650c5f30feb2</MD5>
-            <Required>true</Required>
-            <ModType order="7">Library</ModType>
-        </Submodule>
-        <Submodule id="vecmath" name="Vecmath 1.5.2">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/vecmath-1.5.2.jar</URL>
-            <MD5>e5d2b7f46c4800a32f62ce75676a5710</MD5>
-            <Required>true</Required>
-            <ModType order="8">Library</ModType>
-        </Submodule>
-        <Submodule id="jopt-simple" name="Jopt-simple 5.0.3">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/jopt-simple-5.0.3.jar</URL>
-            <MD5>0a5ec84e23df9d7cfb4063bc55f2744c</MD5>
-            <Required>true</Required>
-            <ModType order="9">Library</ModType>
-        </Submodule>
-        <Submodule id="MercuriusUpdater" name="MercuriusUpdater 1.12.2">
-            <URL priority="0">http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/MercuriusUpdater-1.12.1.jar</URL>
-            <MD5>5580745b0620323f7d3ccbac6fd310d5</MD5>
-            <Required>true</Required>
-            <ModType order="10">Library</ModType>
-        </Submodule>
-    </Module>
-    <Module name="WesterosBlocks (3.1.0-alpha-2-4)" id="WesterosBlocks">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/WesterosBlocks.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>d7821ea6ee4ba3d4e620bbb95109f1da</MD5>
-    </Module>
-    <Module name="OptiFine (1.12.2_HD_U_D1)" id="OptiFine">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/OptiFine.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>4bfc1c95dde8ec08568e01bfaa61e7c5</MD5>
-    </Module>
-    <Module name="JustEnoughItems (1.12.2-4.8.5.151)" id="JustEnoughItems">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/jei.jar</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <MD5>7194b7b1f1ea6ad20013c596319db5b0</MD5>
-    </Module>
-    <Module name="WorldEditCUI (v2.1.2-mf-1.12.2-14.23.0.2487)" id="worldeditcuife">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/worldeditcuife.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>44b1b1031c25f04955bfd7ed734bd467</MD5>
-    </Module>
-    <Module id="journeymap" name="JourneyMap (1.12.2-5.5.2)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/journeymap.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>b743562dac1b5334c20ac87b54c0b518</MD5>
-    </Module>
-    <Module id="BetterFoliage" name="BetterFoliage (1.12-2.1.10)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/BetterFoliage.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>06714eb2c13f59df5e3c92cec7370e11</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/config/betterfoliage.cfg</URL>
-            <Path>/config/betterfoliage.cfg</Path>
-            <MD5>6dd38f873c4129af05a2d6c500cbe954</MD5>
-        </ConfigFile>
-    </Module>
-    <Module id="DynamicSurroundings" name="DynamicSurroundings (1.12.2-3.4.9.3)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/mods/DynamicSurroundings.jar</URL>
-        <Required isDefault="true">false</Required>
-        <ModType>Regular</ModType>
-        <MD5>115baf8e5f4e7d9757a2a85fb3507789</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/config/dsurround/dsurround.cfg</URL>
-            <Path>/config/dsurround/dsurround.cfg</Path>
-            <MD5>4c64fc6cbbb83b18012ed4820b0b496e</MD5>
-        </ConfigFile>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/config/dsurround/westeros.json</URL>
-            <Path>/config/dsurround/westeros.json</Path>
-            <MD5>44eab112ff24d0bd29974c270de868ba</MD5>
-        </ConfigFile>
-    </Module>
-    <Module id="WesterosCraftRP" name="WesterosCraft Resource Pack (2018-04-03)">
-        <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/resourcepacks/WesterosCraft.zip</URL>
-        <Required>true</Required>
-        <ModType>Regular</ModType>
-        <ModPath>/resourcepacks/WesterosCraft.zip</ModPath>
-        <MD5>2a3f5e68e9e27e037675d9ed56c73e50</MD5>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/files/options-1.12.2.txt</URL>
-            <Path>/options.txt</Path>
-            <NoOverwrite>true</NoOverwrite>
-        </ConfigFile>
-        <ConfigFile>
-            <URL>http://mc.westeroscraft.com/WesterosCraftLauncher/test-1.12.2/servers.dat</URL>
-            <Path>/servers.dat</Path>
-            <MD5>64dc1db90935997f07dfac422206f1de</MD5>
-        </ConfigFile>
-    </Module>
-  </Server>
-
-</ServerPack>

Diff do ficheiro suprimidas por serem muito extensas
+ 1 - 14
app/landing.ejs


+ 86 - 54
package-lock.json

@@ -1,6 +1,6 @@
 {
   "name": "westeroscraftlauncher",
-  "version": "0.0.1",
+  "version": "0.0.1-dev",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -37,9 +37,9 @@
       "optional": true
     },
     "@types/node": {
-      "version": "8.10.10",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.10.tgz",
-      "integrity": "sha512-p3W/hFzQs76RlYRIZsZc5a9bht6m0TspmWYYbKhRswmLnwj9fsE40EbuGifeu/XWR/c0UJQ1DDbvTxIsm/OOAA==",
+      "version": "8.10.11",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.11.tgz",
+      "integrity": "sha512-FM7tvbjbn2BUzM/Qsdk9LUGq3zeh7li8NcHoS398dBzqLzfmSqSP1+yKbMRTCcZzLcu2JAR5lq3IKIEYkto7iQ==",
       "dev": true
     },
     "adm-zip": {
@@ -59,9 +59,9 @@
       }
     },
     "ajv-keywords": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz",
-      "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+      "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
       "dev": true
     },
     "ansi-align": {
@@ -353,29 +353,48 @@
         "concat-map": "0.0.1"
       }
     },
+    "buffer-alloc": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz",
+      "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=",
+      "requires": {
+        "buffer-alloc-unsafe": "^0.1.0",
+        "buffer-fill": "^0.1.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz",
+      "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo="
+    },
+    "buffer-fill": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz",
+      "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q=="
+    },
     "buffer-from": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
       "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA=="
     },
     "builder-util": {
-      "version": "5.7.9",
-      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-5.7.9.tgz",
-      "integrity": "sha512-b6sSGrJoDmLhn/fblZ7qkSEB7fr26sz5aLc/Oh/jwWHHT2vwRw8reRxhXQJPmTWRAW4QIGxEpTMGJKGXGJQ0xg==",
+      "version": "5.7.10",
+      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-5.7.10.tgz",
+      "integrity": "sha512-vod4bl9Y+uuXhG5puvi7ike9JhF5/eTyc11WjhsVycVTYWAyxQlJqW1EaOtu34N+e1/AHPhA8XA3QI/Zskfpag==",
       "dev": true,
       "requires": {
         "7zip-bin": "~3.1.0",
         "app-builder-bin": "1.8.6",
         "bluebird-lst": "^1.0.5",
         "builder-util-runtime": "^4.2.0",
-        "chalk": "^2.3.2",
+        "chalk": "^2.4.1",
         "debug": "^3.1.0",
         "fs-extra-p": "^4.5.2",
         "is-ci": "^1.1.0",
         "js-yaml": "^3.11.0",
         "lazy-val": "^1.0.3",
         "semver": "^5.5.0",
-        "source-map-support": "^0.5.4",
+        "source-map-support": "^0.5.5",
         "stat-mode": "^0.2.2",
         "temp-file": "^3.1.1"
       },
@@ -707,9 +726,9 @@
       "dev": true
     },
     "deep-extend": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
-      "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
+      "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
       "dev": true
     },
     "delayed-stream": {
@@ -904,9 +923,9 @@
       }
     },
     "electron": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/electron/-/electron-1.8.5.tgz",
-      "integrity": "sha512-jr78O8kIfpMUHKdiSYOvbGieqTnOHDw6y5cnhdFnJsAJNE400X8hUXolCjuVRd5w6ggA09R4pRmEcLAbCYETLQ==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/electron/-/electron-2.0.0.tgz",
+      "integrity": "sha512-FCcVzHgoBmNTPUEhKN7yUxjluCRNAQsHNOfdtFEWKL3DPYEdLdyQW8CpmJEMqIXha5qZ+qdKVAtwvvuJs+b/PQ==",
       "dev": true,
       "requires": {
         "@types/node": "^8.0.24",
@@ -915,17 +934,17 @@
       }
     },
     "electron-builder": {
-      "version": "20.10.0",
-      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.10.0.tgz",
-      "integrity": "sha512-ztYBByCSNPvYbRVO7FLgct4G/9VLExVIVpOJKShd53j6YB6VxiNhRdx0JlALFzMoTegOz4TgSYhoe1vLQlOoTQ==",
+      "version": "20.11.1",
+      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.11.1.tgz",
+      "integrity": "sha512-pVaPw2L1j3v+oB5r9yJ1Smj1jWhwec9+c/gRwyDNmskMHJYpE+EkQgPe52NiMsP/A7xxQFPgcTD1lXgJFnb0Zg==",
       "dev": true,
       "requires": {
         "bluebird-lst": "^1.0.5",
-        "builder-util": "5.7.9",
+        "builder-util": "5.7.10",
         "builder-util-runtime": "4.2.0",
-        "chalk": "^2.3.2",
+        "chalk": "^2.4.1",
         "dmg-builder": "4.1.5",
-        "electron-builder-lib": "20.10.0",
+        "electron-builder-lib": "20.11.1",
         "electron-download-tf": "4.3.4",
         "fs-extra-p": "^4.5.2",
         "is-ci": "^1.1.0",
@@ -1011,22 +1030,22 @@
       }
     },
     "electron-builder-lib": {
-      "version": "20.10.0",
-      "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.10.0.tgz",
-      "integrity": "sha512-Q5toPbuJmkoLBlqdT+fJOrzUtX/JbI31wl3GxMCy5fcKdc6I12YMryY7cI9LTIlTaSV/bBOqNAduzSxjMk975g==",
+      "version": "20.11.1",
+      "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.11.1.tgz",
+      "integrity": "sha512-sK0Fdvrsqmx4UtCG58sA6udYWGY8aVAbSGlVOzzJE2A+rQZBb+gMOttnF6dyrNCy5Vw6eBkPWS80eIJXMF40pQ==",
       "dev": true,
       "requires": {
         "7zip-bin": "~3.1.0",
         "app-builder-bin": "1.8.6",
         "async-exit-hook": "^2.0.1",
         "bluebird-lst": "^1.0.5",
-        "builder-util": "5.7.9",
+        "builder-util": "5.7.10",
         "builder-util-runtime": "4.2.0",
         "chromium-pickle-js": "^0.2.0",
         "debug": "^3.1.0",
         "ejs": "^2.5.9",
         "electron-osx-sign": "0.4.10",
-        "electron-publish": "20.9.0",
+        "electron-publish": "20.11.0",
         "fs-extra-p": "^4.5.2",
         "hosted-git-info": "^2.6.0",
         "is-ci": "^1.1.0",
@@ -1050,6 +1069,21 @@
           "requires": {
             "ms": "2.0.0"
           }
+        },
+        "electron-publish": {
+          "version": "20.11.0",
+          "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.11.0.tgz",
+          "integrity": "sha512-oq8VcXJ1FSgxX4Z13oOutvj0TKbRCtqkpzOYlB2jU+wnfqaK2sYoz2zI1px6IjsX4LQ7m5Fa9POVmKndnCE5lw==",
+          "dev": true,
+          "requires": {
+            "bluebird-lst": "^1.0.5",
+            "builder-util": "^5.7.10",
+            "builder-util-runtime": "^4.2.0",
+            "chalk": "^2.4.1",
+            "fs-extra-p": "^4.5.2",
+            "lazy-val": "^1.0.3",
+            "mime": "^2.3.1"
+          }
         }
       }
     },
@@ -1271,6 +1305,11 @@
         "mime-types": "^2.1.12"
       }
     },
+    "fs-constants": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+    },
     "fs-extra": {
       "version": "0.30.0",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
@@ -2200,12 +2239,12 @@
       "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
     },
     "rc": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz",
-      "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=",
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
+      "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
       "dev": true,
       "requires": {
-        "deep-extend": "~0.4.0",
+        "deep-extend": "^0.5.1",
         "ini": "~1.3.0",
         "minimist": "^1.2.0",
         "strip-json-comments": "~2.0.1"
@@ -2609,39 +2648,27 @@
       }
     },
     "tar-fs": {
-      "version": "1.16.0",
-      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz",
-      "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==",
+      "version": "1.16.2",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.2.tgz",
+      "integrity": "sha512-LdknWjPEiZC1nOBwhv0JBzfJBGPJar08dZg2rwZe0ZTLQoRGEzgrl7vF3qUEkCHpI/wN9e7RyCuDhMsJUCLPPQ==",
       "requires": {
         "chownr": "^1.0.1",
         "mkdirp": "^0.5.1",
         "pump": "^1.0.0",
         "tar-stream": "^1.1.2"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        }
       }
     },
     "tar-stream": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
-      "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.0.tgz",
+      "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==",
       "requires": {
         "bl": "^1.0.0",
+        "buffer-alloc": "^1.1.0",
         "end-of-stream": "^1.0.0",
+        "fs-constants": "^1.0.0",
         "readable-stream": "^2.0.0",
+        "to-buffer": "^1.1.0",
         "xtend": "^4.0.0"
       },
       "dependencies": {
@@ -2722,6 +2749,11 @@
       "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
       "dev": true
     },
+    "to-buffer": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+      "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+    },
     "tough-cookie": {
       "version": "2.3.4",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",

+ 3 - 3
package.json

@@ -39,13 +39,13 @@
     "mkdirp": "^0.5.1",
     "request": "^2.85.0",
     "rimraf": "^2.6.2",
-    "tar-fs": "^1.16.0",
+    "tar-fs": "^1.16.2",
     "uuid": "^3.2.1",
     "winreg": "^1.2.4"
   },
   "devDependencies": {
-    "electron": "^1.8.5",
-    "electron-builder": "^20.10.0"
+    "electron": "^2.0.0",
+    "electron-builder": "^20.11.0"
   },
   "build": {
     "appId": "westeroscraftlauncher",

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff