Giter Club home page Giter Club logo

gdlauncher's Introduction

GDLauncher

Maintenance PRs Welcome GitHub issues GitHub pull requests Discord GitHub code size in bytes Github All Releases

๐Ÿฆบ Support this project

Buy Me a Coffee at ko-fi.com

๐ŸŽ‰ Join our community

GDLauncher Discord Server

Table of Contents (click to expand)

GDLauncher

๐ŸŽฎ What is GDLauncher

GDLauncher is a custom open-source Minecraft launcher written from the ground up in electron/react. Its main goal is to make it easy and enjoyable to manage different Minecraft versions and install forge/fabric, bringing the playing and modding experience to the next level!

โšก๏ธ Comparison with Twitch Launcher

This is an example of the time that GDLauncher takes to install a modpack in comparison to Twitch. Both tests are running at the same time over a 1Gbps network to ensure that the network doesn't impact the comparison.

  • GDLauncher: 52s
  • Twitch Launcher: 145s

GDLauncher

๐Ÿš€ Getting Started

Below you will find everything you need to know about the launcher. If you want to download the latest stable release you can do it from our official website (gdevs.io). If you want to test the possibly unstable features, you can clone the repo and compile it yourself.

๐ŸŽฎ Download

To download the latest version, you can either click here and select the appropriate version for your operating system or visit our website.

๐ŸŽจ Features

Our features:

  • Java downloader. You don't need to have java installed, a suitable version will be downloaded automatically.
  • It's as easy as pie to install the vanilla game, forge, fabric, and all curseforge modpacks. No further action from the user is required.
  • Install mods for both fabric and forge directly from our UI
  • Built-in auto-updater. The launcher will always keep itself updated to the latest release.
  • Easily manage multiple accounts and switch between them.
  • Still playing on your grandma pc from the 80s? Don't worry, we got you covered with our Potato PC Mode!

You can also:

  • Import modpacks from other launchers
  • Keep track of the time you played each instance
  • Add instances to the download queue, they will automatically download one after the other

Some of the features we are still working on are:

  • Drag and drop instances wherever you like them, just like in your desktop
  • Export instances to other launchers
  • Liteloader support
  • Optifine easy-installation support
  • Manage your Minecraft skin directly from the launcher
  • A lot more...

๐Ÿ’พ Compilation

These are the steps to compile it yourself.

โš™๏ธ Requirements

You need the following software installed:

โ–ถ๏ธ Steps

Install the dependencies and devDependencies.

$ cd GDLauncher
$ npm i

Start the development environment

$ npm run dev

For production environment...

$ npm run build && npm run start-prod

๐Ÿšš Packaging

To package the app for the local platform:

$ npm run release

๐Ÿš€ Technologies

๐ŸŽ Contributing

You can find a list of unassigned tasks here. Feel free to ask anything on our discord if you need help or want other tasks.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

โค๏ธ Author

See also the list of contributors who participated in this project.

๐Ÿ“œ History

This project started as a way for me to learn programming and get better at it. I initially developed it in C#.

After a while, I didn't really like the language, so I just started it again from scratch in React and Electron. It was here that a community started gathering around the project. In the meanwhile, I also found a job where I could learn even more about best practices, data structures, and more.

This is why I decided to rewrite it completely one more time, applying all the knowledge I gained at that time, and that made it possible to implement a lot of really cool features, that were really complicated to code from a technical point of view.

Here you can find the previous versions of the code:

๐ŸŽ“ License

This project is licensed under the GNU GPL V3.0 - see the LICENSE file for details.

If you need GDLauncher licensed under different conditions, please contact [email protected]

You are free to clone the repository and do whatever you want as long as you stick to the license above, just be aware that most of the assets available in the repository are licensed differently (check COPYING.md) so you are not allowed to redistribute those. Also keep in mind that some features will not be working unless you set them up yourself (such as analytics, error tracking..) because the private API keys are stored secretly.

We do not encourage clones of this project (to avoid fragmentation) so don't expect any help from us when trying to do that. We, however, encourage collaboration and growth on this official project and you're more than welcome to contribute.

gdlauncher's People

Contributors

blarfoon avatar celeo avatar eskaan avatar ladvace avatar nmistry avatar pola avatar theofficialgman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gdlauncher's Issues

Aggiungere un dialog durante l'avvio e l'esecuzione di minecraft

Aggiungere un dialog durante l'avvio e l'esecuzione di minecraft che si chiude quando minecraft viene chiuso.
Farlo per punti, tipo mettere 4 stadi di avvio(setting user:)... etc
sfruttare la funzione process.OutputDataReceived += new DataReceivedEventHandler((s, e) => in minecraftstarter per leggere i dati di output del programma. In questo dialog dire anche se il gioco e' crashato, non si e' avviato etc

Aggiungere una gestione degli amici

Sarebbe interessante aggiungere una gestione degli amici all'interno del launcher.
Quando un utente logga vede chi altro e' online nel launcher e a che modpack sta giocando. Potrebbe quindi unirsi ai suoi amici in partita.

Ottimizzare la console di log

La console di log non e' ancora del tutto finita.
Se non la si apre per molto tempo e il numero di righe di log e' molto alto, dato che ha un numero massimo di righe, alla sua apertura lagga tutto perche' deve eliminare dalla console tutte le righe in eccesso

Se si aprono due DialogHost uno sopra l'altro l'app crasha

In alcune parti dell'applicazione c'e' la "possibilita'" di aprire due DialogHost contemporaneamente e questo causa un crash dell'applicazione(nella schermata di login ad esempio)
FARE IN MODO CHE QUELLO SUCCESSIVO ASPETTI CHE QUELLO PRECEDENTE FINISCA OPPURE CHE CHIUDA IMMEDIATAMENTE QUELLO PRECEDENTE O CHE NON MOSTRI PROPRIO QUELLO DOPO

Ability to choose install location

At the moment GDL installs to:

C:\Users\_____\AppData\Roaming\GorillaDevs

This doesn't seem to be changeable.

Further, we don't seem to be able to choose the install location of downloaded/Created packs/Servers.

As someone with a small SSD C:\ that I've only allowed Windows to install on this becomes rather limiting. I may not be alone in this practice.

TL;DR

โ€ข Choose GDL install location
โ€ข Choose instance and Server installation locations

Aggiungere rename delle istanze dopo averle create

Aggiungere la possibilita' di rinominare le istanze dopo la creazione. Per farlo bisogna mettere di fianco al nome dell'istanza, nella lista delle modpacks, un pulsante di rename. Per fare il rename bisogna rinominare la cartella e il json al suo interno, oltre che il nome vero e proprio dentro il json

Cancellazione salvataggi

Dato che i salvataggi sono dentro la cartella minecraft che viene continuamente cancellata, spostata, modificata etc... si rischia la perdita di tutti i salvataggi di gioco. Se possibile, salvare i salvataggi in documenti o in appdata

Pagina installazione o portable

Appena avviato il launcher fare una pagina che chiede se si vuole installare il launcher e creare un collegamento sul desktop o tenerlo portable nella cartella dove lo si e' scaricato

Aggiungere etichette modpacks

Per ogni modpacks, alla creazione, bisogna decidere delle categorie a cui assegnarla(tech, survival). Sara' poi possibile nel market fare una ricerca per categoria. E' obbligatoria almeno una categoria ma se ne possono anche mettere di piu'

Modpack Locale Forge errore 404

Nelle modpacks locali, gli url di forge sono sbagliati.
Il launcher usa un url del tipo
http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.7.10-10.13.4.1614-1.7.10/forge-1.7.10-10.13.4.1614-1.7.10-installer.jar
pero' funziona solo per la versione 1.7.10, se si fa la stessa cosa per qualunque altra versione da 404.
Per le altre versioni bisogna fare
http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.10.2-12.18.1.2018/forge-1.10.2-12.18.1.2018-installer.jar

Local Mod Sync

Aggiungere l'opzione, dopo aver installato una modpack, di ri-sincronizzarla con il server. In questo modo vengono cancellati tutti i files diversi/in piu' e scaricati quelli mancanti

Aggiunta modpack pubbliche da parte degli utenti

Gli utenti tramite il sito dovrebbero avere la possibilita' di aggiungere in una sezione "community" le loro modpacks personali. In questo modo tutti gli utenti possono giocare ad un quantitativo di modpacks molto superiore a quello da noi ufficialmente fornito. La sezione "community" dovrebbe comunque essere divisa da quella ufficiale e sulla pagina principale del launcher dovrebbero esserci 3 modpacks. 2 da noi decise e una terza che sceglie l'utente

Problemi forge modpacks locali

Durante il download di alcune versioni nelle modpacks locali fa problemi nello spostamento del file di forge!??!?!?!?!??!
Con forge si avvia inoltre solamente la 1.7.10, le altre le scarica ma all'avvio crasha(probabilmente qualche libreria manca o qualche percorso e' sbagliato)

Problema dati sessione utente

Se l'utente fa keep me logged in e vengono modificati manualmente i dati sul database, all'utente sul launcher non vengono aggiornati. Fare in modo che i dati vengano aggiornati comunque

Rendere asincrono registrazione e JSON

Rendere asincrona la chiamata della registrazione perche' impalla, magari metterci un caricamento, e rendere asincrona anche JSON perche' (non so quali) ma ci sono delle parti che fanno impallare leggermente il launcher

Connessioni lente probabile Timeout download

Su connessioni molto lente gli utenti non riescono a scaricare le mod piu' pesanti, tutto il resto funziona. E' probabile un timeout di rete durante il download di file pesanti da parte del client o del server

Errore battitura

Se vai ad installare il vanilla, il download ti dice "downloading forge" quando dovrebbe esserci "installing vanilla"

Risistemare parte Download launcher

Il launcher quando scarica le modpacks si affida molto a controlli su stringhe pre-inserite nel codice.
Cercare di togliere il piu' possibilire URL fissi e rendere il tutto piu' dinamico possibile

Problema forge varie versioni

Le varie versioni di forge utilizzano un tweakclass diverso. Si puo' leggere il tweakclass da utilizzare nel file json di forge scaricato. Cercare di rendere piu' dinamico possibile l'avvio leggendo anche altre informazioni dal file forge.
Con alcune versioni(per ora e' constatato solo con la 1.7.2 e la 1.10.2) da problemi a spostare il file di forge universal. Bisogna ricontrollare bene quella parte e sistemarla per adattarla a tutte le versioni. Rendere anche il codice piu' leggibile

Errori avvio minecraft

Bisogna implementare un sistema per tenere traccia dei principali errori di avvio di minecraft all'avvio. Tipo URL bad authority che significa che si ha un percorso errato (tipo // per i percorsi di rete)

Implementare creazione e upload modpacks

Bisogna implementare nel launcher una sezione per creare e caricare le modpacks.
L'utente deve inserire una cartella, con dentro tutti i files della modpack. Il launcher in automatico vede se le mods esistono su curse (usando il file .info presente dentro il jar). Dopo aver trovato nel file .info il nome tecnico della modpack e averlo cercato su curse, e poi anche l'id del progetto della mod, crea il json e carica tutto su mysql con direttamente l'url completo di curse. Per i files che non sono presenti su curse mette gli url del server.

Aggiungere messaggio compulsoryupdate

Quando c' รจ un cimpulsoryupdate e l' utente decide di non aggiornare mettere un message box con scritto che il launcher si chiuderร  e per usarlo bisogna aggiornare

Possibilita' di esclusione file del JSON dal controllo degli hash

Quando il launcher scarica una modpack e poi controlla gli hash controlla gli hash su tutti i files.
Sarebbe bello se su alcuni files gli hash non si controllassero pero' la prima volta che l'utente scarica la modpack venissero comunque scaricati(ad esempio i files di configurazione)

Aggiungere sistema di controllo del processo di Minecraft di java

Aggiungere controlli sul processo di Java dopo l'avvio del gioco, dato che ci mette tantissimo ad avviarsi.
Si potrebbe usare dei punti fissi nella finestra di log per vedere l'avanzamento(Error: Could not find or load main class net.minecraft.launchwrapper.Launch) come errore di avvio ad esempio e magari mettere la percentuale di avvio.
Verificare su internet se esistono in C# metodi per monitorare a fondo un processo lanciato

La sezione Admin e' da finire

La sezione admin del launcher per ora e' solo un abbozzo veloce di emergenza.
Necessita di una buona interfaccia e di un buona personalizzazione delle impostazioni e integrazione
Aggiungere magari la possibilita' di utilizzare una versione arbitraria di forge
Migliorare inoltre lo skip degli hash

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.