v0.1.0 - Test
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"windows"
|
||||
"unix"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<p align="center"><img src="./app/assets/images/SealCircle.png" width="150px" height="150px" alt="aventium softworks"></p>
|
||||
<p align="center"><img src="./app/assets/images/ChronikaLogo.png" width="150px" height="150px" alt="aventium softworks"></p>
|
||||
|
||||
<h1 align="center">Helios Launcher</h1>
|
||||
|
||||
|
||||
10
app/app.ejs
10
app/app.ejs
@@ -1,7 +1,7 @@
|
||||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html lang="hu" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="script-src 'self' 'sha256-In6B8teKZQll5heMl9bS7CESTbGvuAt3VVV86BUQBDk='"/>
|
||||
<title>Helios Launcher</title>
|
||||
<title>Chronika Launcher</title>
|
||||
<script src="./assets/js/scripts/uicore.js"></script>
|
||||
<script src="./assets/js/scripts/uibinder.js"></script>
|
||||
<link type="text/css" rel="stylesheet" href="./assets/css/launcher.css">
|
||||
@@ -31,6 +31,7 @@
|
||||
<div id="main">
|
||||
<%- include('welcome') %>
|
||||
<%- include('login') %>
|
||||
<%- include('offline') %>
|
||||
<%- include('waiting') %>
|
||||
<%- include('loginOptions') %>
|
||||
<%- include('settings') %>
|
||||
@@ -39,10 +40,7 @@
|
||||
<%- include('overlay') %>
|
||||
<div id="loadingContainer">
|
||||
<div id="loadingContent">
|
||||
<div id="loadSpinnerContainer">
|
||||
<img id="loadCenterImage" src="assets/images/LoadingSeal.png">
|
||||
<img id="loadSpinnerImage" class="rotating" src="assets/images/LoadingText.png">
|
||||
</div>
|
||||
<img id="loadCenterImage" src="assets/images/ChronikaLogoTilted.png">
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
@@ -377,7 +377,7 @@ body, button {
|
||||
}
|
||||
|
||||
/* Main login container. */
|
||||
#loginContainer {
|
||||
.loginContainer {
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@@ -389,50 +389,50 @@ body, button {
|
||||
}
|
||||
|
||||
/* Login cancel button styles. */
|
||||
#loginCancelContainer {
|
||||
.loginCancelContainer {
|
||||
position: absolute;
|
||||
top: 5%;
|
||||
right: 5%;
|
||||
}
|
||||
|
||||
/* Login cancel button styles. */
|
||||
#loginCancelButton {
|
||||
.loginCancelButton {
|
||||
background: none;
|
||||
border: none;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
transition: 0.25s ease;
|
||||
}
|
||||
#loginCancelButton:hover #loginCancelIcon,
|
||||
#loginCancelButton:hover #loginCancelText,
|
||||
#loginCancelButton:focus #loginCancelIcon,
|
||||
#loginCancelButton:focus #loginCancelText {
|
||||
.loginCancelButton:hover .loginCancelIcon,
|
||||
.loginCancelButton:hover .loginCancelText,
|
||||
.loginCancelButton:focus .loginCancelIcon,
|
||||
.loginCancelButton:focus .loginCancelText {
|
||||
text-shadow: 0px 0px 20px white;
|
||||
}
|
||||
#loginCancelButton:hover #loginCancelIcon,
|
||||
#loginCancelButton:focus #loginCancelIcon {
|
||||
.loginCancelButton:hover .loginCancelIcon,
|
||||
.loginCancelButton:focus .loginCancelIcon {
|
||||
box-shadow: 0px 0px 20px white;
|
||||
}
|
||||
#loginCancelButton:active #loginCancelIcon,
|
||||
#loginCancelButton:active #loginCancelText {
|
||||
.loginCancelButton:active .loginCancelIcon,
|
||||
.loginCancelButton:active .loginCancelText {
|
||||
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);
|
||||
}
|
||||
#loginCancelButton:active #loginCancelIcon {
|
||||
.loginCancelButton:active .loginCancelIcon {
|
||||
box-shadow: 0px 0px 20px rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
#loginCancelButton:disabled {
|
||||
.loginCancelButton:disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
#loginCancelButton:disabled #loginCancelIcon,
|
||||
#loginCancelButton:disabled #loginCancelText {
|
||||
.loginCancelButton:disabled .loginCancelIcon,
|
||||
.loginCancelButton:disabled .loginCancelText {
|
||||
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. */
|
||||
#loginCancelIcon {
|
||||
.loginCancelIcon {
|
||||
border-radius: 50%;
|
||||
border: 1px solid white;
|
||||
box-sizing: border-box;
|
||||
@@ -445,13 +445,13 @@ body, button {
|
||||
transition: 0.25s ease;
|
||||
}
|
||||
/* Text for the login cancel button. */
|
||||
#loginCancelText {
|
||||
.loginCancelText {
|
||||
font-size: 15px;
|
||||
transition: 0.25s ease;
|
||||
}
|
||||
|
||||
/* Login content wrapper. */
|
||||
#loginContent {
|
||||
.loginContent {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
@@ -460,7 +460,7 @@ body, button {
|
||||
}
|
||||
|
||||
/* Login form. */
|
||||
#loginForm {
|
||||
.loginForm {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
@@ -468,35 +468,31 @@ body, button {
|
||||
}
|
||||
|
||||
/* Login form anchor styles. */
|
||||
#loginForm a {
|
||||
.loginForm a {
|
||||
font-size: 12px;
|
||||
color: #848484;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
transition: 0.25s ease;
|
||||
}
|
||||
#loginForm a:hover,
|
||||
#loginForm a:focus {
|
||||
.loginForm a:hover,
|
||||
.loginForm a:focus {
|
||||
color: #a2a2a2;
|
||||
outline: none;
|
||||
}
|
||||
#loginForm a:active {
|
||||
.loginForm a:active {
|
||||
color: #8b8b8b;
|
||||
}
|
||||
|
||||
/* Logo on login form. */
|
||||
#loginImageSeal {
|
||||
border-radius: 50%;
|
||||
border: 2px solid #cad7e1;
|
||||
background: rgba(1, 2, 1, 0.5);
|
||||
.loginImageSeal {
|
||||
height: 125px;
|
||||
width: 125px;
|
||||
box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* Header on login view. */
|
||||
#loginSubheader {
|
||||
.loginSubheader {
|
||||
font-family: 'Avenir Medium';
|
||||
margin-bottom: 25px;
|
||||
font-size: 12px;
|
||||
@@ -518,6 +514,7 @@ body, button {
|
||||
fill: #fff;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
/* Span which displays errors related to login field content. */
|
||||
@@ -603,13 +600,13 @@ body, button {
|
||||
}
|
||||
|
||||
/* Remember option text. */
|
||||
#loginRememberText {
|
||||
.loginRememberText {
|
||||
padding-right: 10px;
|
||||
transition: 0.25s ease;
|
||||
}
|
||||
|
||||
/* Login button styles. */
|
||||
#loginButton {
|
||||
.loginButton {
|
||||
background: none;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2px;
|
||||
@@ -621,23 +618,23 @@ body, button {
|
||||
right: -20px;
|
||||
transition: 0.5s ease;
|
||||
}
|
||||
#loginButton:disabled {
|
||||
.loginButton:disabled {
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
pointer-events: none;
|
||||
}
|
||||
#loginButton[loading] {
|
||||
.loginButton[loading] {
|
||||
color: #fff;
|
||||
}
|
||||
#loginButton:hover,
|
||||
#loginButton:focus {
|
||||
.loginButton:hover,
|
||||
.loginButton:focus {
|
||||
text-shadow: 0px 0px 20px #fff;
|
||||
outline: none;
|
||||
}
|
||||
#loginButton:active {
|
||||
.loginButton:active {
|
||||
color: #c7c7c7;
|
||||
text-shadow: 0px 0px 20px #c7c7c7;
|
||||
}
|
||||
#loginSVG {
|
||||
.loginButtonSVG {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
overflow: visible;
|
||||
transform: rotate(90deg);
|
||||
@@ -646,31 +643,31 @@ body, button {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
#loginButton:hover #loginSVG,
|
||||
#loginButton:focus #loginSVG {
|
||||
.loginButton:hover .loginButtonSVG,
|
||||
.loginButton:focus .loginButtonSVG {
|
||||
-webkit-filter: drop-shadow(0px 0px 2px #fff);
|
||||
}
|
||||
#loginButton:active #loginSVG .arrowLine {
|
||||
.loginButton:active .loginButtonSVG .arrowLine {
|
||||
stroke: #c7c7c7;
|
||||
}
|
||||
#loginButton:active #loginSVG {
|
||||
.loginButton:active .loginButtonSVG {
|
||||
-webkit-filter: drop-shadow(0px 0px 2px #c7c7c7);
|
||||
}
|
||||
#loginButton:disabled #loginSVG .arrowLine {
|
||||
.loginButton:disabled .loginButtonSVG .arrowLine {
|
||||
stroke: rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
|
||||
#loginButtonContent {
|
||||
.loginButtonContent {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#loginButton .circle-loader,
|
||||
#loginButton[loading] #loginSVG {
|
||||
.loginButton .circle-loader,
|
||||
.loginButton[loading] .loginButtonSVG {
|
||||
display: none;
|
||||
}
|
||||
#loginButton[loading] .circle-loader,
|
||||
#loginButton #loginSVG {
|
||||
.loginButton[loading] .circle-loader,
|
||||
.loginButton .loginButtonSVG {
|
||||
display: initial;
|
||||
}
|
||||
|
||||
@@ -772,7 +769,7 @@ body, button {
|
||||
}*/
|
||||
|
||||
/* Disclaimer container. */
|
||||
#loginDisclaimer {
|
||||
.loginDisclaimer {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
@@ -780,7 +777,7 @@ body, button {
|
||||
}
|
||||
|
||||
/* Add spacing between register anchor and disclaimer. */
|
||||
#loginRegisterSpan {
|
||||
.loginRegisterSpan {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
@@ -831,7 +828,7 @@ body, button {
|
||||
border-color: #a2a2a2;
|
||||
}
|
||||
/* On keydown, darken the checkbox a bit. */
|
||||
#checkmarkContainer input:active ~ *:not(#loginRememberText) {
|
||||
#checkmarkContainer input:active ~ *:not(.loginRememberText) {
|
||||
color: #8d8d8d;
|
||||
border-color: #8d8d8d;
|
||||
}
|
||||
@@ -861,7 +858,7 @@ body, button {
|
||||
}
|
||||
|
||||
/*
|
||||
#login_filter {
|
||||
.login_filter {
|
||||
height: calc(100% - 22px);
|
||||
width: 100%;
|
||||
z-index: 9000;
|
||||
@@ -994,7 +991,7 @@ body, button {
|
||||
.loginOptionButton {
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
border: 1px solid rgba(126, 126, 126, 0.57);
|
||||
border-radius: 3px;
|
||||
border-radius: 15px;
|
||||
height: 50px;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
@@ -1012,12 +1009,12 @@ body, button {
|
||||
text-shadow: 0px 0px 20px white;
|
||||
}
|
||||
|
||||
#loginOptionCancelContainer {
|
||||
.loginOptionCancelContainer {
|
||||
position: absolute;
|
||||
bottom: -100px;
|
||||
}
|
||||
|
||||
#loginOptionCancelButton {
|
||||
.loginOptionCancelButton {
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 2px 0px;
|
||||
@@ -1028,15 +1025,15 @@ body, button {
|
||||
outline: none;
|
||||
transition: 0.25s ease;
|
||||
}
|
||||
#loginOptionCancelButton:hover,
|
||||
#loginOptionCancelButton:focus {
|
||||
.loginOptionCancelButton:hover,
|
||||
.loginOptionCancelButton:focus {
|
||||
text-shadow: 0px 0px 20px lightgrey;
|
||||
}
|
||||
#loginOptionCancelButton:active {
|
||||
.loginOptionCancelButton:active {
|
||||
text-shadow: 0px 0px 20px rgba(211, 211, 211, 0.75);
|
||||
color: rgba(211, 211, 211, 0.75);
|
||||
}
|
||||
#loginOptionCancelButton:disabled {
|
||||
.loginOptionCancelButton:disabled {
|
||||
color: rgba(211, 211, 211, 0.75);
|
||||
pointer-events: none;
|
||||
}
|
||||
@@ -2456,7 +2453,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
/* Upper content container. */
|
||||
#landingContainer > #upper {
|
||||
position: relative;
|
||||
transition: top 2s ease;
|
||||
transition: top 0.5s ease;
|
||||
top: 0px;
|
||||
height: 77%;
|
||||
display: flex;
|
||||
@@ -2486,7 +2483,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
}
|
||||
#landingContainer > #lower > #left {
|
||||
position: relative;
|
||||
transition: top 2s ease;
|
||||
transition: top 0.5s ease;
|
||||
top: 0px;
|
||||
height: 100%;
|
||||
width: 33%;
|
||||
@@ -2502,7 +2499,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
}
|
||||
#landingContainer > #lower > #center {
|
||||
position: relative;
|
||||
transition: top 2s ease;
|
||||
transition: top 0.5s ease;
|
||||
top: 0px;
|
||||
height: 100%;
|
||||
width: 34%;
|
||||
@@ -2512,12 +2509,12 @@ input:checked + .toggleSwitchSlider:before {
|
||||
#landingContainer > #lower > #center #content {
|
||||
position: relative;
|
||||
z-index: 500;
|
||||
transition: top 2s ease;
|
||||
transition: top 0.5s ease;
|
||||
top: 10px;
|
||||
}
|
||||
#landingContainer > #lower > #right {
|
||||
position: relative;
|
||||
transition: top 2s ease;
|
||||
transition: top 0.5s ease;
|
||||
top: 0px;
|
||||
height: 100%;
|
||||
width: 33%;
|
||||
@@ -2536,7 +2533,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
top: 100%;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
transition: top 2s ease;
|
||||
transition: top 0.5s ease;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: center;
|
||||
@@ -2858,7 +2855,6 @@ input:checked + .toggleSwitchSlider:before {
|
||||
height: 70px;
|
||||
width: auto;
|
||||
position: relative;
|
||||
border: 2px solid white;
|
||||
box-sizing: border-box;
|
||||
border-radius: 50%;
|
||||
}
|
||||
@@ -2979,6 +2975,14 @@ input:checked + .toggleSwitchSlider:before {
|
||||
box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* User profile avatar image */
|
||||
#avatarImage {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
margin: 8px;
|
||||
margin-bottom: -58px;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
@@ -3181,7 +3185,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
|
||||
/* Style for a general label on the bottom of the landing view. */
|
||||
.bot_label {
|
||||
font-size: 9px;
|
||||
font-size: 10px;
|
||||
letter-spacing: 1px;
|
||||
font-weight: bold;
|
||||
text-shadow: 0px 0px 0px #bebcbb;
|
||||
@@ -3209,7 +3213,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
/* Span which displays the player count of the selected server. */
|
||||
#player_count {
|
||||
color: #949494;
|
||||
font-size: 8px;
|
||||
font-size: 11px;
|
||||
font-weight: 900;
|
||||
text-shadow: 0px 0px 20px #949494;
|
||||
margin-left: 10px;
|
||||
@@ -3687,6 +3691,7 @@ input:checked + .toggleSwitchSlider:before {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
background: rgba(131, 131, 131, 0.25);
|
||||
border-radius: 15px;
|
||||
}
|
||||
.serverListing[selected] {
|
||||
cursor: default;
|
||||
@@ -3747,7 +3752,6 @@ input:checked + .toggleSwitchSlider:before {
|
||||
/* Server listing image. */
|
||||
.serverListingImg {
|
||||
margin: 0px 10px 0px 5px;
|
||||
border: 1px solid #fff;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
}
|
||||
@@ -3791,9 +3795,9 @@ input:checked + .toggleSwitchSlider:before {
|
||||
align-items: center;
|
||||
line-height: 12px;
|
||||
height: 12px;
|
||||
border-radius: 2px;
|
||||
border-radius: 6px;
|
||||
background: rgba(31, 140, 11, 0.8);
|
||||
padding: 0px 2px;
|
||||
padding: 0px 5px;
|
||||
}
|
||||
|
||||
/* The revision version of the server's manifest. */
|
||||
@@ -3930,14 +3934,6 @@ input:checked + .toggleSwitchSlider:before {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Spinner container. */
|
||||
#loadSpinnerContainer {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Stationary image for the spinner. */
|
||||
#loadCenterImage {
|
||||
position: absolute;
|
||||
@@ -3945,13 +3941,6 @@ input:checked + .toggleSwitchSlider:before {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* Rotating image for the spinner. */
|
||||
#loadSpinnerImage {
|
||||
width: 280px;
|
||||
height: auto;
|
||||
z-index: 400;
|
||||
}
|
||||
|
||||
/* Rotating animation for the spinner. */
|
||||
@keyframes rotating {
|
||||
from {
|
||||
@@ -3966,3 +3955,8 @@ input:checked + .toggleSwitchSlider:before {
|
||||
.rotating {
|
||||
animation: rotating 10s linear infinite;
|
||||
}
|
||||
|
||||
/* Extra by Chronika */
|
||||
#landingPlayerLabel {
|
||||
margin-left: -30px;
|
||||
}
|
||||
BIN
app/assets/images/ChronikaLogo.png
Normal file
BIN
app/assets/images/ChronikaLogo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 721 KiB |
BIN
app/assets/images/ChronikaLogoTilted.png
Normal file
BIN
app/assets/images/ChronikaLogoTilted.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 801 KiB |
@@ -308,8 +308,55 @@ exports.validateSelected = async function(){
|
||||
|
||||
if(current.type === 'microsoft') {
|
||||
return await validateSelectedMicrosoftAccount()
|
||||
} else if(current.type === 'offline') {
|
||||
return true
|
||||
} else {
|
||||
return await validateSelectedMojangAccount()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate Offline UUID
|
||||
* @param {string} username
|
||||
* @returns {string} UUID of offline player
|
||||
*/
|
||||
exports.generateOfflineUUID = function(username) {
|
||||
const uuidNamespace = 'OfflinePlayer:'
|
||||
|
||||
// Create a SHA-1 hash of the UUID namespace concatenated with the username
|
||||
const md5 = require('crypto').createHash('md5')
|
||||
md5.update(uuidNamespace + username)
|
||||
const hash = md5.digest('hex')
|
||||
|
||||
// Insert dashes to form the UUID format
|
||||
const uuid = hash.substring(0, 8) + '-' +
|
||||
hash.substring(8, 12) + '-' +
|
||||
hash.substring(12, 16) + '-' +
|
||||
hash.substring(16, 20) + '-' +
|
||||
hash.substring(20)
|
||||
|
||||
return uuid
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an offline account.
|
||||
*
|
||||
* @param {string} username The account username.
|
||||
* @returns {<Object>} Promise which resolves the resolved authenticated account object.
|
||||
*/
|
||||
exports.addOfflineAccount = function(username) {
|
||||
const uuid = exports.generateOfflineUUID(username)
|
||||
const ret = ConfigManager.addOfflineAuthAccount(uuid, username)
|
||||
ConfigManager.save()
|
||||
return ret
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove offline account
|
||||
* @param {string} uuid
|
||||
*/
|
||||
exports.removeOfflineAccount = function(uuid) {
|
||||
ConfigManager.removeAuthAccount(uuid)
|
||||
ConfigManager.save()
|
||||
}
|
||||
@@ -7,7 +7,7 @@ const logger = LoggerUtil.getLogger('ConfigManager')
|
||||
|
||||
const sysRoot = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Application Support' : process.env.HOME)
|
||||
|
||||
const dataPath = path.join(sysRoot, '.helioslauncher')
|
||||
const dataPath = path.join(sysRoot, '.chronikamc')
|
||||
|
||||
const launcherDir = require('@electron/remote').app.getPath('userData')
|
||||
|
||||
@@ -78,10 +78,10 @@ function resolveSelectedRAM(ram) {
|
||||
const DEFAULT_CONFIG = {
|
||||
settings: {
|
||||
game: {
|
||||
resWidth: 1280,
|
||||
resHeight: 720,
|
||||
resWidth: 856,
|
||||
resHeight: 482,
|
||||
fullscreen: false,
|
||||
autoConnect: true,
|
||||
autoConnect: false,
|
||||
launchDetached: true
|
||||
},
|
||||
launcher: {
|
||||
@@ -349,6 +349,26 @@ exports.addMojangAuthAccount = function(uuid, accessToken, username, displayName
|
||||
return config.authenticationDatabase[uuid]
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an offline account to the database to be stored.
|
||||
*
|
||||
* @param {string} uuid The uuid of the account.
|
||||
* @param {string} username The username of the account.
|
||||
*
|
||||
* @returns {Object} The authenticated account object created by this action.
|
||||
*/
|
||||
exports.addOfflineAuthAccount = function(uuid, username){
|
||||
config.selectedAccount = uuid
|
||||
config.authenticationDatabase[uuid] = {
|
||||
type: 'offline',
|
||||
accessToken: '',
|
||||
username: username.trim(),
|
||||
uuid: uuid.trim(),
|
||||
displayName: username.trim()
|
||||
}
|
||||
return config.authenticationDatabase[uuid]
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the tokens of an authenticated microsoft account.
|
||||
*
|
||||
|
||||
@@ -8,12 +8,12 @@ const { Client } = require('discord-rpc-patch')
|
||||
let client
|
||||
let activity
|
||||
|
||||
exports.initRPC = function(genSettings, servSettings, initialDetails = 'Waiting for Client..'){
|
||||
exports.initRPC = function(genSettings, servSettings, initialDetails = 'Várakozás a kliensre..'){
|
||||
client = new Client({ transport: 'ipc' })
|
||||
|
||||
activity = {
|
||||
details: initialDetails,
|
||||
state: 'Server: ' + servSettings.shortId,
|
||||
state: 'Szerver: ' + servSettings.shortId,
|
||||
largeImageKey: servSettings.largeImageKey,
|
||||
largeImageText: servSettings.largeImageText,
|
||||
smallImageKey: genSettings.smallImageKey,
|
||||
@@ -23,7 +23,7 @@ exports.initRPC = function(genSettings, servSettings, initialDetails = 'Waiting
|
||||
}
|
||||
|
||||
client.on('ready', () => {
|
||||
logger.info('Discord RPC Connected')
|
||||
logger.info('Discord RPC Kapcsolódva')
|
||||
client.setActivity(activity)
|
||||
})
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@ const ConfigManager = require('./configmanager')
|
||||
|
||||
// Old WesterosCraft url.
|
||||
// exports.REMOTE_DISTRO_URL = 'http://mc.westeroscraft.com/WesterosCraftLauncher/distribution.json'
|
||||
exports.REMOTE_DISTRO_URL = 'https://helios-files.geekcorner.eu.org/distribution.json'
|
||||
// exports.REMOTE_DISTRO_URL = 'https://helios-files.geekcorner.eu.org/distribution.json'
|
||||
exports.REMOTE_DISTRO_URL = 'https://files.chronika.hu/distribution.json'
|
||||
|
||||
const api = new DistributionAPI(
|
||||
ConfigManager.getLauncherDirectory(),
|
||||
|
||||
@@ -156,7 +156,7 @@ exports.scanForShaderpacks = function(instanceDir){
|
||||
const shaderDir = path.join(instanceDir, SHADER_DIR)
|
||||
const packsDiscovered = [{
|
||||
fullName: 'OFF',
|
||||
name: 'Off (Default)'
|
||||
name: 'Kikapcsolva (Alapértelmezett)'
|
||||
}]
|
||||
if(fs.existsSync(shaderDir)){
|
||||
let modCandidates = fs.readdirSync(shaderDir)
|
||||
@@ -191,7 +191,7 @@ exports.getEnabledShaderpack = function(instanceDir){
|
||||
if(match != null){
|
||||
return match[1]
|
||||
} else {
|
||||
console.warn('WARNING: Shaderpack regex failed.')
|
||||
console.warn('FIGYELEM: Shaderpack regex hiba.')
|
||||
}
|
||||
}
|
||||
return 'OFF'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// NOTE FOR THIRD-PARTY
|
||||
// REPLACE THIS CLIENT ID WITH YOUR APPLICATION ID.
|
||||
// SEE https://github.com/dscalzi/HeliosLauncher/blob/master/docs/MicrosoftAuth.md
|
||||
exports.AZURE_CLIENT_ID = '1ce6e35a-126f-48fd-97fb-54d143ac6d45'
|
||||
exports.AZURE_CLIENT_ID = '58b013f6-0ad6-46f8-939a-b8e157af42f6'
|
||||
// SEE NOTE ABOVE.
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ const { HeliosDistribution } = require('helios-core/common')
|
||||
|
||||
const logger = LoggerUtil.getLogger('Preloader')
|
||||
|
||||
logger.info('Loading..')
|
||||
logger.info('Betöltés..')
|
||||
|
||||
// Load ConfigManager
|
||||
ConfigManager.load()
|
||||
@@ -23,7 +23,7 @@ DistroAPI['commonDir'] = ConfigManager.getCommonDirectory()
|
||||
DistroAPI['instanceDir'] = ConfigManager.getInstanceDirectory()
|
||||
|
||||
// Load Strings
|
||||
LangLoader.loadLanguage('en_US')
|
||||
LangLoader.loadLanguage('hu_HU')
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -347,7 +347,7 @@ class ProcessBuilder {
|
||||
|
||||
// Java Arguments
|
||||
if(process.platform === 'darwin'){
|
||||
args.push('-Xdock:name=HeliosLauncher')
|
||||
args.push('-Xdock:name=ChronikaLauncher')
|
||||
args.push('-Xdock:icon=' + path.join(__dirname, '..', 'images', 'minecraft.icns'))
|
||||
}
|
||||
args.push('-Xmx' + ConfigManager.getMaxRAM(this.server.rawServer.id))
|
||||
@@ -398,7 +398,7 @@ class ProcessBuilder {
|
||||
|
||||
// Java Arguments
|
||||
if(process.platform === 'darwin'){
|
||||
args.push('-Xdock:name=HeliosLauncher')
|
||||
args.push('-Xdock:name=ChronikaLauncher')
|
||||
args.push('-Xdock:icon=' + path.join(__dirname, '..', 'images', 'minecraft.icns'))
|
||||
}
|
||||
args.push('-Xmx' + ConfigManager.getMaxRAM(this.server.rawServer.id))
|
||||
@@ -500,7 +500,7 @@ class ProcessBuilder {
|
||||
val = args[i].replace(argDiscovery, tempNativePath)
|
||||
break
|
||||
case 'launcher_name':
|
||||
val = args[i].replace(argDiscovery, 'Helios-Launcher')
|
||||
val = args[i].replace(argDiscovery, 'Chronika-Launcher')
|
||||
break
|
||||
case 'launcher_version':
|
||||
val = args[i].replace(argDiscovery, this.launcherVersion)
|
||||
|
||||
@@ -124,8 +124,8 @@ document.getElementById('launch_button').addEventListener('click', async e => {
|
||||
}
|
||||
}
|
||||
} catch(err) {
|
||||
loggerLanding.error('Unhandled error in during launch process.', err)
|
||||
showLaunchFailure('Error During Launch', 'See console (CTRL + Shift + i) for more details.')
|
||||
loggerLanding.error('Kezeletlen hiba az indítási folyamat közben.', err)
|
||||
showLaunchFailure('Hiba Indítás Közben', 'Lásd a konzolban (CTRL + Shift + i) a további részleteket.')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -145,14 +145,15 @@ document.getElementById('avatarOverlay').onclick = async e => {
|
||||
|
||||
// Bind selected account
|
||||
function updateSelectedAccount(authUser){
|
||||
let username = 'No Account Selected'
|
||||
let username = 'Nincs fiók kiválasztva'
|
||||
if(authUser != null){
|
||||
if(authUser.displayName != null){
|
||||
username = authUser.displayName
|
||||
document.getElementById('avatarImage').style.backgroundImage = `url('https://portal.chronika.hu/api/skinrender.php?username=${authUser.displayName}')`
|
||||
}
|
||||
if(authUser.uuid != null){
|
||||
/*if(authUser.uuid != null){
|
||||
document.getElementById('avatarContainer').style.backgroundImage = `url('https://mc-heads.net/body/${authUser.uuid}/right')`
|
||||
}
|
||||
}*/
|
||||
}
|
||||
user_text.innerHTML = username
|
||||
}
|
||||
@@ -165,14 +166,14 @@ function updateSelectedServer(serv){
|
||||
}
|
||||
ConfigManager.setSelectedServer(serv != null ? serv.rawServer.id : null)
|
||||
ConfigManager.save()
|
||||
server_selection_button.innerHTML = '\u2022 ' + (serv != null ? serv.rawServer.name : 'No Server Selected')
|
||||
server_selection_button.innerHTML = '\u2022 ' + (serv != null ? serv.rawServer.name : 'Nincs szerver kiválasztva')
|
||||
if(getCurrentView() === VIEWS.settings){
|
||||
animateSettingsTabRefresh()
|
||||
}
|
||||
setLaunchEnabled(serv != null)
|
||||
}
|
||||
// Real text is set in uibinder.js on distributionIndexDone.
|
||||
server_selection_button.innerHTML = '\u2022 Loading..'
|
||||
server_selection_button.innerHTML = '\u2022 Betöltés..'
|
||||
server_selection_button.onclick = async e => {
|
||||
e.target.blur()
|
||||
await toggleServerSelection(true)
|
||||
@@ -180,7 +181,7 @@ server_selection_button.onclick = async e => {
|
||||
|
||||
// Update Mojang Status Color
|
||||
const refreshMojangStatuses = async function(){
|
||||
loggerLanding.info('Refreshing Mojang Statuses..')
|
||||
loggerLanding.info('Mojang Információ Frissítése..')
|
||||
|
||||
let status = 'grey'
|
||||
let tooltipEssentialHTML = ''
|
||||
@@ -191,7 +192,7 @@ const refreshMojangStatuses = async function(){
|
||||
if(response.responseStatus === RestResponseStatus.SUCCESS) {
|
||||
statuses = response.data
|
||||
} else {
|
||||
loggerLanding.warn('Unable to refresh Mojang service status.')
|
||||
loggerLanding.warn('Nem sikerült lekérni a Mojang szervereinek állapotát.')
|
||||
statuses = MojangRestAPI.getDefaultStatuses()
|
||||
}
|
||||
|
||||
@@ -240,21 +241,21 @@ const refreshMojangStatuses = async function(){
|
||||
}
|
||||
|
||||
const refreshServerStatus = async (fade = false) => {
|
||||
loggerLanding.info('Refreshing Server Status')
|
||||
loggerLanding.info('Szerver állapotának frissítése')
|
||||
const serv = (await DistroAPI.getDistribution()).getServerById(ConfigManager.getSelectedServer())
|
||||
|
||||
let pLabel = 'SERVER'
|
||||
let pLabel = 'SZERVER'
|
||||
let pVal = 'OFFLINE'
|
||||
|
||||
try {
|
||||
|
||||
const servStat = await getServerStatus(47, serv.hostname, serv.port)
|
||||
console.log(servStat)
|
||||
pLabel = 'PLAYERS'
|
||||
pLabel = 'JÁTÉKOSOK'
|
||||
pVal = servStat.players.online + '/' + servStat.players.max
|
||||
|
||||
} catch (err) {
|
||||
loggerLanding.warn('Unable to refresh server status, assuming offline.')
|
||||
loggerLanding.warn('Nem sikerült lekérni a szerver állapotát, feltehetőleg offline.')
|
||||
loggerLanding.debug(err)
|
||||
}
|
||||
if(fade){
|
||||
@@ -304,7 +305,7 @@ function showLaunchFailure(title, desc){
|
||||
*/
|
||||
async function asyncSystemScan(effectiveJavaOptions, launchAfter = true){
|
||||
|
||||
setLaunchDetails('Checking system info..')
|
||||
setLaunchDetails('Rendszerinformáció ellenőrzése..')
|
||||
toggleLaunchArea(true)
|
||||
setLaunchPercentage(0, 100)
|
||||
|
||||
@@ -317,30 +318,30 @@ async function asyncSystemScan(effectiveJavaOptions, launchAfter = true){
|
||||
// If the result is null, no valid Java installation was found.
|
||||
// Show this information to the user.
|
||||
setOverlayContent(
|
||||
'No Compatible<br>Java Installation Found',
|
||||
`In order to join WesterosCraft, you need a 64-bit installation of Java ${effectiveJavaOptions.suggestedMajor}. Would you like us to install a copy?`,
|
||||
'Install Java',
|
||||
'Install Manually'
|
||||
'Nem található<br>Kompatibilis Java telepítés',
|
||||
`Ahhoz hogy elindítsd a játékot, 64 bites Java ${effectiveJavaOptions.suggestedMajor} szükséges. Feltelepítsük neked?`,
|
||||
'Java Telepítése',
|
||||
'Manuális Telepítés'
|
||||
)
|
||||
setOverlayHandler(() => {
|
||||
setLaunchDetails('Preparing Java Download..')
|
||||
setLaunchDetails('Java letöltés előkészítése..')
|
||||
toggleOverlay(false)
|
||||
|
||||
try {
|
||||
downloadJava(effectiveJavaOptions, launchAfter)
|
||||
} catch(err) {
|
||||
loggerLanding.error('Unhandled error in Java Download', err)
|
||||
showLaunchFailure('Error During Java Download', 'See console (CTRL + Shift + i) for more details.')
|
||||
loggerLanding.error('Kezeletlen hiba Java letöltés közben', err)
|
||||
showLaunchFailure('Hiba történt java letöltés közben', 'Lásd a konzolban (CTRL + Shift + i) a további részleteket.')
|
||||
}
|
||||
})
|
||||
setDismissHandler(() => {
|
||||
$('#overlayContent').fadeOut(250, () => {
|
||||
//$('#overlayDismiss').toggle(false)
|
||||
setOverlayContent(
|
||||
'Java is Required<br>to Launch',
|
||||
`A valid x64 installation of Java ${effectiveJavaOptions.suggestedMajor} is required to launch.<br><br>Please refer to our <a href="https://github.com/dscalzi/HeliosLauncher/wiki/Java-Management#manually-installing-a-valid-version-of-java">Java Management Guide</a> for instructions on how to manually install Java.`,
|
||||
'I Understand',
|
||||
'Go Back'
|
||||
'Java szükséges<br>az indításhoz',
|
||||
`Egy érvényes x64-es Java ${effectiveJavaOptions.suggestedMajor} szükséges az indításhoz.<br><br>Részleteket a <a href="https://github.com/ChronikaMC/Launcher/wiki/Java-Management#manually-installing-a-valid-version-of-java">Dokumentációnkban</a> találod a Java manuális telepítéséhez.`,
|
||||
'Értem',
|
||||
'Vissza'
|
||||
)
|
||||
setOverlayHandler(() => {
|
||||
toggleLaunchArea(false)
|
||||
@@ -385,7 +386,7 @@ async function downloadJava(effectiveJavaOptions, launchAfter = true) {
|
||||
effectiveJavaOptions.distribution)
|
||||
|
||||
if(asset == null) {
|
||||
throw new Error('Failed to find OpenJDK distribution.')
|
||||
throw new Error('Nem sikerült lekérni a legfrisebb OpenJDK letöltést.')
|
||||
}
|
||||
|
||||
let received = 0
|
||||
@@ -396,11 +397,11 @@ async function downloadJava(effectiveJavaOptions, launchAfter = true) {
|
||||
setDownloadPercentage(100)
|
||||
|
||||
if(received != asset.size) {
|
||||
loggerLanding.warn(`Java Download: Expected ${asset.size} bytes but received ${received}`)
|
||||
loggerLanding.warn(`Java Letöltés: Várt ${asset.size} byte helyett ${received} byte érkezett.`)
|
||||
if(!await validateLocalFile(asset.path, asset.algo, asset.hash)) {
|
||||
log.error(`Hashes do not match, ${asset.id} may be corrupted.`)
|
||||
log.error(`Hashek nem egyeznek, ${asset.id} sérült lehet.`)
|
||||
// Don't know how this could happen, but report it.
|
||||
throw new Error('Downloaded JDK has bad hash, file may be corrupted.')
|
||||
throw new Error('Letöltött JDK nem jó hash-t adott eredményül, valószínűleg hibás a fájl.')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -409,7 +410,7 @@ async function downloadJava(effectiveJavaOptions, launchAfter = true) {
|
||||
remote.getCurrentWindow().setProgressBar(2)
|
||||
|
||||
// Wait for extration to complete.
|
||||
const eLStr = 'Extracting Java'
|
||||
const eLStr = 'Java Kicsomagolása'
|
||||
let dotStr = ''
|
||||
setLaunchDetails(eLStr)
|
||||
const extractListener = setInterval(() => {
|
||||
@@ -431,7 +432,7 @@ async function downloadJava(effectiveJavaOptions, launchAfter = true) {
|
||||
ConfigManager.save()
|
||||
|
||||
clearInterval(extractListener)
|
||||
setLaunchDetails('Java Installed!')
|
||||
setLaunchDetails('Java Telepítve!')
|
||||
|
||||
// TODO Callback hell
|
||||
// Refactor the launch functions
|
||||
@@ -456,7 +457,7 @@ async function dlAsync(login = true) {
|
||||
|
||||
const loggerLaunchSuite = LoggerUtil.getLogger('LaunchSuite')
|
||||
|
||||
setLaunchDetails('Loading server information..')
|
||||
setLaunchDetails('Szerver információk betöltése..')
|
||||
|
||||
let distro
|
||||
|
||||
@@ -473,12 +474,12 @@ async function dlAsync(login = true) {
|
||||
|
||||
if(login) {
|
||||
if(ConfigManager.getSelectedAccount() == null){
|
||||
loggerLanding.error('You must be logged into an account.')
|
||||
loggerLanding.error('Jelentkezz be egy fiókba.')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
setLaunchDetails('Please wait..')
|
||||
setLaunchDetails('Kérlek várj..')
|
||||
toggleLaunchArea(true)
|
||||
setLaunchPercentage(0, 100)
|
||||
|
||||
@@ -493,18 +494,18 @@ async function dlAsync(login = true) {
|
||||
fullRepairModule.spawnReceiver()
|
||||
|
||||
fullRepairModule.childProcess.on('error', (err) => {
|
||||
loggerLaunchSuite.error('Error during launch', err)
|
||||
showLaunchFailure('Error During Launch', err.message || 'See console (CTRL + Shift + i) for more details.')
|
||||
loggerLaunchSuite.error('Hiba indítás közben', err)
|
||||
showLaunchFailure('Hiba indítás közben', err.message || 'Lásd a konzolt (CTRL + Shift + i) a további részletekért.')
|
||||
})
|
||||
fullRepairModule.childProcess.on('close', (code, _signal) => {
|
||||
if(code !== 0){
|
||||
loggerLaunchSuite.error(`Full Repair Module exited with code ${code}, assuming error.`)
|
||||
showLaunchFailure('Error During Launch', 'See console (CTRL + Shift + i) for more details.')
|
||||
loggerLaunchSuite.error(`Teljes Javító Modul kilépett a(z) ${code} kóddal, valószínűleg hiba.`)
|
||||
showLaunchFailure('Hiba indítás közben', 'Lásd a konzolt (CTRL + Shift + i) a további részletekért.')
|
||||
}
|
||||
})
|
||||
|
||||
loggerLaunchSuite.info('Validating files.')
|
||||
setLaunchDetails('Validating file integrity..')
|
||||
loggerLaunchSuite.info('Fájlok ellenőrzése.')
|
||||
setLaunchDetails('Fájl integritás ellenőrzése..')
|
||||
let invalidFileCount = 0
|
||||
try {
|
||||
invalidFileCount = await fullRepairModule.verifyFiles(percent => {
|
||||
@@ -512,15 +513,15 @@ async function dlAsync(login = true) {
|
||||
})
|
||||
setLaunchPercentage(100)
|
||||
} catch (err) {
|
||||
loggerLaunchSuite.error('Error during file validation.')
|
||||
showLaunchFailure('Error During File Verification', err.displayable || 'See console (CTRL + Shift + i) for more details.')
|
||||
loggerLaunchSuite.error('Hiba fájl ellenőrzés közben.')
|
||||
showLaunchFailure('Hiba fájl ellenőrzés közben', err.displayable || 'Lásd a konzolt (CTRL + Shift + i) a további részletekért.')
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if(invalidFileCount > 0) {
|
||||
loggerLaunchSuite.info('Downloading files.')
|
||||
setLaunchDetails('Downloading files..')
|
||||
loggerLaunchSuite.info('Fájlok letöltése.')
|
||||
setLaunchDetails('Fájlok letöltése..')
|
||||
setLaunchPercentage(0)
|
||||
try {
|
||||
await fullRepairModule.download(percent => {
|
||||
@@ -528,12 +529,12 @@ async function dlAsync(login = true) {
|
||||
})
|
||||
setDownloadPercentage(100)
|
||||
} catch(err) {
|
||||
loggerLaunchSuite.error('Error during file download.')
|
||||
showLaunchFailure('Error During File Download', err.displayable || 'See console (CTRL + Shift + i) for more details.')
|
||||
loggerLaunchSuite.error('Hiba fájl letöltés közben.')
|
||||
showLaunchFailure('Hiba fájl letöltés közben', err.displayable || 'Lásd a konzolt (CTRL + Shift + i) a további részletekért.')
|
||||
return
|
||||
}
|
||||
} else {
|
||||
loggerLaunchSuite.info('No invalid files, skipping download.')
|
||||
loggerLaunchSuite.info('Fájlok rendben vannak, letöltés kihagyása.')
|
||||
}
|
||||
|
||||
// Remove download bar.
|
||||
@@ -541,7 +542,7 @@ async function dlAsync(login = true) {
|
||||
|
||||
fullRepairModule.destroyReceiver()
|
||||
|
||||
setLaunchDetails('Preparing to launch..')
|
||||
setLaunchDetails('Indítás előkészítése..')
|
||||
|
||||
const mojangIndexProcessor = new MojangIndexProcessor(
|
||||
ConfigManager.getCommonDirectory(),
|
||||
@@ -557,17 +558,18 @@ async function dlAsync(login = true) {
|
||||
|
||||
if(login) {
|
||||
const authUser = ConfigManager.getSelectedAccount()
|
||||
loggerLaunchSuite.info(`Sending selected account (${authUser.displayName}) to ProcessBuilder.`)
|
||||
loggerLaunchSuite.info(`Kiválasztott fiók elküldése (${authUser.displayName}) a ProcessBuilder-nek.`)
|
||||
let pb = new ProcessBuilder(serv, versionData, forgeData, authUser, remote.app.getVersion())
|
||||
setLaunchDetails('Launching game..')
|
||||
setLaunchDetails('Játék indítása..')
|
||||
|
||||
// const SERVER_JOINED_REGEX = /\[.+\]: \[CHAT\] [a-zA-Z0-9_]{1,16} joined the game/
|
||||
const SERVER_JOINED_REGEX = new RegExp(`\\[.+\\]: \\[CHAT\\] ${authUser.displayName} joined the game`)
|
||||
// const SERVER_JOINED_REGEX = new RegExp(`\\[.+\\]: \\[CHAT\\] ${authUser.displayName} joined the game`)
|
||||
const SERVER_JOINED_REGEX = new RegExp('Sikeresen bejelentkeztél.')
|
||||
|
||||
const onLoadComplete = () => {
|
||||
toggleLaunchArea(false)
|
||||
if(hasRPC){
|
||||
DiscordWrapper.updateDetails('Loading game..')
|
||||
DiscordWrapper.updateDetails('Játék betöltése..')
|
||||
proc.stdout.on('data', gameStateChange)
|
||||
}
|
||||
proc.stdout.removeListener('data', tempListener)
|
||||
@@ -594,17 +596,17 @@ async function dlAsync(login = true) {
|
||||
const gameStateChange = function(data){
|
||||
data = data.trim()
|
||||
if(SERVER_JOINED_REGEX.test(data)){
|
||||
DiscordWrapper.updateDetails('Exploring the Realm!')
|
||||
DiscordWrapper.updateDetails('Chronika szerverein lazul.')
|
||||
} else if(GAME_JOINED_REGEX.test(data)){
|
||||
DiscordWrapper.updateDetails('Sailing to Westeros!')
|
||||
DiscordWrapper.updateDetails('Főmenü')
|
||||
}
|
||||
}
|
||||
|
||||
const gameErrorListener = function(data){
|
||||
data = data.trim()
|
||||
if(data.indexOf('Could not find or load main class net.minecraft.launchwrapper.Launch') > -1){
|
||||
loggerLaunchSuite.error('Game launch failed, LaunchWrapper was not downloaded properly.')
|
||||
showLaunchFailure('Error During Launch', 'The main file, LaunchWrapper, failed to download properly. As a result, the game cannot launch.<br><br>To fix this issue, temporarily turn off your antivirus software and launch the game again.<br><br>If you have time, please <a href="https://github.com/dscalzi/HeliosLauncher/issues">submit an issue</a> and let us know what antivirus software you use. We\'ll contact them and try to straighten things out.')
|
||||
if(data.indexOf('Nem sikerült betölteni a fő osztályt net.minecraft.launchwrapper.Launch') > -1){
|
||||
loggerLaunchSuite.error('Játékindítás meghiúsult, LaunchWrapper nem töltődött le megfelelően.')
|
||||
showLaunchFailure('Hiba indítás közben', 'A fő fájl, LaunchWrapper, nem töltődött le megfelelően. Ennek eredményeképp a játék nem tudott elindulni.<br><br>Próbáld meg kikapcsolni a vírusírtót ideiglenesen és próbáld meg újra elindítani a játékot.<br><br>Ha van egy kis időd, kérlek <a href="https://github.com/ChronikaMC/ChronikaLauncher/issues">jelezd a hibát</a> és tudasd velünk milyen vírusirtót használsz. Megpróbáljuk megoldani a problémát.')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -616,10 +618,11 @@ async function dlAsync(login = true) {
|
||||
proc.stdout.on('data', tempListener)
|
||||
proc.stderr.on('data', gameErrorListener)
|
||||
|
||||
setLaunchDetails('Done. Enjoy the server!')
|
||||
setLaunchDetails('Kész. Élvezd a szervert!')
|
||||
|
||||
// Init Discord Hook
|
||||
if(distro.rawDistribution.discord != null && serv.rawServerdiscord != null){
|
||||
console.log('DISCORD:', serv.rawServer.discord)
|
||||
if(distro.rawDistribution.discord != null && serv.rawServer.discord != null){
|
||||
DiscordWrapper.initRPC(distro.rawDistribution.discord, serv.rawServer.discord)
|
||||
hasRPC = true
|
||||
proc.on('close', (code, signal) => {
|
||||
@@ -632,8 +635,8 @@ async function dlAsync(login = true) {
|
||||
|
||||
} catch(err) {
|
||||
|
||||
loggerLaunchSuite.error('Error during launch', err)
|
||||
showLaunchFailure('Error During Launch', 'Please check the console (CTRL + Shift + i) for more details.')
|
||||
loggerLaunchSuite.error('Hiba indítás közben', err)
|
||||
showLaunchFailure('Hiba indítás közben', 'Lásd a konzolt (CTRL + Shift + i) a további részletekért.')
|
||||
|
||||
}
|
||||
}
|
||||
@@ -740,7 +743,7 @@ let newsLoadingListener = null
|
||||
*/
|
||||
function setNewsLoading(val){
|
||||
if(val){
|
||||
const nLStr = 'Checking for News'
|
||||
const nLStr = 'Hírek Betöltése'
|
||||
let dotStr = '..'
|
||||
nELoadSpan.innerHTML = nLStr + dotStr
|
||||
newsLoadingListener = setInterval(() => {
|
||||
@@ -967,7 +970,7 @@ async function loadNews(){
|
||||
|
||||
const distroData = await DistroAPI.getDistribution()
|
||||
if(!distroData.rawDistribution.rss) {
|
||||
loggerLanding.debug('No RSS feed provided.')
|
||||
loggerLanding.debug('Nincs RSS hírfolyam.')
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -986,14 +989,14 @@ async function loadNews(){
|
||||
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'})
|
||||
const date = new Date(el.find('pubDate').text()).toLocaleDateString('hu-HU', {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')
|
||||
let comments = el.find('comments').text() || '0'
|
||||
comments = comments + ' Komment'
|
||||
|
||||
// Fix relative links in content.
|
||||
let content = el.find('content\\:encoded').text()
|
||||
let content = el.find('content').text()
|
||||
let regex = /src="(?!http:\/\/|https:\/\/)(.+?)"/g
|
||||
let matches
|
||||
while((matches = regex.exec(content))){
|
||||
@@ -1002,7 +1005,7 @@ async function loadNews(){
|
||||
|
||||
let link = el.find('link').text()
|
||||
let title = el.find('title').text()
|
||||
let author = el.find('dc\\:creator').text()
|
||||
let author = el.find('author').text()
|
||||
|
||||
// Generate article.
|
||||
articles.push(
|
||||
|
||||
@@ -215,14 +215,14 @@ loginButton.addEventListener('click', () => {
|
||||
|
||||
let actualDisplayableError
|
||||
if(isDisplayableError(displayableError)) {
|
||||
msftLoginLogger.error('Error while logging in.', displayableError)
|
||||
msftLoginLogger.error('Hiba belépés közben.', displayableError)
|
||||
actualDisplayableError = displayableError
|
||||
} else {
|
||||
// Uh oh.
|
||||
msftLoginLogger.error('Unhandled error during login.', displayableError)
|
||||
msftLoginLogger.error('Kezeletlen hiba belépés közben.', displayableError)
|
||||
actualDisplayableError = {
|
||||
title: 'Unknown Error During Login',
|
||||
desc: 'An unknown error has occurred. Please see the console for details.'
|
||||
title: 'Ismeretlen hiba belépés közben',
|
||||
desc: 'Egy ismeretlen hiba történt. Lásd a konzolt a részletekért.'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,3 +48,11 @@ loginOptionsCancelButton.onclick = (e) => {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
loginOptionOffline.onclick = (e) => {
|
||||
switchView(getCurrentView(), VIEWS.offline, 500, 500, () => {
|
||||
offlineLoginViewOnSuccess = loginOptionsViewOnLoginSuccess
|
||||
offlineLoginViewOnCancel = loginOptionsViewOnLoginCancel
|
||||
offlineLoginCancelEnabled(true)
|
||||
})
|
||||
}
|
||||
178
app/assets/js/scripts/offline.js
Normal file
178
app/assets/js/scripts/offline.js
Normal file
@@ -0,0 +1,178 @@
|
||||
/**
|
||||
* Script for offlineLogin.ejs
|
||||
*/
|
||||
|
||||
// Login Elements
|
||||
const offlineLoginCancelContainer = document.getElementById('offlineLoginCancelContainer')
|
||||
const offlineLoginCancelButton = document.getElementById('offlineLoginCancelButton')
|
||||
const offlineLoginEmailError = document.getElementById('offlineLoginEmailError')
|
||||
const offlineLoginUsername = document.getElementById('offlineLoginUsername')
|
||||
const offlineCheckmarkContainer = document.getElementById('offlineCheckmarkContainer')
|
||||
const offlineLoginRememberOption = document.getElementById('offlineLoginRememberOption')
|
||||
const offlineLoginButton = document.getElementById('offlineLoginButton')
|
||||
const offlineLoginForm = document.getElementById('offlineLoginForm')
|
||||
|
||||
// Control variables.
|
||||
let olu = false
|
||||
|
||||
|
||||
/**
|
||||
* Show a offlineLogin error.
|
||||
*
|
||||
* @param {HTMLElement} element The element on which to display the error.
|
||||
* @param {string} value The error text.
|
||||
*/
|
||||
function showError(element, value){
|
||||
element.innerHTML = value
|
||||
element.style.opacity = 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Shake a offlineLogin error to add emphasis.
|
||||
*
|
||||
* @param {HTMLElement} element The element to shake.
|
||||
*/
|
||||
function shakeError(element){
|
||||
if(element.style.opacity == 1){
|
||||
element.classList.remove('shake')
|
||||
void element.offsetWidth
|
||||
element.classList.add('shake')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate that an email field is neither empty nor invalid.
|
||||
*
|
||||
* @param {string} value The email value.
|
||||
*/
|
||||
function validateOfflineUsername(value){
|
||||
if(value){
|
||||
if(!validUsername.test(value)){
|
||||
showError(offlineLoginEmailError, Lang.queryJS('login.error.invalidValue'))
|
||||
offlineLoginDisabled(true)
|
||||
olu = false
|
||||
} else {
|
||||
offlineLoginEmailError.style.opacity = 0
|
||||
olu = true
|
||||
offlineLoginDisabled(false)
|
||||
}
|
||||
} else {
|
||||
olu = false
|
||||
showError(offlineLoginEmailError, Lang.queryJS('login.error.requiredValue'))
|
||||
offlineLoginDisabled(true)
|
||||
}
|
||||
}
|
||||
|
||||
// Emphasize errors with shake when focus is lost.
|
||||
offlineLoginUsername.addEventListener('focusout', (e) => {
|
||||
validateOfflineUsername(e.target.value)
|
||||
shakeError(offlineLoginEmailError)
|
||||
})
|
||||
|
||||
// Validate input for each field.
|
||||
offlineLoginUsername.addEventListener('input', (e) => {
|
||||
validateOfflineUsername(e.target.value)
|
||||
})
|
||||
|
||||
/**
|
||||
* Enable or disable the offlineLogin button.
|
||||
*
|
||||
* @param {boolean} v True to enable, false to disable.
|
||||
*/
|
||||
function offlineLoginDisabled(v){
|
||||
if(offlineLoginButton.disabled !== v){
|
||||
offlineLoginButton.disabled = v
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable loading elements.
|
||||
*
|
||||
* @param {boolean} v True to enable, false to disable.
|
||||
*/
|
||||
function offlineLoginLoading(v){
|
||||
if(v){
|
||||
offlineLoginButton.setAttribute('loading', v)
|
||||
offlineLoginButton.innerHTML = offlineLoginButton.innerHTML.replace(Lang.queryJS('login.login'), Lang.queryJS('login.loggingIn'))
|
||||
} else {
|
||||
offlineLoginButton.removeAttribute('loading')
|
||||
offlineLoginButton.innerHTML = offlineLoginButton.innerHTML.replace(Lang.queryJS('login.loggingIn'), Lang.queryJS('login.login'))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable offlineLogin form.
|
||||
*
|
||||
* @param {boolean} v True to enable, false to disable.
|
||||
*/
|
||||
function offlineFormDisabled(v){
|
||||
offlineLoginDisabled(v)
|
||||
offlineLoginCancelButton.disabled = v
|
||||
offlineLoginUsername.disabled = v
|
||||
if(v){
|
||||
offlineCheckmarkContainer.setAttribute('disabled', v)
|
||||
} else {
|
||||
offlineCheckmarkContainer.removeAttribute('disabled')
|
||||
}
|
||||
offlineLoginRememberOption.disabled = v
|
||||
}
|
||||
|
||||
let offlineLoginViewOnSuccess = VIEWS.landing
|
||||
let offlineLoginViewOnCancel = VIEWS.settings
|
||||
let offlineLoginViewCancelHandler
|
||||
|
||||
function offlineLoginCancelEnabled(val){
|
||||
if(val){
|
||||
$(offlineLoginCancelContainer).show()
|
||||
} else {
|
||||
$(offlineLoginCancelContainer).hide()
|
||||
}
|
||||
}
|
||||
|
||||
offlineLoginCancelButton.onclick = (e) => {
|
||||
switchView(getCurrentView(), offlineLoginViewOnCancel, 500, 500, () => {
|
||||
offlineLoginUsername.value = ''
|
||||
offlineLoginCancelEnabled(false)
|
||||
if(offlineLoginViewCancelHandler != null){
|
||||
offlineLoginViewCancelHandler()
|
||||
offlineLoginViewCancelHandler = null
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Disable default form behavior.
|
||||
offlineLoginForm.onsubmit = () => { return false }
|
||||
|
||||
// Bind offlineLogin button behavior.
|
||||
offlineLoginButton.addEventListener('click', () => {
|
||||
// Disable form.
|
||||
offlineFormDisabled(true)
|
||||
|
||||
// Show loading stuff.
|
||||
offlineLoginLoading(true)
|
||||
|
||||
const username = offlineLoginUsername.value
|
||||
const value = AuthManager.addOfflineAccount(username)
|
||||
$('.circle-loader').toggleClass('load-complete')
|
||||
$('.offlineCheckmark').toggle()
|
||||
|
||||
updateSelectedAccount(value)
|
||||
|
||||
setTimeout(() => {
|
||||
switchView(VIEWS.offline, offlineLoginViewOnSuccess, 500, 500, async () => {
|
||||
// Temporary workaround
|
||||
if(offlineLoginViewOnSuccess === VIEWS.settings){
|
||||
await prepareSettings()
|
||||
}
|
||||
offlineLoginViewOnSuccess = VIEWS.landing // Reset this for good measure.
|
||||
offlineLoginCancelEnabled(false) // Reset this for good measure.
|
||||
offlineLoginViewCancelHandler = null // Reset this for good measure.
|
||||
offlineLoginUsername.value = ''
|
||||
$('.circle-loader').toggleClass('load-complete')
|
||||
$('.offlineCheckmark').toggle()
|
||||
offlineLoginLoading(false)
|
||||
loginButton.innerHTML = loginButton.innerHTML.replace(Lang.queryJS('login.success'), Lang.queryJS('login.login'))
|
||||
offlineFormDisabled(false)
|
||||
})
|
||||
}, 1000)
|
||||
})
|
||||
@@ -289,7 +289,7 @@ async function populateServerListings(){
|
||||
<path class="cls-1" d="M100.93,65.54C89,62,68.18,55.65,63.54,52.13c2.7-5.23,18.8-19.2,28-27.55C81.36,31.74,63.74,43.87,58.09,45.3c-2.41-5.37-3.61-26.52-4.37-39-.77,12.46-2,33.64-4.36,39-5.7-1.46-23.3-13.57-33.49-20.72,9.26,8.37,25.39,22.36,28,27.55C39.21,55.68,18.47,62,6.52,65.55c12.32-2,33.63-6.06,39.34-4.9-.16,5.87-8.41,26.16-13.11,37.69,6.1-10.89,16.52-30.16,21-33.9,4.5,3.79,14.93,23.09,21,34C70,86.84,61.73,66.48,61.59,60.65,67.36,59.49,88.64,63.52,100.93,65.54Z"/>
|
||||
<circle class="cls-2" cx="53.73" cy="53.9" r="38"/>
|
||||
</svg>
|
||||
<span class="serverListingStarTooltip">Main Server</span>
|
||||
<span class="serverListingStarTooltip">Fő Server</span>
|
||||
</div>` : ''}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -342,6 +342,15 @@ settingsNavDone.onclick = () => {
|
||||
const msftLoginLogger = LoggerUtil.getLogger('Microsoft Login')
|
||||
const msftLogoutLogger = LoggerUtil.getLogger('Microsoft Logout')
|
||||
|
||||
// Bind the add offline account button.
|
||||
document.getElementById('settingsAddOfflineAccount').onclick = (e) => {
|
||||
switchView(getCurrentView(), VIEWS.offline, 500, 500, () => {
|
||||
offlineLoginViewOnCancel = VIEWS.settings
|
||||
offlineLoginViewOnSuccess = VIEWS.settings
|
||||
offlineLoginCancelEnabled(true)
|
||||
})
|
||||
}
|
||||
|
||||
// Bind the add mojang account button.
|
||||
document.getElementById('settingsAddMojangAccount').onclick = (e) => {
|
||||
switchView(getCurrentView(), VIEWS.login, 500, 500, () => {
|
||||
@@ -374,8 +383,8 @@ ipcRenderer.on(MSFT_OPCODE.REPLY_LOGIN, (_, ...arguments_) => {
|
||||
|
||||
// Unexpected error.
|
||||
setOverlayContent(
|
||||
'Something Went Wrong',
|
||||
'Microsoft authentication failed. Please try again.',
|
||||
'Valami nem sikerült',
|
||||
'Microsoft hitelesítés meghiúsult. Kérlek próbáld újra.',
|
||||
'OK'
|
||||
)
|
||||
setOverlayHandler(() => {
|
||||
@@ -430,8 +439,8 @@ ipcRenderer.on(MSFT_OPCODE.REPLY_LOGIN, (_, ...arguments_) => {
|
||||
// Uh oh.
|
||||
msftLoginLogger.error('Unhandled error during login.', displayableError)
|
||||
actualDisplayableError = {
|
||||
title: 'Unknown Error During Login',
|
||||
desc: 'An unknown error has occurred. Please see the console for details.'
|
||||
title: 'Ismeretlen Hiba Belépés Közben',
|
||||
desc: 'Egy ismeretlen hiba történt. Lásd a konzolt a további részletekért.'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,11 +470,11 @@ function bindAuthAccountSelect(){
|
||||
for(let i=0; i<selectBtns.length; i++){
|
||||
if(selectBtns[i].hasAttribute('selected')){
|
||||
selectBtns[i].removeAttribute('selected')
|
||||
selectBtns[i].innerHTML = 'Select Account'
|
||||
selectBtns[i].innerHTML = 'Kiválaszt'
|
||||
}
|
||||
}
|
||||
val.setAttribute('selected', '')
|
||||
val.innerHTML = 'Selected Account ✔'
|
||||
val.innerHTML = 'Kiválasztott Fiók ✔'
|
||||
setSelectedAccount(val.closest('.settingsAuthAccount').getAttribute('uuid'))
|
||||
}
|
||||
})
|
||||
@@ -483,10 +492,10 @@ function bindAuthAccountLogOut(){
|
||||
if(Object.keys(ConfigManager.getAuthAccounts()).length === 1){
|
||||
isLastAccount = true
|
||||
setOverlayContent(
|
||||
'Warning<br>This is Your Last Account',
|
||||
'In order to use the launcher you must be logged into at least one account. You will need to login again after.<br><br>Are you sure you want to log out?',
|
||||
'I\'m Sure',
|
||||
'Cancel'
|
||||
'Figyelem<br>Ez az utolsó fiókod',
|
||||
'A launcher használatához legalább egy fiókkal be kell lépj. Ki leszel jelentkeztetve ezután.<br><br>Biztos ki szeretnél jelentkezni?',
|
||||
'Igen',
|
||||
'Vissza'
|
||||
)
|
||||
setOverlayHandler(() => {
|
||||
processLogOut(val, isLastAccount)
|
||||
@@ -521,6 +530,23 @@ function processLogOut(val, isLastAccount){
|
||||
switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => {
|
||||
ipcRenderer.send(MSFT_OPCODE.OPEN_LOGOUT, uuid, isLastAccount)
|
||||
})
|
||||
} else if(targetAcc.type === 'offline') {
|
||||
AuthManager.removeOfflineAccount(uuid)
|
||||
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 {
|
||||
AuthManager.removeMojangAccount(uuid).then(() => {
|
||||
if(!isLastAccount && uuid === prevSelAcc.uuid){
|
||||
@@ -611,18 +637,19 @@ function refreshAuthAccountSelected(uuid){
|
||||
const selBtn = val.getElementsByClassName('settingsAuthAccountSelect')[0]
|
||||
if(uuid === val.getAttribute('uuid')){
|
||||
selBtn.setAttribute('selected', '')
|
||||
selBtn.innerHTML = 'Selected Account ✔'
|
||||
selBtn.innerHTML = 'Kiválasztott Fiók ✔'
|
||||
} else {
|
||||
if(selBtn.hasAttribute('selected')){
|
||||
selBtn.removeAttribute('selected')
|
||||
}
|
||||
selBtn.innerHTML = 'Select Account'
|
||||
selBtn.innerHTML = 'Kiválaszt'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const settingsCurrentMicrosoftAccounts = document.getElementById('settingsCurrentMicrosoftAccounts')
|
||||
const settingsCurrentMojangAccounts = document.getElementById('settingsCurrentMojangAccounts')
|
||||
const settingsCurrentOfflineAccounts = document.getElementById('settingsCurrentOfflineAccounts')
|
||||
|
||||
/**
|
||||
* Add auth account elements for each one stored in the authentication database.
|
||||
@@ -637,18 +664,19 @@ function populateAuthAccounts(){
|
||||
|
||||
let microsoftAuthAccountStr = ''
|
||||
let mojangAuthAccountStr = ''
|
||||
let offlineAuthAccountStr = ''
|
||||
|
||||
authKeys.forEach((val) => {
|
||||
const acc = authAccounts[val]
|
||||
|
||||
const accHtml = `<div class="settingsAuthAccount" uuid="${acc.uuid}">
|
||||
<div class="settingsAuthAccountLeft">
|
||||
<img class="settingsAuthAccountImage" alt="${acc.displayName}" src="https://mc-heads.net/body/${acc.uuid}/60">
|
||||
<img class="settingsAuthAccountImage" alt="${acc.displayName}" src="https://portal.chronika.hu/api/skinrender.php?username=${acc.displayName}">
|
||||
</div>
|
||||
<div class="settingsAuthAccountRight">
|
||||
<div class="settingsAuthAccountDetails">
|
||||
<div class="settingsAuthAccountDetailPane">
|
||||
<div class="settingsAuthAccountDetailTitle">Username</div>
|
||||
<div class="settingsAuthAccountDetailTitle">Felhasználónév</div>
|
||||
<div class="settingsAuthAccountDetailValue">${acc.displayName}</div>
|
||||
</div>
|
||||
<div class="settingsAuthAccountDetailPane">
|
||||
@@ -657,9 +685,9 @@ function populateAuthAccounts(){
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsAuthAccountActions">
|
||||
<button class="settingsAuthAccountSelect" ${selectedUUID === acc.uuid ? 'selected>Selected Account ✔' : '>Select Account'}</button>
|
||||
<button class="settingsAuthAccountSelect" ${selectedUUID === acc.uuid ? 'selected>Kiválasztott Fiók ✔' : '>Kiválaszt'}</button>
|
||||
<div class="settingsAuthAccountWrapper">
|
||||
<button class="settingsAuthAccountLogOut">Log Out</button>
|
||||
<button class="settingsAuthAccountLogOut">Kijelentkezés</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -667,6 +695,8 @@ function populateAuthAccounts(){
|
||||
|
||||
if(acc.type === 'microsoft') {
|
||||
microsoftAuthAccountStr += accHtml
|
||||
} else if(acc.type === 'offline') {
|
||||
offlineAuthAccountStr += accHtml
|
||||
} else {
|
||||
mojangAuthAccountStr += accHtml
|
||||
}
|
||||
@@ -675,6 +705,7 @@ function populateAuthAccounts(){
|
||||
|
||||
settingsCurrentMicrosoftAccounts.innerHTML = microsoftAuthAccountStr
|
||||
settingsCurrentMojangAccounts.innerHTML = mojangAuthAccountStr
|
||||
settingsCurrentOfflineAccounts.innerHTML = offlineAuthAccountStr
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1093,7 +1124,7 @@ async function loadSelectedServerOnModsTab(){
|
||||
<path class="cls-1" d="M100.93,65.54C89,62,68.18,55.65,63.54,52.13c2.7-5.23,18.8-19.2,28-27.55C81.36,31.74,63.74,43.87,58.09,45.3c-2.41-5.37-3.61-26.52-4.37-39-.77,12.46-2,33.64-4.36,39-5.7-1.46-23.3-13.57-33.49-20.72,9.26,8.37,25.39,22.36,28,27.55C39.21,55.68,18.47,62,6.52,65.55c12.32-2,33.63-6.06,39.34-4.9-.16,5.87-8.41,26.16-13.11,37.69,6.1-10.89,16.52-30.16,21-33.9,4.5,3.79,14.93,23.09,21,34C70,86.84,61.73,66.48,61.59,60.65,67.36,59.49,88.64,63.52,100.93,65.54Z"/>
|
||||
<circle class="cls-2" cx="53.73" cy="53.9" r="38"/>
|
||||
</svg>
|
||||
<span class="serverListingStarTooltip">Main Server</span>
|
||||
<span class="serverListingStarTooltip">Fő Server</span>
|
||||
</div>` : ''}
|
||||
</div>
|
||||
</div>
|
||||
@@ -1433,11 +1464,11 @@ function isPrerelease(version){
|
||||
function populateVersionInformation(version, valueElement, titleElement, checkElement){
|
||||
valueElement.innerHTML = version
|
||||
if(isPrerelease(version)){
|
||||
titleElement.innerHTML = 'Pre-release'
|
||||
titleElement.innerHTML = 'Teszt Kiadás'
|
||||
titleElement.style.color = '#ff886d'
|
||||
checkElement.style.background = '#ff886d'
|
||||
} else {
|
||||
titleElement.innerHTML = 'Stable Release'
|
||||
titleElement.innerHTML = 'Stabil Kiadás'
|
||||
titleElement.style.color = null
|
||||
checkElement.style.background = null
|
||||
}
|
||||
@@ -1456,7 +1487,7 @@ function populateAboutVersionInformation(){
|
||||
*/
|
||||
function populateReleaseNotes(){
|
||||
$.ajax({
|
||||
url: 'https://github.com/dscalzi/HeliosLauncher/releases.atom',
|
||||
url: 'https://github.com/ChronikaMC/Launcher/releases.atom',
|
||||
success: (data) => {
|
||||
const version = 'v' + remote.app.getVersion()
|
||||
const entries = $(data).find('entry')
|
||||
@@ -1476,7 +1507,7 @@ function populateReleaseNotes(){
|
||||
},
|
||||
timeout: 2500
|
||||
}).catch(err => {
|
||||
settingsAboutChangelogText.innerHTML = 'Failed to load release notes.'
|
||||
settingsAboutChangelogText.innerHTML = 'Nem sikerült betölteni a frissítésekre vonatkozó információkat.'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1524,27 +1555,27 @@ function settingsUpdateButtonStatus(text, disabled = false, handler = null){
|
||||
*/
|
||||
function populateSettingsUpdateInformation(data){
|
||||
if(data != null){
|
||||
settingsUpdateTitle.innerHTML = `New ${isPrerelease(data.version) ? 'Pre-release' : 'Release'} Available`
|
||||
settingsUpdateTitle.innerHTML = `Új ${isPrerelease(data.version) ? 'Teszt' : 'Stabil'} verzió elérhető`
|
||||
settingsUpdateChangelogCont.style.display = null
|
||||
settingsUpdateChangelogTitle.innerHTML = data.releaseName
|
||||
settingsUpdateChangelogText.innerHTML = data.releaseNotes
|
||||
populateVersionInformation(data.version, settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
|
||||
|
||||
if(process.platform === 'darwin'){
|
||||
settingsUpdateButtonStatus('Download from GitHub<span style="font-size: 10px;color: gray;text-shadow: none !important;">Close the launcher and run the dmg to update.</span>', false, () => {
|
||||
settingsUpdateButtonStatus('Töltsd le GitHubról<span style="font-size: 10px;color: gray;text-shadow: none !important;">Zárd be a launchert és futtasd a dmg-t a frissítéshez.</span>', false, () => {
|
||||
shell.openExternal(data.darwindownload)
|
||||
})
|
||||
} else {
|
||||
settingsUpdateButtonStatus('Downloading..', true)
|
||||
settingsUpdateButtonStatus('Letöltés..', true)
|
||||
}
|
||||
} else {
|
||||
settingsUpdateTitle.innerHTML = 'You Are Running the Latest Version'
|
||||
settingsUpdateTitle.innerHTML = 'A legfrisebb verziót használod'
|
||||
settingsUpdateChangelogCont.style.display = 'none'
|
||||
populateVersionInformation(remote.app.getVersion(), settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
|
||||
settingsUpdateButtonStatus('Check for Updates', false, () => {
|
||||
settingsUpdateButtonStatus('Frissítések keresése', false, () => {
|
||||
if(!isDev){
|
||||
ipcRenderer.send('autoUpdateAction', 'checkForUpdate')
|
||||
settingsUpdateButtonStatus('Checking for Updates..', true)
|
||||
settingsUpdateButtonStatus('Frissítések keresése..', true)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@ const VIEWS = {
|
||||
login: '#loginContainer',
|
||||
settings: '#settingsContainer',
|
||||
welcome: '#welcomeContainer',
|
||||
waiting: '#waitingContainer'
|
||||
waiting: '#waitingContainer',
|
||||
offline: '#offlineLoginContainer'
|
||||
}
|
||||
|
||||
// The currently shown view container.
|
||||
|
||||
@@ -26,9 +26,9 @@ window.eval = global.eval = function () {
|
||||
|
||||
// Display warning when devtools window is opened.
|
||||
remote.getCurrentWebContents().on('devtools-opened', () => {
|
||||
console.log('%cThe console is dark and full of terrors.', 'color: white; -webkit-text-stroke: 4px #a02d2a; font-size: 60px; font-weight: bold')
|
||||
console.log('%cIf you\'ve been told to paste something here, you\'re being scammed.', 'font-size: 16px')
|
||||
console.log('%cUnless you know exactly what you\'re doing, close this window.', 'font-size: 16px')
|
||||
console.log('%cA konzol sötét és tele van terrorral.', 'color: white; -webkit-text-stroke: 4px #a02d2a; font-size: 60px; font-weight: bold')
|
||||
console.log('%cHa azt mondták, hogy illessz be ide valamit, valószínűleg átverés.', 'font-size: 16px')
|
||||
console.log('%cHacsak nem tudod pontosan mit csinálsz, zárd be ezt az ablakot.', 'font-size: 16px')
|
||||
})
|
||||
|
||||
// Disable zoom, needed for darwin.
|
||||
@@ -41,22 +41,22 @@ if(!isDev){
|
||||
ipcRenderer.on('autoUpdateNotification', (event, arg, info) => {
|
||||
switch(arg){
|
||||
case 'checking-for-update':
|
||||
loggerAutoUpdater.info('Checking for update..')
|
||||
settingsUpdateButtonStatus('Checking for Updates..', true)
|
||||
loggerAutoUpdater.info('Frissítés keresése..')
|
||||
settingsUpdateButtonStatus('Frissítés keresése..', true)
|
||||
break
|
||||
case 'update-available':
|
||||
loggerAutoUpdater.info('New update available', info.version)
|
||||
loggerAutoUpdater.info('Új frissítés elérhető', info.version)
|
||||
|
||||
if(process.platform === 'darwin'){
|
||||
info.darwindownload = `https://github.com/dscalzi/HeliosLauncher/releases/download/v${info.version}/Helios-Launcher-setup-${info.version}${process.arch === 'arm64' ? '-arm64' : '-x64'}.dmg`
|
||||
info.darwindownload = `https://github.com/ChronikaMC/Launcher/releases/download/v${info.version}/Chronika-Launcher-setup-${info.version}${process.arch === 'arm64' ? '-arm64' : '-x64'}.dmg`
|
||||
showUpdateUI(info)
|
||||
}
|
||||
|
||||
populateSettingsUpdateInformation(info)
|
||||
break
|
||||
case 'update-downloaded':
|
||||
loggerAutoUpdater.info('Update ' + info.version + ' ready to be installed.')
|
||||
settingsUpdateButtonStatus('Install Now', false, () => {
|
||||
loggerAutoUpdater.info('Frissítés ' + info.version + ' készen áll a telepítésre.')
|
||||
settingsUpdateButtonStatus('Telepítés Most', false, () => {
|
||||
if(!isDev){
|
||||
ipcRenderer.send('autoUpdateAction', 'installUpdateNow')
|
||||
}
|
||||
@@ -64,8 +64,8 @@ if(!isDev){
|
||||
showUpdateUI(info)
|
||||
break
|
||||
case 'update-not-available':
|
||||
loggerAutoUpdater.info('No new update found.')
|
||||
settingsUpdateButtonStatus('Check for Updates')
|
||||
loggerAutoUpdater.info('Nem található frissítés.')
|
||||
settingsUpdateButtonStatus('Frissítés keresése')
|
||||
break
|
||||
case 'ready':
|
||||
updateCheckListener = setInterval(() => {
|
||||
@@ -76,12 +76,12 @@ if(!isDev){
|
||||
case 'realerror':
|
||||
if(info != null && info.code != null){
|
||||
if(info.code === 'ERR_UPDATER_INVALID_RELEASE_FEED'){
|
||||
loggerAutoUpdater.info('No suitable releases found.')
|
||||
loggerAutoUpdater.info('Nem található megfelelő kiadás.')
|
||||
} else if(info.code === 'ERR_XML_MISSED_ELEMENT'){
|
||||
loggerAutoUpdater.info('No releases found.')
|
||||
loggerAutoUpdater.info('Nem találhatóak kiadások.')
|
||||
} else {
|
||||
loggerAutoUpdater.error('Error during update check..', info)
|
||||
loggerAutoUpdater.debug('Error Code:', info.code)
|
||||
loggerAutoUpdater.error('Hiba történt a frissítések keresése közben..', info)
|
||||
loggerAutoUpdater.debug('Hibakód:', info.code)
|
||||
}
|
||||
}
|
||||
break
|
||||
|
||||
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"html": {
|
||||
"avatarOverlay": "Edit"
|
||||
"avatarOverlay": "Fiók"
|
||||
},
|
||||
"js": {
|
||||
"login": {
|
||||
"error": {
|
||||
"invalidValue": "* Invalid Value",
|
||||
"requiredValue": "* Required",
|
||||
"invalidValue": "* Érvénytelen Érték",
|
||||
"requiredValue": "* Kötelező",
|
||||
"userMigrated": {
|
||||
"title": "Error During Login:<br>Invalid Credentials",
|
||||
"title": "Hiba bejelentkezés közben:<br>Érvénytelen adatok",
|
||||
"desc": "You've attempted to login with a migrated account. Try again using the account email as the username."
|
||||
},
|
||||
"invalidCredentials": {
|
||||
"title": "Error During Login:<br>Invalid Credentials",
|
||||
"desc": "The email or password you've entered is incorrect. Please try again."
|
||||
"title": "Hiba bejelentkezés közben:<br>Érvénytelen adatok",
|
||||
"desc": "Érvénytelen felhasználó vagy jelszó. Próbáld újra."
|
||||
},
|
||||
"rateLimit": {
|
||||
"title": "Error During Login:<br>Too Many Attempts",
|
||||
"title": "Hiba bejelentkezés közben:<br>Túl sok próbálkozás",
|
||||
"desc": "There have been too many login attempts with this account recently. Please try again later."
|
||||
},
|
||||
"noInternet": {
|
||||
"title": "Error During Login:<br>No Internet Connection",
|
||||
"title": "Hiba bejelentkezés közben:<br>Nincs internet",
|
||||
"desc": "You must be connected to the internet in order to login. Please connect and try again."
|
||||
},
|
||||
"authDown": {
|
||||
"title": "Error During Login:<br>Authentication Server Offline",
|
||||
"title": "Hiba bejelentkezés közben:<br>Hitelesítő szerver offline",
|
||||
"desc": "Mojang's authentication server is currently offline or unreachable. Please wait a bit and try again. You can check the status of the server on <a href=\"https://help.mojang.com/\">Mojang's help portal</a>."
|
||||
},
|
||||
"notPaid": {
|
||||
"title": "Error During Login:<br>Game Not Purchased",
|
||||
"title": "Hiba bejelentkezés közben:<br>Nem vetted meg a játékot",
|
||||
"desc": "The account you are trying to login with has not purchased a copy of Minecraft.<br>You may purchase a copy on <a href=\"https://minecraft.net/\">Minecraft.net</a>"
|
||||
},
|
||||
"unknown": {
|
||||
"title": "Error During Login:<br>Unknown Error"
|
||||
"title": "Hiba bejelentkezés közben:<br>Ismeretlen Hiba"
|
||||
}
|
||||
},
|
||||
"login": "LOGIN",
|
||||
"loggingIn": "LOGGING IN",
|
||||
"success": "SUCCESS",
|
||||
"tryAgain": "Try Again"
|
||||
"login": "BELÉPÉS",
|
||||
"loggingIn": "BEJELENTKEZÉS",
|
||||
"success": "SIKER",
|
||||
"tryAgain": "Próbáld Újra"
|
||||
},
|
||||
"landing": {
|
||||
"launch": {
|
||||
"pleaseWait": "Please wait.."
|
||||
"pleaseWait": "Kérlek Várj.."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@
|
||||
<% } else{ %>
|
||||
<div id="frameContentWin">
|
||||
<div id="frameTitleDock">
|
||||
<span id="frameTitleText">Helios Launcher</span>
|
||||
<span id="frameTitleText">Chronika Launcher</span>
|
||||
</div>
|
||||
<div id="frameButtonDockWin">
|
||||
<button class="frameButton fMb" id="frameButton_minimize" tabIndex="-1">
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div id="upper">
|
||||
<div id="left">
|
||||
<div id="image_seal_container">
|
||||
<img id="image_seal" src="assets/images/SealCircle.png"/>
|
||||
<div id="updateAvailableTooltip">Update Available</div>
|
||||
<img id="image_seal" src="assets/images/ChronikaLogo.png"/>
|
||||
<div id="updateAvailableTooltip">Elérhető Frissítés</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
@@ -11,9 +11,10 @@
|
||||
<div id="right">
|
||||
<div id="rightContainer">
|
||||
<div id="user_content">
|
||||
<span id="user_text">Username</span>
|
||||
<span id="user_text">Felhasználónév</span>
|
||||
<div id="avatarContainer">
|
||||
<button id="avatarOverlay">Edit</button>
|
||||
<div id="avatarImage"></div>
|
||||
<button id="avatarOverlay">Szerkeszt</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mediaContent">
|
||||
@@ -23,14 +24,14 @@
|
||||
<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">Settings</div>
|
||||
<div id="settingsTooltip">Beállítások</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mediaDivider"></div>
|
||||
<div id="externalMedia">
|
||||
<div class="mediaContainer">
|
||||
<a href="https://github.com/dscalzi/HeliosLauncher" class="mediaURL" id="linkURL">
|
||||
<a href="https://chronika.hu" class="mediaURL" id="linkURL">
|
||||
<svg id="linkSVG" class="mediaSVG" viewBox="35.34 34.3575 70.68 68.71500">
|
||||
<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"/>
|
||||
@@ -39,7 +40,7 @@
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="mediaContainer">
|
||||
<!--<div class="mediaContainer">
|
||||
<a href="#" class="mediaURL" id="twitterURL" disabled>
|
||||
<svg id="twitterSVG" class="mediaSVG" viewBox="0 0 5000 4060" preserveAspectRatio="xMidYMid meet">
|
||||
<g>
|
||||
@@ -47,8 +48,8 @@
|
||||
</g>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div class="mediaContainer">
|
||||
</div>-->
|
||||
<!--<div class="mediaContainer">
|
||||
<a href="#" class="mediaURL" id="instagramURL" disabled>
|
||||
<svg id="instagramSVG" class="mediaSVG" viewBox="0 0 5040 5040">
|
||||
<defs>
|
||||
@@ -67,9 +68,9 @@
|
||||
</g>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="mediaContainer">
|
||||
<a href="#" class="mediaURL" id="youtubeURL" disabled>
|
||||
<a href="https://www.youtube.com/@chronikamc" 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"/>
|
||||
@@ -78,7 +79,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div class="mediaContainer">
|
||||
<a href="https://discord.gg/zNWUXdt" class="mediaURL" id="discordURL">
|
||||
<a href="https://dc.chronika.hu" 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"/>
|
||||
@@ -96,12 +97,12 @@
|
||||
<div class="bot_wrapper">
|
||||
<div id="content">
|
||||
<div id="server_status_wrapper">
|
||||
<span class="bot_label" id="landingPlayerLabel">SERVER</span>
|
||||
<span class="bot_label" id="landingPlayerLabel">SZERVER</span>
|
||||
<span id="player_count">OFFLINE</span>
|
||||
</div>
|
||||
<div class="bot_divider"></div>
|
||||
<div id="mojangStatusWrapper">
|
||||
<span class="bot_label">MOJANG STATUS</span>
|
||||
<span class="bot_label">MOJANG SZERVEREK</span>
|
||||
<span id="mojang_status_icon">•</span>
|
||||
<div id="mojangStatusTooltip">
|
||||
<div id="mojangStatusTooltipTitle">Services</div>
|
||||
@@ -133,7 +134,7 @@
|
||||
</defs>
|
||||
<polyline class="arrowLine" points="0.71 13.26 12.56 1.41 24.16 13.02"/>
|
||||
</svg>
|
||||
<span id="newsButtonText">NEWS</span>
|
||||
<span id="newsButtonText">ÚJDONSÁGOK</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -141,9 +142,9 @@
|
||||
<div id="right">
|
||||
<div class="bot_wrapper">
|
||||
<div id="launch_content">
|
||||
<button id="launch_button">PLAY</button>
|
||||
<button id="launch_button">JÁTÉK</button>
|
||||
<div class="bot_divider"></div>
|
||||
<button id="server_selection_button" class="bot_label">• No Server Selected</button>
|
||||
<button id="server_selection_button" class="bot_label">• Nincs Szerver Kiválasztva</button>
|
||||
</div>
|
||||
<div id="launch_details">
|
||||
<div id="launch_details_left">
|
||||
@@ -152,7 +153,7 @@
|
||||
</div>
|
||||
<div id="launch_details_right">
|
||||
<progress id="launch_progress" value="22" max="100"></progress>
|
||||
<span id="launch_details_text" class="bot_label">Please wait..</span>
|
||||
<span id="launch_details_text" class="bot_label">Kérlek várj..</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -205,14 +206,14 @@
|
||||
</div>
|
||||
<div id="newsErrorContainer">
|
||||
<div id="newsErrorLoading">
|
||||
<span id="nELoadSpan" class="newsErrorContent">Checking for News..</span>
|
||||
<span id="nELoadSpan" class="newsErrorContent">Hírek betöltése..</span>
|
||||
</div>
|
||||
<div id="newsErrorFailed" style="display: none;">
|
||||
<span id="nEFailedSpan" class="newsErrorContent">Failed to Load News</span>
|
||||
<button id="newsErrorRetry">Try Again</button>
|
||||
<span id="nEFailedSpan" class="newsErrorContent">Nem sikerült betölteni az újdonságokat</span>
|
||||
<button id="newsErrorRetry">Próbáld Újra</button>
|
||||
</div>
|
||||
<div id="newsErrorNone" style="display: none;">
|
||||
<span id="nENoneSpan" class="newsErrorContent">No News</span>
|
||||
<span id="nENoneSpan" class="newsErrorContent">Itt nincs semmi</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
<div id="loginContainer" style="display: none;">
|
||||
<div id="loginCancelContainer" style="display: none;">
|
||||
<button id="loginCancelButton">
|
||||
<div id="loginCancelIcon">X</div>
|
||||
<span id="loginCancelText">Cancel</span>
|
||||
<div id="loginContainer" class="loginContainer" style="display: none;">
|
||||
<div id="loginCancelContainer" class="loginCancelContainer" style="display: none;">
|
||||
<button id="loginCancelButton" class="loginCancelButton">
|
||||
<div id="loginCancelIcon" class="loginCancelIcon">X</div>
|
||||
<span id="loginCancelText" class="loginCancelText">Mégse</span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="loginContent">
|
||||
<form id="loginForm">
|
||||
<img id="loginImageSeal" src="assets/images/SealCircle.png"/>
|
||||
<span id="loginSubheader">MINECRAFT LOGIN</span>
|
||||
<div id="loginContent" class="loginContent">
|
||||
<form id="loginForm" class="loginForm">
|
||||
<img id="loginImageSeal" class="loginImageSeal" src="assets/images/ChronikaLogo.png"/>
|
||||
<span id="loginSubheader" class="loginSubheader">MINECRAFT BELÉPÉS</span>
|
||||
<div class="loginFieldContainer">
|
||||
<svg id="profileSVG" class="loginSVG" viewBox="40 37 65.36 61.43">
|
||||
<svg class="loginSVG profileSVG" viewBox="40 37 65.36 61.43">
|
||||
<g>
|
||||
<path d="M86.77,58.12A13.79,13.79,0,1,0,73,71.91,13.79,13.79,0,0,0,86.77,58.12M97,103.67a3.41,3.41,0,0,0,3.39-3.84,27.57,27.57,0,0,0-54.61,0,3.41,3.41,0,0,0,3.39,3.84Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
<span class="loginErrorSpan" id="loginEmailError">* Invalid Value</span>
|
||||
<input id="loginUsername" class="loginField" type="text" placeholder="EMAIL OR USERNAME"/>
|
||||
<span class="loginErrorSpan loginEmailError" id="loginEmailError">* Érvénytelen Érték</span>
|
||||
<input id="loginUsername" class="loginField loginUsername" type="text" placeholder="EMAIL VAGY FELHASZNÁLÓNÉV"/>
|
||||
</div>
|
||||
<div class="loginFieldContainer">
|
||||
<svg id="lockSVG" class="loginSVG" viewBox="40 32 60.36 70.43">
|
||||
<svg class="loginSVG lockSVG" viewBox="40 32 60.36 70.43">
|
||||
<g>
|
||||
<path d="M86.16,54a16.38,16.38,0,1,0-32,0H44V102.7H96V54Zm-25.9-3.39a9.89,9.89,0,1,1,19.77,0A9.78,9.78,0,0,1,79.39,54H60.89A9.78,9.78,0,0,1,60.26,50.59ZM70,96.2a6.5,6.5,0,0,1-6.5-6.5,6.39,6.39,0,0,1,3.1-5.4V67h6.5V84.11a6.42,6.42,0,0,1,3.39,5.6A6.5,6.5,0,0,1,70,96.2Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
<span class="loginErrorSpan" id="loginPasswordError">* Required</span>
|
||||
<input id="loginPassword" class="loginField" type="password" placeholder="PASSWORD"/>
|
||||
<span class="loginErrorSpan loginPasswordError" id="loginPasswordError">* Kötelező</span>
|
||||
<input id="loginPassword" class="loginField loginPassword" type="password" placeholder="JELSZÓ"/>
|
||||
</div>
|
||||
<div id="loginOptions">
|
||||
<div id="loginOptions" class="loginOptions">
|
||||
<span class="loginSpanDim">
|
||||
<a href="https://minecraft.net/password/forgot/">forgot password?</a>
|
||||
<a href="https://minecraft.net/password/forgot/">elfelejtett jelszó?</a>
|
||||
</span>
|
||||
<label id="checkmarkContainer">
|
||||
<input id="loginRememberOption" type="checkbox" checked>
|
||||
<span id="loginRememberText" class="loginSpanDim">remember me?</span>
|
||||
<input id="loginRememberOption" class="loginRememberOption" type="checkbox" checked>
|
||||
<span id="loginRememberText" class="loginSpanDim loginRememberText">jegyezz meg</span>
|
||||
<span class="loginCheckmark"></span>
|
||||
</label>
|
||||
</div>
|
||||
<button id="loginButton" disabled>
|
||||
<div id="loginButtonContent">
|
||||
LOGIN
|
||||
<svg id="loginSVG" viewBox="0 0 24.87 13.97">
|
||||
<button id="loginButton" class="loginButton" disabled>
|
||||
<div id="loginButtonContent" class="loginButtonContent">
|
||||
BELÉPÉS
|
||||
<svg id="loginSVG" class="loginButtonSVG" viewBox="0 0 24.87 13.97">
|
||||
<defs>
|
||||
<style>.arrowLine{fill:none;stroke:#FFF;stroke-width:2px;transition: 0.25s ease;}</style>
|
||||
</defs>
|
||||
@@ -49,15 +49,14 @@
|
||||
<div class="circle-loader">
|
||||
<div class="checkmark draw"></div>
|
||||
</div>
|
||||
<!--<div class="spinningCircle" id="loginSpinner"></div>-->
|
||||
</div>
|
||||
</button>
|
||||
<div id="loginDisclaimer">
|
||||
<span class="loginSpanDim" id="loginRegisterSpan">
|
||||
<a href="https://minecraft.net/store/minecraft-java-edition/">Need an Account?</a>
|
||||
<div id="loginDisclaimer" class="loginDisclaimer">
|
||||
<span class="loginSpanDim loginRegisterSpan" id="loginRegisterSpan">
|
||||
<a href="https://minecraft.net/store/minecraft-java-edition/">Nincs fiókod?</a>
|
||||
</span>
|
||||
<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">A jelszavad közvetlen a Mojang-nak lesz küldve, soha nem tároljuk.</p>
|
||||
<p class="loginDisclaimerText">Chronika Launcher nincs kapcsolatban a Mojang AB-vel.</p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div id="loginOptionsContainer" style="display: none;">
|
||||
<div id="loginOptionsContent">
|
||||
<div class="loginOptionsMainContent">
|
||||
<h2>Login Options</h2>
|
||||
<h2>Bejelentkezés</h2>
|
||||
<div class="loginOptionActions">
|
||||
<div class="loginOptionButtonContainer">
|
||||
<button id="loginOptionMicrosoft" class="loginOptionButton">
|
||||
@@ -11,7 +11,7 @@
|
||||
<path fill="#05a6f0" d="M1 12h10v10H1z" />
|
||||
<path fill="#ffba08" d="M12 12h10v10H12z" />
|
||||
</svg>
|
||||
<span>Login with Microsoft</span>
|
||||
<span>Microsoft Belépés</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="loginOptionButtonContainer">
|
||||
@@ -21,12 +21,18 @@
|
||||
<path d="M2.598.022h7.07L9.665 7c-.003 1.334-1.113 2.46-2.402 2.654H0V2.542C.134 1.2 1.3.195 2.598.022z" fill="#db2331" />
|
||||
<path d="M1.54 2.844c.314-.76 1.31-.46 1.954-.528.785-.083 1.503.272 2.1.758l.164-.9c.327.345.587.756.964 1.052.28.254.655-.342.86-.013.42.864.408 1.86.54 2.795l-.788-.373C6.9 4.17 5.126 3.052 3.656 3.685c-1.294.592-1.156 2.65.06 3.255 1.354.703 2.953.51 4.405.292-.07.42-.34.87-.834.816l-4.95.002c-.5.055-.886-.413-.838-.89l.04-4.315z" fill="#fff" />
|
||||
</svg>
|
||||
<span>Login with Mojang</span>
|
||||
<span>Mojang Belépés</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="loginOptionButtonContainer">
|
||||
<button id="loginOptionOffline" class="loginOptionButton">
|
||||
<svg fill="#000000" width="22" height="22" viewBox="0 0 14 14" role="img" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path fill="red" d="M13 10.65657q0 .40404-.28283.68686l-1.37374 1.37374Q11.06061 13 10.65657 13t-.68687-.28283L7 9.74747l-2.9697 2.9697Q3.74747 13 3.34343 13q-.40404 0-.68686-.28283l-1.37374-1.37374Q1 11.06061 1 10.65657t.28283-.68687L4.25253 7l-2.9697-2.9697Q1 3.74747 1 3.34343q0-.40404.28283-.68686l1.37374-1.37374Q2.93939 1 3.34343 1t.68687.28283L7 4.25253l2.9697-2.9697Q10.25253 1 10.65657 1q.40404 0 .68686.28283l1.37374 1.37374Q13 2.93939 13 3.34343t-.28283.68687L9.74747 7l2.9697 2.9697Q13 10.25253 13 10.65657z"/></svg>
|
||||
<span>Offline Belépés</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loginOptionCancelContainer" style="display: none;">
|
||||
<button id="loginOptionCancelButton">Cancel</button>
|
||||
<button id="loginOptionCancelButton">Mégse</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
44
app/offline.ejs
Normal file
44
app/offline.ejs
Normal file
@@ -0,0 +1,44 @@
|
||||
<div id="offlineLoginContainer" class="loginContainer" style="display: none;">
|
||||
<div id="offlineLoginCancelContainer" class="loginCancelContainer" style="display: none;">
|
||||
<button id="offlineLoginCancelButton" class="loginCancelButton">
|
||||
<div id="offlineLoginCancelIcon" class="loginCancelIcon">X</div>
|
||||
<span id="offlineLoginCancelText" class="loginCancelText">Mégse</span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="offlineLoginContent" class="loginContent">
|
||||
<form id="offlineLoginForm" class="loginForm">
|
||||
<img id="offlineLoginImageSeal" class="loginImageSeal" src="assets/images/ChronikaLogo.png"/>
|
||||
<span id="offlineLoginSubheader" class="loginSubheader">OFFLINE BELÉPÉS</span>
|
||||
<div class="loginFieldContainer">
|
||||
<svg class="loginSVG profileSVG" viewBox="40 37 65.36 61.43">
|
||||
<g>
|
||||
<path d="M86.77,58.12A13.79,13.79,0,1,0,73,71.91,13.79,13.79,0,0,0,86.77,58.12M97,103.67a3.41,3.41,0,0,0,3.39-3.84,27.57,27.57,0,0,0-54.61,0,3.41,3.41,0,0,0,3.39,3.84Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
<span class="loginErrorSpan loginEmailError" id="offlineLoginEmailError">* Érvénytelen Érték</span>
|
||||
<input id="offlineLoginUsername" class="loginField loginUsername" type="text" placeholder="EMAIL VAGY FELHASZNÁLÓNÉV"/>
|
||||
</div>
|
||||
<div id="offlineLoginOptions" class="loginOptions">
|
||||
<label id="offlineCheckmarkContainer">
|
||||
<input id="offlineLoginRememberOption" class="loginRememberOption" type="checkbox" checked>
|
||||
<span id="offlineLoginRememberText" class="loginSpanDim loginRememberText">jegyezz meg</span>
|
||||
</label>
|
||||
</div>
|
||||
<button id="offlineLoginButton" class="loginButton">
|
||||
<div id="offlineLoginButtonContent" class="loginButtonContent">
|
||||
BELÉPÉS
|
||||
<svg id="offlineLoginSVG" class="loginButtonSVG" 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="offlineCheckmark draw"></div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
<script src="./assets/js/scripts/offline.js"></script>
|
||||
</div>
|
||||
@@ -1,29 +1,29 @@
|
||||
<div id="overlayContainer" style="display: none;">
|
||||
<div id="serverSelectContent" style="display: none;">
|
||||
<span id="serverSelectHeader">Available Servers</span>
|
||||
<span id="serverSelectHeader">Elérhető Szerverek</span>
|
||||
<div id="serverSelectList">
|
||||
<div id="serverSelectListScrollable">
|
||||
<!-- Server listings populated here. -->
|
||||
</div>
|
||||
</div>
|
||||
<div id="serverSelectActions">
|
||||
<button id="serverSelectConfirm" class="overlayKeybindEnter" type="submit">Select</button>
|
||||
<button id="serverSelectConfirm" class="overlayKeybindEnter" type="submit">Kiválaszt</button>
|
||||
<div id="serverSelectCancelWrapper">
|
||||
<button id="serverSelectCancel" class="overlayKeybindEsc">Cancel</button>
|
||||
<button id="serverSelectCancel" class="overlayKeybindEsc">Mégse</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="accountSelectContent" style="display: none;">
|
||||
<span id="accountSelectHeader">Select an Account</span>
|
||||
<span id="accountSelectHeader">Válassz fiókot</span>
|
||||
<div id="accountSelectList">
|
||||
<div id="accountSelectListScrollable">
|
||||
<!-- Accounts populated here. -->
|
||||
</div>
|
||||
</div>
|
||||
<div id="accountSelectActions">
|
||||
<button id="accountSelectConfirm" class="overlayKeybindEnter" type="submit">Select</button>
|
||||
<button id="accountSelectConfirm" class="overlayKeybindEnter" type="submit">Kiválaszt</button>
|
||||
<div id="accountSelectCancelWrapper">
|
||||
<button id="accountSelectCancel" class="overlayKeybindEsc">Cancel</button>
|
||||
<button id="accountSelectCancel" class="overlayKeybindEsc">Mégse</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,7 +33,7 @@
|
||||
<div id="overlayActionContainer">
|
||||
<button id="overlayAcknowledge" class="overlayKeybindEnter">Conare Iterum</button>
|
||||
<div id="overlayDismissWrapper">
|
||||
<button id="overlayDismiss" style="display: none;" class="overlayKeybindEsc">Dismiss</button>
|
||||
<button id="overlayDismiss" style="display: none;" class="overlayKeybindEsc">Elvet</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
152
app/settings.ejs
152
app/settings.ejs
@@ -2,21 +2,21 @@
|
||||
<div id="settingsContainerLeft">
|
||||
<div id="settingsNavContainer">
|
||||
<div id="settingsNavHeader">
|
||||
<span id="settingsNavHeaderText">Settings</span>
|
||||
<span id="settingsNavHeaderText">Beállítások</span>
|
||||
</div>
|
||||
<div id="settingsNavItemsContainer">
|
||||
<div id="settingsNavItemsContent">
|
||||
<button class="settingsNavItem" rSc="settingsTabAccount" id="settingsNavAccount" selected>Account</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabAccount" id="settingsNavAccount" selected>Fiók</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabMinecraft">Minecraft</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabMods">Mods</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabMods">Modok</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabJava">Java</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabLauncher">Launcher</button>
|
||||
<div class="settingsNavSpacer"></div>
|
||||
<button class="settingsNavItem" rSc="settingsTabAbout">About</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabUpdate" id="settingsNavUpdate">Updates</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabAbout">Információk</button>
|
||||
<button class="settingsNavItem" rSc="settingsTabUpdate" id="settingsNavUpdate">Frissítések</button>
|
||||
<div id="settingsNavContentBottom">
|
||||
<div class="settingsNavDivider"></div>
|
||||
<button id="settingsNavDone">Done</button>
|
||||
<button id="settingsNavDone">Kész</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -25,8 +25,8 @@
|
||||
<div id="settingsContainerRight">
|
||||
<div id="settingsTabAccount" class="settingsTab">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">Account Settings</span>
|
||||
<span class="settingsTabHeaderDesc">Add new accounts or manage existing ones.</span>
|
||||
<span class="settingsTabHeaderText">Fiókbeállítások</span>
|
||||
<span class="settingsTabHeaderDesc">Adj hozzá új fiókot vagy kezeld a már meglévőket.</span>
|
||||
</div>
|
||||
<div class="settingsAuthAccountTypeContainer">
|
||||
<div class="settingsAuthAccountTypeHeader">
|
||||
@@ -40,7 +40,7 @@
|
||||
<span>Microsoft</span>
|
||||
</div>
|
||||
<div class="settingsAuthAccountTypeHeaderRight">
|
||||
<button class="settingsAddAuthAccount" id="settingsAddMicrosoftAccount">+ Add Microsoft Account</button>
|
||||
<button class="settingsAddAuthAccount" id="settingsAddMicrosoftAccount">+ Microsoft Fiók Hozzáadása</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<span>Mojang</span>
|
||||
</div>
|
||||
<div class="settingsAuthAccountTypeHeaderRight">
|
||||
<button class="settingsAddAuthAccount" id="settingsAddMojangAccount">+ Add Mojang Account</button>
|
||||
<button class="settingsAddAuthAccount" id="settingsAddMojangAccount">+ Mojang Fiók Hozzáadása</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -68,14 +68,30 @@
|
||||
<!-- Mojang auth accounts populated here. -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="settingsAuthAccountTypeContainer">
|
||||
<div class="settingsAuthAccountTypeHeader">
|
||||
<div class="settingsAuthAccountTypeHeaderLeft">
|
||||
<svg fill="#000000" width="22" height="22" viewBox="0 0 14 14" role="img" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path fill="red" d="M13 10.65657q0 .40404-.28283.68686l-1.37374 1.37374Q11.06061 13 10.65657 13t-.68687-.28283L7 9.74747l-2.9697 2.9697Q3.74747 13 3.34343 13q-.40404 0-.68686-.28283l-1.37374-1.37374Q1 11.06061 1 10.65657t.28283-.68687L4.25253 7l-2.9697-2.9697Q1 3.74747 1 3.34343q0-.40404.28283-.68686l1.37374-1.37374Q2.93939 1 3.34343 1t.68687.28283L7 4.25253l2.9697-2.9697Q10.25253 1 10.65657 1q.40404 0 .68686.28283l1.37374 1.37374Q13 2.93939 13 3.34343t-.28283.68687L9.74747 7l2.9697 2.9697Q13 10.25253 13 10.65657z"/></svg>
|
||||
<span>Offline</span>
|
||||
</div>
|
||||
<div class="settingsAuthAccountTypeHeaderRight">
|
||||
<button class="settingsAddAuthAccount" id="settingsAddOfflineAccount">+ Offline Fiók Hozzáadása</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="settingsCurrentAccounts" id="settingsCurrentOfflineAccounts">
|
||||
<!-- Offline auth accounts populated here. -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsTabMinecraft" class="settingsTab" style="display: none;">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">Minecraft Settings</span>
|
||||
<span class="settingsTabHeaderDesc">Options related to game launch.</span>
|
||||
<span class="settingsTabHeaderText">Minecraft Beállítások</span>
|
||||
<span class="settingsTabHeaderDesc">Indítással kapcsolatos beállítások.</span>
|
||||
</div>
|
||||
<div id="settingsGameResolutionContainer">
|
||||
<span class="settingsFieldTitle">Game Resolution</span>
|
||||
<span class="settingsFieldTitle">Játék Felbontás</span>
|
||||
<div id="settingsGameResolutionContent">
|
||||
<input type="number" id="settingsGameWidth" min="0" cValue="GameWidth">
|
||||
<div id="settingsGameResolutionCross">✖</div>
|
||||
@@ -84,7 +100,7 @@
|
||||
</div>
|
||||
<div class="settingsFieldContainer">
|
||||
<div class="settingsFieldLeft">
|
||||
<span class="settingsFieldTitle">Launch in fullscreen.</span>
|
||||
<span class="settingsFieldTitle">Indítás teljes képernyős módban.</span>
|
||||
</div>
|
||||
<div class="settingsFieldRight">
|
||||
<label class="toggleSwitch">
|
||||
@@ -95,7 +111,7 @@
|
||||
</div>
|
||||
<div class="settingsFieldContainer">
|
||||
<div class="settingsFieldLeft">
|
||||
<span class="settingsFieldTitle">Automatically connect to the server on launch.</span>
|
||||
<span class="settingsFieldTitle">Automatikusan csatlakozzon a szerverhez indításkor.</span>
|
||||
</div>
|
||||
<div class="settingsFieldRight">
|
||||
<label class="toggleSwitch">
|
||||
@@ -106,8 +122,8 @@
|
||||
</div>
|
||||
<div class="settingsFieldContainer">
|
||||
<div class="settingsFieldLeft">
|
||||
<span class="settingsFieldTitle">Launch game process detached from launcher.</span>
|
||||
<span class="settingsFieldDesc">If the game is not detached, closing the launcher will also close the game.</span>
|
||||
<span class="settingsFieldTitle">Játék indítása leválasztva a launchertől.</span>
|
||||
<span class="settingsFieldDesc">Ha nincs leválasztva, a launcher bezárása bezárja a játékot is.</span>
|
||||
</div>
|
||||
<div class="settingsFieldRight">
|
||||
<label class="toggleSwitch">
|
||||
@@ -119,8 +135,8 @@
|
||||
</div>
|
||||
<div id="settingsTabMods" class="settingsTab" style="display: none;">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">Mod Settings</span>
|
||||
<span class="settingsTabHeaderDesc">Enable or disable mods.</span>
|
||||
<span class="settingsTabHeaderText">Mod Beállítások</span>
|
||||
<span class="settingsTabHeaderDesc">Modok engedélyezése/letiltása.</span>
|
||||
</div>
|
||||
<div class="settingsSelServContainer">
|
||||
<div class="settingsSelServContent">
|
||||
@@ -128,37 +144,37 @@
|
||||
</div>
|
||||
<div class="settingsSwitchServerContainer">
|
||||
<div class="settingsSwitchServerContent">
|
||||
<button class="settingsSwitchServerButton">Switch</button>
|
||||
<button class="settingsSwitchServerButton">Kiválaszt</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsModsContainer">
|
||||
<div id="settingsReqModsContainer">
|
||||
<div class="settingsModsHeader">Required Mods</div>
|
||||
<div class="settingsModsHeader">Kötelező Modok</div>
|
||||
<div id="settingsReqModsContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsOptModsContainer">
|
||||
<div class="settingsModsHeader">Optional Mods</div>
|
||||
<div class="settingsModsHeader">Opcionális Modok</div>
|
||||
<div id="settingsOptModsContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsDropinModsContainer">
|
||||
<div class="settingsModsHeader">Drop-in Mods</div>
|
||||
<button id="settingsDropinFileSystemButton">+ Add Mods <span id="settingsDropinRefreshNote">(F5 to Refresh)</span></button>
|
||||
<div class="settingsModsHeader">Bedobott Modok</div>
|
||||
<button id="settingsDropinFileSystemButton">+ Modok Hozzáadása <span id="settingsDropinRefreshNote">(F5 a frissítéshez)</span></button>
|
||||
<div id="settingsDropinModsContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsShadersContainer">
|
||||
<div class="settingsModsHeader">Shaderpacks</div>
|
||||
<div id="settingsShaderpackDesc">Enable or disable shaders. Please note, shaders will only run smoothly on powerful setups. You may add custom packs here.</div>
|
||||
<div class="settingsModsHeader">Shadercsomagok</div>
|
||||
<div id="settingsShaderpackDesc">Shaderek engedélyezése/letiltása. Fontos, a shaderek csak erős gépen fognak jól futni. Itt hozzáadhatsz egyéni csomagokat.</div>
|
||||
<div id="settingsShaderpackWrapper">
|
||||
<button id="settingsShaderpackButton"> + </button>
|
||||
<div class="settingsSelectContainer">
|
||||
<div class="settingsSelectSelected" id="settingsShadersSelected">Select Shaderpack</div>
|
||||
<div class="settingsSelectSelected" id="settingsShadersSelected">Shadercsomag Kiválasztása</div>
|
||||
<div class="settingsSelectOptions" id="settingsShadersOptions" hidden>
|
||||
|
||||
</div>
|
||||
@@ -169,8 +185,8 @@
|
||||
</div>
|
||||
<div id="settingsTabJava" class="settingsTab" style="display: none;">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">Java Settings</span>
|
||||
<span class="settingsTabHeaderDesc">Manage the Java configuration (advanced).</span>
|
||||
<span class="settingsTabHeaderText">Java Beállítások</span>
|
||||
<span class="settingsTabHeaderDesc">Java konfiguráció kezelése (haladó).</span>
|
||||
</div>
|
||||
<div class="settingsSelServContainer">
|
||||
<div class="settingsSelServContent">
|
||||
@@ -178,12 +194,12 @@
|
||||
</div>
|
||||
<div class="settingsSwitchServerContainer">
|
||||
<div class="settingsSwitchServerContent">
|
||||
<button class="settingsSwitchServerButton">Switch</button>
|
||||
<button class="settingsSwitchServerButton">Kiválaszt</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsMemoryContainer">
|
||||
<div id="settingsMemoryTitle">Memory</div>
|
||||
<div id="settingsMemoryTitle">Memória</div>
|
||||
<div id="settingsMemoryContent">
|
||||
<div id="settingsMemoryContentLeft">
|
||||
<div class="settingsMemoryContentItem">
|
||||
@@ -206,16 +222,16 @@
|
||||
<span id="settingsMinRAMLabel" class="settingsMemoryLabel">3G</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsMemoryDesc">The recommended minimum RAM is 3 gigabytes. Setting the minimum and maximum values to the same value may reduce lag.</div>
|
||||
<div id="settingsMemoryDesc">Minimum 3GB memória ajánlott. Ha a minimumot és maximumot ugyanarra állítod, csökkentheti az akadást.</div>
|
||||
</div>
|
||||
<div id="settingsMemoryContentRight">
|
||||
<div id="settingsMemoryStatus">
|
||||
<div class="settingsMemoryStatusContainer">
|
||||
<span class="settingsMemoryStatusTitle">Total</span>
|
||||
<span class="settingsMemoryStatusTitle">Összesen</span>
|
||||
<span id="settingsMemoryTotal" class="settingsMemoryStatusValue">16G</span>
|
||||
</div>
|
||||
<div class="settingsMemoryStatusContainer">
|
||||
<span class="settingsMemoryStatusTitle">Available</span>
|
||||
<span class="settingsMemoryStatusTitle">Szabad</span>
|
||||
<span id="settingsMemoryAvail" class="settingsMemoryStatusValue">7.3G</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -223,9 +239,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsFileSelContainer">
|
||||
<div class="settingsFileSelTitle">Java Executable</div>
|
||||
<div class="settingsFileSelTitle">Java Futtatókörnyezet</div>
|
||||
<div class="settingsFileSelContent">
|
||||
<div id="settingsJavaExecDetails">Selected: Java 8 Update 172 (x64)</div>
|
||||
<div id="settingsJavaExecDetails">Kiválasztva: Java 8 Update 172 (x64)</div>
|
||||
<div class="settingsFileSelActions">
|
||||
<div class="settingsFileSelIcon">
|
||||
<svg class="settingsFileSelSVG" x="0px" y="0px" viewBox="0 0 305.001 305.001">
|
||||
@@ -245,10 +261,10 @@
|
||||
<button class="settingsFileSelButton" id="settingsJavaExecSel" dialogTitle="Select Java Executable" dialogDirectory="false">Choose File</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsFileSelDesc">The Java executable is validated before game launch. <strong id="settingsJavaReqDesc">Requires Java 8 x64.</strong><br>The path should end with <strong>bin<%= process.platform === 'win32' ? '\\javaw.exe' : '/java' %></strong>.</div>
|
||||
<div class="settingsFileSelDesc">A Java ellenőrizve lesz játékindítás előtt. <strong id="settingsJavaReqDesc">Java 8 x64 szükséges.</strong><br>Az útvonalnak így kell végződnie: <strong>bin<%= process.platform === 'win32' ? '\\javaw.exe' : '/java' %></strong></div>
|
||||
</div>
|
||||
<div id="settingsJVMOptsContainer">
|
||||
<div id="settingsJVMOptsTitle">Additional JVM Options</div>
|
||||
<div id="settingsJVMOptsTitle">Egyéb JVM Beállítások</div>
|
||||
<div id="settingsJVMOptsContent">
|
||||
<div class="settingsFileSelIcon">
|
||||
<svg class="settingsFileSelSVG" x="0px" y="0px" viewBox="0 0 305.001 305.001">
|
||||
@@ -266,18 +282,18 @@
|
||||
</div>
|
||||
<input id="settingsJVMOptsVal" cValue="JVMOptions" serverDependent type="text">
|
||||
</div>
|
||||
<div id="settingsJVMOptsDesc">Options to be provided to the JVM at runtime. <em>-Xms</em> and <em>-Xmx</em> should not be included.<br><a href="https://docs.oracle.com/javase/8/docs/technotes/tools/<%= process.platform === 'win32' ? 'windows' : 'unix' %>/java.html" id="settingsJvmOptsLink">Available Options for Java 8</a>.</div>
|
||||
<div id="settingsJVMOptsDesc">Beállítások amit a JVM megkap. <em>-Xms</em> és <em>-Xmx</em> ne legyen itt.<br><a href="https://docs.oracle.com/javase/8/docs/technotes/tools/<%= process.platform === 'win32' ? 'windows' : 'unix' %>/java.html" id="settingsJvmOptsLink">Available Options for Java 8</a>.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsTabLauncher" class="settingsTab" style="display: none;">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">Launcher Settings</span>
|
||||
<span class="settingsTabHeaderDesc">Options related to the launcher itself.</span>
|
||||
<span class="settingsTabHeaderText">Launcher Beállítások</span>
|
||||
<span class="settingsTabHeaderDesc">Launcherre vonatkozó beállítások.</span>
|
||||
</div>
|
||||
<div class="settingsFieldContainer">
|
||||
<div class="settingsFieldLeft">
|
||||
<span class="settingsFieldTitle">Allow Pre-Release Updates.</span>
|
||||
<span class="settingsFieldDesc">Pre-Releases include new features which may have not been fully tested or integrated.<br>This will always be true if you are using a pre-release version.</span>
|
||||
<span class="settingsFieldTitle">Teszt verziók engedélyezése.</span>
|
||||
<span class="settingsFieldDesc">A teszt verziók olyan frissítéseket tartalmaznak, ami még nem lett teljesen tesztelve vagy kifejlesztve.<br>Ez mindig be lesz kapcsolva ha teszt verziót használsz.</span>
|
||||
</div>
|
||||
<div class="settingsFieldRight">
|
||||
<label class="toggleSwitch">
|
||||
@@ -288,7 +304,7 @@
|
||||
</div>
|
||||
<div class="settingsFileSelContainer">
|
||||
<div class="settingsFileSelContent">
|
||||
<div class="settingsFieldTitle" id="settingsDataDirTitle">Data Directory</div>
|
||||
<div class="settingsFieldTitle" id="settingsDataDirTitle">Játék Mappa</div>
|
||||
<div class="settingsFileSelActions">
|
||||
<div class="settingsFileSelIcon">
|
||||
<svg class="settingsFileSelSVG">
|
||||
@@ -300,90 +316,90 @@
|
||||
</svg>
|
||||
</div>
|
||||
<input class="settingsFileSelVal" type="text" value="null" cValue="DataDirectory" disabled>
|
||||
<button class="settingsFileSelButton" dialogTitle="Select Data Directory" dialogDirectory="true">Choose Folder</button>
|
||||
<button class="settingsFileSelButton" dialogTitle="Select Data Directory" dialogDirectory="true">Válassz Mappát</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsFileSelDesc">All game files and local Java installations will be stored in the data directory.<br>Screenshots and world saves are stored in the instance folder for the corresponding server configuration.</div>
|
||||
<div class="settingsFileSelDesc">Minden játékfájl és Java telepítés ide lesz tárolva.<br>A képernyőképek és a világmentések az instances mappában lesz tárolva a konfigurációnak megfelelő mappában.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsTabAbout" class="settingsTab" style="display: none;">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">About</span>
|
||||
<span class="settingsTabHeaderDesc">View information and release notes for the current version.</span>
|
||||
<span class="settingsTabHeaderText">Információk</span>
|
||||
<span class="settingsTabHeaderDesc">A jelenlegi verzióhoz tartozó információk és frissítések.</span>
|
||||
</div>
|
||||
<div id="settingsAboutCurrentContainer">
|
||||
<div id="settingsAboutCurrentContent">
|
||||
<div id="settingsAboutCurrentHeadline">
|
||||
<img id="settingsAboutLogo" src="./assets/images/SealCircle.png">
|
||||
<span id="settingsAboutTitle">Helios Launcher</span>
|
||||
<img id="settingsAboutLogo" src="./assets/images/ChronikaLogo.png">
|
||||
<span id="settingsAboutTitle">Chronika Launcher</span>
|
||||
</div>
|
||||
<div id="settingsAboutCurrentVersion">
|
||||
<div id="settingsAboutCurrentVersionCheck">✓</div>
|
||||
<div id="settingsAboutCurrentVersionDetails">
|
||||
<span id="settingsAboutCurrentVersionTitle">Stable Release</span>
|
||||
<span id="settingsAboutCurrentVersionTitle">Stabil Kiadás</span>
|
||||
<div id="settingsAboutCurrentVersionLine">
|
||||
<span id="settingsAboutCurrentVersionText">Version </span>
|
||||
<span id="settingsAboutCurrentVersionText">Verzió </span>
|
||||
<span id="settingsAboutCurrentVersionValue">0.0.1-alpha.12</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsAboutButtons">
|
||||
<a href="https://github.com/dscalZi/HeliosLauncher" id="settingsAboutSourceButton" class="settingsAboutButton">Source (GitHub)</a>
|
||||
<a href="https://github.com/ChronikaMC/Launcher" id="settingsAboutSourceButton" class="settingsAboutButton">Forráskód (GitHub)</a>
|
||||
<!-- The following must be included in third-party usage. -->
|
||||
<!-- <a href="https://github.com/dscalzi/HeliosLauncher" id="settingsAboutSourceButton" class="settingsAboutButton">Original Source</a> -->
|
||||
<a href="https://github.com/dscalZi/HeliosLauncher/issues" id="settingsAboutSupportButton" class="settingsAboutButton">Support</a>
|
||||
<a href="#" id="settingsAboutDevToolsButton" class="settingsAboutButton">DevTools Console</a>
|
||||
<a href="https://github.com/ChronikaMC/Launcher/issues" id="settingsAboutSupportButton" class="settingsAboutButton">Support</a>
|
||||
<a href="#" id="settingsAboutDevToolsButton" class="settingsAboutButton">Fejlsztői Konzol</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsChangelogContainer">
|
||||
<div class="settingsChangelogContent">
|
||||
<div class="settingsChangelogHeadline">
|
||||
<div class="settingsChangelogLabel">Release Notes</div>
|
||||
<div class="settingsChangelogTitle">Changelog</div>
|
||||
<div class="settingsChangelogLabel">Frissítések</div>
|
||||
<div class="settingsChangelogTitle">Változtatások</div>
|
||||
</div>
|
||||
<div class="settingsChangelogText">
|
||||
No Release Notes
|
||||
Nincsenek frissítésre vonatkozó információk
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsChangelogActions">
|
||||
<a class="settingsChangelogButton settingsAboutButton" href="#">View Release Notes on GitHub</a>
|
||||
<a class="settingsChangelogButton settingsAboutButton" href="#">Nézd meg a változtatásokat GitHubon</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsTabUpdate" class="settingsTab" style="display: none;">
|
||||
<div class="settingsTabHeader">
|
||||
<span class="settingsTabHeaderText">Launcher Updates</span>
|
||||
<span class="settingsTabHeaderDesc">Download, install, and review updates for the launcher.</span>
|
||||
<span class="settingsTabHeaderText">Launcher Frissítések</span>
|
||||
<span class="settingsTabHeaderDesc">Töltsd le, telepítsd, és ellenőrizd a launcher frissítéseit.</span>
|
||||
</div>
|
||||
<div id="settingsUpdateStatusContainer">
|
||||
<div id="settingsUpdateStatusContent">
|
||||
<div id="settingsUpdateStatusHeadline">
|
||||
<span id="settingsUpdateTitle">You Are Running the Latest Version</span>
|
||||
<span id="settingsUpdateTitle">A legfrisebb verziót használod</span>
|
||||
</div>
|
||||
<div id="settingsUpdateVersion">
|
||||
<div id="settingsUpdateVersionCheck">✓</div>
|
||||
<div id="settingsUpdateVersionDetails">
|
||||
<span id="settingsUpdateVersionTitle">Stable Release</span>
|
||||
<span id="settingsUpdateVersionTitle">Stabil Kiadás</span>
|
||||
<div id="settingsUpdateVersionLine">
|
||||
<span id="settingsUpdateVersionText">Version </span>
|
||||
<span id="settingsUpdateVersionText">Verzió </span>
|
||||
<span id="settingsUpdateVersionValue">0.0.1-alpha.18</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="settingsUpdateActionContainer">
|
||||
<button id="settingsUpdateActionButton">Check for Updates</button>
|
||||
<button id="settingsUpdateActionButton">Frissítések keresése</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settingsChangelogContainer">
|
||||
<div class="settingsChangelogContent">
|
||||
<div class="settingsChangelogHeadline">
|
||||
<div class="settingsChangelogLabel">What's New</div>
|
||||
<div class="settingsChangelogTitle">Update Release Notes</div>
|
||||
<div class="settingsChangelogLabel">Hírek</div>
|
||||
<div class="settingsChangelogTitle">Frissítések</div>
|
||||
</div>
|
||||
<div class="settingsChangelogText">
|
||||
No Release Notes
|
||||
Nincsenek információk a frissítésről
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div id="waitingContent">
|
||||
<div class="waitingSpinner"></div>
|
||||
<div id="waitingTextContainer">
|
||||
<h2>Waiting for Microsoft..</h2>
|
||||
<h2>Várakozás a Microsoftra..</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -4,14 +4,14 @@
|
||||
<div class="cloudBottom"></div>
|
||||
</div>-->
|
||||
<div id="welcomeContent">
|
||||
<img id="welcomeImageSeal" src="assets/images/SealCircle.png"/>
|
||||
<span id="welcomeHeader">WELCOME TO WESTEROSCRAFT</span>
|
||||
<span id="welcomeDescription">Our mission is to recreate the universe imagined by author George RR Martin in his fantasy series, A Song of Ice and Fire. Through the collaborative effort of thousands of community members, we have sought to create Westeros as accurately and precisely as possible within Minecraft. The world we are creating is yours to explore. Journey from Dorne to Castle Black, and if you aren’t afraid, beyond the Wall itself, but best not delay. As the words of House Stark ominously warn: Winter is Coming.</span>
|
||||
<img id="welcomeImageSeal" src="assets/images/ChronikaLogo.png"/>
|
||||
<span id="welcomeHeader">ÜDVÖZÖL A CHRONIKA</span>
|
||||
<span id="welcomeDescription">A célunk, hogy egy nagyszerű játékos közösséget hozzunk össze és emlékezetes játékélményt nyújtsunk az egyedi szerverünkkel. Ez a launcher is abból a célból készült, hogy biztosítsuk nektek az egyedi tartalmakat.</span>
|
||||
<br>
|
||||
<span id="welcomeDescCTA">You are just a few clicks away from Westeros.</span>
|
||||
<span id="welcomeDescCTA">Már csak egy pár kattintásra vagy a játéktól.</span>
|
||||
<button id="welcomeButton">
|
||||
<div id="welcomeButtonContent">
|
||||
CONTINUE
|
||||
TOVÁBB
|
||||
<svg id="welcomeSVG" viewBox="0 0 24.87 13.97">
|
||||
<defs>
|
||||
<style>.arrowLine{fill:none;stroke:#FFF;stroke-width:2px;transition: 0.25s ease;}</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
appId: 'helioslauncher'
|
||||
productName: 'Helios Launcher'
|
||||
appId: 'chronikalauncher'
|
||||
productName: 'Chronika Launcher'
|
||||
artifactName: '${productName}-setup-${version}.${ext}'
|
||||
|
||||
copyright: 'Copyright © 2018-2022 Daniel Scalzi'
|
||||
|
||||
8
index.js
8
index.js
@@ -121,12 +121,12 @@ ipcMain.on(MSFT_OPCODE.OPEN_LOGIN, (ipcEvent, ...arguments_) => {
|
||||
msftAuthViewSuccess = arguments_[0]
|
||||
msftAuthViewOnClose = arguments_[1]
|
||||
msftAuthWindow = new BrowserWindow({
|
||||
title: 'Microsoft Login',
|
||||
title: 'Microsoft Belépés',
|
||||
backgroundColor: '#222222',
|
||||
width: 520,
|
||||
height: 600,
|
||||
frame: true,
|
||||
icon: getPlatformIcon('SealCircle')
|
||||
icon: getPlatformIcon('ChronikaLogo')
|
||||
})
|
||||
|
||||
msftAuthWindow.on('closed', () => {
|
||||
@@ -179,7 +179,7 @@ ipcMain.on(MSFT_OPCODE.OPEN_LOGOUT, (ipcEvent, uuid, isLastAccount) => {
|
||||
width: 520,
|
||||
height: 600,
|
||||
frame: true,
|
||||
icon: getPlatformIcon('SealCircle')
|
||||
icon: getPlatformIcon('ChronikaLogo')
|
||||
})
|
||||
|
||||
msftLogoutWindow.on('closed', () => {
|
||||
@@ -225,7 +225,7 @@ function createWindow() {
|
||||
win = new BrowserWindow({
|
||||
width: 980,
|
||||
height: 552,
|
||||
icon: getPlatformIcon('SealCircle'),
|
||||
icon: getPlatformIcon('ChronikaLogo'),
|
||||
frame: false,
|
||||
webPreferences: {
|
||||
preload: path.join(__dirname, 'app', 'assets', 'js', 'preloader.js'),
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "helioslauncher",
|
||||
"name": "chronikalauncher",
|
||||
"version": "2.0.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "helioslauncher",
|
||||
"name": "chronikalauncher",
|
||||
"version": "2.0.4",
|
||||
"license": "UNLICENSED",
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "helioslauncher",
|
||||
"version": "2.0.4",
|
||||
"productName": "Helios Launcher",
|
||||
"name": "chronikalauncher",
|
||||
"version": "0.1.0",
|
||||
"productName": "Chronika Launcher",
|
||||
"description": "Modded Minecraft Launcher",
|
||||
"author": "Daniel Scalzi (https://github.com/dscalzi/)",
|
||||
"license": "UNLICENSED",
|
||||
|
||||
Reference in New Issue
Block a user