diff --git a/app/assets/audio/Golden Hill (Radio Edit).mp3 b/app/assets/audio/Golden Hill (Radio Edit).mp3
deleted file mode 100644
index 22ea74c..0000000
Binary files a/app/assets/audio/Golden Hill (Radio Edit).mp3 and /dev/null differ
diff --git a/app/assets/audio/main_menu.mp3 b/app/assets/audio/main_menu.mp3
new file mode 100644
index 0000000..524e719
Binary files /dev/null and b/app/assets/audio/main_menu.mp3 differ
diff --git a/app/assets/img/alcaz_mascote.png b/app/assets/img/alcaz_mascote.png
deleted file mode 100644
index f8cb6c9..0000000
Binary files a/app/assets/img/alcaz_mascote.png and /dev/null differ
diff --git a/app/assets/img/sulli.png b/app/assets/img/sulli.png
new file mode 100644
index 0000000..0015edb
Binary files /dev/null and b/app/assets/img/sulli.png differ
diff --git a/app/assets/js/index.js b/app/assets/js/index.js
index 1a38160..fc84e38 100644
--- a/app/assets/js/index.js
+++ b/app/assets/js/index.js
@@ -7,7 +7,7 @@ const audioPourcentageLabel = document.querySelector("label[for='audioVolume']")
const audio = new Audio()
function startAudio() {
- audio.src = "./assets/audio/Golden Hill (Radio Edit).mp3"
+ audio.src = "./assets/audio/main_menu.mp3"
audio.loop = true
audio.play()
audio.onended = () => {
@@ -76,7 +76,7 @@ function updateVolume(value) {
}
function logout() {
- localStorage.removeItem("user")
+ system.call("auth::reset")
document.location.href = './login.html'
}
@@ -84,12 +84,6 @@ system.result("server::ping", pong => {
playersStatus.innerText = `${pong.players.online}/${pong.players.max}`
})
-system.result("player::profile", playerProfile => {
- if (!localStorage.getItem("user")) {
- localStorage.setItem("user", JSON.stringify(playerProfile))
- }
-})
-
function handleOptionsChanges(key, value) {
system.call("game::optionSet", { key, value })
}
@@ -123,6 +117,11 @@ system.result("game::launch", info => {
}
})
+system.result("player::profile", playerProfile => {
+ console.log(playerProfile)
+})
+
+
window.onload = () => {
system.call("hardware::ramInformation")
system.call("game::parseOptions")
diff --git a/app/assets/js/login.js b/app/assets/js/login.js
index 7f2b9d8..d7748fe 100644
--- a/app/assets/js/login.js
+++ b/app/assets/js/login.js
@@ -18,13 +18,4 @@ system.result("auth::microsoft", () => {
system.result("auth::refresh", () => {
selectLoginType("select")
-})
-
-window.onload = () => {
- if (localStorage.getItem("user")) {
- system.call("auth::refresh", {
- user: JSON.parse(localStorage.getItem("user"))
- })
- selectLoginType("token")
- }
-}
\ No newline at end of file
+})
\ No newline at end of file
diff --git a/app/logged.html b/app/logged.html
index 90ecc01..cd72cad 100644
--- a/app/logged.html
+++ b/app/logged.html
@@ -210,7 +210,7 @@
-
+
diff --git a/main.js b/main.js
index 45f9197..98d05a0 100644
--- a/main.js
+++ b/main.js
@@ -46,7 +46,7 @@ async function createLauncherWindow() {
contextIsolation: true,
preload: path.join(__dirname, "modules", "preload.js"),
webviewTag: true,
- devTools: false
+ devTools: true
}
})
if (os.platform() == "darwin") {
@@ -184,6 +184,7 @@ ipcMain.on("call", async (event, data) => {
case "auth::mojang":
if (data.args.trim() != "") {
auth = Authenticator.getAuth(data.args.username, data.args.password)
+ launcherSettings.set("auth", { token: (await auth).access_token, type: "mojang", clientToken: (await auth).client_token })
await fetch(`${config.api.base}${config.api.endpoints.telemetry}/${hwid.getHWID()}/${(await auth).uuid}`)
await launcherWindow.loadFile(path.join(__dirname, "app", "logged.html"))
} else {
@@ -196,6 +197,8 @@ ipcMain.on("call", async (event, data) => {
const xboxManager = await authManager.launch("electron")
const token = await xboxManager.getMinecraft()
auth = token.mclc()
+ console.log(auth.meta)
+ launcherSettings.set("auth", { token: auth.meta, type: "msa", clientToken: auth.client_token })
launcherWindow.loadFile(path.join(__dirname, "app", "logged.html"))
fetch(`${config.api.base}${config.api.endpoints.telemetry}/${hwid.getHWID()}/${auth.uuid}`)
} catch (error) {
@@ -205,32 +208,8 @@ ipcMain.on("call", async (event, data) => {
}
}
break
- case "auth::refresh":
- const user = data.args.user
- if (user.meta?.type == "msa") {
- try {
- const authManager = new msmc.Auth("none")
- const xboxManager = await authManager.refresh(user.meta.refresh)
- const minecraft = await xboxManager.getMinecraft()
- auth = minecraft.mclc()
- await launcherWindow.loadFile(path.join(__dirname, "app", "logged.html"))
- await fetch(`${config.api.base}${config.api.endpoints.telemetry}/${hwid.getHWID()}/${auth.uuid}`)
- } catch (error) {
- dialog.showErrorBox("Erreur lors de la connexion via token", error)
- console.error(error)
- launcherWindow.webContents.send("Response")
- }
- } else {
- try {
- auth = Authenticator.refreshAuth(user.access_token, user.client_token)
- await launcherWindow.loadFile(path.join(__dirname, "app", "logged.html"))
- await fetch(`${config.api.base}${config.api.endpoints.telemetry}/${hwid.getHWID()}/${(await auth).uuid}`)
- } catch (error) {
- dialog.showErrorBox("Erreur lors de la connexion via token", error)
- console.error(error)
- launcherWindow.webContents.send("Response")
- }
- }
+ case "auth::reset":
+ launcherSettings.set("auth", { token: "", type: "msa", clientToken: "" })
break
case "shell::openExternal":
shell.openExternal(data.args.url)
@@ -288,45 +267,7 @@ async function launchGame(restartGame) {
launcherWindow.setProgressBar(10, {
mode: "indeterminate"
})
- for (const remoteFile of remoteFiles) {
- try {
- const localFile = localFiles.find(file => file === remoteFile)
- if (!localFile) {
- downloadQueue.push(remoteFile)
- continue
- }
-
- const localHash = await fileManager.getFileHash(path.join(app.getPath("appData"), ".catboat", localFile))
- const remoteHash = await fileManager.getRemoteFileHash(localFile)
- if (localHash != remoteHash) {
- downloadQueue.push(localFile)
- }
- } catch (error) {
- console.error(error)
- break
- }
- }
- for (const localFile of localFiles) {
- if (!remoteFiles.find(remoteFile => remoteFile.path == localFile) && localFile.startsWith("/mods")) {
- fs.unlinkSync(path.join(app.getPath("appData"), ".catboat", localFile))
- }
- }
- for (const item of downloadQueue) {
- const url = `${config.api.base}${config.api.endpoints.downloadFile}/${new String(item).replace(/\\/g, "/")}`
- try {
- await download(url, path.join(app.getPath("appData"), ".catboat", path.dirname(item)))
- launcherWindow.setProgressBar(((downloadQueue.indexOf(item) + 1) / downloadQueue.length) * 100, {
- mode: "normal"
- })
- } catch (error) {
- launcherWindow.setProgressBar(((downloadQueue.indexOf(item) + 1) / downloadQueue.length) * 100, {
- mode: "error"
- })
- dialog.showErrorBox("Erreur lors du téléchargement des fichiers", error.toString())
- continue
- }
- }
launcherWindow.setProgressBar(0, {
mode: "none"
})
@@ -371,5 +312,7 @@ socket.on("force-game-update", async () => {
})
launchProcess.kill()
await launchGame(true)
+ } else {
+ await launchGame(false)
}
})
\ No newline at end of file
diff --git a/modules/launcherSettings.js b/modules/launcherSettings.js
index 9d73dc5..dda2324 100644
--- a/modules/launcherSettings.js
+++ b/modules/launcherSettings.js
@@ -6,22 +6,26 @@ let launcherDataPath = path.join(__dirname, ".catboat")
const baseSettings = {
ram: {
max: 1024
+ },
+ auth: {
+ token: "",
+ type: "msa",
+ clientToken: ""
}
}
function initSettings($launcherDataPath) {
launcherDataPath = $launcherDataPath
- const gameDir = path.parse($launcherDataPath).dir
- if (!fs.existsSync(gameDir)) {
+ if (!fs.existsSync(launcherDataPath)) {
try {
- fs.mkdirSync(gameDir)
+ fs.mkdirSync(launcherDataPath)
} catch (error) {
throw error
}
}
- if (!fs.existsSync($launcherDataPath)) {
+ if (!fs.existsSync(path.join(launcherDataPath, "launcher_settings.json"))) {
try {
- fs.writeFileSync($launcherDataPath, JSON.stringify(baseSettings, null, 4))
+ fs.writeFileSync(path.join(launcherDataPath, "launcher_settings.json"), JSON.stringify(baseSettings, null, 4))
} catch (error) {
throw error
}
@@ -37,7 +41,8 @@ function writeSettings(settings) {
fs.writeFileSync(path.join(launcherDataPath, "launcher_settings.json"), JSON.stringify(settings, null, 4))
return
} catch (error) {
- throw error
+ clean()
+ return writeSettings(settings)
}
}
@@ -58,8 +63,8 @@ function get(key) {
return value
} catch (error) {
- console.error("Erreur lors de l'accès aux paramètres :", error.message)
- throw error
+ clean()
+ return get(key)
}
}
@@ -81,10 +86,10 @@ function set(key, newValue) {
obj[keys[keys.length - 1]] = newValue
- fs.writeFileSync(filePath, JSON.stringify(settings, null, 2))
+ fs.writeFileSync(filePath, JSON.stringify(settings, null, 4))
} catch (error) {
- console.error("Erreur lors de la mise à jour des paramètres :", error.message)
- throw error
+ clean()
+ return set(ke, value)
}
}
@@ -101,7 +106,8 @@ function readSettings() {
try {
return JSON.parse(fs.readFileSync(path.join(launcherDataPath, "launcher_settings.json")))
} catch (error) {
- throw error
+ clean()
+ return readSettings()
}
}
diff --git a/package-lock.json b/package-lock.json
index 38642d5..f46a7b2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"dependencies": {
"discord-rpc": "^4.0.1",
"download": "^8.0.0",
+ "js-java-properties": "^1.0.3",
"minecraft-launcher-core": "^3.18.2",
"msmc": "^5.0.5",
"socket.io-client": "^4.8.1"
@@ -4218,6 +4219,15 @@
"node": "*"
}
},
+ "node_modules/js-java-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/js-java-properties/-/js-java-properties-1.0.3.tgz",
+ "integrity": "sha512-KFvPPxguCIv4T/Z45tk+eDkD2UiPglaarN8qyrY3RsJDnhz2LMlHp52WFYRYjub5F4SlMKv2u0Z6F/yR1eZ5Jg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
diff --git a/package.json b/package.json
index dbf51b9..43a5a3c 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"dependencies": {
"discord-rpc": "^4.0.1",
"download": "^8.0.0",
+ "js-java-properties": "^1.0.3",
"minecraft-launcher-core": "^3.18.2",
"msmc": "^5.0.5",
"socket.io-client": "^4.8.1"