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

MineXLauncher 1.3

This commit is contained in:
zumbiepig 2024-08-13 15:40:39 -07:00
parent 78585e06d8
commit 64adc9a339
19 changed files with 197 additions and 99 deletions

View File

@ -2,7 +2,10 @@
<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" />
<script src="/resources/scripts/main.js" defer></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script>
@ -22,36 +25,9 @@
<span>MineXLauncher 1.2</span>
</div>
<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-content">
<div class="page-not-found">
<div class="error-page">
<h1>404 Not Found</h1>
<p>The page you are looking for does not exist.</p>
</div>

View File

@ -19,7 +19,7 @@
<body>
<div class="launcher">
<div class="title-bar">
<span>MineXLauncher 1.2</span>
<span>MineXLauncher 1.3</span>
</div>
<div class="content">
<div class="sidebar">
@ -35,7 +35,6 @@
<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>
@ -55,16 +54,15 @@
<ul>
<li class="menu-item" onclick="navigate.home.game()">Game</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" onclick="navigate.home.downloads()">Offline Downloads</li>
</ul>
</div>
<div class="main-content">
<br /><br /><br /><br />
<div class="upload-section">
<label for="client-version">1.8 versions:</label>
<select id="18-client-version">
<div class="archive-section">
<label for="18-client-version" class="version-label">1.8 versions:</label>
<select id="18-client-version" class="version-select">
<option disabled selected hidden value="">Select version</option>
<optgroup label="Pre-Releases">
<option value="pre-alpha">pre-alpha</option>
@ -108,14 +106,14 @@
<option value="u32">u32</option>
<option value="u33">u33</option>
<option value="u34">u34</option>
<option value="u34">u35</option>
<option value="u35">u35</option>
</optgroup>
</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 class="upload-section">
<label for="client-version">1.5 versions:</label>
<select id="15-client-version">
<div class="archive-section">
<label for="15-client-version" class="version-label">1.5 versions:</label>
<select id="15-client-version" class="version-select">
<option disabled selected hidden value="">Select version</option>
<optgroup label="Pre-Releases">
<option value="20m06-29">20m06-29</option>
@ -191,11 +189,11 @@
<option value="sp1.01">sp1.01</option>
</optgroup>
</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 class="upload-section">
<label for="client-version">Select Beta 1.3 version:</label>
<select id="b13-client-version">
<div class="archive-section">
<label for="b13-client-version" class="version-label">Select Beta 1.3 version:</label>
<select id="b13-client-version" class="version-select">
<option disabled selected hidden value="">Select version</option>
<optgroup label="Releases">
<option value="22w17a">22w17a</option>
@ -205,14 +203,14 @@
</optgroup>
</select>
<button class="upload-button" onclick="game.archive('b1.3')">Open</button>
<button class="archive-button" onclick="game.archive('b1.3')">Open</button>
</div>
<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 />
<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 />
<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 />
</div>
</div>

View File

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

View File

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

View File

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

View File

@ -12,6 +12,7 @@
<meta property="og:title" content="MineXLauncher" />
<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" />
<script src="/sw-register.js"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script>
<script>
@ -45,7 +46,7 @@
}
}
const iframe = document.createElement('iframe');
iframe.id = 'embed';
iframe.id = 'iframe-container';
iframe.style.position = 'fixed';
iframe.style.top = '0';
iframe.style.left = '0';

View File

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

View File

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

View File

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

View File

@ -20,7 +20,7 @@
<body>
<div class="launcher">
<div class="title-bar">
<span>MineXLauncher 1.2</span>
<span>MineXLauncher 1.3</span>
</div>
<div class="content">
<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;
}
.page-not-found {
.error-page {
display: flex;
flex: 1;
flex-direction: column;
@ -596,24 +596,71 @@ select:focus {
justify-content: center;
}
.upload-button {
background-color: #075f07;
border: none;
padding: 8px 16px;
.version-select {
width: 100%;
padding: 0.5rem;
border: 2px solid #4a4a4a;
border-radius: 5px;
background-color: #1e1e1e;
color: #ffffff;
font-size: 1rem;
cursor: pointer;
color: #fff;
font-size: 18px;
font-weight: bold;
text-transform: none;
transition: background-color 0.2s, transform 0.2s;
appearance: none;
background-image: linear-gradient(45deg, transparent 50%, #ffffff 50%), linear-gradient(135deg, #1e1e1e 50%, transparent 50%);
background-position: right 0.7rem center, right 0.7rem center;
background-repeat: no-repeat;
background-size: 0.65rem auto, 0.65rem auto;
transition: border-color 0.3s, background-color 0.3s;
}
.upload-button:hover {
background-color: #197d19;
transform: scale(1.05);
.version-select:focus {
border-color: #4a90e2;
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);
}

View File

@ -19,7 +19,7 @@
<body>
<div class="launcher">
<div class="title-bar">
<span>MineXLauncher 1.2</span>
<span>MineXLauncher 1.3</span>
</div>
<div class="content">
<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>
<div class="launcher">
<div class="title-bar">
<span>MineXLauncher 1.2</span>
<span>MineXLauncher 1.3</span>
</div>
<div class="content">
<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>
<div class="launcher">
<div class="title-bar">
<span>MineXLauncher 1.2</span>
<span>MineXLauncher 1.3</span>
</div>
<div class="content">
<div class="sidebar">
@ -55,6 +55,11 @@
</div>
<div class="main-content">
<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>
<li>Added Eaglercraft 1.2.5</li>
<li>Added more mods and resource packs</li>

View File

@ -78,13 +78,13 @@ const game = {
},
archive(client: string) {
const clients: Record<string, string> = {
'1.8.8': '18-client-version',
'1.5.2': '15-client-version',
'1.8': '18-client-version',
'1.5': '15-client-version',
'b1.3': 'b13-client-version',
};
const dropdown = clients[client] ? (document.getElementById(clients[client]) as HTMLSelectElement) : null;
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();
}
},
@ -93,7 +93,7 @@ const game = {
const embed = {
create() {
const iframe = document.createElement('iframe');
iframe.id = 'embed';
iframe.id = 'iframe-container';
iframe.style.position = 'fixed';
iframe.style.top = '0';
iframe.style.left = '0';
@ -108,7 +108,7 @@ const embed = {
document.body.appendChild(iframe);
},
remove() {
const iframe = document.getElementById('embed');
const iframe = window.top?.document.getElementById('iframe-container');
iframe?.remove();
},
};