1
0
mirror of https://github.com/zumbiepig/MineXLauncher.git synced 2025-06-08 07:44:48 +00:00

MineXLauncher 1.3

This commit is contained in:
zumbiepig 2024-08-13 15:40:39 -07:00
parent 43b22f24fa
commit 43df349eb9
19 changed files with 197 additions and 99 deletions

View File

@ -2,7 +2,10 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MineXLauncher</title>
<link rel="icon" type="image/x-icon" href="/resources/images/icons/favicon.png" />
<link rel="stylesheet" href="/resources/styles/default.css" /> <link rel="stylesheet" href="/resources/styles/default.css" />
<meta name="theme-color" content="#000000" />
<script src="/resources/scripts/main.js" defer></script> <script src="/resources/scripts/main.js" defer></script>
<!-- Google tag (gtag.js) --> <!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script>
@ -22,36 +25,9 @@
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.2</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar">
<div class="profile">
<span class="profile-name" id="profile-name"></span>
</div>
<nav>
<li class="nav-item" onclick="navigate.updates()">
<img src="/resources/images/icons/nav/updates.png" class="nav-icon" />
<span class="nav-text">Updates</span>
</li>
<li class="nav-item" onclick="navigate.home.game()">
<img src="/resources/images/icons/minexlauncher-trans.png" class="nav-icon" />
<span class="nav-text">Game</span>
</li>
<li class="nav-item" onclick="navigate.servers()">
<img src="/resources/images/icons/nav/servers.png" class="nav-icon" />
<span class="nav-text">Server List</span>
</li>
<li class="nav-item" onclick="navigate.mods.mods()">
<img src="/resources/images/icons/nav/mods.png" class="nav-icon" />
<span class="nav-text">Mods</span>
</li>
<li class="nav-item" onclick="navigate.settings()">
<img src="/resources/images/icons/nav/settings.png" class="nav-icon" />
<span class="nav-text">Settings</span>
</li>
</nav>
</div>
<div class="main-panel"> <div class="main-panel">
<div class="main-content"> <div class="main-content">
<div class="page-not-found"> <div class="error-page">
<h1>404 Not Found</h1> <h1>404 Not Found</h1>
<p>The page you are looking for does not exist.</p> <p>The page you are looking for does not exist.</p>
</div> </div>

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">
@ -35,7 +35,6 @@
<img src="/resources/images/icons/minexlauncher-trans.png" class="nav-icon" /> <img src="/resources/images/icons/minexlauncher-trans.png" class="nav-icon" />
<span class="nav-text">Game</span> <span class="nav-text">Game</span>
</li> </li>
<li class="nav-item" onclick="navigate.servers()"> <li class="nav-item" onclick="navigate.servers()">
<img src="/resources/images/icons/nav/servers.png" class="nav-icon" /> <img src="/resources/images/icons/nav/servers.png" class="nav-icon" />
<span class="nav-text">Server List</span> <span class="nav-text">Server List</span>
@ -55,16 +54,15 @@
<ul> <ul>
<li class="menu-item" onclick="navigate.home.game()">Game</li> <li class="menu-item" onclick="navigate.home.game()">Game</li>
<li class="menu-item" onclick="navigate.home.clients()">Clients</li> <li class="menu-item" onclick="navigate.home.clients()">Clients</li>
<li class="menu-item selected" onclick="navigate.home.archive()">Archive</li> <li class="menu-item selected" onclick="navigate.home.archive()">Archive</li>
<li class="menu-item" onclick="navigate.home.downloads()">Offline Downloads</li> <li class="menu-item" onclick="navigate.home.downloads()">Offline Downloads</li>
</ul> </ul>
</div> </div>
<div class="main-content"> <div class="main-content">
<br /><br /><br /><br /> <br /><br /><br /><br />
<div class="upload-section"> <div class="archive-section">
<label for="client-version">1.8 versions:</label> <label for="18-client-version" class="version-label">1.8 versions:</label>
<select id="18-client-version"> <select id="18-client-version" class="version-select">
<option disabled selected hidden value="">Select version</option> <option disabled selected hidden value="">Select version</option>
<optgroup label="Pre-Releases"> <optgroup label="Pre-Releases">
<option value="pre-alpha">pre-alpha</option> <option value="pre-alpha">pre-alpha</option>
@ -108,14 +106,14 @@
<option value="u32">u32</option> <option value="u32">u32</option>
<option value="u33">u33</option> <option value="u33">u33</option>
<option value="u34">u34</option> <option value="u34">u34</option>
<option value="u34">u35</option> <option value="u35">u35</option>
</optgroup> </optgroup>
</select> </select>
<button class="upload-button" onclick="game.archive('1.8.8')">Open</button> <button class="archive-button" onclick="game.archive('1.8')">Open</button>
</div> </div>
<div class="upload-section"> <div class="archive-section">
<label for="client-version">1.5 versions:</label> <label for="15-client-version" class="version-label">1.5 versions:</label>
<select id="15-client-version"> <select id="15-client-version" class="version-select">
<option disabled selected hidden value="">Select version</option> <option disabled selected hidden value="">Select version</option>
<optgroup label="Pre-Releases"> <optgroup label="Pre-Releases">
<option value="20m06-29">20m06-29</option> <option value="20m06-29">20m06-29</option>
@ -191,11 +189,11 @@
<option value="sp1.01">sp1.01</option> <option value="sp1.01">sp1.01</option>
</optgroup> </optgroup>
</select> </select>
<button class="upload-button" onclick="game.archive('1.5.2')">Open</button> <button class="archive-button" onclick="game.archive('1.5')">Open</button>
</div> </div>
<div class="upload-section"> <div class="archive-section">
<label for="client-version">Select Beta 1.3 version:</label> <label for="b13-client-version" class="version-label">Select Beta 1.3 version:</label>
<select id="b13-client-version"> <select id="b13-client-version" class="version-select">
<option disabled selected hidden value="">Select version</option> <option disabled selected hidden value="">Select version</option>
<optgroup label="Releases"> <optgroup label="Releases">
<option value="22w17a">22w17a</option> <option value="22w17a">22w17a</option>
@ -205,14 +203,14 @@
</optgroup> </optgroup>
</select> </select>
<button class="upload-button" onclick="game.archive('b1.3')">Open</button> <button class="archive-button" onclick="game.archive('b1.3')">Open</button>
</div> </div>
<br /> <br />
<button class="upload-button" onclick="window.open('https://archive.eaglercraft.rip/EaglercraftX_1.8/server/')">1.8 EaglerXBungee Jar</button> <button class="archive-button" onclick="window.open('https://archive.eaglercraft.rip/EaglercraftX_1.8/server/')">1.8 EaglerXBungee Jar</button>
<br /> <br />
<button class="upload-button" onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_1.5/server/')">Eaglercraft 1.5 Server</button> <button class="archive-button" onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_1.5/server/')">Eaglercraft 1.5 Server</button>
<br /> <br />
<button class="upload-button" onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_b1.3/server/')">Eaglercraft Beta 1.3 Server</button> <button class="archive-button" onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_b1.3/server/')">Eaglercraft Beta 1.3 Server</button>
<br /> <br />
</div> </div>
</div> </div>

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

View File

@ -12,6 +12,7 @@
<meta property="og:title" content="MineXLauncher" /> <meta property="og:title" content="MineXLauncher" />
<meta property="og:description" content="Custom launcher for Eaglercraft, which contains many versions and clients." /> <meta property="og:description" content="Custom launcher for Eaglercraft, which contains many versions and clients." />
<meta property="og:image" content="/resources/images/icons/favicon.png" /> <meta property="og:image" content="/resources/images/icons/favicon.png" />
<script src="/sw-register.js"></script>
<!-- Google tag (gtag.js) --> <!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script>
<script> <script>
@ -45,7 +46,7 @@
} }
} }
const iframe = document.createElement('iframe'); const iframe = document.createElement('iframe');
iframe.id = 'embed'; iframe.id = 'iframe-container';
iframe.style.position = 'fixed'; iframe.style.position = 'fixed';
iframe.style.top = '0'; iframe.style.top = '0';
iframe.style.left = '0'; iframe.style.left = '0';

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

View File

@ -20,7 +20,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

View File

@ -20,7 +20,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

35
public/offline.html Normal file
View File

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MineXLauncher</title>
<link rel="icon" type="image/x-icon" href="/resources/images/icons/favicon.png" />
<link rel="stylesheet" href="/resources/styles/default.css" />
<meta name="theme-color" content="#000000" />
</head>
<body>
<div class="launcher">
<div class="title-bar">
<span>MineXLauncher 1.3</span>
</div>
<div class="content">
<div class="main-panel">
<div class="main-content">
<div class="error-page">
<h1>You are offline</h1>
<p>Reconnecting to internet and try again.</p>
</div>
</div>
</div>
</div>
<div class="bottom-bar">
<div class="bottom-bar-links">
<a href="https://discord.gg/YKgfuFvKhA" class="bottom-bar-left">Join the MineXLauncher Discord</a>
</div>
<div class="bottom-bar-links">
<span class="bottom-bar-right">MineXLauncher</span>
</div>
</div>
</div>
</body>
</html>

View File

@ -145,7 +145,7 @@ nav {
scrollbar-color: #555 #333; scrollbar-color: #555 #333;
} }
.page-not-found { .error-page {
display: flex; display: flex;
flex: 1; flex: 1;
flex-direction: column; flex-direction: column;
@ -596,24 +596,71 @@ select:focus {
justify-content: center; justify-content: center;
} }
.upload-button { .version-select {
background-color: #075f07; width: 100%;
border: none; padding: 0.5rem;
padding: 8px 16px; border: 2px solid #4a4a4a;
border-radius: 5px; border-radius: 5px;
background-color: #1e1e1e;
color: #ffffff;
font-size: 1rem;
cursor: pointer; cursor: pointer;
color: #fff; appearance: none;
font-size: 18px; background-image: linear-gradient(45deg, transparent 50%, #ffffff 50%), linear-gradient(135deg, #1e1e1e 50%, transparent 50%);
font-weight: bold; background-position: right 0.7rem center, right 0.7rem center;
text-transform: none; background-repeat: no-repeat;
transition: background-color 0.2s, transform 0.2s; background-size: 0.65rem auto, 0.65rem auto;
transition: border-color 0.3s, background-color 0.3s;
} }
.upload-button:hover { .version-select:focus {
background-color: #197d19; border-color: #4a90e2;
transform: scale(1.05); outline: none;
background-color: #2e2e2e;
} }
.upload-button:active { .version-select option {
background-color: #1e1e1e;
color: #ffffff;
}
.version-label {
font-size: 1rem;
color: #ffffff;
margin-bottom: 0.5rem;
}
.archive-section {
margin: 1rem;
padding: 1rem;
border: 2px solid #3c3c3c;
border-radius: 8px;
background-color: #2e2e2e;
display: flex;
flex-direction: column;
align-items: flex-start;
}
.archive-button {
padding: 0.5rem 1rem;
border: none;
border-radius: 5px;
background-color: #4a90e2;
color: #ffffff;
font-size: 1rem;
cursor: pointer;
transition: background-color 0.3s;
}
.archive-button:hover {
background-color: #357abd;
}
.archive-button:focus {
outline: none;
box-shadow: 0 0 0 2px #357abd;
}
.archive-button:active {
transform: scale(0.95); transform: scale(0.95);
} }

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

46
public/service-worker.js Normal file
View File

@ -0,0 +1,46 @@
const CACHE_NAME = 'minexlauncher-v1.3';
const urlsToCache = ['/offline.html', '/resources/images/icons/favicon.png', '/resources/styles/default.css'];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => {
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
if (response) {
return response;
}
return fetch(event.request).then((response) => {
if (!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
const responseToCache = response.clone();
caches.open(CACHE_NAME).then((cache) => {
cache.put(event.request, responseToCache);
});
return response;
});
})
);
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((cacheNames) => {
return Promise.all(
cacheNames
.filter((cacheName) => {
return cacheName !== CACHE_NAME;
})
.map((cacheName) => {
return caches.delete(cacheName);
})
);
})
);
});

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">

12
public/sw-register.js Normal file
View File

@ -0,0 +1,12 @@
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker
.register('/service-worker.js')
.then((registration) => {
console.log('Service Worker registered:', registration);
})
.catch((error) => {
console.log('Service Worker registration failed:', error);
});
});
}

View File

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<script>
window.close();
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-972V2NZ2ZK');
</script>
<!-- End Google tag -->
</head>
<body>
<p>This window should close automatically.</p>
</body>
</html>

View File

@ -19,7 +19,7 @@
<body> <body>
<div class="launcher"> <div class="launcher">
<div class="title-bar"> <div class="title-bar">
<span>MineXLauncher 1.2</span> <span>MineXLauncher 1.3</span>
</div> </div>
<div class="content"> <div class="content">
<div class="sidebar"> <div class="sidebar">
@ -55,6 +55,11 @@
</div> </div>
<div class="main-content"> <div class="main-content">
<div class="news-item"> <div class="news-item">
<strong>MineXLauncher 1.3</strong>
<li>Bugfixes</li>
<li>Redesigned Archive Page</li>
<li>Added offline page</li>
<br />
<strong>MineXLauncher 1.2</strong> <strong>MineXLauncher 1.2</strong>
<li>Added Eaglercraft 1.2.5</li> <li>Added Eaglercraft 1.2.5</li>
<li>Added more mods and resource packs</li> <li>Added more mods and resource packs</li>

View File

@ -78,13 +78,13 @@ const game = {
}, },
archive(client: string) { archive(client: string) {
const clients: Record<string, string> = { const clients: Record<string, string> = {
'1.8.8': '18-client-version', '1.8': '18-client-version',
'1.5.2': '15-client-version', '1.5': '15-client-version',
'b1.3': 'b13-client-version', 'b1.3': 'b13-client-version',
}; };
const dropdown = clients[client] ? (document.getElementById(clients[client]) as HTMLSelectElement) : null; const dropdown = clients[client] ? (document.getElementById(clients[client]) as HTMLSelectElement) : null;
if (dropdown?.value) { if (dropdown?.value) {
selectedVersion = `https://archive.eaglercraft.rip/Eaglercraft${client === 'b1.3' ? '_b1.3' : `_${client}`}/client/${dropdown.value}/index.html`; selectedVersion = `https://archive.eaglercraft.rip/Eaglercraft${client === '1.8' ? 'X_1.8' : `_${client}`}/client/${dropdown.value}/index.html`;
game.play(); game.play();
} }
}, },
@ -93,7 +93,7 @@ const game = {
const embed = { const embed = {
create() { create() {
const iframe = document.createElement('iframe'); const iframe = document.createElement('iframe');
iframe.id = 'embed'; iframe.id = 'iframe-container';
iframe.style.position = 'fixed'; iframe.style.position = 'fixed';
iframe.style.top = '0'; iframe.style.top = '0';
iframe.style.left = '0'; iframe.style.left = '0';
@ -108,7 +108,7 @@ const embed = {
document.body.appendChild(iframe); document.body.appendChild(iframe);
}, },
remove() { remove() {
const iframe = document.getElementById('embed'); const iframe = window.top?.document.getElementById('iframe-container');
iframe?.remove(); iframe?.remove();
}, },
}; };