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
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
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
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
La sezione per il cloud, non dovrebbe essere singola per ogni modpack ma generica. In questo modo l'utente sceglie di caricare il salvataggio e poi sceglie in che modpack locale metterla
Il controllo degli hash controlla solo se i files compresi nel file JSON esistono e se hanno lo stesso hash. Se l'utente aggiunge un file che non esiste nel file JSON non viene controllato e eliminato.
L'utente potrebbe quindi aggiungere files arbitrari
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.
Ad alcuni utenti durante il download nella parte iniziale dove scarica il file principale di forge da cui prendere il file JSON si impalla e va lentissimo. Dopo scarica correttamente tutti i files a parte quelli di forge(di solito gli ultimi).
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
Usando la velocita' media iniziale di download di java, si puo' capire la velocita' dell'utente in download. Sapendola, si puo' impostare un numero adeguato di threads in download per massimizzare la velocita'.
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
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
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
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
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)
Quando viene installata una modpack, tutti i dati di quella modpack vengono salvati in un file JSON, in questo modo quando bisogna poi fare la lista delle modpacks installate o avviare una modpack non bisogna contattare il server per le info sulla modpack ma prende tutto dal file json.
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
Quando l'utente accede al suo account da un nuovo ip non registrato nella tabella degli indirizzi ip abituali, viene inviata una email con un codice univoco da inserire nel launcher
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
Ogni volta che si avvia una modpack riscarica tutti i files. Probabilmente un errore nella path nel controllo dei files.
Manca di nuovo inoltre il json dell'audio(nonostante sia presente nella path).
Strani errori
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)
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)
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 supporto mc da 1.7.10(mi pare sia questa) alle ultime.
Dalla 1.7.10 perche' dalle versioni precedenti cambia il metodo di download e gestione. E' da verificare se e' dalla 1.5, dalla 1.6.4 o dalla 1.7.10
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
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'
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
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
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 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
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.