Mise a jour

This commit is contained in:
FullGreenDev 2020-12-02 21:14:17 +01:00
parent d8201e3624
commit 244c77832b
12 changed files with 719 additions and 711 deletions

View File

@ -47,6 +47,18 @@
</div>
</div>
</div>
<div id="loading-view" style="display: none;">
<div class="loading-container">
<div class="paladium-loader"></div>
<div class="loading-text">
<p id="loading-splash-text"></p>
<p class="loading-sudmitted-text">Proposé par FullGreen.Sky</p>
<p id="loading-statut-text">Chargement en cours</p>
</div>
</div>
</div>
<script>
// Load language
for (let key of Object.keys(Lang.query('html'))) {

View File

@ -1,7 +1,7 @@
let target = require('./assetguard')[process.argv[2]]
if (target == null) {
process.send({context: 'error', data: null, error: 'Invalid class name'})
console.error('Invalid class name passed to argv[2], cannot continue.')
process.send({ context: 'error', data: null, error: 'Nom de classe non valide' })
console.error('Nom de classe non valide transmis à argv[2], impossible de continuer.')
process.exit(1)
}
let tracker = new target(...(process.argv.splice(3)))
@ -13,6 +13,7 @@ console.log('AssetExec Started')
process.on('unhandledRejection', r => console.log(r))
let percent = 0
function assignListeners() {
tracker.on('validate', (data) => {
process.send({ context: 'validate', data })
@ -57,7 +58,7 @@ process.on('message', (msg) => {
} else if (msg.task === 'changeContext') {
target = require('./assetguard')[msg.class]
if (target == null) {
process.send({context: 'error', data: null, error: `Invalid class ${msg.class}`})
process.send({ context: 'error', data: null, error: `Classe invalide ${msg.class}` })
} else {
tracker = new target(...(msg.args))
assignListeners()
@ -66,6 +67,6 @@ process.on('message', (msg) => {
})
process.on('disconnect', () => {
console.log('AssetExec Disconnected')
console.log('AssetExec déconnecté')
process.exit(0)
})

View File

@ -190,7 +190,7 @@ class Util {
return false
} catch (err) {
throw new Error('Forge version is complex (changed).. launcher requires a patch.')
throw new Error('La version de Forge est complexe (modifiée). Le lanceur nécessite un correctif.')
}
}
@ -1153,7 +1153,7 @@ class AssetGuard extends EventEmitter {
console.log('[PackXZExtract]', data.toString('utf8'))
})
child.on('close', (code, signal) => {
console.log('[PackXZExtract]', 'Exited with code', code)
console.log('[PackXZExtract]', 'Sortie avec code', code)
resolve()
})
})
@ -1192,7 +1192,7 @@ class AssetGuard extends EventEmitter {
}
}
//We didn't find forge's version.json.
reject('Unable to finalize Forge processing, version.json not found! Has forge changed their format?')
reject('Impossible de finaliser le traitement de Forge, version.json introuvable! Forge a-t-il changé de format?')
})
})
}
@ -1219,7 +1219,7 @@ class AssetGuard extends EventEmitter {
if (!fs.existsSync(versionFile) || force) {
const url = await self._getVersionDataUrl(version)
//This download will never be tracked as it's essential and trivial.
console.log('Preparing download of ' + version + ' assets.')
console.log('Préparation du téléchargement de ' + version + ' assets.')
fs.ensureDirSync(versionPath)
const stream = request(url).pipe(fs.createWriteStream(versionFile))
stream.on('finish', () => {
@ -1539,7 +1539,7 @@ class AssetGuard extends EventEmitter {
return
}
}
reject('No forge version manifest found!')
reject('Aucun manifeste de version de forge trouvé!')
return
} else {
let obArtifact = ob.getArtifact()
@ -1555,7 +1555,7 @@ class AssetGuard extends EventEmitter {
}
}
}
reject('No forge module found!')
reject('Aucun module de forge trouvé!')
})
}
@ -1776,7 +1776,7 @@ class AssetGuard extends EventEmitter {
const contentLength = parseInt(resp.headers['content-length'])
if (contentLength !== asset.size) {
console.log(`WARN: Got ${contentLength} bytes for ${asset.id}: Expected ${asset.size}`)
console.log(`AVERTISSEMENT: J\'ai ${contentLength} octets pour ${asset.id}: Attendue ${asset.size}`)
doHashCheck = true
// Adjust download
@ -1793,9 +1793,9 @@ class AssetGuard extends EventEmitter {
if (doHashCheck) {
const v = AssetGuard._validateLocal(asset.to, asset.type != null ? 'md5' : 'sha1', asset.hash)
if (v) {
console.log(`Hashes match for ${asset.id}, byte mismatch is an issue in the distro index.`)
console.log(`Correspondance de hachage pour ${asset.id}, la discordance d'octets est un problème dans l'index de distribution.`)
} else {
console.error(`Hashes do not match, ${asset.id} may be corrupted.`)
console.error(`Les hachages ne correspondent pas, ${asset.id} peut être corrompu.`)
}
}
@ -1807,7 +1807,7 @@ class AssetGuard extends EventEmitter {
} else {
req.abort()
console.log(`Failed to download ${asset.id}(${typeof asset.from === 'object' ? asset.from.url : asset.from}). Response code ${resp.statusCode}`)
console.log(`Échec du téléchargement ${asset.id}(${typeof asset.from === 'object' ? asset.from.url : asset.from}). Code de réponse ${resp.statusCode}`)
self.progress += asset.size * 1
self.emit('progress', 'download', self.progress, self.totaldlsize)
cb()
@ -1828,9 +1828,9 @@ class AssetGuard extends EventEmitter {
}, (err) => {
if (err) {
console.log('An item in ' + identifier + ' failed to process')
console.log('Un élément dans ' + identifier + ' n\'a pas réussi à traiter')
} else {
console.log('All ' + identifier + ' have been processed successfully')
console.log('Tout ' + identifier + ' ont été traités avec succès')
}
//self.totaldlsize -= dlTracker.dlsize

View File

@ -83,17 +83,17 @@ exports.validateSelected = async function(){
ConfigManager.updateAuthAccount(current.uuid, session.accessToken)
ConfigManager.save()
} catch (err) {
logger.debug('Error while validating selected profile:', err)
logger.debug('Erreur lors de la validation du profil sélectionné:', err)
if (err && err.error === 'ForbiddenOperationException') {
// What do we do?
}
logger.log('Account access token is invalid.')
logger.log('Le jeton d\'accès au compte n\'est pas valide.')
return false
}
loggerSuccess.log('Account access token validated.')
loggerSuccess.log('Jeton d\'accès au compte validé.')
return true
} else {
loggerSuccess.log('Account access token validated.')
loggerSuccess.log('Jeton d\'accès au compte validé.')
return true
}
}

View File

@ -144,8 +144,8 @@ exports.load = function() {
doValidate = true
} catch (err) {
logger.error(err)
logger.log('Configuration file contains malformed JSON or is corrupt.')
logger.log('Generating a new configuration file.')
logger.log('Le fichier de configuration contient un JSON mal formé ou corrompu.')
logger.log('Génération d\'un nouveau fichier de configuration.')
fs.ensureDirSync(path.join(configPath, '..'))
config = DEFAULT_CONFIG
exports.save()
@ -155,7 +155,7 @@ exports.load = function() {
exports.save()
}
}
logger.log('Successfully Loaded')
logger.log('Chargé avec succès')
}
/**

View File

@ -185,7 +185,7 @@ exports.getEnabledShaderpack = function(instanceDir){
if (match != null) {
return match[1]
} else {
console.warn('WARNING: Shaderpack regex failed.')
console.warn('AVERTISSEMENT: Shaderpack regex a échoué.')
}
}
return 'OFF'

View File

@ -15,8 +15,7 @@ const minecraftAgent = {
version: 1
}
const authpath = 'https://authserver.mojang.com'
const statuses = [
{
const statuses = [{
service: 'sessionserver.mojang.com',
status: 'grey',
name: 'Multiplayer Session Service',
@ -88,16 +87,15 @@ exports.statusToHex = function(status){
*/
exports.status = function() {
return new Promise((resolve, reject) => {
request.get('https://status.mojang.com/check',
{
request.get('https://status.mojang.com/check', {
json: true,
timeout: 2500
},
function(error, response, body) {
if (error || response.statusCode !== 200) {
logger.warn('Unable to retrieve Mojang status.')
logger.debug('Error while retrieving Mojang statuses:', error)
logger.warn('Impossible de récupérer le statut Mojang.')
logger.debug('Erreur lors de la récupération des statuts Mojang:', error)
//reject(error || response.statusCode)
for (let i = 0; i < statuses.length; i++) {
statuses[i].status = 'grey'
@ -144,14 +142,13 @@ exports.authenticate = function(username, password, clientToken, requestUser = t
body.clientToken = clientToken
}
request.post(authpath + '/authenticate',
{
request.post(authpath + '/authenticate', {
json: true,
body
},
function(error, response, body) {
if (error) {
logger.error('Error during authentication.', error)
logger.error('Erreur lors de l\'authentification.', error)
reject(error)
} else {
if (response.statusCode === 200) {
@ -175,8 +172,7 @@ exports.authenticate = function(username, password, clientToken, requestUser = t
*/
exports.validate = function(accessToken, clientToken) {
return new Promise((resolve, reject) => {
request.post(authpath + '/validate',
{
request.post(authpath + '/validate', {
json: true,
body: {
accessToken,
@ -185,7 +181,7 @@ exports.validate = function(accessToken, clientToken){
},
function(error, response, body) {
if (error) {
logger.error('Error during validation.', error)
logger.error('Erreur lors de l\'authentification.', error)
reject(error)
} else {
if (response.statusCode === 403) {
@ -210,8 +206,7 @@ exports.validate = function(accessToken, clientToken){
*/
exports.invalidate = function(accessToken, clientToken) {
return new Promise((resolve, reject) => {
request.post(authpath + '/invalidate',
{
request.post(authpath + '/invalidate', {
json: true,
body: {
accessToken,
@ -220,7 +215,7 @@ exports.invalidate = function(accessToken, clientToken){
},
function(error, response, body) {
if (error) {
logger.error('Error during invalidation.', error)
logger.error('Erreur lors de l\'authentification', error)
reject(error)
} else {
if (response.statusCode === 204) {
@ -246,8 +241,7 @@ exports.invalidate = function(accessToken, clientToken){
*/
exports.refresh = function(accessToken, clientToken, requestUser = true) {
return new Promise((resolve, reject) => {
request.post(authpath + '/refresh',
{
request.post(authpath + '/refresh', {
json: true,
body: {
accessToken,
@ -257,7 +251,7 @@ exports.refresh = function(accessToken, clientToken, requestUser = true){
},
function(error, response, body) {
if (error) {
logger.error('Error during refresh.', error)
logger.error('Erreur lors de l\'actualisation.', error)
reject(error)
} else {
if (response.statusCode === 200) {

View File

@ -21,7 +21,7 @@ function onDistroLoad(data){
// Resolve the selected server if its value has yet to be set.
if (ConfigManager.getSelectedServer() == null || data.getServer(ConfigManager.getSelectedServer()) == null) {
logger.log('Determining default selected server..')
logger.log('Determination du serveur par default..')
ConfigManager.setSelectedServer(data.getMainServer().getID())
ConfigManager.save()
}
@ -31,26 +31,26 @@ function onDistroLoad(data){
// Ensure Distribution is downloaded and cached.
DistroManager.pullRemote().then((data) => {
logger.log('Loaded distribution index.')
logger.log('Index de distribution chargé.')
onDistroLoad(data)
}).catch((err) => {
logger.log('Failed to load distribution index.')
logger.log('Impossible de charger une ancienne version de distribution.')
logger.error(err)
logger.log('Attempting to load an older version of the distribution index.')
// Try getting a local copy, better than nothing.
DistroManager.pullLocal().then((data) => {
logger.log('Successfully loaded an older version of the distribution index.')
logger.log('Une ancienne version du fichier de distribution a été chargé avec succes')
onDistroLoad(data)
}).catch((err) => {
logger.log('Failed to load an older version of the distribution index.')
logger.log('Application cannot run.')
logger.log('Impossible de charger une ancienne version de distribution.')
logger.log('L\'application de peux pas demaré.')
logger.error(err)
onDistroLoad(null)
@ -62,8 +62,8 @@ DistroManager.pullRemote().then((data) => {
// Clean up temp dir incase previous launches ended unexpectedly.
fs.remove(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => {
if (err) {
logger.warn('Error while cleaning natives directory', err)
logger.warn('Erreur durant le nettoyage du dossier des natives', err)
} else {
logger.log('Cleaned natives directory.')
logger.log('Dossier des natives nettoyé.')
}
})

View File

@ -86,9 +86,9 @@ class ProcessBuilder {
logger.log('Exited with code', code)
fs.remove(tempNativePath, (err) => {
if (err) {
logger.warn('Error while deleting temp dir', err)
logger.warn('Erreur lors de la suppression du répertoire temporaire', err)
} else {
logger.log('Temp dir deleted successfully.')
logger.log('Répertoire temporaire supprimé avec succès.')
}
})
})
@ -400,8 +400,8 @@ class ProcessBuilder {
let checksum = 0
for (let rule of args[i].rules) {
if (rule.os != null) {
if(rule.os.name === Library.mojangFriendlyOS()
&& (rule.os.version == null || new RegExp(rule.os.version).test(os.release))){
if (rule.os.name === Library.mojangFriendlyOS() &&
(rule.os.version == null || new RegExp(rule.os.version).test(os.release))) {
if (rule.action === 'allow') {
checksum++
}
@ -505,13 +505,13 @@ class ProcessBuilder {
isAutoconnectBroken = Util.isAutoconnectBroken(this.forgeData.id.split('-')[2])
} catch (err) {
logger.error(err)
logger.error('Forge version format changed.. assuming autoconnect works.')
logger.error('Le format de la version de Forge a changé ... en supposant que la connexion automatique fonctionne.')
logger.debug('Forge version:', this.forgeData.id)
}
if (isAutoconnectBroken) {
logger.error('Server autoconnect disabled on Forge 1.15.2 for builds earlier than 31.2.15 due to OpenGL Stack Overflow issue.')
logger.error('Please upgrade your Forge version to at least 31.2.15!')
logger.error('Connexion automatique du serveur désactivée sur Forge 1.15.2 pour les versions antérieures à 31.2.15 en raison d\'un problème d\' OpenGL.')
logger.error('Veuillez mettre à jour votre version de Forge au moins au 31.2.15!')
} else {
this._processAutoConnectArg(args)
}
@ -723,7 +723,7 @@ class ProcessBuilder {
if (!shouldExclude) {
fs.writeFile(path.join(tempNativePath, fileName), zipEntries[i].getData(), (err) => {
if (err) {
logger.error('Error while extracting native library:', err)
logger.error('Erreur durant l\'extraction de la bibliotheque de native:', err)
}
})
}

View File

@ -85,7 +85,7 @@ function setLaunchEnabled(val) {
// Bind launch button
document.getElementById('launch_button').addEventListener('click', function(e) {
loggerLanding.log('Launching game..')
loggerLanding.log('Lancement du jeu..')
const mcVersion = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()).getMinecraftVersion()
const jExe = ConfigManager.getJavaExecutable()
if (jExe == null) {
@ -98,7 +98,7 @@ document.getElementById('launch_button').addEventListener('click', function(e) {
const jg = new JavaGuard(mcVersion)
jg._validateJavaBinary(jExe).then((v) => {
loggerLanding.log('Java version meta', v)
loggerLanding.log('Version de la donnée de meta de Java', v)
if (v.valid) {
dlAsync()
} else {
@ -124,7 +124,7 @@ document.getElementById('avatarOverlay').onclick = (e) => {
// Bind selected account
function updateSelectedAccount(authUser) {
let username = 'No Account Selected'
let username = 'Aucun compte selectionné'
if (authUser != null) {
if (authUser.displayName != null) {
username = authUser.displayName
@ -144,7 +144,7 @@ function updateSelectedServer(serv) {
}
ConfigManager.setSelectedServer(serv != null ? serv.getID() : null)
ConfigManager.save()
server_selection_button.innerHTML = '\u2022 ' + (serv != null ? serv.getName() : 'No Server Selected')
server_selection_button.innerHTML = '\u2022 ' + (serv != null ? serv.getName() : 'Aucun serveur selecionné')
if (getCurrentView() === VIEWS.settings) {
animateModsTabRefresh()
}
@ -159,7 +159,7 @@ server_selection_button.onclick = (e) => {
// Update Mojang Status Color
const refreshMojangStatuses = async function() {
loggerLanding.log('Refreshing Mojang Statuses..')
loggerLanding.log('Rafraichissement des status de Mojang..')
let status = 'grey'
let tooltipEssentialHTML = ''
@ -212,7 +212,7 @@ const refreshMojangStatuses = async function() {
}
} catch (err) {
loggerLanding.warn('Unable to refresh Mojang service status.')
loggerLanding.warn('Impossible d\'actualiser l\'état du service Mojang. ')
loggerLanding.debug(err)
}
@ -222,7 +222,7 @@ const refreshMojangStatuses = async function() {
}
const refreshServerStatus = async function(fade = false) {
loggerLanding.log('Refreshing Server Status')
loggerLanding.log('Actualisation de l\'état du serveur')
const serv = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer())
let pLabel = 'SERVER'
@ -237,7 +237,7 @@ const refreshServerStatus = async function(fade = false) {
}
} catch (err) {
loggerLanding.warn('Unable to refresh server status, assuming offline.')
loggerLanding.warn('Impossible d\'actualiser l\'état du serveur, en supposant qu\'il est hors ligne.')
loggerLanding.debug(err)
}
if (fade) {
@ -270,7 +270,7 @@ function showLaunchFailure(title, desc) {
setOverlayContent(
title,
desc,
'Okay'
'Ok'
)
setOverlayHandler(null)
toggleOverlay(true)
@ -470,7 +470,7 @@ function asyncSystemScan(mcVersion, launchAfter = true) {
})
// Begin system Java scan.
setLaunchDetails('Checking system info..')
setLaunchDetails('Vérification des informations système..')
sysAEx.send({ task: 'execute', function: 'validateJava', argsArr: [ConfigManager.getDataDirectory()] })
}
@ -650,8 +650,8 @@ function dlAsync(login = true) {
if (m.result.forgeData == null || m.result.versionData == null) {
loggerLaunchSuite.error('Error during validation:', m.result)
loggerLaunchSuite.error('Error during launch', m.result.error)
showLaunchFailure('Error During Launch', 'Please check the console (CTRL + Shift + i) for more details.')
loggerLaunchSuite.error('Erreur lors du lancement', m.result.error)
showLaunchFailure('Erreur lors du lancement', 'Veuillez vérifier la console (CTRL + Shift + i) pour plus de détails.')
allGood = false
}
@ -661,17 +661,17 @@ function dlAsync(login = true) {
if (login && allGood) {
const authUser = ConfigManager.getSelectedAccount()
loggerLaunchSuite.log(`Sending selected account (${authUser.displayName}) to ProcessBuilder.`)
loggerLaunchSuite.log(`Envoi du compte sélectionné (${authUser.displayName}) à ProcessBuilder.`)
let pb = new ProcessBuilder(serv, versionData, forgeData, authUser, remote.app.getVersion())
setLaunchDetails('Launching game..')
setLaunchDetails('Lancement du jeu..')
// 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} rejoint le jeu`)
const onLoadComplete = () => {
toggleLaunchArea(false)
if (hasRPC) {
DiscordWrapper.updateDetails('Loading game..')
DiscordWrapper.updateDetails('Jeu en cours de chargement..')
}
proc.stdout.on('data', gameStateChange)
proc.stdout.removeListener('data', tempListener)
@ -879,7 +879,7 @@ let newsLoadingListener = null
*/
function setNewsLoading(val) {
if (val) {
const nLStr = 'Checking for News'
const nLStr = 'Vérification des actualités'
let dotStr = '..'
nELoadSpan.innerHTML = nLStr + dotStr
newsLoadingListener = setInterval(() => {

View File

@ -19,7 +19,8 @@ const loginButton = document.getElementById('loginButton')
const loginForm = document.getElementById('loginForm')
// Control variables.
let lu = false, lp = false
let lu = false,
lp = false
const loggerLogin = LoggerUtil('%c[Login]', 'color: #000668; font-weight: bold')
@ -173,12 +174,12 @@ function resolveError(err){
if (err.error != null) {
if (err.error === 'ForbiddenOperationException') {
if (err.errorMessage != null) {
if(err.errorMessage === 'Invalid credentials. Invalid username or password.'){
if (err.errorMessage === 'invalidCredentials') {
return {
title: Lang.queryJS('login.error.invalidCredentials.title'),
desc: Lang.queryJS('login.error.invalidCredentials.desc')
}
} else if(err.errorMessage === 'Invalid credentials.'){
} else if (err.errorMessage === 'invalidCredentials') {
return {
title: Lang.queryJS('login.error.rateLimit.title'),
desc: Lang.queryJS('login.error.rateLimit.desc')
@ -294,7 +295,7 @@ loginButton.addEventListener('click', () => {
toggleOverlay(false)
})
toggleOverlay(true)
loggerLogin.log('Error while logging in.', err)
loggerLogin.log('Erreur lors de la connexion.', err)
})
})

View File

@ -58,7 +58,7 @@ function getCurrentView(){
function showMainUI(data) {
if (!isDev) {
loggerAutoUpdater.log('Initializing..')
loggerAutoUpdater.log('Initialisation..')
ipcRenderer.send('autoUpdateAction', 'initAutoUpdater', ConfigManager.getAllowPrerelease())
}
@ -109,9 +109,9 @@ function showFatalStartupError(){
$('#loadingContainer').fadeOut(250, () => {
document.getElementById('overlayContainer').style.background = 'none'
setOverlayContent(
'Fatal Error: Unable to Load Distribution Index',
'A connection could not be established to our servers to download the distribution index. No local copies were available to load. <br><br>The distribution index is an essential file which provides the latest server information. The launcher is unable to start without it. Ensure you are connected to the internet and relaunch the application.',
'Close'
'Erreur fatale: impossible de charger l\'index de distribution',
'Une connexion n\'a pas pu être établie avec nos serveurs pour télécharger l\'index de distribution. Aucune copie locale n\'était disponible pour le chargement. <br> <br> L\'index de distribution est un fichier essentiel qui fournit les dernières informations sur le serveur. Le lanceur ne peut pas démarrer sans lui. Assurez-vous que vous êtes connecté à Internet et relancez l\'application.',
'Fermer'
)
setOverlayHandler(() => {
const window = remote.getCurrentWindow()
@ -323,10 +323,10 @@ async function validateSelectedAccount(){
ConfigManager.save()
const accLen = Object.keys(ConfigManager.getAuthAccounts()).length
setOverlayContent(
'Failed to Refresh Login',
`We were unable to refresh the login for <strong>${selectedAcc.displayName}</strong>. Please ${accLen > 0 ? 'select another account or ' : ''} login again.`,
'Login',
'Select Another Account'
'Échec de l\'actualisation de la connexion',
`Nous n'avons pas pu actualiser la connexion pour <strong>${selectedAcc.displayName}</strong>. Merci ${accLen > 0 ? 'sélectionnez un autre compte ou ' : ''} reconnectez-vous.`,
'Connection',
'Sélectionnez un autre compte'
)
setOverlayHandler(() => {
document.getElementById('loginUsername').value = selectedAcc.username