mirror of
https://github.com/zumbiepig/MineXLauncher.git
synced 2025-06-08 09:24:48 +00:00
,
This commit is contained in:
parent
ad807eea2f
commit
db06d153bc
15
index.ts
15
index.ts
@ -57,7 +57,14 @@ app.use(async (err, req, res, next) => {
|
|||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
app.listen(PORT, async () => {
|
app
|
||||||
debugLogger('Server started.');
|
.listen(PORT, async () => {
|
||||||
console.log(chalk.green(`Server is running on port ${PORT}`));
|
debugLogger('Server started.');
|
||||||
});
|
console.log(chalk.green(`Server is running on port ${PORT}`));
|
||||||
|
})
|
||||||
|
.on('error', (error) => {
|
||||||
|
if (error.code === 'EADDRINUSE') {
|
||||||
|
console.error(chalk.red('EADDRINUSE') + chalk.gray(': ') + chalk.bold(`Failed to start server. Is port ${PORT} in use?`));
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@ -59,36 +59,36 @@
|
|||||||
<div class="cover-image">
|
<div class="cover-image">
|
||||||
<img src="/resources/images/covers/clients.webp" />
|
<img src="/resources/images/covers/clients.webp" />
|
||||||
</div>
|
</div>
|
||||||
<div class="installations">
|
</div>
|
||||||
<div class="custom-select-wrapper">
|
<div class="installations">
|
||||||
<div id="custom-select" class="custom-select" onclick="versionSelector.toggle()">
|
<div class="custom-select-wrapper">
|
||||||
<span class="custom-select-trigger">Select a client</span>
|
<div id="custom-select" class="custom-select" onclick="versionSelector.toggle()">
|
||||||
|
<span class="custom-select-trigger">Select a client</span>
|
||||||
|
</div>
|
||||||
|
<div class="custom-options">
|
||||||
|
<div class="custom-option" onclick="game.select('/game/web/clients/eaglerforge/', 'EaglerForge')">
|
||||||
|
<img src="/resources/images/icons/clients/eaglerforge.webp" />
|
||||||
|
<span>EaglerForge</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="custom-options">
|
<div class="custom-option" onclick="game.select('/game/web/clients/resent/', 'Resent Client')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/clients/eaglerforge/', 'EaglerForge')">
|
<img src="/resources/images/icons/clients/resent.webp" />
|
||||||
<img src="/resources/images/icons/clients/eaglerforge.webp" />
|
<span>Resent Client</span>
|
||||||
<span>EaglerForge</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/clients/shadow/', 'Shadow Client')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/clients/resent/', 'Resent Client')">
|
<img src="/resources/images/icons/clients/shadow.webp" />
|
||||||
<img src="/resources/images/icons/clients/resent.webp" />
|
<span>Shadow Client</span>
|
||||||
<span>Resent Client</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/clients/astra/', 'Astra Client')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/clients/shadow/', 'Shadow Client')">
|
<img src="/resources/images/icons/clients/astra.webp" />
|
||||||
<img src="/resources/images/icons/clients/shadow.webp" />
|
<span>Astra Client</span>
|
||||||
<span>Shadow Client</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/clients/starlike/', 'Starlike Client')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/clients/astra/', 'Astra Client')">
|
<img src="/resources/images/icons/clients/starlike.webp" />
|
||||||
<img src="/resources/images/icons/clients/astra.webp" />
|
<span>Starlike Client</span>
|
||||||
<span>Astra Client</span>
|
|
||||||
</div>
|
|
||||||
<div class="custom-option" onclick="game.select('/game/web/clients/starlike/', 'Starlike Client')">
|
|
||||||
<img src="/resources/images/icons/clients/starlike.webp" />
|
|
||||||
<span>Starlike Client</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="play-button" onclick="game.play()">Play</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<button class="play-button" onclick="game.play()">Play</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -59,56 +59,56 @@
|
|||||||
<div class="cover-image">
|
<div class="cover-image">
|
||||||
<img src="/resources/images/covers/minecraft.webp" />
|
<img src="/resources/images/covers/minecraft.webp" />
|
||||||
</div>
|
</div>
|
||||||
<div class="installations">
|
</div>
|
||||||
<div class="custom-select-wrapper">
|
<div class="installations">
|
||||||
<div id="custom-select" class="custom-select" onclick="versionSelector.toggle()">
|
<div class="custom-select-wrapper">
|
||||||
<span class="custom-select-trigger">Select a version</span>
|
<div id="custom-select" class="custom-select" onclick="versionSelector.toggle()">
|
||||||
|
<span class="custom-select-trigger">Select a version</span>
|
||||||
|
</div>
|
||||||
|
<div class="custom-options">
|
||||||
|
<div class="custom-option" onclick="game.select('/game/web/main/1.9.4/', '1.9.4')">
|
||||||
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
|
<span>1.9.4</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="custom-options">
|
<div class="custom-option" onclick="game.select('/game/web/main/1.8.8/', '1.8.8')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/1.9.4/', '1.9.4')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>1.8.8</span>
|
||||||
<span>1.9.4</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/1.5.2/', '1.5.2')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/1.8.8/', '1.8.8')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>1.5.2</span>
|
||||||
<span>1.8.8</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/1.2.5/', '1.2.5')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/1.5.2/', '1.5.2')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>1.2.5</span>
|
||||||
<span>1.5.2</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/b1.7.3/', 'Beta 1.7.3')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/1.2.5/', '1.2.5')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>Beta 1.7.3</span>
|
||||||
<span>1.2.5</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/b1.3/', 'Beta 1.3')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/b1.7.3/', 'Beta 1.7.3')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>Beta 1.3</span>
|
||||||
<span>Beta 1.7.3</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/a1.2.6/', 'Alpha')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/b1.3/', 'Beta 1.3')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>Alpha 1.2.6</span>
|
||||||
<span>Beta 1.3</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/infdev/', 'Infdev')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/a1.2.6/', 'Alpha')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>Infdev</span>
|
||||||
<span>Alpha 1.2.6</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/indev/', 'Indev')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/infdev/', 'Infdev')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>Indev</span>
|
||||||
<span>Infdev</span>
|
</div>
|
||||||
</div>
|
<div class="custom-option" onclick="game.select('/game/web/main/classic/', 'Classic')">
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/indev/', 'Indev')">
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<span>Classic</span>
|
||||||
<span>Indev</span>
|
|
||||||
</div>
|
|
||||||
<div class="custom-option" onclick="game.select('/game/web/main/classic/', 'Classic')">
|
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
|
||||||
<span>Classic</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="play-button" onclick="game.play()">Play</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<button class="play-button" onclick="game.play()">Play</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -291,7 +291,7 @@ const mods = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const serviceworker = {
|
const sw = {
|
||||||
register: function (url: string) {
|
register: function (url: string) {
|
||||||
if ('serviceWorker' in navigator) {
|
if ('serviceWorker' in navigator) {
|
||||||
window.addEventListener('load', () => {
|
window.addEventListener('load', () => {
|
||||||
@ -369,12 +369,14 @@ if (window.location.pathname === '/') {
|
|||||||
if (iframe.contentWindow) iframe.contentWindow.installPwaEvent = event;
|
if (iframe.contentWindow) iframe.contentWindow.installPwaEvent = event;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* if (storage.local.get('offlineCache')) {
|
/* document.addEventListener('load', () => {
|
||||||
serviceworker.register('/sw-full.js');
|
if (storage.local.get('offlineCache')) {
|
||||||
} else {
|
sw.register('/sw-full.js');
|
||||||
serviceworker.register('/sw.js');
|
} else {
|
||||||
} */
|
sw.register('/sw.js');
|
||||||
serviceworker.register('/sw.js');
|
}
|
||||||
|
}); */
|
||||||
|
document.addEventListener('load', () => sw.register('/sw.js'));
|
||||||
} else {
|
} else {
|
||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const profileName = document.getElementById('profile-name');
|
const profileName = document.getElementById('profile-name');
|
||||||
@ -450,12 +452,12 @@ if (window.location.pathname === '/settings/') {
|
|||||||
/* offlineCheckbox.addEventListener('change', () => {
|
/* offlineCheckbox.addEventListener('change', () => {
|
||||||
storage.local.set('offlineCache', offlineCheckbox.checked);
|
storage.local.set('offlineCache', offlineCheckbox.checked);
|
||||||
if (offlineCheckbox.checked) {
|
if (offlineCheckbox.checked) {
|
||||||
serviceworker.register('/sw-full.js');
|
sw.register('/sw-full.js');
|
||||||
alert(
|
alert(
|
||||||
'Offline cache is now downloading.\nThe download size is about 1GB, so it may take a while.\n\nPlease do not leave this page while the download is in progress.\nYou will be notified when the download is complete.'
|
'Offline cache is now downloading.\nThe download size is about 1GB, so it may take a while.\n\nPlease do not leave this page while the download is in progress.\nYou will be notified when the download is complete.'
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
serviceworker.register('/sw.js');
|
sw.register('/sw.js');
|
||||||
alert('Offline cache has been deleted.');
|
alert('Offline cache has been deleted.');
|
||||||
}
|
}
|
||||||
}); */
|
}); */
|
||||||
@ -508,14 +510,14 @@ if (window.location.pathname === '/settings/') {
|
|||||||
storage.local.set('lastVersion', (await (await fetch('/resources/data.json')).json()).updates[0].version);
|
storage.local.set('lastVersion', (await (await fetch('/resources/data.json')).json()).updates[0].version);
|
||||||
|
|
||||||
/* if (offlineCheckbox.checked) {
|
/* if (offlineCheckbox.checked) {
|
||||||
serviceworker.register('/sw-full.js');
|
sw.register('/sw-full.js');
|
||||||
alert(
|
alert(
|
||||||
'Offline cache is now downloading.\nThe download size is about 1GB, so it may take a while.\n\nPlease do not leave this page while the download is in progress.\nYou will be notified when the download is complete.'
|
'Offline cache is now downloading.\nThe download size is about 1GB, so it may take a while.\n\nPlease do not leave this page while the download is in progress.\nYou will be notified when the download is complete.'
|
||||||
);
|
);
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
try installPwaEvent.prompt();
|
try installPwaEvent.prompt();
|
||||||
catch (error) console.error('Failed to prompt PWA install:', error)
|
catch (error) console.error('Failed to prompt PWA install:', error)
|
||||||
} else serviceworker.register('/sw.js'); */
|
} else sw.register('/sw.js'); */
|
||||||
|
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
window.top.location.href = '/';
|
window.top.location.href = '/';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user