Add files via upload
This commit is contained in:
parent
f5d9c25c71
commit
b1edcf3cd6
130
.eslintrc.json
130
.eslintrc.json
@ -1,66 +1,66 @@
|
||||
{
|
||||
"env": {
|
||||
"es2017": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2019,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
4,
|
||||
{
|
||||
"SwitchCase": 1
|
||||
}
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"windows"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
"single"
|
||||
],
|
||||
"semi": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"no-var": [
|
||||
"error"
|
||||
],
|
||||
"no-console": [
|
||||
0
|
||||
],
|
||||
"no-control-regex": [
|
||||
0
|
||||
],
|
||||
"no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
"vars": "all",
|
||||
"args": "none",
|
||||
"ignoreRestSiblings": false,
|
||||
"argsIgnorePattern": "reject"
|
||||
}
|
||||
],
|
||||
"no-async-promise-executor": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": [ "app/assets/js/scripts/*.js" ],
|
||||
"rules": {
|
||||
"no-unused-vars": [
|
||||
0
|
||||
],
|
||||
"no-undef": [
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"env": {
|
||||
"es2017": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2019,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
4,
|
||||
{
|
||||
"SwitchCase": 1
|
||||
}
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"windows"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
"single"
|
||||
],
|
||||
"semi": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"no-var": [
|
||||
"error"
|
||||
],
|
||||
"no-console": [
|
||||
0
|
||||
],
|
||||
"no-control-regex": [
|
||||
0
|
||||
],
|
||||
"no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
"vars": "all",
|
||||
"args": "none",
|
||||
"ignoreRestSiblings": false,
|
||||
"argsIgnorePattern": "reject"
|
||||
}
|
||||
],
|
||||
"no-async-promise-executor": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": [ "app/assets/js/scripts/*.js" ],
|
||||
"rules": {
|
||||
"no-unused-vars": [
|
||||
0
|
||||
],
|
||||
"no-undef": [
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
88
.travis.yml
88
.travis.yml
@ -1,45 +1,45 @@
|
||||
matrix:
|
||||
include:
|
||||
- os: osx
|
||||
osx_image: xcode11.3
|
||||
language: node_js
|
||||
node_js: "12"
|
||||
env:
|
||||
- ELECTRON_CACHE=$HOME/.cache/electron
|
||||
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
|
||||
- ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
|
||||
- CSC_IDENTITY_AUTO_DISCOVERY=false
|
||||
|
||||
- os: linux
|
||||
services: docker
|
||||
language: generic
|
||||
node_js: "12"
|
||||
env:
|
||||
- ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
- $HOME/.cache/electron
|
||||
- $HOME/.cache/electron-builder
|
||||
|
||||
script:
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
||||
ENVS=`env | grep -iE '(DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS|APPVEYOR_|CSC_|_TOKEN|_KEY|AWS_|STRIP|BUILD_)' | sed -n '/^[^\t]/s/=.*//p' | sed '/^$/d' | sed 's/^/-e /g' | tr '\n' ' '`
|
||||
docker run $ENVS --rm \
|
||||
-v ${PWD}:/project \
|
||||
-v ~/.cache/electron:/root/.cache/electron \
|
||||
-v ~/.cache/electron-builder:/root/.cache/electron-builder \
|
||||
electronuserland/builder:wine \
|
||||
/bin/bash -c "node -v && npm ci && npm run cilinux"
|
||||
else
|
||||
npm run cidarwin
|
||||
fi
|
||||
|
||||
before_cache:
|
||||
- rm -rf $HOME/.cache/electron-builder/wine
|
||||
|
||||
branches:
|
||||
except:
|
||||
matrix:
|
||||
include:
|
||||
- os: osx
|
||||
osx_image: xcode11.3
|
||||
language: node_js
|
||||
node_js: "12"
|
||||
env:
|
||||
- ELECTRON_CACHE=$HOME/.cache/electron
|
||||
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
|
||||
- ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
|
||||
- CSC_IDENTITY_AUTO_DISCOVERY=false
|
||||
|
||||
- os: linux
|
||||
services: docker
|
||||
language: generic
|
||||
node_js: "12"
|
||||
env:
|
||||
- ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
- $HOME/.cache/electron
|
||||
- $HOME/.cache/electron-builder
|
||||
|
||||
script:
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
||||
ENVS=`env | grep -iE '(DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS|APPVEYOR_|CSC_|_TOKEN|_KEY|AWS_|STRIP|BUILD_)' | sed -n '/^[^\t]/s/=.*//p' | sed '/^$/d' | sed 's/^/-e /g' | tr '\n' ' '`
|
||||
docker run $ENVS --rm \
|
||||
-v ${PWD}:/project \
|
||||
-v ~/.cache/electron:/root/.cache/electron \
|
||||
-v ~/.cache/electron-builder:/root/.cache/electron-builder \
|
||||
electronuserland/builder:wine \
|
||||
/bin/bash -c "node -v && npm ci && npm run cilinux"
|
||||
else
|
||||
npm run cidarwin
|
||||
fi
|
||||
|
||||
before_cache:
|
||||
- rm -rf $HOME/.cache/electron-builder/wine
|
||||
|
||||
branches:
|
||||
except:
|
||||
- "/^v\\d+\\.\\d+\\.\\d+$/"
|
424
README.md
424
README.md
@ -1,212 +1,212 @@
|
||||
<p align="center"><img src="./app/assets/images/SealCircle.png" width="150px" height="150px" alt="aventium softworks"></p>
|
||||
|
||||
<h1 align="center">Helios Launcher</h1>
|
||||
|
||||
<em><h5 align="center">(formerly Electron Launcher)</h5></em>
|
||||
|
||||
[<p align="center"><img src="https://img.shields.io/travis/dscalzi/HeliosLauncher.svg?style=for-the-badge" alt="travis">](https://travis-ci.org/dscalzi/HeliosLauncher) [<img src="https://img.shields.io/github/downloads/dscalzi/HeliosLauncher/total.svg?style=for-the-badge" alt="downloads">](https://github.com/dscalzi/HeliosLauncher/releases) <img src="https://forthebadge.com/images/badges/winter-is-coming.svg" height="28px" alt="stark"></p>
|
||||
|
||||
<p align="center">Join modded servers without worrying about installing Java, Forge, or other mods. We'll handle that for you.</p>
|
||||
|
||||

|
||||

|
||||
|
||||
## Features
|
||||
|
||||
* 🔒 Full account management.
|
||||
* Add multiple accounts and easily switch between them.
|
||||
* Credentials are never stored and transmitted directly to Mojang.
|
||||
* 📂 Efficient asset management.
|
||||
* Receive client updates as soon as we release them.
|
||||
* Files are validated before launch. Corrupt or incorrect files will be redownloaded.
|
||||
* ☕ **Automatic Java validation.**
|
||||
* If you have an incompatible version of Java installed, we'll install the right one *for you*.
|
||||
* You do not need to have Java installed to run the launcher.
|
||||
* 📰 News feed natively built into the launcher.
|
||||
* ⚙️ Intuitive settings management, including a Java control panel.
|
||||
* Supports all of our servers.
|
||||
* Switch between server configurations with ease.
|
||||
* View the player count of the selected server.
|
||||
* Automatic updates. That's right, the launcher updates itself.
|
||||
* View the status of Mojang's services.
|
||||
|
||||
This is not an exhaustive list. Download and install the launcher to gauge all it can do!
|
||||
|
||||
#### Need Help? [Check the wiki.][wiki]
|
||||
|
||||
#### Like the project? Leave a ⭐ star on the repository!
|
||||
|
||||
## Downloads
|
||||
|
||||
You can download from [GitHub Releases](https://github.com/dscalzi/HeliosLauncher/releases)
|
||||
|
||||
#### Latest Release
|
||||
|
||||
[](https://github.com/dscalzi/HeliosLauncher/releases/latest)
|
||||
|
||||
#### Latest Pre-Release
|
||||
[](https://github.com/dscalzi/HeliosLauncher/releases)
|
||||
|
||||
**Supported Platforms**
|
||||
|
||||
If you download from the [Releases](https://github.com/dscalzi/HeliosLauncher/releases) tab, select the installer for your system.
|
||||
|
||||
| Platform | File |
|
||||
| -------- | ---- |
|
||||
| Windows x64 | `helioslauncher-setup-VERSION.exe` |
|
||||
| macOS | `helioslauncher-VERSION.dmg` |
|
||||
| Linux x64 | `helioslauncher-VERSION-x86_64.AppImage` |
|
||||
|
||||
## Console
|
||||
|
||||
To open the console, use the following keybind.
|
||||
|
||||
```console
|
||||
ctrl + shift + i
|
||||
```
|
||||
|
||||
Ensure that you have the console tab selected. Do not paste anything into the console unless you are 100% sure of what it will do. Pasting the wrong thing can expose sensitive information.
|
||||
|
||||
#### Export Output to a File
|
||||
|
||||
If you want to export the console output, simply right click anywhere on the console and click **Save as..**
|
||||
|
||||

|
||||
|
||||
|
||||
## Development
|
||||
|
||||
### Getting Started
|
||||
|
||||
**System Requirements**
|
||||
|
||||
* [Node.js][nodejs] v12
|
||||
|
||||
---
|
||||
|
||||
**Clone and Install Dependencies**
|
||||
|
||||
```console
|
||||
> git clone https://github.com/dscalzi/HeliosLauncher.git
|
||||
> cd HeliosLauncher
|
||||
> npm install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Launch Application**
|
||||
|
||||
```console
|
||||
> npm start
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Build Installers**
|
||||
|
||||
To build for your current platform.
|
||||
|
||||
```console
|
||||
> npm run dist
|
||||
```
|
||||
|
||||
Build for a specific platform.
|
||||
|
||||
| Platform | Command |
|
||||
| ----------- | -------------------- |
|
||||
| Windows x64 | `npm run dist:win` |
|
||||
| macOS | `npm run dist:mac` |
|
||||
| Linux x64 | `npm run dist:linux` |
|
||||
|
||||
Builds for macOS may not work on Windows/Linux and vice-versa.
|
||||
|
||||
---
|
||||
|
||||
### Visual Studio Code
|
||||
|
||||
All development of the launcher should be done using [Visual Studio Code][vscode].
|
||||
|
||||
Paste the following into `.vscode/launch.json`
|
||||
|
||||
```JSON
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug Main Process",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceRoot}",
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron",
|
||||
"windows": {
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
|
||||
},
|
||||
"args": ["."],
|
||||
"console": "integratedTerminal",
|
||||
"protocol": "inspector"
|
||||
},
|
||||
{
|
||||
"name": "Debug Renderer Process",
|
||||
"type": "chrome",
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron",
|
||||
"windows": {
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
|
||||
},
|
||||
"runtimeArgs": [
|
||||
"${workspaceRoot}/.",
|
||||
"--remote-debugging-port=9222"
|
||||
],
|
||||
"webRoot": "${workspaceRoot}"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
This adds two debug configurations.
|
||||
|
||||
#### Debug Main Process
|
||||
|
||||
This allows you to debug Electron's [main process][mainprocess]. You can debug scripts in the [renderer process][rendererprocess] by opening the DevTools Window.
|
||||
|
||||
#### Debug Renderer Process
|
||||
|
||||
This allows you to debug Electron's [renderer process][rendererprocess]. This requires you to install the [Debugger for Chrome][chromedebugger] extension.
|
||||
|
||||
Note that you **cannot** open the DevTools window while using this debug configuration. Chromium only allows one debugger, opening another will crash the program.
|
||||
|
||||
---
|
||||
|
||||
### Note on Third-Party Usage
|
||||
|
||||
You may use this software in your own project so long as the following conditions are met.
|
||||
|
||||
* Credit is expressly given to the original authors (Daniel Scalzi).
|
||||
* Include a link to the original source on the launcher's About page.
|
||||
* Credit the authors and provide a link to the original source in any publications or download pages.
|
||||
* The source code remain **public** as a fork of this repository.
|
||||
|
||||
We reserve the right to update these conditions at any time, please check back periodically.
|
||||
|
||||
---
|
||||
|
||||
## Resources
|
||||
|
||||
* [Wiki][wiki]
|
||||
|
||||
The best way to contact the developers is on Discord.
|
||||
|
||||
[][discord]
|
||||
|
||||
---
|
||||
|
||||
### See you ingame.
|
||||
|
||||
|
||||
[nodejs]: https://nodejs.org/en/ 'Node.js'
|
||||
[vscode]: https://code.visualstudio.com/ 'Visual Studio Code'
|
||||
[mainprocess]: https://electronjs.org/docs/tutorial/application-architecture#main-and-renderer-processes 'Main Process'
|
||||
[rendererprocess]: https://electronjs.org/docs/tutorial/application-architecture#main-and-renderer-processes 'Renderer Process'
|
||||
[chromedebugger]: https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome 'Debugger for Chrome'
|
||||
[discord]: https://discord.gg/zNWUXdt 'Discord'
|
||||
[wiki]: https://github.com/dscalzi/HeliosLauncher/wiki 'wiki'
|
||||
<p align="center"><img src="./app/assets/images/SealCircle.png" width="150px" height="150px" alt="aventium softworks"></p>
|
||||
|
||||
<h1 align="center">Helios Launcher</h1>
|
||||
|
||||
<em><h5 align="center">(formerly Electron Launcher)</h5></em>
|
||||
|
||||
[<p align="center"><img src="https://img.shields.io/travis/dscalzi/HeliosLauncher.svg?style=for-the-badge" alt="travis">](https://travis-ci.org/dscalzi/HeliosLauncher) [<img src="https://img.shields.io/github/downloads/dscalzi/HeliosLauncher/total.svg?style=for-the-badge" alt="downloads">](https://github.com/dscalzi/HeliosLauncher/releases) <img src="https://forthebadge.com/images/badges/winter-is-coming.svg" height="28px" alt="stark"></p>
|
||||
|
||||
<p align="center">Join modded servers without worrying about installing Java, Forge, or other mods. We'll handle that for you.</p>
|
||||
|
||||

|
||||

|
||||
|
||||
## Features
|
||||
|
||||
* 🔒 Full account management.
|
||||
* Add multiple accounts and easily switch between them.
|
||||
* Credentials are never stored and transmitted directly to Mojang.
|
||||
* 📂 Efficient asset management.
|
||||
* Receive client updates as soon as we release them.
|
||||
* Files are validated before launch. Corrupt or incorrect files will be redownloaded.
|
||||
* ☕ **Automatic Java validation.**
|
||||
* If you have an incompatible version of Java installed, we'll install the right one *for you*.
|
||||
* You do not need to have Java installed to run the launcher.
|
||||
* 📰 News feed natively built into the launcher.
|
||||
* ⚙️ Intuitive settings management, including a Java control panel.
|
||||
* Supports all of our servers.
|
||||
* Switch between server configurations with ease.
|
||||
* View the player count of the selected server.
|
||||
* Automatic updates. That's right, the launcher updates itself.
|
||||
* View the status of Mojang's services.
|
||||
|
||||
This is not an exhaustive list. Download and install the launcher to gauge all it can do!
|
||||
|
||||
#### Need Help? [Check the wiki.][wiki]
|
||||
|
||||
#### Like the project? Leave a ⭐ star on the repository!
|
||||
|
||||
## Downloads
|
||||
|
||||
You can download from [GitHub Releases](https://github.com/dscalzi/HeliosLauncher/releases)
|
||||
|
||||
#### Latest Release
|
||||
|
||||
[](https://github.com/dscalzi/HeliosLauncher/releases/latest)
|
||||
|
||||
#### Latest Pre-Release
|
||||
[](https://github.com/dscalzi/HeliosLauncher/releases)
|
||||
|
||||
**Supported Platforms**
|
||||
|
||||
If you download from the [Releases](https://github.com/dscalzi/HeliosLauncher/releases) tab, select the installer for your system.
|
||||
|
||||
| Platform | File |
|
||||
| -------- | ---- |
|
||||
| Windows x64 | `helioslauncher-setup-VERSION.exe` |
|
||||
| macOS | `helioslauncher-VERSION.dmg` |
|
||||
| Linux x64 | `helioslauncher-VERSION-x86_64.AppImage` |
|
||||
|
||||
## Console
|
||||
|
||||
To open the console, use the following keybind.
|
||||
|
||||
```console
|
||||
ctrl + shift + i
|
||||
```
|
||||
|
||||
Ensure that you have the console tab selected. Do not paste anything into the console unless you are 100% sure of what it will do. Pasting the wrong thing can expose sensitive information.
|
||||
|
||||
#### Export Output to a File
|
||||
|
||||
If you want to export the console output, simply right click anywhere on the console and click **Save as..**
|
||||
|
||||

|
||||
|
||||
|
||||
## Development
|
||||
|
||||
### Getting Started
|
||||
|
||||
**System Requirements**
|
||||
|
||||
* [Node.js][nodejs] v12
|
||||
|
||||
---
|
||||
|
||||
**Clone and Install Dependencies**
|
||||
|
||||
```console
|
||||
> git clone https://github.com/dscalzi/HeliosLauncher.git
|
||||
> cd HeliosLauncher
|
||||
> npm install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Launch Application**
|
||||
|
||||
```console
|
||||
> npm start
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Build Installers**
|
||||
|
||||
To build for your current platform.
|
||||
|
||||
```console
|
||||
> npm run dist
|
||||
```
|
||||
|
||||
Build for a specific platform.
|
||||
|
||||
| Platform | Command |
|
||||
| ----------- | -------------------- |
|
||||
| Windows x64 | `npm run dist:win` |
|
||||
| macOS | `npm run dist:mac` |
|
||||
| Linux x64 | `npm run dist:linux` |
|
||||
|
||||
Builds for macOS may not work on Windows/Linux and vice-versa.
|
||||
|
||||
---
|
||||
|
||||
### Visual Studio Code
|
||||
|
||||
All development of the launcher should be done using [Visual Studio Code][vscode].
|
||||
|
||||
Paste the following into `.vscode/launch.json`
|
||||
|
||||
```JSON
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug Main Process",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceRoot}",
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron",
|
||||
"windows": {
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
|
||||
},
|
||||
"args": ["."],
|
||||
"console": "integratedTerminal",
|
||||
"protocol": "inspector"
|
||||
},
|
||||
{
|
||||
"name": "Debug Renderer Process",
|
||||
"type": "chrome",
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron",
|
||||
"windows": {
|
||||
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
|
||||
},
|
||||
"runtimeArgs": [
|
||||
"${workspaceRoot}/.",
|
||||
"--remote-debugging-port=9222"
|
||||
],
|
||||
"webRoot": "${workspaceRoot}"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
This adds two debug configurations.
|
||||
|
||||
#### Debug Main Process
|
||||
|
||||
This allows you to debug Electron's [main process][mainprocess]. You can debug scripts in the [renderer process][rendererprocess] by opening the DevTools Window.
|
||||
|
||||
#### Debug Renderer Process
|
||||
|
||||
This allows you to debug Electron's [renderer process][rendererprocess]. This requires you to install the [Debugger for Chrome][chromedebugger] extension.
|
||||
|
||||
Note that you **cannot** open the DevTools window while using this debug configuration. Chromium only allows one debugger, opening another will crash the program.
|
||||
|
||||
---
|
||||
|
||||
### Note on Third-Party Usage
|
||||
|
||||
You may use this software in your own project so long as the following conditions are met.
|
||||
|
||||
* Credit is expressly given to the original authors (Daniel Scalzi).
|
||||
* Include a link to the original source on the launcher's About page.
|
||||
* Credit the authors and provide a link to the original source in any publications or download pages.
|
||||
* The source code remain **public** as a fork of this repository.
|
||||
|
||||
We reserve the right to update these conditions at any time, please check back periodically.
|
||||
|
||||
---
|
||||
|
||||
## Resources
|
||||
|
||||
* [Wiki][wiki]
|
||||
|
||||
The best way to contact the developers is on Discord.
|
||||
|
||||
[][discord]
|
||||
|
||||
---
|
||||
|
||||
### See you ingame.
|
||||
|
||||
|
||||
[nodejs]: https://nodejs.org/en/ 'Node.js'
|
||||
[vscode]: https://code.visualstudio.com/ 'Visual Studio Code'
|
||||
[mainprocess]: https://electronjs.org/docs/tutorial/application-architecture#main-and-renderer-processes 'Main Process'
|
||||
[rendererprocess]: https://electronjs.org/docs/tutorial/application-architecture#main-and-renderer-processes 'Renderer Process'
|
||||
[chromedebugger]: https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome 'Debugger for Chrome'
|
||||
[discord]: https://discord.gg/zNWUXdt 'Discord'
|
||||
[wiki]: https://github.com/dscalzi/HeliosLauncher/wiki 'wiki'
|
||||
|
134
build.js
134
build.js
@ -1,68 +1,68 @@
|
||||
const builder = require('electron-builder')
|
||||
const Platform = builder.Platform
|
||||
|
||||
function getCurrentPlatform(){
|
||||
switch(process.platform){
|
||||
case 'win32':
|
||||
return Platform.WINDOWS
|
||||
case 'darwin':
|
||||
return Platform.MAC
|
||||
case 'linux':
|
||||
return Platform.linux
|
||||
default:
|
||||
console.error('Cannot resolve current platform!')
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
builder.build({
|
||||
targets: (process.argv[2] != null && Platform[process.argv[2]] != null ? Platform[process.argv[2]] : getCurrentPlatform()).createTarget(),
|
||||
config: {
|
||||
appId: 'helioslauncher',
|
||||
productName: 'Helios Launcher',
|
||||
artifactName: '${productName}-setup-${version}.${ext}',
|
||||
copyright: 'Copyright © 2018-2020 Daniel Scalzi',
|
||||
directories: {
|
||||
buildResources: 'build',
|
||||
output: 'dist'
|
||||
},
|
||||
win: {
|
||||
target: [
|
||||
{
|
||||
target: 'nsis',
|
||||
arch: 'x64'
|
||||
}
|
||||
]
|
||||
},
|
||||
nsis: {
|
||||
oneClick: false,
|
||||
perMachine: false,
|
||||
allowElevation: true,
|
||||
allowToChangeInstallationDirectory: true
|
||||
},
|
||||
mac: {
|
||||
target: 'dmg',
|
||||
category: 'public.app-category.games'
|
||||
},
|
||||
linux: {
|
||||
target: 'AppImage',
|
||||
maintainer: 'Daniel Scalzi',
|
||||
vendor: 'Daniel Scalzi',
|
||||
synopsis: 'Modded Minecraft Launcher',
|
||||
description: 'Custom launcher which allows users to join modded servers. All mods, configurations, and updates are handled automatically.',
|
||||
category: 'Game'
|
||||
},
|
||||
compression: 'maximum',
|
||||
files: [
|
||||
'!{dist,.gitignore,.vscode,docs,dev-app-update.yml,.travis.yml,.nvmrc,.eslintrc.json,build.js}'
|
||||
],
|
||||
extraResources: [
|
||||
'libraries'
|
||||
],
|
||||
asar: true
|
||||
}
|
||||
}).then(() => {
|
||||
console.log('Build complete!')
|
||||
}).catch(err => {
|
||||
console.error('Error during build!', err)
|
||||
const builder = require('electron-builder')
|
||||
const Platform = builder.Platform
|
||||
|
||||
function getCurrentPlatform(){
|
||||
switch(process.platform){
|
||||
case 'win32':
|
||||
return Platform.WINDOWS
|
||||
case 'darwin':
|
||||
return Platform.MAC
|
||||
case 'linux':
|
||||
return Platform.linux
|
||||
default:
|
||||
console.error('Cannot resolve current platform!')
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
builder.build({
|
||||
targets: (process.argv[2] != null && Platform[process.argv[2]] != null ? Platform[process.argv[2]] : getCurrentPlatform()).createTarget(),
|
||||
config: {
|
||||
appId: 'nemesismclauncher',
|
||||
productName: 'NemesisMC Launcher',
|
||||
artifactName: '${productName}-setup-${version}.${ext}',
|
||||
copyright: 'Copyright © 2020 NemesisMC',
|
||||
directories: {
|
||||
buildResources: 'build',
|
||||
output: 'dist'
|
||||
},
|
||||
win: {
|
||||
target: [
|
||||
{
|
||||
target: 'nsis',
|
||||
arch: 'x64'
|
||||
}
|
||||
]
|
||||
},
|
||||
nsis: {
|
||||
oneClick: false,
|
||||
perMachine: false,
|
||||
allowElevation: true,
|
||||
allowToChangeInstallationDirectory: true
|
||||
},
|
||||
mac: {
|
||||
target: 'dmg',
|
||||
category: 'public.app-category.games'
|
||||
},
|
||||
linux: {
|
||||
target: 'AppImage',
|
||||
maintainer: 'MastermDEV, Daniel Scalzi',
|
||||
vendor: 'NemesisMC',
|
||||
synopsis: 'Offical NemesisMC Launcher',
|
||||
description: 'Custom launcher which allows users to join NemesisMC.',
|
||||
category: 'Game'
|
||||
},
|
||||
compression: 'maximum',
|
||||
files: [
|
||||
'!{dist,.gitignore,.vscode,docs,dev-app-update.yml,.travis.yml,.nvmrc,.eslintrc.json,build.js}'
|
||||
],
|
||||
extraResources: [
|
||||
'libraries'
|
||||
],
|
||||
asar: true
|
||||
}
|
||||
}).then(() => {
|
||||
console.log('Build complete!')
|
||||
}).catch(err => {
|
||||
console.error('Error during build!', err)
|
||||
})
|
@ -1,3 +1,3 @@
|
||||
owner: dscalzi
|
||||
repo: HeliosLauncher
|
||||
provider: github
|
||||
owner: MastermDEV
|
||||
repo: NemesisMCLauncher
|
||||
provider: github
|
||||
|
454
index.js
454
index.js
@ -1,228 +1,228 @@
|
||||
// Requirements
|
||||
const { app, BrowserWindow, ipcMain, Menu } = require('electron')
|
||||
const autoUpdater = require('electron-updater').autoUpdater
|
||||
const ejse = require('ejs-electron')
|
||||
const fs = require('fs')
|
||||
const isDev = require('./app/assets/js/isdev')
|
||||
const path = require('path')
|
||||
const semver = require('semver')
|
||||
const url = require('url')
|
||||
|
||||
// Setup auto updater.
|
||||
function initAutoUpdater(event, data) {
|
||||
|
||||
if(data){
|
||||
autoUpdater.allowPrerelease = true
|
||||
} else {
|
||||
// Defaults to true if application version contains prerelease components (e.g. 0.12.1-alpha.1)
|
||||
// autoUpdater.allowPrerelease = true
|
||||
}
|
||||
|
||||
if(isDev){
|
||||
autoUpdater.autoInstallOnAppQuit = false
|
||||
autoUpdater.updateConfigPath = path.join(__dirname, 'dev-app-update.yml')
|
||||
}
|
||||
if(process.platform === 'darwin'){
|
||||
autoUpdater.autoDownload = false
|
||||
}
|
||||
autoUpdater.on('update-available', (info) => {
|
||||
event.sender.send('autoUpdateNotification', 'update-available', info)
|
||||
})
|
||||
autoUpdater.on('update-downloaded', (info) => {
|
||||
event.sender.send('autoUpdateNotification', 'update-downloaded', info)
|
||||
})
|
||||
autoUpdater.on('update-not-available', (info) => {
|
||||
event.sender.send('autoUpdateNotification', 'update-not-available', info)
|
||||
})
|
||||
autoUpdater.on('checking-for-update', () => {
|
||||
event.sender.send('autoUpdateNotification', 'checking-for-update')
|
||||
})
|
||||
autoUpdater.on('error', (err) => {
|
||||
event.sender.send('autoUpdateNotification', 'realerror', err)
|
||||
})
|
||||
}
|
||||
|
||||
// Open channel to listen for update actions.
|
||||
ipcMain.on('autoUpdateAction', (event, arg, data) => {
|
||||
switch(arg){
|
||||
case 'initAutoUpdater':
|
||||
console.log('Initializing auto updater.')
|
||||
initAutoUpdater(event, data)
|
||||
event.sender.send('autoUpdateNotification', 'ready')
|
||||
break
|
||||
case 'checkForUpdate':
|
||||
autoUpdater.checkForUpdates()
|
||||
.catch(err => {
|
||||
event.sender.send('autoUpdateNotification', 'realerror', err)
|
||||
})
|
||||
break
|
||||
case 'allowPrereleaseChange':
|
||||
if(!data){
|
||||
const preRelComp = semver.prerelease(app.getVersion())
|
||||
if(preRelComp != null && preRelComp.length > 0){
|
||||
autoUpdater.allowPrerelease = true
|
||||
} else {
|
||||
autoUpdater.allowPrerelease = data
|
||||
}
|
||||
} else {
|
||||
autoUpdater.allowPrerelease = data
|
||||
}
|
||||
break
|
||||
case 'installUpdateNow':
|
||||
autoUpdater.quitAndInstall()
|
||||
break
|
||||
default:
|
||||
console.log('Unknown argument', arg)
|
||||
break
|
||||
}
|
||||
})
|
||||
// Redirect distribution index event from preloader to renderer.
|
||||
ipcMain.on('distributionIndexDone', (event, res) => {
|
||||
event.sender.send('distributionIndexDone', res)
|
||||
})
|
||||
|
||||
// Disable hardware acceleration.
|
||||
// https://electronjs.org/docs/tutorial/offscreen-rendering
|
||||
app.disableHardwareAcceleration()
|
||||
|
||||
// https://github.com/electron/electron/issues/18397
|
||||
app.allowRendererProcessReuse = true
|
||||
|
||||
// Keep a global reference of the window object, if you don't, the window will
|
||||
// be closed automatically when the JavaScript object is garbage collected.
|
||||
let win
|
||||
|
||||
function createWindow() {
|
||||
|
||||
win = new BrowserWindow({
|
||||
width: 980,
|
||||
height: 552,
|
||||
icon: getPlatformIcon('SealCircle'),
|
||||
frame: false,
|
||||
webPreferences: {
|
||||
preload: path.join(__dirname, 'app', 'assets', 'js', 'preloader.js'),
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false
|
||||
},
|
||||
backgroundColor: '#171614'
|
||||
})
|
||||
|
||||
ejse.data('bkid', Math.floor((Math.random() * fs.readdirSync(path.join(__dirname, 'app', 'assets', 'images', 'backgrounds')).length)))
|
||||
|
||||
win.loadURL(url.format({
|
||||
pathname: path.join(__dirname, 'app', 'app.ejs'),
|
||||
protocol: 'file:',
|
||||
slashes: true
|
||||
}))
|
||||
|
||||
/*win.once('ready-to-show', () => {
|
||||
win.show()
|
||||
})*/
|
||||
|
||||
win.removeMenu()
|
||||
|
||||
win.resizable = true
|
||||
|
||||
win.on('closed', () => {
|
||||
win = null
|
||||
})
|
||||
}
|
||||
|
||||
function createMenu() {
|
||||
|
||||
if(process.platform === 'darwin') {
|
||||
|
||||
// Extend default included application menu to continue support for quit keyboard shortcut
|
||||
let applicationSubMenu = {
|
||||
label: 'Application',
|
||||
submenu: [{
|
||||
label: 'About Application',
|
||||
selector: 'orderFrontStandardAboutPanel:'
|
||||
}, {
|
||||
type: 'separator'
|
||||
}, {
|
||||
label: 'Quit',
|
||||
accelerator: 'Command+Q',
|
||||
click: () => {
|
||||
app.quit()
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
||||
// New edit menu adds support for text-editing keyboard shortcuts
|
||||
let editSubMenu = {
|
||||
label: 'Edit',
|
||||
submenu: [{
|
||||
label: 'Undo',
|
||||
accelerator: 'CmdOrCtrl+Z',
|
||||
selector: 'undo:'
|
||||
}, {
|
||||
label: 'Redo',
|
||||
accelerator: 'Shift+CmdOrCtrl+Z',
|
||||
selector: 'redo:'
|
||||
}, {
|
||||
type: 'separator'
|
||||
}, {
|
||||
label: 'Cut',
|
||||
accelerator: 'CmdOrCtrl+X',
|
||||
selector: 'cut:'
|
||||
}, {
|
||||
label: 'Copy',
|
||||
accelerator: 'CmdOrCtrl+C',
|
||||
selector: 'copy:'
|
||||
}, {
|
||||
label: 'Paste',
|
||||
accelerator: 'CmdOrCtrl+V',
|
||||
selector: 'paste:'
|
||||
}, {
|
||||
label: 'Select All',
|
||||
accelerator: 'CmdOrCtrl+A',
|
||||
selector: 'selectAll:'
|
||||
}]
|
||||
}
|
||||
|
||||
// Bundle submenus into a single template and build a menu object with it
|
||||
let menuTemplate = [applicationSubMenu, editSubMenu]
|
||||
let menuObject = Menu.buildFromTemplate(menuTemplate)
|
||||
|
||||
// Assign it to the application
|
||||
Menu.setApplicationMenu(menuObject)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function getPlatformIcon(filename){
|
||||
let ext
|
||||
switch(process.platform) {
|
||||
case 'win32':
|
||||
ext = 'ico'
|
||||
break
|
||||
case 'darwin':
|
||||
case 'linux':
|
||||
default:
|
||||
ext = 'png'
|
||||
break
|
||||
}
|
||||
|
||||
return path.join(__dirname, 'app', 'assets', 'images', `${filename}.${ext}`)
|
||||
}
|
||||
|
||||
app.on('ready', createWindow)
|
||||
app.on('ready', createMenu)
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
// On macOS it is common for applications and their menu bar
|
||||
// to stay active until the user quits explicitly with Cmd + Q
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit()
|
||||
}
|
||||
})
|
||||
|
||||
app.on('activate', () => {
|
||||
// On macOS it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
if (win === null) {
|
||||
createWindow()
|
||||
}
|
||||
// Requirements
|
||||
const { app, BrowserWindow, ipcMain, Menu } = require('electron')
|
||||
const autoUpdater = require('electron-updater').autoUpdater
|
||||
const ejse = require('ejs-electron')
|
||||
const fs = require('fs')
|
||||
const isDev = require('./app/assets/js/isdev')
|
||||
const path = require('path')
|
||||
const semver = require('semver')
|
||||
const url = require('url')
|
||||
|
||||
// Setup auto updater.
|
||||
function initAutoUpdater(event, data) {
|
||||
|
||||
if(data){
|
||||
autoUpdater.allowPrerelease = true
|
||||
} else {
|
||||
// Defaults to true if application version contains prerelease components (e.g. 0.12.1-alpha.1)
|
||||
// autoUpdater.allowPrerelease = true
|
||||
}
|
||||
|
||||
if(isDev){
|
||||
autoUpdater.autoInstallOnAppQuit = false
|
||||
autoUpdater.updateConfigPath = path.join(__dirname, 'dev-app-update.yml')
|
||||
}
|
||||
if(process.platform === 'darwin'){
|
||||
autoUpdater.autoDownload = false
|
||||
}
|
||||
autoUpdater.on('update-available', (info) => {
|
||||
event.sender.send('autoUpdateNotification', 'update-available', info)
|
||||
})
|
||||
autoUpdater.on('update-downloaded', (info) => {
|
||||
event.sender.send('autoUpdateNotification', 'update-downloaded', info)
|
||||
})
|
||||
autoUpdater.on('update-not-available', (info) => {
|
||||
event.sender.send('autoUpdateNotification', 'update-not-available', info)
|
||||
})
|
||||
autoUpdater.on('checking-for-update', () => {
|
||||
event.sender.send('autoUpdateNotification', 'checking-for-update')
|
||||
})
|
||||
autoUpdater.on('error', (err) => {
|
||||
event.sender.send('autoUpdateNotification', 'realerror', err)
|
||||
})
|
||||
}
|
||||
|
||||
// Open channel to listen for update actions.
|
||||
ipcMain.on('autoUpdateAction', (event, arg, data) => {
|
||||
switch(arg){
|
||||
case 'initAutoUpdater':
|
||||
console.log('Initializing auto updater.')
|
||||
initAutoUpdater(event, data)
|
||||
event.sender.send('autoUpdateNotification', 'ready')
|
||||
break
|
||||
case 'checkForUpdate':
|
||||
autoUpdater.checkForUpdates()
|
||||
.catch(err => {
|
||||
event.sender.send('autoUpdateNotification', 'realerror', err)
|
||||
})
|
||||
break
|
||||
case 'allowPrereleaseChange':
|
||||
if(!data){
|
||||
const preRelComp = semver.prerelease(app.getVersion())
|
||||
if(preRelComp != null && preRelComp.length > 0){
|
||||
autoUpdater.allowPrerelease = true
|
||||
} else {
|
||||
autoUpdater.allowPrerelease = data
|
||||
}
|
||||
} else {
|
||||
autoUpdater.allowPrerelease = data
|
||||
}
|
||||
break
|
||||
case 'installUpdateNow':
|
||||
autoUpdater.quitAndInstall()
|
||||
break
|
||||
default:
|
||||
console.log('Unknown argument', arg)
|
||||
break
|
||||
}
|
||||
})
|
||||
// Redirect distribution index event from preloader to renderer.
|
||||
ipcMain.on('distributionIndexDone', (event, res) => {
|
||||
event.sender.send('distributionIndexDone', res)
|
||||
})
|
||||
|
||||
// Disable hardware acceleration.
|
||||
// https://electronjs.org/docs/tutorial/offscreen-rendering
|
||||
app.disableHardwareAcceleration()
|
||||
|
||||
// https://github.com/electron/electron/issues/18397
|
||||
app.allowRendererProcessReuse = true
|
||||
|
||||
// Keep a global reference of the window object, if you don't, the window will
|
||||
// be closed automatically when the JavaScript object is garbage collected.
|
||||
let win
|
||||
|
||||
function createWindow() {
|
||||
|
||||
win = new BrowserWindow({
|
||||
width: 980,
|
||||
height: 552,
|
||||
icon: getPlatformIcon('SealCircle'),
|
||||
frame: false,
|
||||
webPreferences: {
|
||||
preload: path.join(__dirname, 'app', 'assets', 'js', 'preloader.js'),
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false
|
||||
},
|
||||
backgroundColor: '#171614'
|
||||
})
|
||||
|
||||
ejse.data('bkid', Math.floor((Math.random() * fs.readdirSync(path.join(__dirname, 'app', 'assets', 'images', 'backgrounds')).length)))
|
||||
|
||||
win.loadURL(url.format({
|
||||
pathname: path.join(__dirname, 'app', 'app.ejs'),
|
||||
protocol: 'file:',
|
||||
slashes: true
|
||||
}))
|
||||
|
||||
/*win.once('ready-to-show', () => {
|
||||
win.show()
|
||||
})*/
|
||||
|
||||
win.removeMenu()
|
||||
|
||||
win.resizable = true
|
||||
|
||||
win.on('closed', () => {
|
||||
win = null
|
||||
})
|
||||
}
|
||||
|
||||
function createMenu() {
|
||||
|
||||
if(process.platform === 'darwin') {
|
||||
|
||||
// Extend default included application menu to continue support for quit keyboard shortcut
|
||||
let applicationSubMenu = {
|
||||
label: 'Application',
|
||||
submenu: [{
|
||||
label: 'About Application',
|
||||
selector: 'orderFrontStandardAboutPanel:'
|
||||
}, {
|
||||
type: 'separator'
|
||||
}, {
|
||||
label: 'Quit',
|
||||
accelerator: 'Command+Q',
|
||||
click: () => {
|
||||
app.quit()
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
||||
// New edit menu adds support for text-editing keyboard shortcuts
|
||||
let editSubMenu = {
|
||||
label: 'Edit',
|
||||
submenu: [{
|
||||
label: 'Undo',
|
||||
accelerator: 'CmdOrCtrl+Z',
|
||||
selector: 'undo:'
|
||||
}, {
|
||||
label: 'Redo',
|
||||
accelerator: 'Shift+CmdOrCtrl+Z',
|
||||
selector: 'redo:'
|
||||
}, {
|
||||
type: 'separator'
|
||||
}, {
|
||||
label: 'Cut',
|
||||
accelerator: 'CmdOrCtrl+X',
|
||||
selector: 'cut:'
|
||||
}, {
|
||||
label: 'Copy',
|
||||
accelerator: 'CmdOrCtrl+C',
|
||||
selector: 'copy:'
|
||||
}, {
|
||||
label: 'Paste',
|
||||
accelerator: 'CmdOrCtrl+V',
|
||||
selector: 'paste:'
|
||||
}, {
|
||||
label: 'Select All',
|
||||
accelerator: 'CmdOrCtrl+A',
|
||||
selector: 'selectAll:'
|
||||
}]
|
||||
}
|
||||
|
||||
// Bundle submenus into a single template and build a menu object with it
|
||||
let menuTemplate = [applicationSubMenu, editSubMenu]
|
||||
let menuObject = Menu.buildFromTemplate(menuTemplate)
|
||||
|
||||
// Assign it to the application
|
||||
Menu.setApplicationMenu(menuObject)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function getPlatformIcon(filename){
|
||||
let ext
|
||||
switch(process.platform) {
|
||||
case 'win32':
|
||||
ext = 'ico'
|
||||
break
|
||||
case 'darwin':
|
||||
case 'linux':
|
||||
default:
|
||||
ext = 'png'
|
||||
break
|
||||
}
|
||||
|
||||
return path.join(__dirname, 'app', 'assets', 'images', `${filename}.${ext}`)
|
||||
}
|
||||
|
||||
app.on('ready', createWindow)
|
||||
app.on('ready', createMenu)
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
// On macOS it is common for applications and their menu bar
|
||||
// to stay active until the user quits explicitly with Cmd + Q
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit()
|
||||
}
|
||||
})
|
||||
|
||||
app.on('activate', () => {
|
||||
// On macOS it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
if (win === null) {
|
||||
createWindow()
|
||||
}
|
||||
})
|
6970
package-lock.json
generated
6970
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "helioslauncher",
|
||||
"version": "1.7.0",
|
||||
"productName": "Helios Launcher",
|
||||
"description": "Modded Minecraft Launcher",
|
||||
"author": "Daniel Scalzi (https://github.com/dscalzi/)",
|
||||
"name": "nemesismclauncher",
|
||||
"version": "0.0.1",
|
||||
"productName": "NemesisMC Launcher",
|
||||
"description": "NemesisMC Launcher",
|
||||
"author": "MastermDEV (https://github.com/MastermDEV/), Daniel Scalzi (https://github.com/dscalzi/)",
|
||||
"license": "UNLICENSED",
|
||||
"homepage": "https://github.com/dscalzi/HeliosLauncher",
|
||||
"homepage": "https://nemesismc.net",
|
||||
"bugs": {
|
||||
"url": "https://github.com/dscalzi/HeliosLauncher/issues"
|
||||
"url": "https://github.com/MastermDEV/NemesisMC-Launcher/issues"
|
||||
},
|
||||
"private": true,
|
||||
"main": "index.js",
|
||||
@ -47,6 +47,6 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/dscalzi/HeliosLauncher.git"
|
||||
"url": "git+https://github.com/MastermDEV/NemesisMC-Launcher.git"
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user