Compare commits
28 Commits
master
...
remove-old
Author | SHA1 | Date | |
---|---|---|---|
02496f6595 | |||
aedcaa4ee3 | |||
ce24874aa7 | |||
31bcfab27a | |||
bc4fa407e5 | |||
4a064653d5 | |||
7eadc721cf | |||
b477da8e58 | |||
27765e89ef | |||
9e71cfbbb9 | |||
a079b8a23e | |||
c5038dd4c1 | |||
f774e9a67b | |||
31ab6f15dd | |||
960214efdf | |||
f1bc1ab719 | |||
30b3f804c9 | |||
cd757112b3 | |||
0dffb86577 | |||
d2dec49dcc | |||
b038b30ec6 | |||
9c69a99f7e | |||
1330e01484 | |||
9d37b49c79 | |||
1496696694 | |||
b6a2e7ae8c | |||
2bd2bc33a2 | |||
a4204d1f07 |
@ -1,7 +1,7 @@
|
|||||||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="script-src 'self' 'sha256-In6B8teKZQll5heMl9bS7CESTbGvuAt3VVV86BUQBDk='"/>
|
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="script-src 'self' 'sha256-In6B8teKZQll5heMl9bS7CESTbGvuAt3VVV86BUQBDk='"/>
|
||||||
<title>Helios Launcher</title>
|
<title>Skirda Launcher</title>
|
||||||
<script src="./assets/js/scripts/uicore.js"></script>
|
<script src="./assets/js/scripts/uicore.js"></script>
|
||||||
<script src="./assets/js/scripts/uibinder.js"></script>
|
<script src="./assets/js/scripts/uibinder.js"></script>
|
||||||
<link type="text/css" rel="stylesheet" href="./assets/css/launcher.css">
|
<link type="text/css" rel="stylesheet" href="./assets/css/launcher.css">
|
||||||
@ -31,10 +31,12 @@
|
|||||||
<div id="main">
|
<div id="main">
|
||||||
<%- include('welcome') %>
|
<%- include('welcome') %>
|
||||||
<%- include('login') %>
|
<%- include('login') %>
|
||||||
|
<%- include('loginOffline') %>
|
||||||
<%- include('waiting') %>
|
<%- include('waiting') %>
|
||||||
<%- include('loginOptions') %>
|
<%- include('loginOptions') %>
|
||||||
<%- include('settings') %>
|
<%- include('settings') %>
|
||||||
<%- include('landing') %>
|
<%- include('landing') %>
|
||||||
|
<%- include('dynmap') %>
|
||||||
</div>
|
</div>
|
||||||
<%- include('overlay') %>
|
<%- include('overlay') %>
|
||||||
<div id="loadingContainer">
|
<div id="loadingContainer">
|
||||||
|
@ -450,6 +450,79 @@ body, button {
|
|||||||
transition: 0.25s ease;
|
transition: 0.25s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* loginOffline cancel button styles. */
|
||||||
|
#loginOfflineCancelContainer {
|
||||||
|
position: absolute;
|
||||||
|
top: 5%;
|
||||||
|
right: 5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* loginOffline cancel button styles. */
|
||||||
|
#loginOfflineCancelButton {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: 0.25s ease;
|
||||||
|
}
|
||||||
|
#loginOfflineCancelButton:hover #loginOfflineCancelIcon,
|
||||||
|
#loginOfflineCancelButton:hover #loginOfflineCancelText,
|
||||||
|
#loginOfflineCancelButton:focus #loginOfflineCancelIcon,
|
||||||
|
#loginOfflineCancelButton:focus #loginOfflineCancelText {
|
||||||
|
text-shadow: 0px 0px 20px white;
|
||||||
|
}
|
||||||
|
#loginOfflineCancelButton:hover #loginOfflineCancelIcon,
|
||||||
|
#loginOfflineCancelButton:focus #loginOfflineCancelIcon {
|
||||||
|
box-shadow: 0px 0px 20px white;
|
||||||
|
}
|
||||||
|
#loginOfflineCancelButton:active #loginOfflineCancelIcon,
|
||||||
|
#loginOfflineCancelButton:active #loginOfflineCancelText {
|
||||||
|
text-shadow: 0px 0px 20px rgba(255, 255, 255, 0.75);
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border-color: rgba(255, 255, 255, 0.75);
|
||||||
|
}
|
||||||
|
#loginOfflineCancelButton:active #loginOfflineCancelIcon {
|
||||||
|
box-shadow: 0px 0px 20px rgba(255, 255, 255, 0.75);
|
||||||
|
}
|
||||||
|
#loginOfflineCancelButton:disabled {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
#loginOfflineCancelButton:disabled #loginOfflineCancelIcon,
|
||||||
|
#loginOfflineCancelButton:disabled #loginOfflineCancelText {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
border-color: rgba(255, 255, 255, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The X in a circle icon for the cancel button. */
|
||||||
|
#loginOfflineCancelIcon {
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 1px solid white;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 30px;
|
||||||
|
width: 30px;
|
||||||
|
font-size: 19px;
|
||||||
|
line-height: 30px;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
transition: 0.25s ease;
|
||||||
|
}
|
||||||
|
/* Text for the loginOffline cancel button. */
|
||||||
|
#loginOfflineCancelText {
|
||||||
|
font-size: 15px;
|
||||||
|
transition: 0.25s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Login content wrapper. */
|
/* Login content wrapper. */
|
||||||
#loginContent {
|
#loginContent {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -498,7 +571,7 @@ body, button {
|
|||||||
/* Header on login view. */
|
/* Header on login view. */
|
||||||
#loginSubheader {
|
#loginSubheader {
|
||||||
font-family: 'Avenir Medium';
|
font-family: 'Avenir Medium';
|
||||||
margin-bottom: 25px;
|
margin-bottom: 15px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -518,6 +591,7 @@ body, button {
|
|||||||
fill: #fff;
|
fill: #fff;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
width: 20px;
|
width: 20px;
|
||||||
|
padding-bottom: 0.7em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Span which displays errors related to login field content. */
|
/* Span which displays errors related to login field content. */
|
||||||
@ -560,17 +634,19 @@ body, button {
|
|||||||
.loginField {
|
.loginField {
|
||||||
font-family: 'Avenir Book';
|
font-family: 'Avenir Book';
|
||||||
background: none;
|
background: none;
|
||||||
border-width: 1.5px 0px 0px 0px;
|
border-width: 1px 1px 1px 1px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
border-radius: 5px;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
width: 250px;
|
width: 250px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 15px;
|
||||||
border-color: #fff;
|
border-color: #3e3e3e;
|
||||||
color: rgba(255, 255, 255, 0.75);
|
color: rgba(255, 255, 255, 0.75);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 7.5px;
|
padding: 7.5px;
|
||||||
font-size: 10px;
|
font-size: 14px;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
.loginField:focus {
|
.loginField:focus {
|
||||||
@ -674,6 +750,72 @@ body, button {
|
|||||||
display: initial;
|
display: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Login Offline button styles. */
|
||||||
|
#loginOfflineButton {
|
||||||
|
background: none;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
border: none;
|
||||||
|
padding: 15px 5px;
|
||||||
|
margin: 10px 0px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
right: -20px;
|
||||||
|
transition: 0.5s ease;
|
||||||
|
}
|
||||||
|
#loginOfflineutton:disabled {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
#loginOfflineButton[loading] {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
#loginOfflineButton:hover,
|
||||||
|
#loginOfflineButton:focus {
|
||||||
|
text-shadow: 0px 0px 20px #fff;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
#loginOfflineButton:active {
|
||||||
|
color: #c7c7c7;
|
||||||
|
text-shadow: 0px 0px 20px #c7c7c7;
|
||||||
|
}
|
||||||
|
#loginSVG {
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
overflow: visible;
|
||||||
|
transform: rotate(90deg);
|
||||||
|
margin-left: 20px;
|
||||||
|
transition: 0.25s ease;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
#loginOfflineButton:hover #loginSVG,
|
||||||
|
#loginOfflineButton:focus #loginSVG {
|
||||||
|
-webkit-filter: drop-shadow(0px 0px 2px #fff);
|
||||||
|
}
|
||||||
|
#loginOfflineButton:active #loginSVG .arrowLine {
|
||||||
|
stroke: #c7c7c7;
|
||||||
|
}
|
||||||
|
#loginOfflineButton:active #loginSVG {
|
||||||
|
-webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
|
||||||
|
}
|
||||||
|
#loginOfflineButton:disabled #loginSVG .arrowLine {
|
||||||
|
stroke: rgba(255, 255, 255, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginOfflineButtonContent {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginOfflineButton .circle-loader,
|
||||||
|
#loginOfflineButton[loading] #loginSVG {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#loginOfflineButton[loading] .circle-loader,
|
||||||
|
#loginOfflineButton #loginSVG {
|
||||||
|
display: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.circle-loader {
|
.circle-loader {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
@ -3965,3 +4107,52 @@ input:checked + .toggleSwitchSlider:before {
|
|||||||
.rotating {
|
.rotating {
|
||||||
animation: rotating 10s linear infinite;
|
animation: rotating 10s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* *
|
||||||
|
* Custom patches *
|
||||||
|
* *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* iframe patch for full size window. */
|
||||||
|
#iframecontainer {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dynmapiframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mapsvg {
|
||||||
|
-webkit-filter: invert(100%); /* safari 6.0 - 9.0 */
|
||||||
|
filter: invert(100%);
|
||||||
|
transition: 0.25s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Map icon hover effect */
|
||||||
|
#newsButton:hover #mapsvg,
|
||||||
|
#newsButton:focus #mapsvg {
|
||||||
|
filter:invert(100%) drop-shadow(0 0 0.75rem white);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return from map button */
|
||||||
|
.FloatingButtonContainer {
|
||||||
|
position: absolute;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
left: 22em;
|
||||||
|
right: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return from map button style */
|
||||||
|
#dynmapDoneButton {
|
||||||
|
background-color: #222222;
|
||||||
|
width: 100px;
|
||||||
|
border-radius: 0px 0px 10px 10px;
|
||||||
|
border-color: #333333;
|
||||||
|
}
|
298
app/assets/distribution.json
Normal file
@ -0,0 +1,298 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0",
|
||||||
|
"discord": {
|
||||||
|
"clientId": "385581240906022916",
|
||||||
|
"smallImageText": "WesterosCraft",
|
||||||
|
"smallImageKey": "seal-circle"
|
||||||
|
},
|
||||||
|
"java": {
|
||||||
|
"oracle": "http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html"
|
||||||
|
},
|
||||||
|
"rss": "https://westeroscraft.com/articles/index.rss",
|
||||||
|
"servers": [
|
||||||
|
{
|
||||||
|
"id": "SkirdaTesting-1.12.2",
|
||||||
|
"name": "Skirda Test Server",
|
||||||
|
"description": "Сплошные баги блять",
|
||||||
|
"icon": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/server-prod.png",
|
||||||
|
"version": "4.6.5",
|
||||||
|
"address": "192.168.88.228:35012",
|
||||||
|
"minecraftVersion": "1.12.2",
|
||||||
|
"discord": {
|
||||||
|
"shortId": "Skirda Minecraft Server",
|
||||||
|
"largeImageText": "Skirda 1.12.2 Minecraft Server",
|
||||||
|
"largeImageKey": "skirda-testing"
|
||||||
|
},
|
||||||
|
"mainServer": false,
|
||||||
|
"autoconnect": true,
|
||||||
|
"modules": [
|
||||||
|
{
|
||||||
|
"id": "net.minecraftforge:forge:1.12.2-14.23.5.2847",
|
||||||
|
"name": "Minecraft Forge",
|
||||||
|
"type": "ForgeHosted",
|
||||||
|
"artifact": {
|
||||||
|
"size": 4884700,
|
||||||
|
"MD5": "90734a5a713e24902d24c45c15caa42c",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/forge-1.12.2-14.23.5.2847-universal.jar"
|
||||||
|
},
|
||||||
|
"subModules": [
|
||||||
|
{
|
||||||
|
"id": "net.minecraft:launchwrapper:1.12",
|
||||||
|
"name": "Mojang (LaunchWrapper)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 32999,
|
||||||
|
"MD5": "934b2d91c7c5be4a49577c9e6b40e8da",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/launchwrapper-1.12.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.ow2.asm:asm-all:5.2",
|
||||||
|
"name": "Mojang (ASM)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 247787,
|
||||||
|
"MD5": "f5ad16c7f0338b541978b0430d51dc83",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/asm-all-5.2.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "jline:jline:2.13",
|
||||||
|
"name": "Mojang (jline)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 248566,
|
||||||
|
"MD5": "f251ba666cccb260ff7215b2cbeee8d4",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/jline-2.13.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-library:2.11.1@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-library)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 1474672,
|
||||||
|
"MD5": "379c15c4f724421c6d5d7aecedaf87a6",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-library-2.11.1.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-compiler:2.11.1@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-compiler)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 3076920,
|
||||||
|
"MD5": "7d89e952f2d5c74577310cd2c28e3f20",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-compiler-2.11.1.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-actors-migration_2.11:1.1.0@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-actors-migration)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 21324,
|
||||||
|
"MD5": "04e3428b2600ace33c7ae2bf1f6c0a4c",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-actors-migration_2.11-1.1.0.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-continuations-library)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 7956,
|
||||||
|
"MD5": "ed9b1d27aba8ac4090a3749c4dfc895a",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-continuations-library_2.11-1.0.2.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-continuations-plugin)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 46140,
|
||||||
|
"MD5": "a8232db22a72a981de6b1399eb86dff7",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-continuations-plugin_2.11.1-1.0.2.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-parser-combinators_2.11:1.0.1@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-parser-combinators)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 85568,
|
||||||
|
"MD5": "2e50a7df17680daadacca69f07f8a16d",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-parser-combinators_2.11-1.0.1.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-reflect:2.11.1@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-reflect)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 1070312,
|
||||||
|
"MD5": "84e5dc81c10e2bd74c579c9d0332fdd9",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-reflect-2.11.1.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-swing_2.11:1.0.1",
|
||||||
|
"name": "Minecraft Forge (scala-swing)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 736795,
|
||||||
|
"MD5": "1d360289e697022a3f57abaad344b28f",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-swing_2.11-1.0.1.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.scala-lang:scala-xml_2.11:1.0.2@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (scala-xml)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 217812,
|
||||||
|
"MD5": "cc891b094a4c32dedc56bfefe9b072ff",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/scala-xml_2.11-1.0.2.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "com.typesafe.akka:akka-actor_2.11:2.3.3@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (akka-actor)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 746612,
|
||||||
|
"MD5": "25cb22c3078e9fb3f7a861c912924862",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/akka-actor_2.11-2.3.3.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "com.typesafe:config:1.2.1@jar.pack.xz",
|
||||||
|
"name": "Minecraft Forge (typesafe-config)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 56636,
|
||||||
|
"MD5": "10ec4ccabc4e68aac9cf87165ead5d7d",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/config-1.2.1.jar.pack.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "lzma:lzma:0.0.1",
|
||||||
|
"name": "Mojang (LZMA)",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 5762,
|
||||||
|
"MD5": "a3e3c3186e41c4a1a3027ba2bb23cdc6",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/lzma-0.0.1.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "net.sf.trove4j:trove4j:3.0.3",
|
||||||
|
"name": "Trove4J",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 2523218,
|
||||||
|
"MD5": "8fc4d4e0129244f9fd39650c5f30feb2",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/trove4j-3.0.3.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "java3d:vecmath:1.5.2",
|
||||||
|
"name": "Vecmath",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 318956,
|
||||||
|
"MD5": "e5d2b7f46c4800a32f62ce75676a5710",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/vecmath-1.5.2.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "net.sf.jopt-simple:jopt-simple:5.0.3",
|
||||||
|
"name": "Jopt-simple",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 78175,
|
||||||
|
"MD5": "0a5ec84e23df9d7cfb4063bc55f2744c",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/jopt-simple-5.0.3.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.apache.maven:maven-artifact:3.5.3",
|
||||||
|
"name": "maven-artifact",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 54961,
|
||||||
|
"MD5": "7741ebf29690ee7d9dde9cf4376347fc",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/maven-artifact-3.5.3.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "net.minecraftforge:MercuriusUpdater:1.12.2",
|
||||||
|
"name": "MercuriusUpdater",
|
||||||
|
"type": "Library",
|
||||||
|
"artifact": {
|
||||||
|
"size": 15098,
|
||||||
|
"MD5": "6eb9e61097bee3103a2fdc42746b76a4",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/1.12.2/MercuriusUpdater-1.12.2.jar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "net.optifine:optifine:1.12.2_HD_U_F5",
|
||||||
|
"name": "Optifine",
|
||||||
|
"type": "ForgeMod",
|
||||||
|
"artifact": {
|
||||||
|
"size": 2598821,
|
||||||
|
"MD5": "043ac1db6f7441ea4cf31bcb621aff0b",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.12.2/mods/OptiFine.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "mezz:jei:1.12.2-4.14.3.242",
|
||||||
|
"name": "JustEnoughItems",
|
||||||
|
"type": "ForgeMod",
|
||||||
|
"artifact": {
|
||||||
|
"size": 620682,
|
||||||
|
"MD5": "ae6d0e6e873ef6c20f41097dc7fee8c6",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.12.2/mods/jei.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "xaeros:minimap:1.12.2-20.15.0",
|
||||||
|
"name": "XaerosMinimap",
|
||||||
|
"type": "ForgeMod",
|
||||||
|
"required": {
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"artifact": {
|
||||||
|
"size": 528849,
|
||||||
|
"MD5": "cc12cfe20febd1404345f5339e522cda",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.12.2/mods/Xaeros_Minimap.jar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "options.txt",
|
||||||
|
"name": "Default Client Options",
|
||||||
|
"type": "File",
|
||||||
|
"artifact": {
|
||||||
|
"size": 1973,
|
||||||
|
"path": "options.txt",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/files/options-1.12.2.txt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "servers.dat",
|
||||||
|
"name": "Saved Client Servers",
|
||||||
|
"type": "File",
|
||||||
|
"artifact": {
|
||||||
|
"size": 84,
|
||||||
|
"MD5": "71d99e229d7d2b8d2a6423e46832a4b8",
|
||||||
|
"path": "servers.dat",
|
||||||
|
"url": "http://mc.westeroscraft.com/WesterosCraftLauncher/prod-1.12.2/servers.dat"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Before Width: | Height: | Size: 160 KiB |
BIN
app/assets/images/backgrounds/0.webp
Normal file
After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 181 KiB |
BIN
app/assets/images/backgrounds/1.webp
Normal file
After Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 502 KiB |
BIN
app/assets/images/backgrounds/2.webp
Normal file
After Width: | Height: | Size: 232 KiB |
Before Width: | Height: | Size: 1.0 MiB |
BIN
app/assets/images/backgrounds/3.webp
Normal file
After Width: | Height: | Size: 4.5 MiB |
Before Width: | Height: | Size: 268 KiB |
BIN
app/assets/images/backgrounds/4.webp
Normal file
After Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 456 KiB |
BIN
app/assets/images/backgrounds/5.webp
Normal file
After Width: | Height: | Size: 893 KiB |
Before Width: | Height: | Size: 2.6 MiB |
BIN
app/assets/images/backgrounds/6.webp
Normal file
After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 5.0 MiB |
BIN
app/assets/images/backgrounds/7.webp
Normal file
After Width: | Height: | Size: 264 KiB |
BIN
app/assets/images/backgrounds/8.webp
Normal file
After Width: | Height: | Size: 239 KiB |
@ -15,6 +15,7 @@ const { RestResponseStatus } = require('helios-core/common')
|
|||||||
const { MojangRestAPI, mojangErrorDisplayable, MojangErrorCode } = require('helios-core/mojang')
|
const { MojangRestAPI, mojangErrorDisplayable, MojangErrorCode } = require('helios-core/mojang')
|
||||||
const { MicrosoftAuth, microsoftErrorDisplayable, MicrosoftErrorCode } = require('helios-core/microsoft')
|
const { MicrosoftAuth, microsoftErrorDisplayable, MicrosoftErrorCode } = require('helios-core/microsoft')
|
||||||
const { AZURE_CLIENT_ID } = require('./ipcconstants')
|
const { AZURE_CLIENT_ID } = require('./ipcconstants')
|
||||||
|
const { async } = require('node-stream-zip')
|
||||||
|
|
||||||
const log = LoggerUtil.getLogger('AuthManager')
|
const log = LoggerUtil.getLogger('AuthManager')
|
||||||
|
|
||||||
@ -57,6 +58,11 @@ exports.addMojangAccount = async function(username, password) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.addOfflineAccount = async function(usernameOffline){
|
||||||
|
//TODO: check for forbidden symbols and lenght!!
|
||||||
|
ConfigManager.addOfflineAccount(usernameOffline)
|
||||||
|
}
|
||||||
|
|
||||||
const AUTH_MODE = { FULL: 0, MS_REFRESH: 1, MC_REFRESH: 2 }
|
const AUTH_MODE = { FULL: 0, MS_REFRESH: 1, MC_REFRESH: 2 }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,6 +187,17 @@ exports.removeMojangAccount = async function(uuid){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.removeOfflineAccount = async function(uuid){
|
||||||
|
try {
|
||||||
|
ConfigManager.removeAuthAccount(uuid)
|
||||||
|
ConfigManager.save()
|
||||||
|
return Promise.resolve()
|
||||||
|
} catch (err){
|
||||||
|
log.error('Error while removing account', err)
|
||||||
|
return Promise.reject(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a Microsoft account. It is expected that the caller will invoke the OAuth logout
|
* Remove a Microsoft account. It is expected that the caller will invoke the OAuth logout
|
||||||
* through the ipc renderer.
|
* through the ipc renderer.
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
const { uuid } = require('discord-rpc-patch/src/util')
|
||||||
const fs = require('fs-extra')
|
const fs = require('fs-extra')
|
||||||
const os = require('os')
|
const os = require('os')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
@ -353,6 +354,19 @@ exports.addMojangAuthAccount = function(uuid, accessToken, username, displayName
|
|||||||
return config.authenticationDatabase[uuid]
|
return config.authenticationDatabase[uuid]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.addOfflineAccount = function(usernameOffline){
|
||||||
|
fake_uuid = usernameOffline
|
||||||
|
config.selectedAccount = fake_uuid
|
||||||
|
accessToken = ""
|
||||||
|
config.authenticationDatabase[fake_uuid] = {
|
||||||
|
type: 'offline',
|
||||||
|
accessToken,
|
||||||
|
username: usernameOffline.trim(),
|
||||||
|
uuid: fake_uuid.trim(),
|
||||||
|
displayName: usernameOffline.trim()
|
||||||
|
}
|
||||||
|
return config.authenticationDatabase[fake_uuid]
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Update the tokens of an authenticated microsoft account.
|
* Update the tokens of an authenticated microsoft account.
|
||||||
*
|
*
|
||||||
|
@ -537,7 +537,8 @@ exports.pullRemote = function(){
|
|||||||
return exports.pullLocal()
|
return exports.pullLocal()
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const distroURL = 'http://mc.westeroscraft.com/WesterosCraftLauncher/distribution.json'
|
//const distroURL = 'http://mc.westeroscraft.com/WesterosCraftLauncher/distribution.json'
|
||||||
|
const distroURL = "https://skirda.gregbrzezinski.com/distribution.json"
|
||||||
//const distroURL = 'https://gist.githubusercontent.com/dscalzi/53b1ba7a11d26a5c353f9d5ae484b71b/raw/'
|
//const distroURL = 'https://gist.githubusercontent.com/dscalzi/53b1ba7a11d26a5c353f9d5ae484b71b/raw/'
|
||||||
const opts = {
|
const opts = {
|
||||||
url: distroURL,
|
url: distroURL,
|
||||||
|
@ -343,7 +343,7 @@ class ProcessBuilder {
|
|||||||
|
|
||||||
// Java Arguments
|
// Java Arguments
|
||||||
if(process.platform === 'darwin'){
|
if(process.platform === 'darwin'){
|
||||||
args.push('-Xdock:name=HeliosLauncher')
|
args.push('-Xdock:name=Skirda Launcher')
|
||||||
args.push('-Xdock:icon=' + path.join(__dirname, '..', 'images', 'minecraft.icns'))
|
args.push('-Xdock:icon=' + path.join(__dirname, '..', 'images', 'minecraft.icns'))
|
||||||
}
|
}
|
||||||
args.push('-Xmx' + ConfigManager.getMaxRAM())
|
args.push('-Xmx' + ConfigManager.getMaxRAM())
|
||||||
@ -381,7 +381,7 @@ class ProcessBuilder {
|
|||||||
|
|
||||||
// Java Arguments
|
// Java Arguments
|
||||||
if(process.platform === 'darwin'){
|
if(process.platform === 'darwin'){
|
||||||
args.push('-Xdock:name=HeliosLauncher')
|
args.push('-Xdock:name=Skirda Launcher')
|
||||||
args.push('-Xdock:icon=' + path.join(__dirname, '..', 'images', 'minecraft.icns'))
|
args.push('-Xdock:icon=' + path.join(__dirname, '..', 'images', 'minecraft.icns'))
|
||||||
}
|
}
|
||||||
args.push('-Xmx' + ConfigManager.getMaxRAM())
|
args.push('-Xmx' + ConfigManager.getMaxRAM())
|
||||||
@ -483,7 +483,7 @@ class ProcessBuilder {
|
|||||||
val = args[i].replace(argDiscovery, tempNativePath)
|
val = args[i].replace(argDiscovery, tempNativePath)
|
||||||
break
|
break
|
||||||
case 'launcher_name':
|
case 'launcher_name':
|
||||||
val = args[i].replace(argDiscovery, 'Helios-Launcher')
|
val = args[i].replace(argDiscovery, 'Skirda-Launcher')
|
||||||
break
|
break
|
||||||
case 'launcher_version':
|
case 'launcher_version':
|
||||||
val = args[i].replace(argDiscovery, this.launcherVersion)
|
val = args[i].replace(argDiscovery, this.launcherVersion)
|
||||||
|
3
app/assets/js/scripts/dynmap.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
dynmapDoneButton.addEventListener('click', () => {
|
||||||
|
switchView(getCurrentView(), VIEWS.landing)
|
||||||
|
})
|
@ -108,6 +108,7 @@ document.getElementById('launch_button').addEventListener('click', function(e){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
// Bind settings button
|
// Bind settings button
|
||||||
document.getElementById('settingsMediaButton').onclick = (e) => {
|
document.getElementById('settingsMediaButton').onclick = (e) => {
|
||||||
prepareSettings()
|
prepareSettings()
|
||||||
@ -158,65 +159,65 @@ server_selection_button.onclick = (e) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update Mojang Status Color
|
// Update Mojang Status Color
|
||||||
const refreshMojangStatuses = async function(){
|
// const refreshMojangStatuses = async function(){
|
||||||
loggerLanding.log('Refreshing Mojang Statuses..')
|
// loggerLanding.log('Refreshing Mojang Statuses..')
|
||||||
|
|
||||||
let status = 'grey'
|
// let status = 'grey'
|
||||||
let tooltipEssentialHTML = ''
|
// let tooltipEssentialHTML = ''
|
||||||
let tooltipNonEssentialHTML = ''
|
// let tooltipNonEssentialHTML = ''
|
||||||
|
|
||||||
const response = await MojangRestAPI.status()
|
// const response = await MojangRestAPI.status()
|
||||||
let statuses
|
// let statuses
|
||||||
if(response.responseStatus === RestResponseStatus.SUCCESS) {
|
// if(response.responseStatus === RestResponseStatus.SUCCESS) {
|
||||||
statuses = response.data
|
// statuses = response.data
|
||||||
} else {
|
// } else {
|
||||||
loggerLanding.warn('Unable to refresh Mojang service status.')
|
// loggerLanding.warn('Unable to refresh Mojang service status.')
|
||||||
statuses = MojangRestAPI.getDefaultStatuses()
|
// statuses = MojangRestAPI.getDefaultStatuses()
|
||||||
}
|
// }
|
||||||
|
|
||||||
greenCount = 0
|
// greenCount = 0
|
||||||
greyCount = 0
|
// greyCount = 0
|
||||||
|
|
||||||
for(let i=0; i<statuses.length; i++){
|
// for(let i=0; i<statuses.length; i++){
|
||||||
const service = statuses[i]
|
// const service = statuses[i]
|
||||||
|
|
||||||
if(service.essential){
|
// if(service.essential){
|
||||||
tooltipEssentialHTML += `<div class="mojangStatusContainer">
|
// tooltipEssentialHTML += `<div class="mojangStatusContainer">
|
||||||
<span class="mojangStatusIcon" style="color: ${MojangRestAPI.statusToHex(service.status)};">•</span>
|
// <span class="mojangStatusIcon" style="color: ${MojangRestAPI.statusToHex(service.status)};">•</span>
|
||||||
<span class="mojangStatusName">${service.name}</span>
|
// <span class="mojangStatusName">${service.name}</span>
|
||||||
</div>`
|
// </div>`
|
||||||
} else {
|
// } else {
|
||||||
tooltipNonEssentialHTML += `<div class="mojangStatusContainer">
|
// tooltipNonEssentialHTML += `<div class="mojangStatusContainer">
|
||||||
<span class="mojangStatusIcon" style="color: ${MojangRestAPI.statusToHex(service.status)};">•</span>
|
// <span class="mojangStatusIcon" style="color: ${MojangRestAPI.statusToHex(service.status)};">•</span>
|
||||||
<span class="mojangStatusName">${service.name}</span>
|
// <span class="mojangStatusName">${service.name}</span>
|
||||||
</div>`
|
// </div>`
|
||||||
}
|
// }
|
||||||
|
|
||||||
if(service.status === 'yellow' && status !== 'red'){
|
// if(service.status === 'yellow' && status !== 'red'){
|
||||||
status = 'yellow'
|
// status = 'yellow'
|
||||||
} else if(service.status === 'red'){
|
// } else if(service.status === 'red'){
|
||||||
status = 'red'
|
// status = 'red'
|
||||||
} else {
|
// } else {
|
||||||
if(service.status === 'grey'){
|
// if(service.status === 'grey'){
|
||||||
++greyCount
|
// ++greyCount
|
||||||
}
|
// }
|
||||||
++greenCount
|
// ++greenCount
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
if(greenCount === statuses.length){
|
// if(greenCount === statuses.length){
|
||||||
if(greyCount === statuses.length){
|
// if(greyCount === statuses.length){
|
||||||
status = 'grey'
|
// status = 'grey'
|
||||||
} else {
|
// } else {
|
||||||
status = 'green'
|
// status = 'green'
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
document.getElementById('mojangStatusEssentialContainer').innerHTML = tooltipEssentialHTML
|
// document.getElementById('mojangStatusEssentialContainer').innerHTML = tooltipEssentialHTML
|
||||||
document.getElementById('mojangStatusNonEssentialContainer').innerHTML = tooltipNonEssentialHTML
|
// document.getElementById('mojangStatusNonEssentialContainer').innerHTML = tooltipNonEssentialHTML
|
||||||
document.getElementById('mojang_status_icon').style.color = MojangRestAPI.statusToHex(status)
|
// document.getElementById('mojang_status_icon').style.color = MojangRestAPI.statusToHex(status)
|
||||||
}
|
// }
|
||||||
|
|
||||||
const refreshServerStatus = async function(fade = false){
|
const refreshServerStatus = async function(fade = false){
|
||||||
loggerLanding.log('Refreshing Server Status')
|
loggerLanding.log('Refreshing Server Status')
|
||||||
@ -250,12 +251,12 @@ const refreshServerStatus = async function(fade = false){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshMojangStatuses()
|
//refreshMojangStatuses()
|
||||||
// Server Status is refreshed in uibinder.js on distributionIndexDone.
|
// Server Status is refreshed in uibinder.js on distributionIndexDone.
|
||||||
|
|
||||||
// Set refresh rate to once every 5 minutes.
|
// Set refresh rate to once every 5 minutes.
|
||||||
let mojangStatusListener = setInterval(() => refreshMojangStatuses(true), 300000)
|
//let mojangStatusListener = setInterval(() => refreshMojangStatuses(true), 300000)
|
||||||
let serverStatusListener = setInterval(() => refreshServerStatus(true), 300000)
|
//let serverStatusListener = setInterval(() => refreshServerStatus(true), 300000)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows an error overlay, toggles off the launch area.
|
* Shows an error overlay, toggles off the launch area.
|
||||||
@ -325,7 +326,7 @@ function asyncSystemScan(mcVersion, launchAfter = true){
|
|||||||
// Show this information to the user.
|
// Show this information to the user.
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'No Compatible<br>Java Installation Found',
|
'No Compatible<br>Java Installation Found',
|
||||||
'In order to join WesterosCraft, you need a 64-bit installation of Java 8. Would you like us to install a copy?',
|
'In order to join Skirda, you need a 64-bit installation of Java 8. Would you like us to install a copy?',
|
||||||
'Install Java',
|
'Install Java',
|
||||||
'Install Manually'
|
'Install Manually'
|
||||||
)
|
)
|
||||||
@ -484,12 +485,12 @@ function dlAsync(login = true){
|
|||||||
// Login parameter is temporary for debug purposes. Allows testing the validation/downloads without
|
// Login parameter is temporary for debug purposes. Allows testing the validation/downloads without
|
||||||
// launching the game.
|
// launching the game.
|
||||||
|
|
||||||
if(login) {
|
/* if(login) {
|
||||||
if(ConfigManager.getSelectedAccount() == null){
|
if(ConfigManager.getSelectedAccount() == null){
|
||||||
loggerLanding.error('You must be logged into an account.')
|
loggerLanding.error('You must be logged into an account.')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
setLaunchDetails('Please wait..')
|
setLaunchDetails('Please wait..')
|
||||||
toggleLaunchArea(true)
|
toggleLaunchArea(true)
|
||||||
@ -808,6 +809,8 @@ function slide_(up){
|
|||||||
//date.toLocaleDateString('en-US', {month: 'short', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric'})
|
//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(29, 29, 29, 0.55)'
|
||||||
landingContainer.style.background = 'rgba(0, 0, 0, 0.50)'
|
landingContainer.style.background = 'rgba(0, 0, 0, 0.50)'
|
||||||
|
//Frame bar dimming (map patch)
|
||||||
|
frameBar.style.background = 'rgba(0, 0, 0)'
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if(newsGlideCount === 1){
|
if(newsGlideCount === 1){
|
||||||
lCLCenter.style.transition = 'none'
|
lCLCenter.style.transition = 'none'
|
||||||
@ -820,6 +823,8 @@ function slide_(up){
|
|||||||
newsGlideCount--
|
newsGlideCount--
|
||||||
}, 2000)
|
}, 2000)
|
||||||
landingContainer.style.background = null
|
landingContainer.style.background = null
|
||||||
|
//Frame bar dimming revert (map patch)
|
||||||
|
frameBar.style.background = 'rgba(0, 0, 0, 0.50)'
|
||||||
lCLCenter.style.transition = null
|
lCLCenter.style.transition = null
|
||||||
newsBtn.style.transition = null
|
newsBtn.style.transition = null
|
||||||
newsContainer.style.top = '100%'
|
newsContainer.style.top = '100%'
|
||||||
@ -833,8 +838,9 @@ function slide_(up){
|
|||||||
|
|
||||||
// Bind news button.
|
// Bind news button.
|
||||||
document.getElementById('newsButton').onclick = () => {
|
document.getElementById('newsButton').onclick = () => {
|
||||||
|
switchView(getCurrentView(), VIEWS.dynmap, 500, 500)
|
||||||
// Toggle tabbing.
|
// Toggle tabbing.
|
||||||
if(newsActive){
|
/*if(newsActive){
|
||||||
$('#landingContainer *').removeAttr('tabindex')
|
$('#landingContainer *').removeAttr('tabindex')
|
||||||
$('#newsContainer *').attr('tabindex', '-1')
|
$('#newsContainer *').attr('tabindex', '-1')
|
||||||
} else {
|
} else {
|
||||||
@ -846,9 +852,9 @@ document.getElementById('newsButton').onclick = () => {
|
|||||||
ConfigManager.setNewsCacheDismissed(true)
|
ConfigManager.setNewsCacheDismissed(true)
|
||||||
ConfigManager.save()
|
ConfigManager.save()
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
slide_(!newsActive)
|
//slide_(!newsActive)
|
||||||
newsActive = !newsActive
|
//newsActive = !newsActive
|
||||||
}
|
}
|
||||||
|
|
||||||
// Array to store article meta.
|
// Array to store article meta.
|
||||||
@ -862,42 +868,42 @@ let newsLoadingListener = null
|
|||||||
*
|
*
|
||||||
* @param {boolean} val True to set loading animation, otherwise false.
|
* @param {boolean} val True to set loading animation, otherwise false.
|
||||||
*/
|
*/
|
||||||
function setNewsLoading(val){
|
// function setNewsLoading(val){
|
||||||
if(val){
|
// if(val){
|
||||||
const nLStr = 'Checking for News'
|
// const nLStr = 'Checking for News'
|
||||||
let dotStr = '..'
|
// let dotStr = '..'
|
||||||
nELoadSpan.innerHTML = nLStr + dotStr
|
// nELoadSpan.innerHTML = nLStr + dotStr
|
||||||
newsLoadingListener = setInterval(() => {
|
// newsLoadingListener = setInterval(() => {
|
||||||
if(dotStr.length >= 3){
|
// if(dotStr.length >= 3){
|
||||||
dotStr = ''
|
// dotStr = ''
|
||||||
} else {
|
// } else {
|
||||||
dotStr += '.'
|
// dotStr += '.'
|
||||||
}
|
// }
|
||||||
nELoadSpan.innerHTML = nLStr + dotStr
|
// nELoadSpan.innerHTML = nLStr + dotStr
|
||||||
}, 750)
|
// }, 750)
|
||||||
} else {
|
// } else {
|
||||||
if(newsLoadingListener != null){
|
// if(newsLoadingListener != null){
|
||||||
clearInterval(newsLoadingListener)
|
// clearInterval(newsLoadingListener)
|
||||||
newsLoadingListener = null
|
// newsLoadingListener = null
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Bind retry button.
|
// Bind retry button.
|
||||||
newsErrorRetry.onclick = () => {
|
// newsErrorRetry.onclick = () => {
|
||||||
$('#newsErrorFailed').fadeOut(250, () => {
|
// $('#newsErrorFailed').fadeOut(250, () => {
|
||||||
initNews()
|
// initNews()
|
||||||
$('#newsErrorLoading').fadeIn(250)
|
// $('#newsErrorLoading').fadeIn(250)
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
|
|
||||||
newsArticleContentScrollable.onscroll = (e) => {
|
// newsArticleContentScrollable.onscroll = (e) => {
|
||||||
if(e.target.scrollTop > Number.parseFloat($('.newsArticleSpacerTop').css('height'))){
|
// if(e.target.scrollTop > Number.parseFloat($('.newsArticleSpacerTop').css('height'))){
|
||||||
newsContent.setAttribute('scrolled', '')
|
// newsContent.setAttribute('scrolled', '')
|
||||||
} else {
|
// } else {
|
||||||
newsContent.removeAttribute('scrolled')
|
// newsContent.removeAttribute('scrolled')
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reload the news without restarting.
|
* Reload the news without restarting.
|
||||||
@ -933,107 +939,107 @@ function showNewsAlert(){
|
|||||||
* @returns {Promise.<void>} A promise which resolves when the news
|
* @returns {Promise.<void>} A promise which resolves when the news
|
||||||
* content has finished loading and transitioning.
|
* content has finished loading and transitioning.
|
||||||
*/
|
*/
|
||||||
function initNews(){
|
// function initNews(){
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
// return new Promise((resolve, reject) => {
|
||||||
setNewsLoading(true)
|
// setNewsLoading(true)
|
||||||
|
|
||||||
let news = {}
|
// let news = {}
|
||||||
loadNews().then(news => {
|
// loadNews().then(news => {
|
||||||
|
|
||||||
newsArr = news.articles || null
|
// newsArr = news.articles || null
|
||||||
|
|
||||||
if(newsArr == null){
|
// if(newsArr == null){
|
||||||
// News Loading Failed
|
// // News Loading Failed
|
||||||
setNewsLoading(false)
|
// setNewsLoading(false)
|
||||||
|
|
||||||
$('#newsErrorLoading').fadeOut(250, () => {
|
// $('#newsErrorLoading').fadeOut(250, () => {
|
||||||
$('#newsErrorFailed').fadeIn(250, () => {
|
// $('#newsErrorFailed').fadeIn(250, () => {
|
||||||
resolve()
|
// resolve()
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
} else if(newsArr.length === 0) {
|
// } else if(newsArr.length === 0) {
|
||||||
// No News Articles
|
// // No News Articles
|
||||||
setNewsLoading(false)
|
// setNewsLoading(false)
|
||||||
|
|
||||||
ConfigManager.setNewsCache({
|
// ConfigManager.setNewsCache({
|
||||||
date: null,
|
// date: null,
|
||||||
content: null,
|
// content: null,
|
||||||
dismissed: false
|
// dismissed: false
|
||||||
})
|
// })
|
||||||
ConfigManager.save()
|
// ConfigManager.save()
|
||||||
|
|
||||||
$('#newsErrorLoading').fadeOut(250, () => {
|
// $('#newsErrorLoading').fadeOut(250, () => {
|
||||||
$('#newsErrorNone').fadeIn(250, () => {
|
// $('#newsErrorNone').fadeIn(250, () => {
|
||||||
resolve()
|
// resolve()
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
} else {
|
// } else {
|
||||||
// Success
|
// // Success
|
||||||
setNewsLoading(false)
|
// setNewsLoading(false)
|
||||||
|
|
||||||
const lN = newsArr[0]
|
// const lN = newsArr[0]
|
||||||
const cached = ConfigManager.getNewsCache()
|
// const cached = ConfigManager.getNewsCache()
|
||||||
let newHash = crypto.createHash('sha1').update(lN.content).digest('hex')
|
// let newHash = crypto.createHash('sha1').update(lN.content).digest('hex')
|
||||||
let newDate = new Date(lN.date)
|
// let newDate = new Date(lN.date)
|
||||||
let isNew = false
|
// let isNew = false
|
||||||
|
|
||||||
if(cached.date != null && cached.content != null){
|
// if(cached.date != null && cached.content != null){
|
||||||
|
|
||||||
if(new Date(cached.date) >= newDate){
|
// if(new Date(cached.date) >= newDate){
|
||||||
|
|
||||||
// Compare Content
|
// // Compare Content
|
||||||
if(cached.content !== newHash){
|
// if(cached.content !== newHash){
|
||||||
isNew = true
|
// isNew = true
|
||||||
showNewsAlert()
|
// showNewsAlert()
|
||||||
} else {
|
// } else {
|
||||||
if(!cached.dismissed){
|
// if(!cached.dismissed){
|
||||||
isNew = true
|
// isNew = true
|
||||||
showNewsAlert()
|
// showNewsAlert()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
isNew = true
|
// isNew = true
|
||||||
showNewsAlert()
|
// showNewsAlert()
|
||||||
}
|
// }
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
isNew = true
|
// isNew = true
|
||||||
showNewsAlert()
|
// showNewsAlert()
|
||||||
}
|
// }
|
||||||
|
|
||||||
if(isNew){
|
// if(isNew){
|
||||||
ConfigManager.setNewsCache({
|
// ConfigManager.setNewsCache({
|
||||||
date: newDate.getTime(),
|
// date: newDate.getTime(),
|
||||||
content: newHash,
|
// content: newHash,
|
||||||
dismissed: false
|
// dismissed: false
|
||||||
})
|
// })
|
||||||
ConfigManager.save()
|
// ConfigManager.save()
|
||||||
}
|
// }
|
||||||
|
|
||||||
const switchHandler = (forward) => {
|
// const switchHandler = (forward) => {
|
||||||
let cArt = parseInt(newsContent.getAttribute('article'))
|
// let cArt = parseInt(newsContent.getAttribute('article'))
|
||||||
let nxtArt = forward ? (cArt >= newsArr.length-1 ? 0 : cArt + 1) : (cArt <= 0 ? newsArr.length-1 : cArt - 1)
|
// let nxtArt = forward ? (cArt >= newsArr.length-1 ? 0 : cArt + 1) : (cArt <= 0 ? newsArr.length-1 : cArt - 1)
|
||||||
|
|
||||||
displayArticle(newsArr[nxtArt], nxtArt+1)
|
// displayArticle(newsArr[nxtArt], nxtArt+1)
|
||||||
}
|
// }
|
||||||
|
|
||||||
document.getElementById('newsNavigateRight').onclick = () => { switchHandler(true) }
|
// document.getElementById('newsNavigateRight').onclick = () => { switchHandler(true) }
|
||||||
document.getElementById('newsNavigateLeft').onclick = () => { switchHandler(false) }
|
// document.getElementById('newsNavigateLeft').onclick = () => { switchHandler(false) }
|
||||||
|
|
||||||
$('#newsErrorContainer').fadeOut(250, () => {
|
// $('#newsErrorContainer').fadeOut(250, () => {
|
||||||
displayArticle(newsArr[0], 1)
|
// displayArticle(newsArr[0], 1)
|
||||||
$('#newsContent').fadeIn(250, () => {
|
// $('#newsContent').fadeIn(250, () => {
|
||||||
resolve()
|
// resolve()
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
|
|
||||||
})
|
// })
|
||||||
|
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add keyboard controls to the news UI. Left and right arrows toggle
|
* Add keyboard controls to the news UI. Left and right arrows toggle
|
||||||
|
39
app/assets/js/scripts/loginOffline.js
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
const loggerOfflineLogin = LoggerUtil1('%c[LoginOffline]', 'color: #000668; font-weight: bold')
|
||||||
|
|
||||||
|
const loginOfflineButton = document.getElementById('loginOfflineButton')
|
||||||
|
const loginOfflineCancelContainer = document.getElementById('loginOfflineCancelContainer')
|
||||||
|
const loginOfflineCancelButton = document.getElementById('loginOfflineCancelButton')
|
||||||
|
|
||||||
|
function loginOfflineDisabled(v){
|
||||||
|
if(loginOfflineButton.disabled !== v){
|
||||||
|
loginOfflineButton.disabled = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formOfflineDisabled(v){
|
||||||
|
loginOfflineDisabled(v)
|
||||||
|
loginOfflineUsername.disabled = v
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
loginOfflineButton.addEventListener('click', () => {
|
||||||
|
formOfflineDisabled(true)
|
||||||
|
AuthManager.addOfflineAccount(loginOfflineUsername.value).then((value) =>{
|
||||||
|
switchView(VIEWS.loginOffline, VIEWS.landing, 500, 500)
|
||||||
|
|
||||||
|
})
|
||||||
|
loginOfflineUsername = ''
|
||||||
|
})
|
||||||
|
|
||||||
|
loginOfflineCancelButton.addEventListener('click', () => {
|
||||||
|
if (Object.keys(ConfigManager.getAuthAccounts()).length === 0) {
|
||||||
|
loginOfflineUsername.value = ''
|
||||||
|
switchView(VIEWS.loginOffline, VIEWS.loginOptions, 500, 500)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
loginOfflineUsername.value = ''
|
||||||
|
switchView(VIEWS.loginOffline, VIEWS.landing, 500, 500)
|
||||||
|
}
|
||||||
|
})
|
@ -3,7 +3,7 @@ const loginOptionMicrosoft = document.getElementById('loginOptionMicrosoft')
|
|||||||
const loginOptionMojang = document.getElementById('loginOptionMojang')
|
const loginOptionMojang = document.getElementById('loginOptionMojang')
|
||||||
const loginOptionsCancelButton = document.getElementById('loginOptionCancelButton')
|
const loginOptionsCancelButton = document.getElementById('loginOptionCancelButton')
|
||||||
|
|
||||||
let loginOptionsCancellable = false
|
let loginOptionsCancellable = true
|
||||||
|
|
||||||
let loginOptionsViewOnLoginSuccess
|
let loginOptionsViewOnLoginSuccess
|
||||||
let loginOptionsViewOnLoginCancel
|
let loginOptionsViewOnLoginCancel
|
||||||
@ -36,15 +36,10 @@ loginOptionMojang.onclick = (e) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
loginOptionsCancelButton.onclick = (e) => {
|
loginOptionOffline.onclick = (e) => {
|
||||||
switchView(getCurrentView(), loginOptionsViewOnCancel, 500, 500, () => {
|
switchView(getCurrentView(), VIEWS.loginOffline, 500, 500, () => {
|
||||||
// Clear login values (Mojang login)
|
loginViewOnSuccess = loginOptionsViewOnLoginSuccess
|
||||||
// No cleanup needed for Microsoft.
|
loginViewOnCancel = loginOptionsViewOnLoginCancel
|
||||||
loginUsername.value = ''
|
loginCancelEnabled(true)
|
||||||
loginPassword.value = ''
|
|
||||||
if(loginOptionsViewCancelHandler != null){
|
|
||||||
loginOptionsViewCancelHandler()
|
|
||||||
loginOptionsViewCancelHandler = null
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
@ -331,6 +331,14 @@ document.getElementById('settingsAddMojangAccount').onclick = (e) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
document.getElementById('settingsAddOfflineAccount').onclick = (e) => {
|
||||||
|
switchView(getCurrentView(), VIEWS.loginOffline, 500, 500, () => {
|
||||||
|
loginViewOnCancel = VIEWS.settings
|
||||||
|
loginViewOnSuccess = VIEWS.settings
|
||||||
|
loginCancelEnabled(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// Bind the add microsoft account button.
|
// Bind the add microsoft account button.
|
||||||
document.getElementById('settingsAddMicrosoftAccount').onclick = (e) => {
|
document.getElementById('settingsAddMicrosoftAccount').onclick = (e) => {
|
||||||
switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => {
|
switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => {
|
||||||
@ -501,6 +509,24 @@ function processLogOut(val, isLastAccount){
|
|||||||
switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => {
|
switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => {
|
||||||
ipcRenderer.send(MSFT_OPCODE.OPEN_LOGOUT, uuid, isLastAccount)
|
ipcRenderer.send(MSFT_OPCODE.OPEN_LOGOUT, uuid, isLastAccount)
|
||||||
})
|
})
|
||||||
|
} if(targetAcc.type === 'offline') {
|
||||||
|
AuthManager.removeOfflineAccount(uuid).then(() => {
|
||||||
|
if(!isLastAccount && uuid === prevSelAcc.uuid){
|
||||||
|
const selAcc = ConfigManager.getSelectedAccount()
|
||||||
|
refreshAuthAccountSelected(selAcc.uuid)
|
||||||
|
updateSelectedAccount(selAcc)
|
||||||
|
//validateSelectedAccount()
|
||||||
|
}
|
||||||
|
if(isLastAccount) {
|
||||||
|
loginOptionsCancelEnabled(false)
|
||||||
|
loginOptionsViewOnLoginSuccess = VIEWS.settings
|
||||||
|
loginOptionsViewOnLoginCancel = VIEWS.loginOptions
|
||||||
|
switchView(getCurrentView(), VIEWS.loginOptions)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$(parent).fadeOut(250, () => {
|
||||||
|
parent.remove()
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
AuthManager.removeMojangAccount(uuid).then(() => {
|
AuthManager.removeMojangAccount(uuid).then(() => {
|
||||||
if(!isLastAccount && uuid === prevSelAcc.uuid){
|
if(!isLastAccount && uuid === prevSelAcc.uuid){
|
||||||
@ -603,6 +629,7 @@ function refreshAuthAccountSelected(uuid){
|
|||||||
|
|
||||||
const settingsCurrentMicrosoftAccounts = document.getElementById('settingsCurrentMicrosoftAccounts')
|
const settingsCurrentMicrosoftAccounts = document.getElementById('settingsCurrentMicrosoftAccounts')
|
||||||
const settingsCurrentMojangAccounts = document.getElementById('settingsCurrentMojangAccounts')
|
const settingsCurrentMojangAccounts = document.getElementById('settingsCurrentMojangAccounts')
|
||||||
|
const settingsCurrentOfflineAccounts = document.getElementById('settingsCurrentOfflineAccounts')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add auth account elements for each one stored in the authentication database.
|
* Add auth account elements for each one stored in the authentication database.
|
||||||
@ -617,6 +644,7 @@ function populateAuthAccounts(){
|
|||||||
|
|
||||||
let microsoftAuthAccountStr = ''
|
let microsoftAuthAccountStr = ''
|
||||||
let mojangAuthAccountStr = ''
|
let mojangAuthAccountStr = ''
|
||||||
|
let offlineAuthAccountStr = ''
|
||||||
|
|
||||||
authKeys.forEach((val) => {
|
authKeys.forEach((val) => {
|
||||||
const acc = authAccounts[val]
|
const acc = authAccounts[val]
|
||||||
@ -647,6 +675,8 @@ function populateAuthAccounts(){
|
|||||||
|
|
||||||
if(acc.type === 'microsoft') {
|
if(acc.type === 'microsoft') {
|
||||||
microsoftAuthAccountStr += accHtml
|
microsoftAuthAccountStr += accHtml
|
||||||
|
} if (acc.type === 'offline') {
|
||||||
|
offlineAuthAccountStr += accHtml
|
||||||
} else {
|
} else {
|
||||||
mojangAuthAccountStr += accHtml
|
mojangAuthAccountStr += accHtml
|
||||||
}
|
}
|
||||||
@ -655,6 +685,7 @@ function populateAuthAccounts(){
|
|||||||
|
|
||||||
settingsCurrentMicrosoftAccounts.innerHTML = microsoftAuthAccountStr
|
settingsCurrentMicrosoftAccounts.innerHTML = microsoftAuthAccountStr
|
||||||
settingsCurrentMojangAccounts.innerHTML = mojangAuthAccountStr
|
settingsCurrentMojangAccounts.innerHTML = mojangAuthAccountStr
|
||||||
|
settingsCurrentOfflineAccounts.innerHTML = offlineAuthAccountStr
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,9 +18,11 @@ const VIEWS = {
|
|||||||
landing: '#landingContainer',
|
landing: '#landingContainer',
|
||||||
loginOptions: '#loginOptionsContainer',
|
loginOptions: '#loginOptionsContainer',
|
||||||
login: '#loginContainer',
|
login: '#loginContainer',
|
||||||
|
loginOffline: '#loginOfflineContainer',
|
||||||
settings: '#settingsContainer',
|
settings: '#settingsContainer',
|
||||||
welcome: '#welcomeContainer',
|
welcome: '#welcomeContainer',
|
||||||
waiting: '#waitingContainer'
|
waiting: '#waitingContainer',
|
||||||
|
dynmap: '#dynmapContainer'
|
||||||
}
|
}
|
||||||
|
|
||||||
// The currently shown view container.
|
// The currently shown view container.
|
||||||
@ -69,14 +71,15 @@ function showMainUI(data){
|
|||||||
refreshServerStatus()
|
refreshServerStatus()
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
document.getElementById('frameBar').style.backgroundColor = 'rgba(0, 0, 0, 0.5)'
|
document.getElementById('frameBar').style.backgroundColor = 'rgba(0, 0, 0, 0.5)'
|
||||||
document.body.style.backgroundImage = `url('assets/images/backgrounds/${document.body.getAttribute('bkid')}.jpg')`
|
document.body.style.backgroundImage = `url('assets/images/backgrounds/${document.body.getAttribute('bkid')}.webp')`
|
||||||
$('#main').show()
|
$('#main').show()
|
||||||
|
|
||||||
const isLoggedIn = Object.keys(ConfigManager.getAuthAccounts()).length > 0
|
const isLoggedIn = Object.keys(ConfigManager.getAuthAccounts()).length > 0
|
||||||
|
|
||||||
// If this is enabled in a development environment we'll get ratelimited.
|
// If this is enabled in a development environment we'll get ratelimited.
|
||||||
// The relaunch frequency is usually far too high.
|
// The relaunch frequency is usually far too high.
|
||||||
if(!isDev && isLoggedIn){
|
//if(!isDev && isLoggedIn){
|
||||||
|
if(isLoggedIn){
|
||||||
validateSelectedAccount()
|
validateSelectedAccount()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,9 +107,9 @@ function showMainUI(data){
|
|||||||
|
|
||||||
}, 750)
|
}, 750)
|
||||||
// Disable tabbing to the news container.
|
// Disable tabbing to the news container.
|
||||||
initNews().then(() => {
|
// initNews().then(() => {
|
||||||
$('#newsContainer *').attr('tabindex', '-1')
|
// $('#newsContainer *').attr('tabindex', '-1')
|
||||||
})
|
// })
|
||||||
}
|
}
|
||||||
|
|
||||||
function showFatalStartupError(){
|
function showFatalStartupError(){
|
||||||
@ -135,7 +138,7 @@ function showFatalStartupError(){
|
|||||||
function onDistroRefresh(data){
|
function onDistroRefresh(data){
|
||||||
updateSelectedServer(data.getServer(ConfigManager.getSelectedServer()))
|
updateSelectedServer(data.getServer(ConfigManager.getSelectedServer()))
|
||||||
refreshServerStatus()
|
refreshServerStatus()
|
||||||
initNews()
|
//initNews()
|
||||||
syncModConfigurations(data)
|
syncModConfigurations(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,7 +324,7 @@ function refreshDistributionIndex(remote, onSuccess, onError){
|
|||||||
|
|
||||||
async function validateSelectedAccount(){
|
async function validateSelectedAccount(){
|
||||||
const selectedAcc = ConfigManager.getSelectedAccount()
|
const selectedAcc = ConfigManager.getSelectedAccount()
|
||||||
if(selectedAcc != null){
|
if(selectedAcc != null && selectedAcc.type != 'offline'){
|
||||||
const val = await AuthManager.validateSelected()
|
const val = await AuthManager.validateSelected()
|
||||||
if(!val){
|
if(!val){
|
||||||
ConfigManager.removeAuthAccount(selectedAcc.uuid)
|
ConfigManager.removeAuthAccount(selectedAcc.uuid)
|
||||||
@ -409,7 +412,9 @@ function setSelectedAccount(uuid){
|
|||||||
const authAcc = ConfigManager.setSelectedAccount(uuid)
|
const authAcc = ConfigManager.setSelectedAccount(uuid)
|
||||||
ConfigManager.save()
|
ConfigManager.save()
|
||||||
updateSelectedAccount(authAcc)
|
updateSelectedAccount(authAcc)
|
||||||
validateSelectedAccount()
|
if (ConfigManager.getAuthAccounts[uuid].type !== 'offline'){
|
||||||
|
validateSelectedAccount()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Synchronous Listener
|
// Synchronous Listener
|
||||||
|
22
app/dynmap.ejs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<div id="dynmapContainer" style="display: none;">
|
||||||
|
<div class="FloatingButtonContainer" id="center">
|
||||||
|
<div class="bot_wrapper">
|
||||||
|
<div id="content">
|
||||||
|
<button id="dynmapDoneButton"> <!-- Rename all elements to dynmapEtc -->
|
||||||
|
<div id="newsButtonAlert" style="display: none;"></div>
|
||||||
|
<svg id="newsButtonSVG" viewBox="0 0 24.87 13.97">
|
||||||
|
<defs>
|
||||||
|
<style>.arrowLine{fill:none;stroke:#FFF;stroke-width:2px;}</style>
|
||||||
|
</defs>
|
||||||
|
<polyline class="arrowLine" points="0.71 13.26 12.56 1.41 24.16 13.02"/>
|
||||||
|
</svg>
|
||||||
|
<span id="newsButtonText">MAP</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="iframecontainer">
|
||||||
|
<iframe id="dynmapiframe" src="https://minemap.gregbrzezinski.com" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
<script src="./assets/js/scripts/dynmap.js"></script>
|
||||||
|
</div>
|
@ -13,7 +13,7 @@
|
|||||||
<% } else{ %>
|
<% } else{ %>
|
||||||
<div id="frameContentWin">
|
<div id="frameContentWin">
|
||||||
<div id="frameTitleDock">
|
<div id="frameTitleDock">
|
||||||
<span id="frameTitleText">Helios Launcher</span>
|
<span id="frameTitleText">Skirda Launcher</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="frameButtonDockWin">
|
<div id="frameButtonDockWin">
|
||||||
<button class="frameButton fMb" id="frameButton_minimize" tabIndex="-1">
|
<button class="frameButton fMb" id="frameButton_minimize" tabIndex="-1">
|
||||||
|
@ -26,15 +26,24 @@
|
|||||||
<div id="settingsTooltip">Settings</div>
|
<div id="settingsTooltip">Settings</div>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- map integration button
|
||||||
|
<div class="mediaContainer" id="mapMediaContainer">
|
||||||
|
<button class="mediaButton" id="mapMediaButton">
|
||||||
|
<svg id="settingsSVG" class="mediaSVG" viewBox="0 0 141.36 137.43">
|
||||||
|
<path d="M70.70475616319865,83.36934004916053 a15.320781354859122,15.320781354859122 0 1 1 14.454501310561755,-15.296030496450625 A14.850515045097694,14.850515045097694 0 0 1 70.70475616319865,83.36934004916053 M123.25082856443602,55.425620905968366 h-12.375429204248078 A45.54157947163293,45.54157947163293 0 0 0 107.21227231573047,46.243052436416285 l8.613298726156664,-9.108315894326587 a9.727087354538993,9.727087354538993 0 0 0 0,-13.167456673319956 l-3.465120177189462,-3.6631270444574313 a8.489544434114185,8.489544434114185 0 0 0 -12.375429204248078,0 l-8.613298726156664,9.108315894326587 A40.442902639482725,40.442902639482725 0 0 0 81.99114759747292,25.427580514871032 V12.532383284044531 a9.108315894326587,9.108315894326587 0 0 0 -8.811305593424633,-9.306322761594556 h-4.950171681699231 a9.108315894326587,9.108315894326587 0 0 0 -8.811305593424633,9.306322761594556 v12.895197230826497 a40.17064319698927,40.17064319698927 0 0 0 -9.331073620003052,4.0591407789933704 l-8.613298726156664,-9.108315894326587 a8.489544434114185,8.489544434114185 0 0 0 -12.375429204248078,0 L25.58394128451018,23.967279868769744 a9.727087354538993,9.727087354538993 0 0 0 0,13.167456673319956 L34.19724001066683,46.243052436416285 a45.07131316187151,45.07131316187151 0 0 0 -3.6631270444574313,9.083565035918088 h-12.375429204248078 a9.083565035918088,9.083565035918088 0 0 0 -8.811305593424633,9.306322761594556 v5.197680265784193 a9.108315894326587,9.108315894326587 0 0 0 8.811305593424633,9.306322761594556 h11.979415469712139 a45.69008462208391,45.69008462208391 0 0 0 4.0591407789933704,10.642869115653347 l-8.613298726156664,9.108315894326587 a9.727087354538993,9.727087354538993 0 0 0 0,13.167456673319956 l3.465120177189462,3.6631270444574313 a8.489544434114185,8.489544434114185 0 0 0 12.375429204248078,0 l8.613298726156664,-9.108315894326587 a40.49240435629971,40.49240435629971 0 0 0 9.331073620003052,4.0591407789933704 v12.895197230826497 a9.083565035918088,9.083565035918088 0 0 0 8.811305593424633,9.306322761594556 h4.950171681699231 A9.083565035918088,9.083565035918088 0 0 0 81.99114759747292,123.68848839660077 V110.79329116577425 a40.78941465720167,40.78941465720167 0 0 0 9.331073620003052,-4.0591407789933704 l8.613298726156664,9.108315894326587 a8.489544434114185,8.489544434114185 0 0 0 12.375429204248078,0 l3.465120177189462,-3.6631270444574313 a9.727087354538993,9.727087354538993 0 0 0 0,-13.167456673319956 l-8.613298726156664,-9.108315894326587 a45.665333763675406,45.665333763675406 0 0 0 4.034389920584874,-10.642869115653347 h12.004166328120636 a9.108315894326587,9.108315894326587 0 0 0 8.811305593424633,-9.306322761594556 v-5.197680265784193 a9.083565035918088,9.083565035918088 0 0 0 -8.811305593424633,-9.306322761594556 " id="svg_3" class=""/>
|
||||||
|
</svg>
|
||||||
|
<div id="settingsTooltip">Map</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
<div class="mediaDivider"></div>
|
<div class="mediaDivider"></div>
|
||||||
<div id="externalMedia">
|
<div id="externalMedia">
|
||||||
<div class="mediaContainer">
|
<div class="mediaContainer">
|
||||||
<a href="https://github.com/dscalzi/HeliosLauncher" class="mediaURL" id="linkURL">
|
<a href="https://discord.gg/JwKaVJG" class="mediaURL" id="discordURL">
|
||||||
<svg id="linkSVG" class="mediaSVG" viewBox="35.34 34.3575 70.68 68.71500">
|
<svg id="discordSVG" class="mediaSVG" viewBox="35.34 34.3575 70.68 68.71500">
|
||||||
<g>
|
<g>
|
||||||
<path d="M75.37,65.51a3.85,3.85,0,0,0-1.73.42,8.22,8.22,0,0,1,.94,3.76A8.36,8.36,0,0,1,66.23,78H46.37a8.35,8.35,0,1,1,0-16.7h9.18a21.51,21.51,0,0,1,6.65-8.72H46.37a17.07,17.07,0,1,0,0,34.15H66.23A17,17,0,0,0,82.77,65.51Z"/>
|
<path d="M81.23,78.48a6.14,6.14,0,1,1,6.14-6.14,6.14,6.14,0,0,1-6.14,6.14M60,78.48a6.14,6.14,0,1,1,6.14-6.14A6.14,6.14,0,0,1,60,78.48M104.41,73c-.92-7.7-8.24-22.9-8.24-22.9A43,43,0,0,0,88,45.59a17.88,17.88,0,0,0-8.38-1.27l-.13,1.06a23.52,23.52,0,0,1,5.8,1.95,87.59,87.59,0,0,1,8.17,4.87s-10.32-5.63-22.27-5.63a51.32,51.32,0,0,0-23.2,5.63,87.84,87.84,0,0,1,8.17-4.87,23.57,23.57,0,0,1,5.8-1.95l-.13-1.06a17.88,17.88,0,0,0-8.38,1.27,42.84,42.84,0,0,0-8.21,4.56S37.87,65.35,37,73s-.37,11.54-.37,11.54,4.22,5.68,9.9,7.14,7.7,1.47,7.7,1.47l3.75-4.68a21.22,21.22,0,0,1-4.65-2A24.47,24.47,0,0,1,47.93,82S61.16,88.4,70.68,88.4c10,0,22.75-6.44,22.75-6.44a24.56,24.56,0,0,1-5.35,4.56,21.22,21.22,0,0,1-4.65,2l3.75,4.68s2,0,7.7-1.47,9.89-7.14,9.89-7.14.55-3.85-.37-11.54"/>
|
||||||
<path d="M66,73.88a3.85,3.85,0,0,0,1.73-.42,8.22,8.22,0,0,1-.94-3.76,8.36,8.36,0,0,1,8.35-8.35H95A8.35,8.35,0,1,1,95,78H85.8a21.51,21.51,0,0,1-6.65,8.72H95a17.07,17.07,0,0,0,0-34.15H75.13A17,17,0,0,0,58.59,73.88Z"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
@ -49,39 +58,11 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="mediaContainer">
|
<div class="mediaContainer">
|
||||||
<a href="#" class="mediaURL" id="instagramURL" disabled>
|
<a href="https://github.com/dscalzi/HeliosLauncher" class="mediaURL" id="linkURL">
|
||||||
<svg id="instagramSVG" class="mediaSVG" viewBox="0 0 5040 5040">
|
<svg id="linkSVG" class="mediaSVG" viewBox="35.34 34.3575 70.68 68.71500">
|
||||||
<defs>
|
|
||||||
<radialGradient id="instaFill" cx="30%" cy="107%" r="150%">
|
|
||||||
<stop offset="0%" stop-color="#fdf497"/>
|
|
||||||
<stop offset="5%" stop-color="#fdf497"/>
|
|
||||||
<stop offset="45%" stop-color="#fd5949"/>
|
|
||||||
<stop offset="60%" stop-color="#d6249f"/>
|
|
||||||
<stop offset="90%" stop-color="#285AEB"/>
|
|
||||||
</radialGradient>
|
|
||||||
</defs>
|
|
||||||
<g>
|
<g>
|
||||||
<path d="M1390 5024 c-163 -9 -239 -19 -315 -38 -281 -70 -477 -177 -660 -361 -184 -184 -292 -380 -361 -660 -43 -171 -53 -456 -53 -1445 0 -989 10 -1274 53 -1445 69 -280 177 -476 361 -660 184 -184 380 -292 660 -361 171 -43 456 -53 1445 -53 989 0 1274 10 1445 53 280 69 476 177 660 361 184 184 292 380 361 660 43 171 53 456 53 1445 0 989 -10 1274 -53 1445 -69 280 -177 476 -361 660 -184 184 -380 292 -660 361 -174 44 -454 53 -1470 52 -599 0 -960 -5 -1105 -14z m2230 -473 c58 -6 141 -18 185 -27 397 -78 638 -318 719 -714 37 -183 41 -309 41 -1290 0 -981 -4 -1107 -41 -1290 -81 -395 -319 -633 -714 -714 -183 -37 -309 -41 -1290 -41 -981 0 -1107 4 -1290 41 -397 81 -636 322 -714 719 -33 166 -38 296 -43 1100 -5 796 3 1203 27 1380 67 489 338 758 830 825 47 7 162 15 255 20 250 12 1907 4 2035 -9z"/>
|
<path d="M75.37,65.51a3.85,3.85,0,0,0-1.73.42,8.22,8.22,0,0,1,.94,3.76A8.36,8.36,0,0,1,66.23,78H46.37a8.35,8.35,0,1,1,0-16.7h9.18a21.51,21.51,0,0,1,6.65-8.72H46.37a17.07,17.07,0,1,0,0,34.15H66.23A17,17,0,0,0,82.77,65.51Z"/>
|
||||||
<path d="M2355 3819 c-307 -42 -561 -172 -780 -400 -244 -253 -359 -543 -359 -899 0 -361 116 -648 367 -907 262 -269 563 -397 937 -397 374 0 675 128 937 397 251 259 367 546 367 907 0 361 -116 648 -367 907 -197 203 -422 326 -690 378 -101 20 -317 27 -412 14z m400 -509 c275 -88 470 -284 557 -560 20 -65 23 -95 23 -230 0 -135 -3 -165 -23 -230 -88 -278 -284 -474 -562 -562 -65 -20 -95 -23 -230 -23 -135 0 -165 3 -230 23 -278 88 -474 284 -562 562 -20 65 -23 95 -23 230 0 135 3 165 23 230 73 230 219 403 427 507 134 67 212 83 390 79 111 -3 155 -8 210 -26z"/>
|
<path d="M66,73.88a3.85,3.85,0,0,0,1.73-.42,8.22,8.22,0,0,1-.94-3.76,8.36,8.36,0,0,1,8.35-8.35H95A8.35,8.35,0,1,1,95,78H85.8a21.51,21.51,0,0,1-6.65,8.72H95a17.07,17.07,0,0,0,0-34.15H75.13A17,17,0,0,0,58.59,73.88Z"/>
|
||||||
<path d="M3750 1473 c-29 -11 -66 -38 -106 -77 -70 -71 -94 -126 -94 -221 0 -95 24 -150 94 -221 72 -71 126 -94 225 -94 168 0 311 143 311 311 0 99 -23 154 -94 225 -43 42 -76 66 -110 77 -61 21 -166 21 -226 0z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="mediaContainer">
|
|
||||||
<a href="#" class="mediaURL" id="youtubeURL" disabled>
|
|
||||||
<svg id="youtubeSVG" class="mediaSVG" viewBox="35.34 34.3575 70.68 68.71500">
|
|
||||||
<g>
|
|
||||||
<path d="M84.8,69.52,65.88,79.76V59.27Zm23.65.59c0-5.14-.79-17.63-3.94-20.57S99,45.86,73.37,45.86s-28,.73-31.14,3.68S38.29,65,38.29,70.11s.79,17.63,3.94,20.57,5.52,3.68,31.14,3.68,28-.74,31.14-3.68,3.94-15.42,3.94-20.57"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="mediaContainer">
|
|
||||||
<a href="https://discord.gg/zNWUXdt" class="mediaURL" id="discordURL">
|
|
||||||
<svg id="discordSVG" class="mediaSVG" viewBox="35.34 34.3575 70.68 68.71500">
|
|
||||||
<g>
|
|
||||||
<path d="M81.23,78.48a6.14,6.14,0,1,1,6.14-6.14,6.14,6.14,0,0,1-6.14,6.14M60,78.48a6.14,6.14,0,1,1,6.14-6.14A6.14,6.14,0,0,1,60,78.48M104.41,73c-.92-7.7-8.24-22.9-8.24-22.9A43,43,0,0,0,88,45.59a17.88,17.88,0,0,0-8.38-1.27l-.13,1.06a23.52,23.52,0,0,1,5.8,1.95,87.59,87.59,0,0,1,8.17,4.87s-10.32-5.63-22.27-5.63a51.32,51.32,0,0,0-23.2,5.63,87.84,87.84,0,0,1,8.17-4.87,23.57,23.57,0,0,1,5.8-1.95l-.13-1.06a17.88,17.88,0,0,0-8.38,1.27,42.84,42.84,0,0,0-8.21,4.56S37.87,65.35,37,73s-.37,11.54-.37,11.54,4.22,5.68,9.9,7.14,7.7,1.47,7.7,1.47l3.75-4.68a21.22,21.22,0,0,1-4.65-2A24.47,24.47,0,0,1,47.93,82S61.16,88.4,70.68,88.4c10,0,22.75-6.44,22.75-6.44a24.56,24.56,0,0,1-5.35,4.56,21.22,21.22,0,0,1-4.65,2l3.75,4.68s2,0,7.7-1.47,9.89-7.14,9.89-7.14.55-3.85-.37-11.54"/>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
@ -125,15 +106,10 @@
|
|||||||
<div class="bot_wrapper">
|
<div class="bot_wrapper">
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<button id="newsButton">
|
<button id="newsButton">
|
||||||
<!--<img src="assets/images/icons/arrow.svg" id="newsButtonSVG"/>-->
|
|
||||||
<div id="newsButtonAlert" style="display: none;"></div>
|
<div id="newsButtonAlert" style="display: none;"></div>
|
||||||
<svg id="newsButtonSVG" viewBox="0 0 24.87 13.97">
|
<svg xmlns="http://www.w3.org/2000/svg" id="mapsvg" viewBox="0 0 24 24" width="20" height="20"><path d="M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0ZM22,12a9.938,9.938,0,0,1-1.662,5.508l-1.192-1.193A.5.5,0,0,1,19,15.962V15a3,3,0,0,0-3-3H13a1,1,0,0,1-1-1v-.5a.5.5,0,0,1,.5-.5A2.5,2.5,0,0,0,15,7.5v-1a.5.5,0,0,1,.5-.5h1.379a2.516,2.516,0,0,0,1.767-.732l.377-.377A9.969,9.969,0,0,1,22,12Zm-19.951.963,3.158,3.158A2.978,2.978,0,0,0,7.329,17H10a1,1,0,0,1,1,1v3.949A10.016,10.016,0,0,1,2.049,12.963ZM13,21.949V18a3,3,0,0,0-3-3H7.329a1,1,0,0,1-.708-.293L2.163,10.249A9.978,9.978,0,0,1,17.456,3.63l-.224.224A.507.507,0,0,1,16.879,4H15.5A2.5,2.5,0,0,0,13,6.5v1a.5.5,0,0,1-.5.5A2.5,2.5,0,0,0,10,10.5V11a3,3,0,0,0,3,3h3a1,1,0,0,1,1,1v.962a2.516,2.516,0,0,0,.732,1.767l1.337,1.337A9.971,9.971,0,0,1,13,21.949Z"/></svg>
|
||||||
<defs>
|
<span id="newsButtonText">MAP</span>
|
||||||
<style>.arrowLine{fill:none;stroke:#FFF;stroke-width:2px;}</style>
|
|
||||||
</defs>
|
|
||||||
<polyline class="arrowLine" points="0.71 13.26 12.56 1.41 24.16 13.02"/>
|
|
||||||
</svg>
|
|
||||||
<span id="newsButtonText">NEWS</span>
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -159,7 +135,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="newsContainer">
|
<div id="newsContainer">
|
||||||
<div id="newsContent" article="-1" style="display: none;">
|
<div id="iframecontainer">
|
||||||
|
<!--<iframe id="dynmapiframe" src="https://minemap.gregbrzezinski.com" frameborder="0"></iframe>-->
|
||||||
|
</div>
|
||||||
|
<!-- <div id="newsContent" article="-1" style="display: none;">
|
||||||
<div id="newsStatusContainer">
|
<div id="newsStatusContainer">
|
||||||
<div id="newsStatusContent">
|
<div id="newsStatusContent">
|
||||||
<div id="newsTitleContainer">
|
<div id="newsTitleContainer">
|
||||||
@ -198,7 +177,7 @@
|
|||||||
<div id="newsArticleContainer">
|
<div id="newsArticleContainer">
|
||||||
<div id="newsArticleContent">
|
<div id="newsArticleContent">
|
||||||
<div id="newsArticleContentScrollable">
|
<div id="newsArticleContentScrollable">
|
||||||
<!-- Article Content -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -214,7 +193,7 @@
|
|||||||
<div id="newsErrorNone" style="display: none;">
|
<div id="newsErrorNone" style="display: none;">
|
||||||
<span id="nENoneSpan" class="newsErrorContent">No News</span>
|
<span id="nENoneSpan" class="newsErrorContent">No News</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
<script src="./assets/js/scripts/landing.js"></script>
|
<script src="./assets/js/scripts/landing.js"></script>
|
||||||
</div>
|
</div>
|
@ -57,7 +57,7 @@
|
|||||||
<a href="https://minecraft.net/store/minecraft-java-edition/">Need an Account?</a>
|
<a href="https://minecraft.net/store/minecraft-java-edition/">Need an Account?</a>
|
||||||
</span>
|
</span>
|
||||||
<p class="loginDisclaimerText">Your password is sent directly to mojang and never stored.</p>
|
<p class="loginDisclaimerText">Your password is sent directly to mojang and never stored.</p>
|
||||||
<p class="loginDisclaimerText">Helios Launcher is not affiliated with Mojang AB.</p>
|
<p class="loginDisclaimerText">Skirda Launcher is not affiliated with Mojang AB.</p>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
31
app/loginOffline.ejs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<div id="loginOfflineContainer" style="display: none;">
|
||||||
|
<div id="loginOfflineCancelContainer" > <!--Delete style="" as temp fix-->
|
||||||
|
<button id="loginOfflineCancelButton">
|
||||||
|
<div id="loginOfflineCancelIcon">X</div>
|
||||||
|
<span id="loginOfflineCancelText">Cancel</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div id="loginContent">
|
||||||
|
<form id="loginForm" style="margin-top: 2.5em;">
|
||||||
|
<span id="loginSubheader">OFFLINE LOGIN</span>
|
||||||
|
<div class="loginFieldContainer">
|
||||||
|
<input id="loginOfflineUsername" class="loginField" type="text" placeholder="USERNAME"/>
|
||||||
|
</div>
|
||||||
|
<button id="loginOfflineButton" class="loginButton" enabled>
|
||||||
|
<div id="loginOfflineButtonContent">
|
||||||
|
LOGIN
|
||||||
|
<svg id="loginSVG" viewBox="0 0 24.87 13.97">
|
||||||
|
<defs>
|
||||||
|
<style>.arrowLine{fill:none;stroke:#FFF;stroke-width:2px;transition: 0.25s ease;}</style>
|
||||||
|
</defs>
|
||||||
|
<polyline class="arrowLine" points="0.71 13.26 12.56 1.41 24.16 13.02"/>
|
||||||
|
</svg>
|
||||||
|
<div class="circle-loader">
|
||||||
|
<div class="checkmark draw"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script src="./assets/js/scripts/loginOffline.js"></script>
|
||||||
|
</div>
|
@ -24,10 +24,15 @@
|
|||||||
<span>Login with Mojang</span>
|
<span>Login with Mojang</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="loginOptionButtonContainer">
|
||||||
|
<button id="loginOptionOffline" class="loginOptionButton">
|
||||||
|
<span>Proceed Offline</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="loginOptionCancelContainer" style="display: none;">
|
<!--<div id="loginOptionCancelContainer" style="display: none;">
|
||||||
<button id="loginOptionCancelButton">Cancel</button>
|
<button id="loginOptionCancelButton">Cancel</button>
|
||||||
</div>
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="./assets/js/scripts/loginOptions.js"></script>
|
<script src="./assets/js/scripts/loginOptions.js"></script>
|
||||||
|
@ -68,6 +68,21 @@
|
|||||||
<!-- Mojang auth accounts populated here. -->
|
<!-- Mojang auth accounts populated here. -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="settingsAuthAccountTypeContainer">
|
||||||
|
<div class="settingsAuthAccountTypeHeader">
|
||||||
|
<div class="settingsAuthAccountTypeHeaderLeft">
|
||||||
|
<svg width="22px" height="22px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Home"><path d="M62,21v39c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V21c0-0.7,0.4-1.4,1-1.7l28-17c0.6-0.4,1.4-0.4,2.1,0l28,17 C61.6,19.6,62,20.3,62,21z" fill="#3F51B5"/><g><path d="M44,42v18c0,1.1-0.9,2-2,2H22c-1.1,0-2-0.9-2-2V42c0-6.6,5.4-12,12-12S44,35.4,44,42z" fill="#FFC10A"/></g></g><g id="Camera"/><g id="Mail"/><g id="Print"/><g id="Save"/><g id="Folder"/><g id="Search"/><g id="User"/><g id="Pin"/><g id="Calendar"/><g id="Gallery"/><g id="time"/><g id="Pin_1_"/><g id="Setting"/><g id="Player"/><g id="Lock"/><g id="Trash_Can"/><g id="Notification"/><g id="Record"/><g id="Shopping_Bag"/></svg>
|
||||||
|
<span>Offline</span>
|
||||||
|
</div>
|
||||||
|
<div class="settingsAuthAccountTypeHeaderRight">
|
||||||
|
<button class="settingsAddAuthAccount" id="settingsAddOfflineAccount">+ Add Offline Account</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="settingsCurrentAccounts" id="settingsCurrentOfflineAccounts">
|
||||||
|
<!-- Offline auth accounts populated here. -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsTabMinecraft" class="settingsTab" style="display: none;">
|
<div id="settingsTabMinecraft" class="settingsTab" style="display: none;">
|
||||||
<div class="settingsTabHeader">
|
<div class="settingsTabHeader">
|
||||||
@ -305,7 +320,7 @@
|
|||||||
<div id="settingsAboutCurrentContent">
|
<div id="settingsAboutCurrentContent">
|
||||||
<div id="settingsAboutCurrentHeadline">
|
<div id="settingsAboutCurrentHeadline">
|
||||||
<img id="settingsAboutLogo" src="./assets/images/SealCircle.png">
|
<img id="settingsAboutLogo" src="./assets/images/SealCircle.png">
|
||||||
<span id="settingsAboutTitle">Helios Launcher</span>
|
<span id="settingsAboutTitle">Skirda Launcher</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsAboutCurrentVersion">
|
<div id="settingsAboutCurrentVersion">
|
||||||
<div id="settingsAboutCurrentVersionCheck">✓</div>
|
<div id="settingsAboutCurrentVersionCheck">✓</div>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
appId: 'helioslauncher'
|
appId: 'skirdalauncher'
|
||||||
productName: 'Helios Launcher'
|
productName: 'Skirda Launcher'
|
||||||
artifactName: '${productName}-setup-${version}.${ext}'
|
artifactName: '${productName}-setup-${version}.${ext}'
|
||||||
|
|
||||||
copyright: 'Copyright © 2018-2022 Daniel Scalzi'
|
copyright: 'Copyright © 2018-2022 Daniel Scalzi and Skirda Team'
|
||||||
|
|
||||||
asar: true
|
asar: true
|
||||||
compression: 'maximum'
|
compression: 'maximum'
|
||||||
@ -39,9 +39,9 @@ mac:
|
|||||||
# Linux Configuration
|
# Linux Configuration
|
||||||
linux:
|
linux:
|
||||||
target: 'AppImage'
|
target: 'AppImage'
|
||||||
maintainer: 'Daniel Scalzi'
|
maintainer: 'Skirda'
|
||||||
vendor: 'Daniel Scalzi'
|
vendor: 'Skirda'
|
||||||
synopsis: 'Modded Minecraft Launcher'
|
synopsis: 'Skirda game launcher'
|
||||||
description: 'Custom launcher which allows users to join modded servers. All mods, configurations, and updates are handled automatically.'
|
description: 'Custom launcher which allows users to join modded servers. All mods, configurations, and updates are handled automatically.'
|
||||||
category: 'Game'
|
category: 'Game'
|
||||||
|
|
||||||
|
@ -39,7 +39,9 @@
|
|||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
"semver": "^7.3.7",
|
"semver": "^7.3.7",
|
||||||
"tar-fs": "^2.1.1",
|
"tar-fs": "^2.1.1",
|
||||||
"winreg": "^1.2.4"
|
"winreg": "^1.2.4",
|
||||||
|
"7zip-bin": "^5.2.0"
|
||||||
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^19.0.10",
|
"electron": "^19.0.10",
|
||||||
|