Compare commits
14 Commits
053f859d85
...
68651b2ca6
Author | SHA1 | Date |
---|---|---|
Wily | 68651b2ca6 | |
Henry | 847106f1fb | |
Henry | 93f60488fa | |
Henry Le Grys | b5fe175650 | |
Henry Le Grys | 11808457fe | |
Ch. König | 5712eb1dfb | |
Ch. König | 9428dbbe7b | |
DaPorkchop_ | 5668e567a1 | |
DaPorkchop_ | 31a13115fb | |
WILLIAM8812 | 6d72779ef0 | |
WILLIAM8812 | c5a9c4c3aa | |
WILLIAM8812 | c668cad390 | |
WILLIAM8812 | 9f2cfcffde | |
WILLIAM8812 | b916cb3ccb |
|
@ -194,9 +194,21 @@ public class Bootstrap {
|
|||
String osName = System.getProperty("os.name").toLowerCase();
|
||||
if (osName.contains("win")) {
|
||||
return new File(getFileChooseDefaultDir(), getProperties().getProperty("homeFolderWindows"));
|
||||
} else {
|
||||
return new File(System.getProperty("user.home"), getProperties().getProperty("homeFolder"));
|
||||
}
|
||||
|
||||
File dotFolder = new File(System.getProperty("user.home"), getProperties().getProperty("homeFolder"));
|
||||
String xdgFolderName = getProperties().getProperty("homeFolderLinux");
|
||||
|
||||
if (osName.contains("linux") && !dotFolder.exists() && !xdgFolderName.isEmpty()) {
|
||||
String xdgDataHome = System.getenv("XDG_DATA_HOME");
|
||||
if (xdgDataHome.isEmpty()) {
|
||||
xdgDataHome = System.getProperty("user.home") + "/.local/share";
|
||||
}
|
||||
|
||||
return new File(xdgDataHome, xdgFolderName);
|
||||
}
|
||||
|
||||
return dotFolder;
|
||||
}
|
||||
|
||||
private static boolean isPortableMode() {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#
|
||||
|
||||
homeFolderWindows=Example Launcher
|
||||
homeFolderLinux=example_launcher
|
||||
homeFolder=.examplelauncher
|
||||
launcherClass=com.skcraft.launcher.Launcher
|
||||
latestUrl=http://update.skcraft.com/quark/launcher/latest.json
|
||||
latestUrl=http://update.skcraft.com/quark/launcher/latest.json
|
||||
|
|
|
@ -164,7 +164,7 @@ public class PackageBuilder {
|
|||
|
||||
if (basicProfile.isLegacy()) {
|
||||
processor = new OldForgeLoaderProcessor();
|
||||
} else if (basicProfile.getProfile().equalsIgnoreCase("forge")) {
|
||||
} else {
|
||||
processor = new ModernForgeLoaderProcessor();
|
||||
}
|
||||
} else if (BuilderUtils.getZipEntry(jarFile, "fabric-installer.json") != null) {
|
||||
|
|
|
@ -73,6 +73,12 @@ public class ModernForgeLoaderProcessor implements ILoaderProcessor {
|
|||
}
|
||||
}
|
||||
|
||||
// Copy logging config
|
||||
SidedData<VersionManifest.LoggingConfig> loggingConfig = info.getLogging();
|
||||
if (loggingConfig != null) {
|
||||
version.setLogging(loggingConfig);
|
||||
}
|
||||
|
||||
// Copy main class
|
||||
String mainClass = info.getMainClass();
|
||||
if (mainClass != null) {
|
||||
|
@ -150,6 +156,22 @@ public class ModernForgeLoaderProcessor implements ILoaderProcessor {
|
|||
// Add loader manifest to the map
|
||||
manifest.getLoaders().put(loaderName, new LoaderManifest(profile.getLibraries(), profile.getData(), extraFiles));
|
||||
|
||||
// Find name of final patched library and mark it as excluded from download
|
||||
// TODO: we should generalize this to all process outputs, really
|
||||
SidedData<String> finalJars = profile.getData().get("PATCHED");
|
||||
if (finalJars != null) {
|
||||
String libraryName = finalJars.getClient();
|
||||
libraryName = libraryName.substring(1, libraryName.length() - 1);
|
||||
|
||||
for (Library lib : result.getLoaderLibraries()) {
|
||||
if (lib.matches(libraryName)) {
|
||||
lib.setGenerated(true);
|
||||
log.info(String.format("Setting generated flag on library '%s'", lib.getName()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add processors
|
||||
manifest.getTasks().addAll(profile.toProcessorEntries(loaderName));
|
||||
}
|
||||
|
|
|
@ -140,7 +140,6 @@ public class Runner implements Callable<Process>, ProgressObservable {
|
|||
}
|
||||
|
||||
progress = new DefaultProgress(0.9, SharedLocale.tr("runner.collectingArgs"));
|
||||
builder.classPath(getJarPath());
|
||||
builder.setMainClass(versionManifest.getMainClass());
|
||||
|
||||
addWindowArgs();
|
||||
|
@ -232,6 +231,9 @@ public class Runner implements Callable<Process>, ProgressObservable {
|
|||
tr("runner.missingLibrary", instance.getTitle(), library.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
// The official launcher puts the vanilla jar at the end of the classpath, we'll do the same
|
||||
builder.classPath(getJarPath());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -307,7 +309,7 @@ public class Runner implements Callable<Process>, ProgressObservable {
|
|||
}
|
||||
}
|
||||
|
||||
if (versionManifest.getLogging() != null) {
|
||||
if (versionManifest.getLogging() != null && versionManifest.getLogging().getClient() != null) {
|
||||
log.info("Logging config present, log4j2 bug likely mitigated");
|
||||
|
||||
VersionManifest.LoggingConfig config = versionManifest.getLogging().getClient();
|
||||
|
|
|
@ -19,7 +19,7 @@ public class LoaderManifest {
|
|||
|
||||
public Library findLibrary(String name) {
|
||||
for (Library library : getLibraries()) {
|
||||
if (library.getName().equals(name)) {
|
||||
if (library.matches(name)) {
|
||||
return library;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.google.common.base.Splitter;
|
|||
import com.skcraft.launcher.model.minecraft.GameArgument;
|
||||
import com.skcraft.launcher.model.minecraft.Library;
|
||||
import com.skcraft.launcher.model.minecraft.MinecraftArguments;
|
||||
import com.skcraft.launcher.model.minecraft.VersionManifest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -23,6 +24,7 @@ public class VersionInfo {
|
|||
private MinecraftArguments arguments;
|
||||
private String mainClass;
|
||||
private List<Library> libraries;
|
||||
private SidedData<VersionManifest.LoggingConfig> logging;
|
||||
|
||||
@JsonIgnore private transient boolean overridingArguments;
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ package com.skcraft.launcher.model.minecraft;
|
|||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.Lists;
|
||||
|
@ -33,7 +34,8 @@ public class Library {
|
|||
private String comment;
|
||||
|
||||
// Custom
|
||||
private boolean locallyAvailable;
|
||||
@JsonInclude(value = JsonInclude.Include.NON_DEFAULT)
|
||||
private boolean generated;
|
||||
|
||||
public boolean matches(Environment environment) {
|
||||
boolean allow = false;
|
||||
|
@ -201,6 +203,12 @@ public class Library {
|
|||
}
|
||||
|
||||
public void setName(String name) {
|
||||
int classifierPos = name.indexOf("@");
|
||||
if (classifierPos != -1) {
|
||||
// Take off classifiers
|
||||
name = name.substring(0, classifierPos);
|
||||
}
|
||||
|
||||
this.name = name;
|
||||
|
||||
// [DEEP SIGH]
|
||||
|
@ -226,6 +234,20 @@ public class Library {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Classifier-independent library name check
|
||||
* @param mavenName Maven name of a library, possibly with a classifier
|
||||
* @return True if this library is named 'mavenName'.
|
||||
*/
|
||||
public boolean matches(String mavenName) {
|
||||
int classifierPos = mavenName.indexOf('@');
|
||||
if (classifierPos != -1) {
|
||||
mavenName = mavenName.substring(0, classifierPos);
|
||||
}
|
||||
|
||||
return this.name.equals(mavenName);
|
||||
}
|
||||
|
||||
public static String mavenNameToPath(String mavenName) {
|
||||
List<String> split = Splitter.on(':').splitToList(mavenName);
|
||||
int size = split.size();
|
||||
|
|
|
@ -249,6 +249,8 @@ public abstract class BaseUpdater {
|
|||
}
|
||||
|
||||
for (Library library : allLibraries) {
|
||||
if (library.isGenerated()) continue; // Skip generated libraries.
|
||||
|
||||
if (library.matches(environment)) {
|
||||
checkInterrupted();
|
||||
|
||||
|
@ -282,7 +284,7 @@ public abstract class BaseUpdater {
|
|||
}
|
||||
|
||||
// Use our custom logging config depending on what the manifest specifies
|
||||
if (versionManifest.getLogging() != null) {
|
||||
if (versionManifest.getLogging() != null && versionManifest.getLogging().getClient() != null) {
|
||||
VersionManifest.LoggingConfig config = versionManifest.getLogging().getClient();
|
||||
|
||||
VersionManifest.Artifact file = config.getFile();
|
||||
|
|
|
@ -207,4 +207,4 @@ features.install=OK
|
|||
features.selectForInfo=Select a feature to see more information.
|
||||
features.intro=Please select the optional features to install.
|
||||
features.starred=(recommended)
|
||||
features.avoid=(not recommended)
|
||||
features.avoid=(not recommended)
|
|
@ -0,0 +1,201 @@
|
|||
#
|
||||
# SK's Minecraft Launcher
|
||||
# Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
|
||||
# Please see LICENSE.txt for license information.
|
||||
#
|
||||
# Traduction made by : https://github.com/WILLIAM8812
|
||||
#
|
||||
|
||||
errorTitle=Une erreur est survenue
|
||||
confirmTitle=Confirmer
|
||||
|
||||
context.cut=Couper
|
||||
context.copy=Copier
|
||||
context.paste=Coller
|
||||
context.delete=Supprimer
|
||||
context.selectAll=Tout selectionner
|
||||
|
||||
errors.openUrlError=Echec de l''ouverture de l''URL\ : {0}
|
||||
errors.openDirError=Impossible d''ouvrir ''{0}''. Peut-Etre qu''il n''existe pas ?
|
||||
errors.reportErrorPreface=Pour signaler cette erreur, veuillez fournir\:\n\n
|
||||
errors.genericError=Une erreur est survenue.
|
||||
errors.updateRequiredError=Veuillez telecharger une nouvelle version du lanceur pour continuer la mise a jour.
|
||||
errors.selfUpdateCheckError=La recherche d''une mise a jour du lanceur a echoue.
|
||||
|
||||
button.cancel=Annuler
|
||||
button.ok=OK
|
||||
|
||||
options.title = Options
|
||||
options.useProxyCheck = Utiliser le proxy suivant dans Minecraft
|
||||
options.jvmPath=Chemin JVM\:
|
||||
options.jvmArguments=Arguments JVM\:
|
||||
options.64BitJavaWarning=<html>Assurez-vous d''avoir <strong>Java 64 bits installe</strong> si vous prevoyez de definir des limites de memoire plus elevees.
|
||||
options.minMemory=Memoire minimale (Mo)\:
|
||||
options.maxMemory=Memoire maximale (Mo)\:
|
||||
options.permGen=PermGen (Mo)\:
|
||||
options.javaTab=Java
|
||||
options.windowWidth=Largeur de la fenEtre\:
|
||||
options.windowHeight=Hauteur de la fenEtre\:
|
||||
options.minecraftTab=Minecraft
|
||||
options.proxyHost=Hote proxy\:
|
||||
options.proxyPort=Port proxy\:
|
||||
options.proxyUsername=Nom d''utilisateur du proxy\:
|
||||
options.proxyPassword=Mot de passe proxy\:
|
||||
options.proxyTab=Proxy
|
||||
options.gameKey=Cle du jeu\:
|
||||
options.advancedTab=Avancee
|
||||
options.about=A propos
|
||||
options.launcherConsole=Console
|
||||
|
||||
instance.launch=Lancer
|
||||
instance.install=Installer
|
||||
instance.openFolder=Afficher le dossier
|
||||
instance.openSaves=Afficher les sauvegardes
|
||||
instance.openResourcePacks=Afficher les packs de ressources
|
||||
instance.openScreenshots=Afficher les captures d''ecran
|
||||
instance.copyAsPath=Copier comme chemin
|
||||
instance.forceUpdate=Forcer la mise a jour
|
||||
instance.hardForceUpdate=Mise a jour forcee...
|
||||
instance.deleteFiles=Supprimer les fichiers...
|
||||
instance.confirmDelete=Etes-vous sur de vouloir supprimer TOUS LES FICHIERS (captures d''ecran, mondes, configurations) pour ''{0}'' ?
|
||||
instance.deletingTitle=Suppression de l''instance...
|
||||
instance.deletingStatus=Suppression de ''{0}'' et des fichiers...
|
||||
instance.confirmHardUpdate=Une mise a jour forcee supprimera le contenu de config/ et mods/ et necessitera ensuite une mise a jour. Etes-vous sur de vouloir continuer ?
|
||||
instance.resettingTitle=Reinitialisation de l''instance...
|
||||
instance.resettingStatus=Reinitialisation de ''{0}''...
|
||||
|
||||
launcher.launch=Lancer...
|
||||
launcher.checkForUpdates=Verifier les mises a jour
|
||||
launcher.options=Options...
|
||||
launcher.updateLauncher=Mettre a jour le lanceur...
|
||||
launcher.downloadUpdates=Telecharger les mises a jour modpacks
|
||||
launcher.title= SKCRAFT Launcher Launcher (v{0})
|
||||
launcher.appTitle= SKCRAFT Launcher Launcher
|
||||
launcher.refreshList=Rafraîchir la liste
|
||||
launcher.checkingTitle=Obtention des modpacks disponibles...
|
||||
launcher.checkingStatus=Obtention des modpacks disponibles... Veuillez patienter.
|
||||
launcher.selfUpdatingTitle=Mise a jour du lanceur...
|
||||
launcher.selfUpdatingStatus=Telechargement de la mise a jour du lanceur...
|
||||
launcher.selfUpdateComplete=Redemarrez le lanceur pour utiliser la nouvelle version.
|
||||
launcher.selfUpdateCompleteTitle=Mise a jour terminee
|
||||
launcher.updatingTitle=Mise a jour...
|
||||
launcher.updatingStatus=Mise a jour de ''{0}''... Veuillez patienter.
|
||||
launcher.noInstanceError=Veuillez selectionner un modpack a lancer.
|
||||
launcher.noInstanceTitle=Aucun Modpack selectionne
|
||||
launcher.launchingTItle=Lancement du jeu...
|
||||
launcher.launchingStatus=Lancement de ''{0}''. S''il vous plaît, attendez.
|
||||
launcher.modpackColumn=Modpack
|
||||
launcher.notInstalledHint=(pas installe)
|
||||
launcher.requiresUpdateHint=(necessite une mise a jour)
|
||||
launcher.updatePendingHint=(en attente de mise a jour)
|
||||
|
||||
accounts.title=Selectionnez le compte avec lequel jouer
|
||||
accounts.play=Jouer!
|
||||
accounts.refreshingStatus=Rafraîchissement de la session de connexion...
|
||||
accounts.addMojang=Ajouter un compte Mojang
|
||||
accounts.addMicrosoft=Ajouter un compte Microsoft
|
||||
accounts.removeSelected=Oublier le compte selectionne
|
||||
accounts.confirmForgetTitle=Oublier le compte
|
||||
accounts.confirmForget=Etes-vous sur de vouloir oublier ce compte ?
|
||||
|
||||
login.login=Connexion...
|
||||
login.recoverAccount=Identifiant oublie ?
|
||||
login.playOffline=Jouer hors-ligne
|
||||
login.title=Connexion Minecraft
|
||||
login.defaultMessage=Connectez-vous avec votre compte Mojang
|
||||
login.idEmail=ID/Email\:
|
||||
login.password=Mot de passe\:
|
||||
login.noPasswordError=Veuillez entrer un mot de passe.
|
||||
login.noPasswordTitle=Mot de passe manquant
|
||||
login.loggingInTitle=Se connecter...
|
||||
login.loggingInStatus=Connexion a Minecraft...
|
||||
login.noLoginError=Veuillez saisir les details de votre compte.
|
||||
login.noLoginTitle=Compte manquant
|
||||
login.minecraftNotOwnedError=Desole, Minecraft n''est pas achete sur ce compte.
|
||||
|
||||
login.microsoft.seeBrowser=Verifiez votre navigateur pour vous connecter avec Microsoft.
|
||||
login.xbox.generic=echec de l''authentification avec Xbox Live.
|
||||
login.xbox.noXboxAccount=Ce compte n''a pas de compte Xbox associe !
|
||||
login.xbox.isChild=Le compte est un enfant (moins de 18 ans) et ne peut Etre ouvert que s''il fait partie d''une famille.
|
||||
login.xbox.unknown=Une erreur inconnue s''est produite lors de la connexion avec Xbox (XErr {0})
|
||||
login.xbox.errorMessage=Une erreur inconnue s''est produite lors de la connexion avec Xbox : {0}
|
||||
login.minecraft.error=Une erreur s''est produite lors de l''autorisation avec les services Minecraft : {0}
|
||||
|
||||
console.title=Console
|
||||
console.launcherConsoleTitle=Messages du lanceur
|
||||
console.uploadLog=Telecharger le journal
|
||||
console.pasteUploading=Telechargement de {0} octets...\n
|
||||
console.pasteUploaded=Coller importe\ : {0}\n
|
||||
console.pasteFailed=echec du telechargement\ : {0}\n
|
||||
console.processEndCode=Process ended with code\: {0}
|
||||
console.attachedToProcess=Le jeu est en marche. S''il vous plaît, attendez.
|
||||
console.forceClose=Forcer la fermeture
|
||||
console.trayTooltip= SKCRAFT Launcher
|
||||
console.trayTitle= SKCRAFT Launcher
|
||||
console.tray.showWindow=Afficher la fenEtre
|
||||
console.tray.forceClose=Forcer la fermeture...
|
||||
console.closeWindow=Fermer la fenEtre
|
||||
console.hideWindow=Masquer la fenEtre
|
||||
console.confirmKill=Etes-vous sur de vouloir fermer le jeu de force ? Vous risquez de perdre des donnees.
|
||||
console.confirmKillTitle=Es-tu sur?
|
||||
console.clearLog=Vider
|
||||
|
||||
downloader.downloadingItem=Telechargement de {0}...
|
||||
downloader.downloadingList=Telechargement de {0} fichiers... ({1} restant, {2} echoue)
|
||||
downloader.jobProgress={1,number}%\t{0}
|
||||
downloader.jobPending=...\t{0}
|
||||
downloader.noDownloads=Aucun telechargement en attente.
|
||||
downloader.failedCount=({0} ont echoue)
|
||||
|
||||
progress.details=Details...
|
||||
progress.less=Moins...
|
||||
progress.viewLog=Afficher le journal
|
||||
progress.confirmCancel=Etes-vous sur de vouloir annuler ?
|
||||
progress.confirmCancelTitle=Annuler
|
||||
progress.defaultStatus=En cours...
|
||||
progress.percentTitle=({0}%) {1}
|
||||
|
||||
installer.installing=Installation...
|
||||
installer.executing=Execution des tâches... ({0} restant)
|
||||
installer.copyingFile=Copie de {0} vers {1}
|
||||
installer.movingFile=Deplacement de {0} vers {1}
|
||||
installer.runningProcessor=Lancement du processeur {0} : {1}
|
||||
|
||||
updater.updating=Mise a jour du lanceur...
|
||||
updater.updateRequiredButOffline=Une mise a jour est necessaire mais vous devez Etre en mode en-ligne.
|
||||
updater.updateRequiredButNoManifest=Une mise a jour est requise, mais les informations de mise a jour pour cette instance ne sont plus disponibles.
|
||||
|
||||
instanceUpdater.preparingUpdate=Preparation de la mise a jour...
|
||||
instanceUpdater.readingManifest=Lecture du manifeste du package...
|
||||
instanceUpdater.readingVersion=Lecture du manifeste de la version...
|
||||
instanceUpdater.buildingDownloadList=Collecte des fichiers a telecharger...
|
||||
instanceUpdater.collectingLibraries=Collecte des bibliothèques a telecharger...
|
||||
instanceUpdater.collectingAssets=Collecte des bibliothèques a telecharger...
|
||||
|
||||
instanceDeleter.deleting=Suppression de {0}...
|
||||
instanceDeleter.failures={0} fichier(s) n''on pas pu Etre supprime.
|
||||
|
||||
instanceResetter.resetting=Reinitialisation de {0}...
|
||||
instanceLoader.loadingLocal=Chargement des instances locales a partir du disque...
|
||||
instanceLoader.checkingRemote=Recherche de nouveaux modpacks...
|
||||
|
||||
runner.preparing=Preparation du lancement...
|
||||
runner.collectingArgs=Collecte des arguments de processus...
|
||||
runner.startingJava=Demarrage de Java...
|
||||
runner.updateRequired=Cette instance doit Etre mise a jour avant de pouvoir Etre executee.
|
||||
runner.missingLibrary={0} doit Etre relance et mis a jour car la bibliothèque ''{1}'' est manquante.
|
||||
runner.missingAssetsIndex={0} doit Etre relance et mis a jour car son index d''actifs est manquant.
|
||||
runner.corruptAssetsIndex={0} doit Etre relance et mis a jour car son index d''actifs est corrompu.
|
||||
|
||||
assets.expanding1=Expension de {0} asset... ({1} restant)
|
||||
assets.expandingN=Expension de {0} asset... ({1} restants)
|
||||
assets.missingIndex=Vous devez mettre a jour cette instance car son fichier d''index a ''{0}'' est manquant.
|
||||
assets.missingObject=Vous devez mettre a jour cette instance car le fichier a ''{0}'' est manquant.
|
||||
|
||||
features.nameColumn=Fonctionnalite
|
||||
features.title=Selectionnez les fonctionnalites
|
||||
features.install=OK
|
||||
features.selectForInfo=Selectionnez une fonctionnalite pour afficher plus d''informations.
|
||||
features.intro=Veuillez selectionner les fonctionnalites optionnelles a installer.
|
||||
features.starred=(recommande)
|
||||
features.avoid=(non recommande)
|
Loading…
Reference in New Issue