mirror of
https://github.com/zumbiepig/MineXLauncher.git
synced 2025-06-08 07:54:49 +00:00
format with prettier
This commit is contained in:
parent
9c68039064
commit
42f97d6f35
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -12,6 +12,8 @@ jobs:
|
|||||||
uses: oven-sh/setup-bun@v2
|
uses: oven-sh/setup-bun@v2
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: bun install --frozen-lockfile
|
run: bun install --frozen-lockfile
|
||||||
|
- name: Check formatting
|
||||||
|
run: bun run format:check
|
||||||
- name: Lint
|
- name: Lint
|
||||||
run: bun run lint
|
run: bun run lint
|
||||||
- name: Build
|
- name: Build
|
||||||
|
3
.prettierignore
Normal file
3
.prettierignore
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
src/game/
|
||||||
|
!src/game/web/*.html
|
||||||
|
src/resources/mods/downloads/
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"printWidth": 200,
|
"printWidth": 120,
|
||||||
"useTabs": true,
|
"useTabs": true,
|
||||||
"singleQuote": true
|
"singleQuote": true
|
||||||
}
|
}
|
||||||
|
6
.vscode/extensions.json
vendored
6
.vscode/extensions.json
vendored
@ -1,7 +1,3 @@
|
|||||||
{
|
{
|
||||||
"recommendations": [
|
"recommendations": ["oven.bun-vscode", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
|
||||||
"oven.bun-vscode",
|
|
||||||
"dbaeumer.vscode-eslint",
|
|
||||||
"esbenp.prettier-vscode"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnPaste": true,
|
"editor.formatOnPaste": true,
|
||||||
"livePreview.serverRoot": "public",
|
"livePreview.serverRoot": "public"
|
||||||
}
|
}
|
||||||
|
8
build.ts
8
build.ts
@ -70,7 +70,7 @@ if (!isDev) {
|
|||||||
minifyCSS: true,
|
minifyCSS: true,
|
||||||
minifyJS: true,
|
minifyJS: true,
|
||||||
continueOnParseError: true,
|
continueOnParseError: true,
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ if (!isDev) {
|
|||||||
//optionsPreset: 'medium-obfuscation',
|
//optionsPreset: 'medium-obfuscation',
|
||||||
target: 'browser',
|
target: 'browser',
|
||||||
})
|
})
|
||||||
.getObfuscatedCode()
|
.getObfuscatedCode(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -104,8 +104,8 @@ writeFileSync(
|
|||||||
JSON.stringify(
|
JSON.stringify(
|
||||||
getFiles(publicDir).map((asset) => {
|
getFiles(publicDir).map((asset) => {
|
||||||
return asset.replace(new RegExp(`^${publicDir}`), '').replace(/\/index\.html$/, '/');
|
return asset.replace(new RegExp(`^${publicDir}`), '').replace(/\/index\.html$/, '/');
|
||||||
})
|
}),
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log(chalk.green('Build complete!\n'));
|
console.log(chalk.green('Build complete!\n'));
|
||||||
|
@ -8,7 +8,9 @@
|
|||||||
"lint": "eslint ./src/resources/scripts/ && tsc",
|
"lint": "eslint ./src/resources/scripts/ && tsc",
|
||||||
"lint:fix": "eslint --fix ./src/resources/scripts/ && tsc",
|
"lint:fix": "eslint --fix ./src/resources/scripts/ && tsc",
|
||||||
"build": "NODE_ENV=production bun run ./build.ts",
|
"build": "NODE_ENV=production bun run ./build.ts",
|
||||||
"build:dev": "NODE_ENV=development bun run ./build.ts"
|
"build:dev": "NODE_ENV=development bun run ./build.ts",
|
||||||
|
"format": "prettier --write .",
|
||||||
|
"format:check": "prettier --check ."
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
@ -39,6 +41,7 @@
|
|||||||
"eslint": "^9.9.1",
|
"eslint": "^9.9.1",
|
||||||
"html-minifier": "^4.0.0",
|
"html-minifier": "^4.0.0",
|
||||||
"javascript-obfuscator": "^4.1.1",
|
"javascript-obfuscator": "^4.1.1",
|
||||||
|
"prettier": "^3.3.3",
|
||||||
"typescript-eslint": "^8.4.0"
|
"typescript-eslint": "^8.4.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
@ -28,7 +28,7 @@ debugLogger('Booting server.');
|
|||||||
app.use(
|
app.use(
|
||||||
helmet({
|
helmet({
|
||||||
contentSecurityPolicy: false,
|
contentSecurityPolicy: false,
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
app.use(morgan(isDev ? 'dev' : 'combined'));
|
app.use(morgan(isDev ? 'dev' : 'combined'));
|
||||||
@ -64,7 +64,9 @@ app
|
|||||||
})
|
})
|
||||||
.on('error', (error) => {
|
.on('error', (error) => {
|
||||||
if (error.code === 'EADDRINUSE') {
|
if (error.code === 'EADDRINUSE') {
|
||||||
console.error(chalk.red('EADDRINUSE') + chalk.gray(': ') + chalk.bold(`Failed to start server. Is port ${PORT} in use?`));
|
console.error(
|
||||||
|
chalk.red('EADDRINUSE') + chalk.gray(': ') + chalk.bold(`Failed to start server. Is port ${PORT} in use?`),
|
||||||
|
);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
24
src/404.html
24
src/404.html
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -13,7 +13,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -31,7 +38,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -39,7 +48,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.home.game()">
|
<li onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.articles()">
|
<li class="selected" onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -60,14 +67,22 @@
|
|||||||
<img class="article-icon" loading="lazy" src="/resources/images/icons/articles/mc-server.webp" />
|
<img class="article-icon" loading="lazy" src="/resources/images/icons/articles/mc-server.webp" />
|
||||||
<div class="article-details">
|
<div class="article-details">
|
||||||
<strong class="article-name">How To Make An Eaglercraft Server</strong>
|
<strong class="article-name">How To Make An Eaglercraft Server</strong>
|
||||||
<p class="article-description">Have you ever wondered how to make an Eaglercraft Server? Read this article to find out how!</p>
|
<p class="article-description">
|
||||||
|
Have you ever wondered how to make an Eaglercraft Server? Read this article to find out how!
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="article-item" onclick="article.open('cloudflare-tunnel')">
|
<div class="article-item" onclick="article.open('cloudflare-tunnel')">
|
||||||
<img class="article-icon" loading="lazy" src="/resources/images/icons/articles/cloudflare-tunnel.webp" />
|
<img
|
||||||
|
class="article-icon"
|
||||||
|
loading="lazy"
|
||||||
|
src="/resources/images/icons/articles/cloudflare-tunnel.webp"
|
||||||
|
/>
|
||||||
<div class="article-details">
|
<div class="article-details">
|
||||||
<strong class="article-name">Setting Up a Cloudflare Tunnel for an Eaglercraft Server</strong>
|
<strong class="article-name">Setting Up a Cloudflare Tunnel for an Eaglercraft Server</strong>
|
||||||
<p class="article-description">This brief guide walks you through configuring a Cloudflare Tunnel for your Eaglercraft server.</p>
|
<p class="article-description">
|
||||||
|
This brief guide walks you through configuring a Cloudflare Tunnel for your Eaglercraft server.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -76,7 +91,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -84,7 +101,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div id="article-mc-server" class="article">
|
<div id="article-mc-server" class="article">
|
||||||
<div class="article-content">
|
<div class="article-content">
|
||||||
@ -96,16 +120,27 @@
|
|||||||
<h3>Prerequisites</h3>
|
<h3>Prerequisites</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>A server/computer with stable internet access and decent bandwidth</li>
|
<li>A server/computer with stable internet access and decent bandwidth</li>
|
||||||
<li>Java 17 installed (Get it from <a href="https://adoptium.net/temurin/releases/?version=17" target="_blank">here</a>)</li>
|
<li>
|
||||||
|
Java 17 installed (Get it from
|
||||||
|
<a href="https://adoptium.net/temurin/releases/?version=17" target="_blank">here</a>)
|
||||||
|
</li>
|
||||||
<li>Basic knowledge of your OS's command-line/terminal</li>
|
<li>Basic knowledge of your OS's command-line/terminal</li>
|
||||||
<li>Access to your network router (for port forwarding)</li>
|
<li>Access to your network router (for port forwarding)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Step 1: Set Up Bungee</h3>
|
<h3>Step 1: Set Up Bungee</h3>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Download the latest version of Bungee from <a href="https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar" target="_blank">here</a>.</li>
|
<li>
|
||||||
|
Download the latest version of Bungee from
|
||||||
|
<a
|
||||||
|
href="https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar"
|
||||||
|
target="_blank"
|
||||||
|
>here</a
|
||||||
|
>.
|
||||||
|
</li>
|
||||||
<li>Create a new directory for your server and place the Bungee JAR file in it</li>
|
<li>Create a new directory for your server and place the Bungee JAR file in it</li>
|
||||||
<li>
|
<li>
|
||||||
Create a start script (e.g., <code>start.bat</code> for Windows or <code>start.sh</code> for Linux) with the following content:
|
Create a start script (e.g., <code>start.bat</code> for Windows or <code>start.sh</code> for Linux) with the
|
||||||
|
following content:
|
||||||
<pre><code>java -Xms512M -Xmx512M -jar bungee.jar</code></pre>
|
<pre><code>java -Xms512M -Xmx512M -jar bungee.jar</code></pre>
|
||||||
</li>
|
</li>
|
||||||
<li>Run the start script to generate configuration files, then stop the server</li>
|
<li>Run the start script to generate configuration files, then stop the server</li>
|
||||||
@ -116,18 +151,30 @@
|
|||||||
<li>Download a compatible Minecraft server JAR (e.g., Paper)</li>
|
<li>Download a compatible Minecraft server JAR (e.g., Paper)</li>
|
||||||
<li>Set up the backend server in a separate directory</li>
|
<li>Set up the backend server in a separate directory</li>
|
||||||
<li>
|
<li>
|
||||||
Create a start script (e.g., <code>start.bat</code> for Windows or <code>start.sh</code> for Linux) with the following content:
|
Create a start script (e.g., <code>start.bat</code> for Windows or <code>start.sh</code> for Linux) with the
|
||||||
|
following content:
|
||||||
<pre><code>java -Xms1024M -Xmx1024M -jar server.jar</code></pre>
|
<pre><code>java -Xms1024M -Xmx1024M -jar server.jar</code></pre>
|
||||||
</li>
|
</li>
|
||||||
<li>Configure <code>server.properties</code> (Disable online mode, change the port, etc.)</li>
|
<li>Configure <code>server.properties</code> (Disable online mode, change the port, etc.)</li>
|
||||||
<li>Configure <code>spigot.yml</code> to have this: <code>bungeecord: true</code></li>
|
<li>Configure <code>spigot.yml</code> to have this: <code>bungeecord: true</code></li>
|
||||||
<li>If your server is on a different version than 1.8.8, you need to download the <a href="https://viaversion.com/setup" target="_blank">ViaVersion plugins</a>.</li>
|
<li>
|
||||||
<li>Add the backend server to your Bungee <code>config.yml</code> by scrolling to the servers section and editing/adding an entry for your server, such as <code>localhost:port</code>.</li>
|
If your server is on a different version than 1.8.8, you need to download the
|
||||||
|
<a href="https://viaversion.com/setup" target="_blank">ViaVersion plugins</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Add the backend server to your Bungee <code>config.yml</code> by scrolling to the servers section and
|
||||||
|
editing/adding an entry for your server, such as <code>localhost:port</code>.
|
||||||
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Step 3: Install EaglerXBungee Plugin</h3>
|
<h3>Step 3: Install EaglerXBungee Plugin</h3>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
Download the EaglerXBungee plugin from <a href="https://git.eaglercraft.rip/eaglercraft/eaglercraft-builds/raw/branch/main/EaglercraftX_1.8_EaglerXBungee.jar" target="_blank">here</a>.
|
Download the EaglerXBungee plugin from
|
||||||
|
<a
|
||||||
|
href="https://git.eaglercraft.rip/eaglercraft/eaglercraft-builds/raw/branch/main/EaglercraftX_1.8_EaglerXBungee.jar"
|
||||||
|
target="_blank"
|
||||||
|
>here</a
|
||||||
|
>.
|
||||||
</li>
|
</li>
|
||||||
<li>Place the downloaded JAR file in the Bungee server's <code>plugins</code> folder</li>
|
<li>Place the downloaded JAR file in the Bungee server's <code>plugins</code> folder</li>
|
||||||
<li>Restart the Bungee server to generate the plugin's configuration files</li>
|
<li>Restart the Bungee server to generate the plugin's configuration files</li>
|
||||||
@ -144,7 +191,10 @@
|
|||||||
<h3>Step 5: Port Forwarding</h3>
|
<h3>Step 5: Port Forwarding</h3>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Access your router's admin panel</li>
|
<li>Access your router's admin panel</li>
|
||||||
<li>Set up port forwarding for port <code>8081</code> (or whichever port you configured for EaglerXBungee) to your server's local IP address</li>
|
<li>
|
||||||
|
Set up port forwarding for port <code>8081</code> (or whichever port you configured for EaglerXBungee) to
|
||||||
|
your server's local IP address
|
||||||
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Step 6: Domain Configuration (Optional)</h3>
|
<h3>Step 6: Domain Configuration (Optional)</h3>
|
||||||
<p>If you want to use a custom domain:</p>
|
<p>If you want to use a custom domain:</p>
|
||||||
@ -158,12 +208,18 @@
|
|||||||
<li>Restart Caddy to apply these changes, using <code>caddy stop</code> and <code>caddy start</code>.</li>
|
<li>Restart Caddy to apply these changes, using <code>caddy stop</code> and <code>caddy start</code>.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Step 7: Connecting to Your Server</h3>
|
<h3>Step 7: Connecting to Your Server</h3>
|
||||||
<p>Players can connect to your server using an Eaglercraft client such as MineXLauncher, and entering your server's IP address or domain and port.</p>
|
<p>
|
||||||
|
Players can connect to your server using an Eaglercraft client such as MineXLauncher, and entering your
|
||||||
|
server's IP address or domain and port.
|
||||||
|
</p>
|
||||||
<p>Examples:</p>
|
<p>Examples:</p>
|
||||||
<li><code>wss://localhost</code></li>
|
<li><code>wss://localhost</code></li>
|
||||||
<li><code>wss://example.com</code></li>
|
<li><code>wss://example.com</code></li>
|
||||||
<h3>Security Considerations</h3>
|
<h3>Security Considerations</h3>
|
||||||
<p>Ensure you keep all software (especially the EaglerXBungee plugin) up to date and properly secure your server to protect against potential vulnerabilities.</p>
|
<p>
|
||||||
|
Ensure you keep all software (especially the EaglerXBungee plugin) up to date and properly secure your server
|
||||||
|
to protect against potential vulnerabilities.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="article-cloudflare-tunnel" class="article">
|
<div id="article-cloudflare-tunnel" class="article">
|
||||||
@ -171,7 +227,10 @@
|
|||||||
<span class="close-button" onclick="article.close('cloudflare-tunnel')">×</span>
|
<span class="close-button" onclick="article.close('cloudflare-tunnel')">×</span>
|
||||||
<h1>Setting Up a Cloudflare Tunnel for an Eaglercraft Server</h1>
|
<h1>Setting Up a Cloudflare Tunnel for an Eaglercraft Server</h1>
|
||||||
<h5>Written by zumbiepig and SpeedSlicer</h5>
|
<h5>Written by zumbiepig and SpeedSlicer</h5>
|
||||||
<p>In this guide, we'll walk you through the steps to set up a Cloudflare Tunnel for your Eaglercraft server, which is running on <code>ws://localhost:8081</code>.</p>
|
<p>
|
||||||
|
In this guide, we'll walk you through the steps to set up a Cloudflare Tunnel for your Eaglercraft server,
|
||||||
|
which is running on <code>ws://localhost:8081</code>.
|
||||||
|
</p>
|
||||||
<h3>Prerequisites</h3>
|
<h3>Prerequisites</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>An Eaglercraft server running on <code>ws://localhost:8081</code></li>
|
<li>An Eaglercraft server running on <code>ws://localhost:8081</code></li>
|
||||||
@ -180,7 +239,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<h3>Step 1: Access Cloudflare Tunnels</h3>
|
<h3>Step 1: Access Cloudflare Tunnels</h3>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Go to the <a href="https://dash.cloudflare.com/" target="_blank">Dashboard</a> and log in to your Cloudflare account.</li>
|
<li>
|
||||||
|
Go to the <a href="https://dash.cloudflare.com/" target="_blank">Dashboard</a> and log in to your Cloudflare
|
||||||
|
account.
|
||||||
|
</li>
|
||||||
<li>Navigate to the <strong>Zero Trust</strong> page using the navigation bar on the left.</li>
|
<li>Navigate to the <strong>Zero Trust</strong> page using the navigation bar on the left.</li>
|
||||||
<li>Sign up for Cloudflare Zero Trust with the Free Plan if you have not already.</li>
|
<li>Sign up for Cloudflare Zero Trust with the Free Plan if you have not already.</li>
|
||||||
<li>Once you are in the dashboard, navigate to <strong>Networks</strong> > <strong>Tunnels</strong>.</li>
|
<li>Once you are in the dashboard, navigate to <strong>Networks</strong> > <strong>Tunnels</strong>.</li>
|
||||||
@ -190,7 +252,10 @@
|
|||||||
<li>Click on <strong>Create a tunnel</strong>, and select <strong>Cloudflared</strong>.</li>
|
<li>Click on <strong>Create a tunnel</strong>, and select <strong>Cloudflared</strong>.</li>
|
||||||
<li>Click <strong>Next</strong>.</li>
|
<li>Click <strong>Next</strong>.</li>
|
||||||
<li>Enter a name for the tunnel.</li>
|
<li>Enter a name for the tunnel.</li>
|
||||||
<li>Follow the instructions provided on the site to install the tunnel.<br />You should do these instructions on the computer that your Eaglercraft server is running on.</li>
|
<li>
|
||||||
|
Follow the instructions provided on the site to install the tunnel.<br />You should do these instructions on
|
||||||
|
the computer that your Eaglercraft server is running on.
|
||||||
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Step 3: Configure Domain/Subdomain</h3>
|
<h3>Step 3: Configure Domain/Subdomain</h3>
|
||||||
<ol>
|
<ol>
|
||||||
@ -202,7 +267,10 @@
|
|||||||
<ol>
|
<ol>
|
||||||
<li>Start your Eaglercraft server.</li>
|
<li>Start your Eaglercraft server.</li>
|
||||||
<li>In Eaglercraft, connect to the domain or subdomain you set up.</li>
|
<li>In Eaglercraft, connect to the domain or subdomain you set up.</li>
|
||||||
<li>You're all set! Players can now join your server using the domain that you linked your tunnel to.<br />Example: <code>wss://example.com</code></li>
|
<li>
|
||||||
|
You're all set! Players can now join your server using the domain that you linked your tunnel to.<br />Example:
|
||||||
|
<code>wss://example.com</code>
|
||||||
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.home.game()">
|
<li class="selected" onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -183,7 +190,6 @@
|
|||||||
<option value="22m02a">22m02a</option>
|
<option value="22m02a">22m02a</option>
|
||||||
<option value="22m01a">22m01a</option>
|
<option value="22m01a">22m01a</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</optgroup>
|
|
||||||
<optgroup label="Pre-Releases">
|
<optgroup label="Pre-Releases">
|
||||||
<option value="21m12-24">21m12-24</option>
|
<option value="21m12-24">21m12-24</option>
|
||||||
<option value="21m12-17">21m12-17</option>
|
<option value="21m12-17">21m12-17</option>
|
||||||
@ -205,15 +211,32 @@
|
|||||||
</select>
|
</select>
|
||||||
<button class="archive-button" onclick="game.archive('b1.3')">Open</button>
|
<button class="archive-button" onclick="game.archive('b1.3')">Open</button>
|
||||||
</div>
|
</div>
|
||||||
<button class="archive-link" onclick="window.open('https://archive.eaglercraft.rip/EaglercraftX_1.8/server/')">1.8 EaglerXBungee Jar</button>
|
<button
|
||||||
<button class="archive-link" onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_1.5/server/')">Eaglercraft 1.5 Server</button>
|
class="archive-link"
|
||||||
<button class="archive-link" onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_b1.3/server/')">Eaglercraft Beta 1.3 Server</button>
|
onclick="window.open('https://archive.eaglercraft.rip/EaglercraftX_1.8/server/')"
|
||||||
|
>
|
||||||
|
1.8 EaglerXBungee Jar
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="archive-link"
|
||||||
|
onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_1.5/server/')"
|
||||||
|
>
|
||||||
|
Eaglercraft 1.5 Server
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="archive-link"
|
||||||
|
onclick="window.open('https://archive.eaglercraft.rip/Eaglercraft_b1.3/server/')"
|
||||||
|
>
|
||||||
|
Eaglercraft Beta 1.3 Server
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -221,7 +244,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.home.game()">
|
<li class="selected" onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -98,7 +105,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -106,7 +115,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.home.game()">
|
<li class="selected" onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -90,7 +97,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.home.game()">
|
<li class="selected" onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -118,7 +125,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -126,7 +135,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -9,7 +9,10 @@
|
|||||||
<link rel="manifest" href="/manifest.json" />
|
<link rel="manifest" href="/manifest.json" />
|
||||||
<link rel="canonical" href="https://launcher.orionzleon.me/" />
|
<link rel="canonical" href="https://launcher.orionzleon.me/" />
|
||||||
<meta name="theme-color" content="#333" />
|
<meta name="theme-color" content="#333" />
|
||||||
<meta name="description" content="MineXLauncher is a custom launcher for Eaglercraft that has many versions and clients." />
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="MineXLauncher is a custom launcher for Eaglercraft that has many versions and clients."
|
||||||
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="keywords"
|
name="keywords"
|
||||||
content="minex, minexlauncher, launcher, custom launcher, modded minecraft, modded, minecraft, minecraft eaglercraft, eaglercraft, eaglercraftx, eaglercraftl, eagler, eaglerx, eaglerl, download, unblocked, minecraft versions, 1.2.5, 1.5.2, 1.5, 1.8, 1.8.8, 1.9, 1.9.4, 1.12, 1.3, 1.7.3, b1.3, b1.7.3, alpha, alpha 1.2.6, beta, beta 1.3, beta 1.7.3, a1.2.6, resent, shadow, client, resent client, shadow client, cracked, crack, cracked minecraft, hack, hacked, hacks, hacked client, hack client, free minecraft, pvp, minecraft download, offline, online, web, host, hosted, servers, multiplayer, custom launcher, skins, packs, textures, resource, mods, mod, mod download, pack download, texture download, texture pack download, fps, high fps, better fps, high fps, speed, fast, faster, lag, laggy, no lag, eaglerforge, forge, javascript, hack launcher, exploits, cheats, grief, griefing, mine"
|
content="minex, minexlauncher, launcher, custom launcher, modded minecraft, modded, minecraft, minecraft eaglercraft, eaglercraft, eaglercraftx, eaglercraftl, eagler, eaglerx, eaglerl, download, unblocked, minecraft versions, 1.2.5, 1.5.2, 1.5, 1.8, 1.8.8, 1.9, 1.9.4, 1.12, 1.3, 1.7.3, b1.3, b1.7.3, alpha, alpha 1.2.6, beta, beta 1.3, beta 1.7.3, a1.2.6, resent, shadow, client, resent client, shadow client, cracked, crack, cracked minecraft, hack, hacked, hacks, hacked client, hack client, free minecraft, pvp, minecraft download, offline, online, web, host, hosted, servers, multiplayer, custom launcher, skins, packs, textures, resource, mods, mod, mod download, pack download, texture download, texture pack download, fps, high fps, better fps, high fps, speed, fast, faster, lag, laggy, no lag, eaglerforge, forge, javascript, hack launcher, exploits, cheats, grief, griefing, mine"
|
||||||
@ -18,7 +21,10 @@
|
|||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:image" content="/resources/images/icons/minexlauncher.webp" />
|
<meta property="og:image" content="/resources/images/icons/minexlauncher.webp" />
|
||||||
<meta property="og:url" content="https://launcher.orionzleon.me/" />
|
<meta property="og:url" content="https://launcher.orionzleon.me/" />
|
||||||
<meta property="og:description" content="MineXLauncher is a custom launcher for Eaglercraft that has many versions and clients." />
|
<meta
|
||||||
|
property="og:description"
|
||||||
|
content="MineXLauncher is a custom launcher for Eaglercraft that has many versions and clients."
|
||||||
|
/>
|
||||||
<meta property="og:locale" content="en-US" />
|
<meta property="og:locale" content="en-US" />
|
||||||
<script src="/resources/scripts/google-tag.js"></script>
|
<script src="/resources/scripts/google-tag.js"></script>
|
||||||
<script src="/resources/scripts/main.js"></script>
|
<script src="/resources/scripts/main.js"></script>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -18,12 +18,12 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item selected" onclick="navigate.mobile()">
|
<li class="selected" onclick="navigate.mobile()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Mobile Site</span>
|
<span>Mobile Site</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -37,14 +37,22 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="installations">
|
<div class="installations">
|
||||||
<button class="play-button" onclick="game.play('/game/web/main/1.8.8/?mobile=true')">Play</button>
|
<button class="play-button" onclick="game.play('/game/web/main/1.8.8/?mobile=true')">Play</button>
|
||||||
<a class="play-button" style="text-decoration: none" href="/game/offline/mobile/EaglerPocketMobile_1.8.8.html" download>Download Offline</a>
|
<a
|
||||||
|
class="play-button"
|
||||||
|
style="text-decoration: none"
|
||||||
|
href="/game/offline/mobile/EaglerPocketMobile_1.8.8.html"
|
||||||
|
download
|
||||||
|
>Download Offline</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.home.game()">
|
<li onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.mods.mods()">
|
<li class="selected" onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -67,7 +74,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -75,7 +84,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.home.game()">
|
<li onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.mods.mods()">
|
<li class="selected" onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -64,7 +71,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -72,7 +81,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -13,7 +13,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -31,7 +38,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -39,7 +48,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -19,12 +19,12 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item selected" href="/offline/">
|
<li class="selected" href="/offline/">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Offline</span>
|
<span>Offline</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -61,11 +61,17 @@
|
|||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<span>1.2.5</span>
|
<span>1.2.5</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="custom-option" onclick="game.select('/game/offline/main/Eaglercraft_b1.7.3.html', 'Beta 1.7.3')">
|
<div
|
||||||
|
class="custom-option"
|
||||||
|
onclick="game.select('/game/offline/main/Eaglercraft_b1.7.3.html', 'Beta 1.7.3')"
|
||||||
|
>
|
||||||
<img src="/resources/images/icons/clients/all.webp" />
|
<img src="/resources/images/icons/clients/all.webp" />
|
||||||
<span>Beta 1.7.3</span>
|
<span>Beta 1.7.3</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="custom-option" onclick="game.select('/game/offline/main/Eaglercraft_b1.3.html', 'Beta 1.3')">
|
<div
|
||||||
|
class="custom-option"
|
||||||
|
onclick="game.select('/game/offline/main/Eaglercraft_b1.3.html', 'Beta 1.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.3</span>
|
||||||
</div>
|
</div>
|
||||||
@ -86,7 +92,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -94,7 +102,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -44,11 +44,17 @@
|
|||||||
"updates": [
|
"updates": [
|
||||||
{
|
{
|
||||||
"version": "1.6.1",
|
"version": "1.6.1",
|
||||||
"changelog": ["Eaglercraft 1.9 has been updated to v0.7.0", "Tutorials have been added to the launcher, go check them out!"]
|
"changelog": [
|
||||||
|
"Eaglercraft 1.9 has been updated to v0.7.0",
|
||||||
|
"Tutorials have been added to the launcher, go check them out!"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": "1.6",
|
"version": "1.6",
|
||||||
"changelog": ["You can now install mods directly from the mods list", "Bugfix: Themes no longer flicker when navigating"]
|
"changelog": [
|
||||||
|
"You can now install mods directly from the mods list",
|
||||||
|
"Bugfix: Themes no longer flicker when navigating"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": "1.5",
|
"version": "1.5",
|
||||||
|
@ -14,7 +14,19 @@ window.addEventListener('load', function () {
|
|||||||
{ addr: 'wss://relay.shhnowisnottheti.me/', name: 'ayunami relay #1', primary: relayId === 2 },
|
{ addr: 'wss://relay.shhnowisnottheti.me/', name: 'ayunami relay #1', primary: relayId === 2 },
|
||||||
],
|
],
|
||||||
mainMenu: {
|
mainMenu: {
|
||||||
splashes: ['Darviglet!', 'eaglerenophile!', 'You Eagler!', 'Yeeeeeee!', 'yeee', 'EEEEEEEEE!', 'You Darvig!', 'You Vigg!', ':>', '|>', 'You Yumpster!'],
|
splashes: [
|
||||||
|
'Darviglet!',
|
||||||
|
'eaglerenophile!',
|
||||||
|
'You Eagler!',
|
||||||
|
'Yeeeeeee!',
|
||||||
|
'yeee',
|
||||||
|
'EEEEEEEEE!',
|
||||||
|
'You Darvig!',
|
||||||
|
'You Vigg!',
|
||||||
|
':>',
|
||||||
|
'|>',
|
||||||
|
'You Yumpster!',
|
||||||
|
],
|
||||||
eaglerLogo: false,
|
eaglerLogo: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -2,7 +2,10 @@
|
|||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
||||||
try {
|
try {
|
||||||
unsafeWindow.console.warn("DANGER: This userscript is using unsafeWindow. Unsafe websites could potentially use this to gain access to data and other content that the browser normally wouldn't allow!"), Object.defineProperty(window, 'clientWindow', { value: unsafeWindow });
|
unsafeWindow.console.warn(
|
||||||
|
"DANGER: This userscript is using unsafeWindow. Unsafe websites could potentially use this to gain access to data and other content that the browser normally wouldn't allow!",
|
||||||
|
),
|
||||||
|
Object.defineProperty(window, 'clientWindow', { value: unsafeWindow });
|
||||||
} catch {
|
} catch {
|
||||||
Object.defineProperty(window, 'clientWindow', { value: window });
|
Object.defineProperty(window, 'clientWindow', { value: window });
|
||||||
}
|
}
|
||||||
@ -135,8 +138,8 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (...A) {
|
function (...A) {
|
||||||
if (A[0].isValid || !clientWindow.keyboardFix) return I.apply(this, A);
|
if (A[0].isValid || !clientWindow.keyboardFix) return I.apply(this, A);
|
||||||
},
|
},
|
||||||
...g
|
...g,
|
||||||
)
|
)
|
||||||
: i.call(this, A, I, ...g);
|
: i.call(this, A, I, ...g);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -206,7 +209,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
(g.hidden = !0), (g.style.display = 'none');
|
(g.hidden = !0), (g.style.display = 'none');
|
||||||
},
|
},
|
||||||
{ passive: !1, once: !0 }
|
{ passive: !1, once: !0 },
|
||||||
),
|
),
|
||||||
clientWindow.addEventListener(
|
clientWindow.addEventListener(
|
||||||
'focus',
|
'focus',
|
||||||
@ -215,7 +218,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
(g.hidden = !0), (g.style.display = 'none');
|
(g.hidden = !0), (g.style.display = 'none');
|
||||||
}, 300);
|
}, 300);
|
||||||
},
|
},
|
||||||
{ once: !0 }
|
{ once: !0 },
|
||||||
),
|
),
|
||||||
document.body.appendChild(g)),
|
document.body.appendChild(g)),
|
||||||
g
|
g
|
||||||
@ -235,7 +238,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
A.preventDefault();
|
A.preventDefault();
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
i.addEventListener('contextmenu', function (A) {
|
i.addEventListener('contextmenu', function (A) {
|
||||||
A.preventDefault();
|
A.preventDefault();
|
||||||
@ -263,17 +266,19 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
g.preventDefault();
|
g.preventDefault();
|
||||||
const e = g.targetTouches[0];
|
const e = g.targetTouches[0];
|
||||||
A || ((A = e.pageX), (I = e.pageY)), (g.movementX = e.pageX - A), (g.movementY = e.pageY - I);
|
A || ((A = e.pageX), (I = e.pageY)), (g.movementX = e.pageX - A), (g.movementY = e.pageY - I);
|
||||||
var C = clientWindow.fakelock ? new MouseEvent('mousemove', { movementX: g.movementX, movementY: g.movementY }) : new WheelEvent('wheel', { wheelDeltaY: g.movementY });
|
var C = clientWindow.fakelock
|
||||||
|
? new MouseEvent('mousemove', { movementX: g.movementX, movementY: g.movementY })
|
||||||
|
: new WheelEvent('wheel', { wheelDeltaY: g.movementY });
|
||||||
i.dispatchEvent(C), (A = e.pageX), (I = e.pageY);
|
i.dispatchEvent(C), (A = e.pageX), (I = e.pageY);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
i.addEventListener(
|
i.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (g) {
|
function (g) {
|
||||||
(A = null), (I = null);
|
(A = null), (I = null);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
d(null != clientWindow.fakelock);
|
d(null != clientWindow.fakelock);
|
||||||
let e = Z('strafeRightButton', 'inGame', 'div');
|
let e = Z('strafeRightButton', 'inGame', 'div');
|
||||||
@ -287,7 +292,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('w', 'keydown'), e.classList.remove('hide'), c.classList.remove('hide'), n.classList.add('active');
|
C('w', 'keydown'), e.classList.remove('hide'), c.classList.remove('hide'), n.classList.add('active');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
n.addEventListener(
|
n.addEventListener(
|
||||||
'touchmove',
|
'touchmove',
|
||||||
@ -296,16 +301,28 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
const I = A.targetTouches[0];
|
const I = A.targetTouches[0];
|
||||||
g || (g = I.pageX);
|
g || (g = I.pageX);
|
||||||
let i = I.pageX - g;
|
let i = I.pageX - g;
|
||||||
10 * i > clientWindow.innerHeight ? (e.classList.add('active'), c.classList.remove('active'), C('d', 'keydown'), C('a', 'keyup')) : 10 * i < 0 - clientWindow.innerHeight ? (c.classList.add('active'), e.classList.remove('active'), C('a', 'keydown'), C('d', 'keyup')) : (e.classList.remove('active'), c.classList.remove('active'));
|
10 * i > clientWindow.innerHeight
|
||||||
|
? (e.classList.add('active'), c.classList.remove('active'), C('d', 'keydown'), C('a', 'keyup'))
|
||||||
|
: 10 * i < 0 - clientWindow.innerHeight
|
||||||
|
? (c.classList.add('active'), e.classList.remove('active'), C('a', 'keydown'), C('d', 'keyup'))
|
||||||
|
: (e.classList.remove('active'), c.classList.remove('active'));
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
n.addEventListener(
|
n.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('w', 'keyup'), C('d', 'keyup'), C('a', 'keyup'), e.classList.remove('active'), c.classList.remove('active'), e.classList.add('hide'), c.classList.add('hide'), n.classList.remove('active'), (g = null);
|
C('w', 'keyup'),
|
||||||
|
C('d', 'keyup'),
|
||||||
|
C('a', 'keyup'),
|
||||||
|
e.classList.remove('active'),
|
||||||
|
c.classList.remove('active'),
|
||||||
|
e.classList.add('hide'),
|
||||||
|
c.classList.add('hide'),
|
||||||
|
n.classList.remove('active'),
|
||||||
|
(g = null);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
e.classList.add('hide'),
|
e.classList.add('hide'),
|
||||||
c.classList.add('hide'),
|
c.classList.add('hide'),
|
||||||
@ -317,14 +334,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('d', 'keydown');
|
C('d', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
o.addEventListener(
|
o.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('d', 'keyup');
|
C('d', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(o);
|
document.body.appendChild(o);
|
||||||
let l = Z('leftButton', 'inGame');
|
let l = Z('leftButton', 'inGame');
|
||||||
@ -334,14 +351,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('a', 'keydown');
|
C('a', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
l.addEventListener(
|
l.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('a', 'keyup');
|
C('a', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(l);
|
document.body.appendChild(l);
|
||||||
let b = Z('backButton', 'inGame');
|
let b = Z('backButton', 'inGame');
|
||||||
@ -351,14 +368,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('s', 'keydown');
|
C('s', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
b.addEventListener(
|
b.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('s', 'keyup');
|
C('s', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(b);
|
document.body.appendChild(b);
|
||||||
let w = Z('jumpButton', 'inGame');
|
let w = Z('jumpButton', 'inGame');
|
||||||
@ -368,14 +385,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C(' ', 'keydown');
|
C(' ', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
w.addEventListener(
|
w.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C(' ', 'keyup');
|
C(' ', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(w);
|
document.body.appendChild(w);
|
||||||
let M = Z('crouchButton', 'inGame');
|
let M = Z('crouchButton', 'inGame');
|
||||||
@ -389,14 +406,16 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
(clientWindow.crouchLock = null != clientWindow.crouchLock), M.classList.toggle('active');
|
(clientWindow.crouchLock = null != clientWindow.crouchLock), M.classList.toggle('active');
|
||||||
}, 1e3));
|
}, 1e3));
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
M.addEventListener(
|
M.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
clientWindow.crouchLock || (C('shift', 'keyup'), M.classList.remove('active'), (clientWindow.crouchLock = !1)), clearTimeout(clientWindow.crouchTimer);
|
clientWindow.crouchLock ||
|
||||||
|
(C('shift', 'keyup'), M.classList.remove('active'), (clientWindow.crouchLock = !1)),
|
||||||
|
clearTimeout(clientWindow.crouchTimer);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(M);
|
document.body.appendChild(M);
|
||||||
let v = Z('inventoryButton', 'inGame');
|
let v = Z('inventoryButton', 'inGame');
|
||||||
@ -406,14 +425,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('e', 'keydown');
|
C('e', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
v.addEventListener(
|
v.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('e', 'keyup');
|
C('e', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(v);
|
document.body.appendChild(v);
|
||||||
let m = Z('exitButton', 'inMenu');
|
let m = Z('exitButton', 'inMenu');
|
||||||
@ -423,53 +442,71 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('`', 'keydown');
|
C('`', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
m.addEventListener(
|
m.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('`', 'keyup');
|
C('`', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(m);
|
document.body.appendChild(m);
|
||||||
let h = document.createElement('input', !0);
|
let h = document.createElement('input', !0);
|
||||||
(h.id = 'hiddenInput'),
|
(h.id = 'hiddenInput'),
|
||||||
h.classList.add('inMenu'),
|
h.classList.add('inMenu'),
|
||||||
(h.style.cssText = 'position:absolute;top: 0vh; margin: auto; left: 8vh; right:0vh; width: 8vh; height: 8vh;font-size:20px;z-index: -10;color: transparent;text-shadow: 0 0 0 black;'),
|
(h.style.cssText =
|
||||||
|
'position:absolute;top: 0vh; margin: auto; left: 8vh; right:0vh; width: 8vh; height: 8vh;font-size:20px;z-index: -10;color: transparent;text-shadow: 0 0 0 black;'),
|
||||||
h.addEventListener(
|
h.addEventListener(
|
||||||
'beforeinput',
|
'beforeinput',
|
||||||
function (A) {
|
function (A) {
|
||||||
A.stopImmediatePropagation(), A.preventDefault(!0);
|
A.stopImmediatePropagation(), A.preventDefault(!0);
|
||||||
let I = 'insertLineBreak' == A.inputType ? 'return' : null == A.data ? 'delete' : A.data.slice(-1);
|
let I = 'insertLineBreak' == A.inputType ? 'return' : null == A.data ? 'delete' : A.data.slice(-1);
|
||||||
if ((clientWindow.lastKey || (clientWindow.console.warn('Enabling blocking duplicate key events. Some functionality may be lost.'), (clientWindow.inputFix = !0)), clientWindow.keyboardFix))
|
if (
|
||||||
|
(clientWindow.lastKey ||
|
||||||
|
(clientWindow.console.warn('Enabling blocking duplicate key events. Some functionality may be lost.'),
|
||||||
|
(clientWindow.inputFix = !0)),
|
||||||
|
clientWindow.keyboardFix)
|
||||||
|
)
|
||||||
if ('insertLineBreak' == A.inputType) C('enter', 'keydown'), C('enter', 'keyup');
|
if ('insertLineBreak' == A.inputType) C('enter', 'keydown'), C('enter', 'keyup');
|
||||||
else {
|
else {
|
||||||
const g = A.inputType.slice(0, 1);
|
const g = A.inputType.slice(0, 1);
|
||||||
if ('i' == g && A.data) {
|
if ('i' == g && A.data) {
|
||||||
if (clientWindow.lastKey == I && clientWindow.blockNextInput && clientWindow.inputFix) clientWindow.blockNextInput = !1;
|
if (clientWindow.lastKey == I && clientWindow.blockNextInput && clientWindow.inputFix)
|
||||||
|
clientWindow.blockNextInput = !1;
|
||||||
else {
|
else {
|
||||||
I.toLowerCase() != I ? (C('shift', 'keydown'), C(I, 'keydown'), C(I, 'keyup'), C('shift', 'keyup')) : (C(I, 'keydown'), C(I, 'keyup')), (clientWindow.blockNextInput = !0);
|
I.toLowerCase() != I
|
||||||
|
? (C('shift', 'keydown'), C(I, 'keydown'), C(I, 'keyup'), C('shift', 'keyup'))
|
||||||
|
: (C(I, 'keydown'), C(I, 'keyup')),
|
||||||
|
(clientWindow.blockNextInput = !0);
|
||||||
}
|
}
|
||||||
} else ('d' != g && A.data) || (C('backspace', 'keydown'), C('backspace', 'keyup'), (clientWindow.blockNextInput = !1));
|
} else
|
||||||
|
('d' != g && A.data) ||
|
||||||
|
(C('backspace', 'keydown'), C('backspace', 'keyup'), (clientWindow.blockNextInput = !1));
|
||||||
}
|
}
|
||||||
(clientWindow.lastKey = I), (h.value = ' ');
|
(clientWindow.lastKey = I), (h.value = ' ');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
h.addEventListener(
|
h.addEventListener(
|
||||||
'input',
|
'input',
|
||||||
function (A) {
|
function (A) {
|
||||||
' ' != h.value && (h.value = ' ');
|
' ' != h.value && (h.value = ' ');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
h.addEventListener(
|
h.addEventListener(
|
||||||
'keydown',
|
'keydown',
|
||||||
function (A) {
|
function (A) {
|
||||||
(229 != A.keyCode && 229 != A.which) || clientWindow.keyboardFix || (clientWindow.console.warn('Switching from keydown to input events due to invalid KeyboardEvent. Some functionality will be lost.'), (clientWindow.keyboardFix = !0), clientWindow.lastKey && (C(clientWindow.lastKey, 'keydown'), C(clientWindow.lastKey, 'keyup')));
|
(229 != A.keyCode && 229 != A.which) ||
|
||||||
|
clientWindow.keyboardFix ||
|
||||||
|
(clientWindow.console.warn(
|
||||||
|
'Switching from keydown to input events due to invalid KeyboardEvent. Some functionality will be lost.',
|
||||||
|
),
|
||||||
|
(clientWindow.keyboardFix = !0),
|
||||||
|
clientWindow.lastKey && (C(clientWindow.lastKey, 'keydown'), C(clientWindow.lastKey, 'keyup')));
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
h.addEventListener('blur', function (A) {
|
h.addEventListener('blur', function (A) {
|
||||||
clientWindow.hiddenInputFocused = !1;
|
clientWindow.hiddenInputFocused = !1;
|
||||||
@ -482,14 +519,15 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
A.preventDefault();
|
A.preventDefault();
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
a.addEventListener(
|
a.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
A.preventDefault(), clientWindow.hiddenInputFocused ? h.blur() : (h.select(), (clientWindow.hiddenInputFocused = !0));
|
A.preventDefault(),
|
||||||
|
clientWindow.hiddenInputFocused ? h.blur() : (h.select(), (clientWindow.hiddenInputFocused = !0));
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(a);
|
document.body.appendChild(a);
|
||||||
let p = Z('placeButton', 'inGame');
|
let p = Z('placeButton', 'inGame');
|
||||||
@ -499,14 +537,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
t(2, 'mousedown', i);
|
t(2, 'mousedown', i);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
p.addEventListener(
|
p.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
t(2, 'mouseup', i);
|
t(2, 'mouseup', i);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(p);
|
document.body.appendChild(p);
|
||||||
let R = Z('breakButton', 'inGame');
|
let R = Z('breakButton', 'inGame');
|
||||||
@ -516,14 +554,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
t(0, 'mousedown', i);
|
t(0, 'mousedown', i);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
R.addEventListener(
|
R.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
t(0, 'mouseup', i);
|
t(0, 'mouseup', i);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(R);
|
document.body.appendChild(R);
|
||||||
let W = Z('selectButton', 'inGame');
|
let W = Z('selectButton', 'inGame');
|
||||||
@ -533,14 +571,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
t(1, 'mousedown', i);
|
t(1, 'mousedown', i);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
W.addEventListener(
|
W.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
t(1, 'mouseup', i);
|
t(1, 'mouseup', i);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(W);
|
document.body.appendChild(W);
|
||||||
let u = Z('scrollUpButton', 'inGame');
|
let u = Z('scrollUpButton', 'inGame');
|
||||||
@ -550,7 +588,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
G(i, -10);
|
G(i, -10);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(u);
|
document.body.appendChild(u);
|
||||||
let Y = Z('scrollDownButton', 'inGame');
|
let Y = Z('scrollDownButton', 'inGame');
|
||||||
@ -560,7 +598,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
G(i, 10);
|
G(i, 10);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(Y);
|
document.body.appendChild(Y);
|
||||||
let S = Z('throwButton', 'inGame');
|
let S = Z('throwButton', 'inGame');
|
||||||
@ -570,14 +608,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('q', 'keydown');
|
C('q', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
S.addEventListener(
|
S.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('q', 'keyup');
|
C('q', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(S);
|
document.body.appendChild(S);
|
||||||
let j = Z('sprintButton', 'inGame');
|
let j = Z('sprintButton', 'inGame');
|
||||||
@ -591,14 +629,16 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
(clientWindow.sprintLock = null != clientWindow.sprintLock), j.classList.toggle('active');
|
(clientWindow.sprintLock = null != clientWindow.sprintLock), j.classList.toggle('active');
|
||||||
}, 1e3));
|
}, 1e3));
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
j.addEventListener(
|
j.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
clientWindow.sprintLock || (C('r', 'keyup'), j.classList.remove('active'), (clientWindow.sprintLock = !1)), clearTimeout(clientWindow.sprintTimer);
|
clientWindow.sprintLock ||
|
||||||
|
(C('r', 'keyup'), j.classList.remove('active'), (clientWindow.sprintLock = !1)),
|
||||||
|
clearTimeout(clientWindow.sprintTimer);
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(j);
|
document.body.appendChild(j);
|
||||||
let y = Z('pauseButton', 'inGame');
|
let y = Z('pauseButton', 'inGame');
|
||||||
@ -608,14 +648,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('`', 'keydown');
|
C('`', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
y.addEventListener(
|
y.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('`', 'keyup');
|
C('`', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(y);
|
document.body.appendChild(y);
|
||||||
let L = Z('chatButton', 'inGame');
|
let L = Z('chatButton', 'inGame');
|
||||||
@ -625,7 +665,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('t', 'keydown');
|
C('t', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(L);
|
document.body.appendChild(L);
|
||||||
let N = Z('perspectiveButton', 'inGame');
|
let N = Z('perspectiveButton', 'inGame');
|
||||||
@ -635,14 +675,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('f', 'keydown'), C('5', 'keydown');
|
C('f', 'keydown'), C('5', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
N.addEventListener(
|
N.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('f', 'keyup'), C('5', 'keyup');
|
C('f', 'keyup'), C('5', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(N);
|
document.body.appendChild(N);
|
||||||
let U = Z('screenshotButton', 'inGame');
|
let U = Z('screenshotButton', 'inGame');
|
||||||
@ -652,14 +692,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('f', 'keydown'), C('2', 'keydown');
|
C('f', 'keydown'), C('2', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
U.addEventListener(
|
U.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('f', 'keyup'), C('2', 'keyup');
|
C('f', 'keyup'), C('2', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(U);
|
document.body.appendChild(U);
|
||||||
let z = Z('coordinatesButton', 'inGame');
|
let z = Z('coordinatesButton', 'inGame');
|
||||||
@ -669,14 +709,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (A) {
|
function (A) {
|
||||||
C('f', 'keydown'), C('3', 'keydown');
|
C('f', 'keydown'), C('3', 'keydown');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
z.addEventListener(
|
z.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (A) {
|
function (A) {
|
||||||
C('f', 'keyup'), C('3', 'keyup');
|
C('f', 'keyup'), C('3', 'keyup');
|
||||||
},
|
},
|
||||||
!1
|
!1,
|
||||||
),
|
),
|
||||||
document.body.appendChild(z);
|
document.body.appendChild(z);
|
||||||
})();
|
})();
|
||||||
|
@ -160,7 +160,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
}
|
}
|
||||||
return fn.apply(this, args); // Appends the rest of the function specified by addEventListener
|
return fn.apply(this, args); // Appends the rest of the function specified by addEventListener
|
||||||
},
|
},
|
||||||
...rest
|
...rest,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// If it's not a keydown event, behave like normal (hopefully)
|
// If it's not a keydown event, behave like normal (hopefully)
|
||||||
@ -200,14 +200,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
clientY: event.clientY,
|
clientY: event.clientY,
|
||||||
screenX: event.screenX,
|
screenX: event.screenX,
|
||||||
screenY: event.screenY,
|
screenY: event.screenY,
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
function wheelEvent(element, delta) {
|
function wheelEvent(element, delta) {
|
||||||
element.dispatchEvent(
|
element.dispatchEvent(
|
||||||
new WheelEvent('wheel', {
|
new WheelEvent('wheel', {
|
||||||
wheelDeltaY: delta,
|
wheelDeltaY: delta,
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
function setButtonVisibility(pointerLocked) {
|
function setButtonVisibility(pointerLocked) {
|
||||||
@ -285,7 +285,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
element.hidden = true;
|
element.hidden = true;
|
||||||
element.style.display = 'none';
|
element.style.display = 'none';
|
||||||
},
|
},
|
||||||
{ passive: false, once: true }
|
{ passive: false, once: true },
|
||||||
);
|
);
|
||||||
window.addEventListener(
|
window.addEventListener(
|
||||||
'focus',
|
'focus',
|
||||||
@ -295,7 +295,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
element.style.display = 'none';
|
element.style.display = 'none';
|
||||||
}, 300);
|
}, 300);
|
||||||
},
|
},
|
||||||
{ once: true }
|
{ once: true },
|
||||||
);
|
);
|
||||||
document.body.appendChild(element);
|
document.body.appendChild(element);
|
||||||
}
|
}
|
||||||
@ -347,7 +347,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
touchButton.addEventListener('contextmenu', function (e) {
|
touchButton.addEventListener('contextmenu', function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@ -393,7 +393,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
|
|
||||||
canvas.addEventListener(
|
canvas.addEventListener(
|
||||||
@ -411,7 +411,8 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
if (primaryTouch) {
|
if (primaryTouch) {
|
||||||
primaryTouch.distanceX = primaryTouch.clientX - canvasTouchStartX;
|
primaryTouch.distanceX = primaryTouch.clientX - canvasTouchStartX;
|
||||||
primaryTouch.distanceY = primaryTouch.clientY - canvasTouchStartY;
|
primaryTouch.distanceY = primaryTouch.clientY - canvasTouchStartY;
|
||||||
primaryTouch.squaredNorm = primaryTouch.distanceX * primaryTouch.distanceX + primaryTouch.distanceY * primaryTouch.distanceY;
|
primaryTouch.squaredNorm =
|
||||||
|
primaryTouch.distanceX * primaryTouch.distanceX + primaryTouch.distanceY * primaryTouch.distanceY;
|
||||||
primaryTouch.movementX = primaryTouch.clientX - canvasTouchPreviousX;
|
primaryTouch.movementX = primaryTouch.clientX - canvasTouchPreviousX;
|
||||||
primaryTouch.movementY = primaryTouch.clientY - canvasTouchPreviousY;
|
primaryTouch.movementY = primaryTouch.clientY - canvasTouchPreviousY;
|
||||||
if (window.canvasTouchMode == 1) {
|
if (window.canvasTouchMode == 1) {
|
||||||
@ -439,7 +440,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
screenY: primaryTouch.screenY, // The top four are used for item position when in GUI's, the bottom two are for moving the camera inGame
|
screenY: primaryTouch.screenY, // The top four are used for item position when in GUI's, the bottom two are for moving the camera inGame
|
||||||
movementX: primaryTouch.movementX,
|
movementX: primaryTouch.movementX,
|
||||||
movementY: primaryTouch.movementY,
|
movementY: primaryTouch.movementY,
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -447,7 +448,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
canvasTouchPreviousY = primaryTouch.clientY;
|
canvasTouchPreviousY = primaryTouch.clientY;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
|
|
||||||
function canvasTouchEnd(e) {
|
function canvasTouchEnd(e) {
|
||||||
@ -495,7 +496,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
strafeLeftButton.classList.remove('hide');
|
strafeLeftButton.classList.remove('hide');
|
||||||
forwardButton.classList.add('active');
|
forwardButton.classList.add('active');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
forwardButton.addEventListener(
|
forwardButton.addEventListener(
|
||||||
'touchmove',
|
'touchmove',
|
||||||
@ -523,7 +524,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
strafeLeftButton.classList.remove('active');
|
strafeLeftButton.classList.remove('active');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
forwardButton.addEventListener(
|
forwardButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
@ -539,7 +540,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
|
|
||||||
buttonTouchStartX = null;
|
buttonTouchStartX = null;
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
strafeRightButton.classList.add('hide');
|
strafeRightButton.classList.add('hide');
|
||||||
strafeLeftButton.classList.add('hide');
|
strafeLeftButton.classList.add('hide');
|
||||||
@ -552,14 +553,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('d', 'keydown');
|
keyEvent('d', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
rightButton.addEventListener(
|
rightButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('d', 'keyup');
|
keyEvent('d', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(rightButton);
|
document.body.appendChild(rightButton);
|
||||||
const leftButton = createTouchButton('leftButton', 'inGame');
|
const leftButton = createTouchButton('leftButton', 'inGame');
|
||||||
@ -569,14 +570,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('a', 'keydown');
|
keyEvent('a', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
leftButton.addEventListener(
|
leftButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('a', 'keyup');
|
keyEvent('a', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(leftButton);
|
document.body.appendChild(leftButton);
|
||||||
const backButton = createTouchButton('backButton', 'inGame');
|
const backButton = createTouchButton('backButton', 'inGame');
|
||||||
@ -586,14 +587,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('s', 'keydown');
|
keyEvent('s', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
backButton.addEventListener(
|
backButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('s', 'keyup');
|
keyEvent('s', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(backButton);
|
document.body.appendChild(backButton);
|
||||||
const jumpButton = createTouchButton('jumpButton', 'inGame');
|
const jumpButton = createTouchButton('jumpButton', 'inGame');
|
||||||
@ -603,14 +604,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent(' ', 'keydown');
|
keyEvent(' ', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
jumpButton.addEventListener(
|
jumpButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent(' ', 'keyup');
|
keyEvent(' ', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(jumpButton);
|
document.body.appendChild(jumpButton);
|
||||||
|
|
||||||
@ -627,7 +628,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
crouchButton.classList.toggle('active');
|
crouchButton.classList.toggle('active');
|
||||||
}, 1000);
|
}, 1000);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
|
|
||||||
crouchButton.addEventListener(
|
crouchButton.addEventListener(
|
||||||
@ -640,7 +641,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
}
|
}
|
||||||
clearTimeout(window.crouchTimer);
|
clearTimeout(window.crouchTimer);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(crouchButton);
|
document.body.appendChild(crouchButton);
|
||||||
const inventoryButton = createTouchButton('inventoryButton', 'inGame');
|
const inventoryButton = createTouchButton('inventoryButton', 'inGame');
|
||||||
@ -651,7 +652,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('e', 'keydown');
|
keyEvent('e', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
inventoryButton.addEventListener(
|
inventoryButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
@ -660,7 +661,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('shift', 'keyup'); // Sometimes shift gets stuck on, which interferes with item manipulation in GUI's
|
keyEvent('shift', 'keyup'); // Sometimes shift gets stuck on, which interferes with item manipulation in GUI's
|
||||||
keyEvent('e', 'keyup');
|
keyEvent('e', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(inventoryButton);
|
document.body.appendChild(inventoryButton);
|
||||||
const exitButton = createTouchButton('exitButton', 'inMenu');
|
const exitButton = createTouchButton('exitButton', 'inMenu');
|
||||||
@ -671,14 +672,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('`', 'keydown');
|
keyEvent('`', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
exitButton.addEventListener(
|
exitButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('`', 'keyup');
|
keyEvent('`', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(exitButton);
|
document.body.appendChild(exitButton);
|
||||||
// ---Input Handling---
|
// ---Input Handling---
|
||||||
@ -703,7 +704,8 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
const hiddenInput = document.createElement('input', true);
|
const hiddenInput = document.createElement('input', true);
|
||||||
hiddenInput.id = 'hiddenInput';
|
hiddenInput.id = 'hiddenInput';
|
||||||
hiddenInput.classList.add('inMenu');
|
hiddenInput.classList.add('inMenu');
|
||||||
hiddenInput.style.cssText = 'position:absolute;top: 0vh; margin: auto; left: 8vh; right:0vh; width: 8vh; height: 8vh;font-size:20px;z-index: -10;color: transparent;text-shadow: 0 0 0 black;'; // We hide the input behind a key because display: none and opacity:0 causes issues
|
hiddenInput.style.cssText =
|
||||||
|
'position:absolute;top: 0vh; margin: auto; left: 8vh; right:0vh; width: 8vh; height: 8vh;font-size:20px;z-index: -10;color: transparent;text-shadow: 0 0 0 black;'; // We hide the input behind a key because display: none and opacity:0 causes issues
|
||||||
hiddenInput.addEventListener(
|
hiddenInput.addEventListener(
|
||||||
'beforeinput',
|
'beforeinput',
|
||||||
function (e) {
|
function (e) {
|
||||||
@ -753,7 +755,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
window.lastKey = inputData; // Saves the last key pressed
|
window.lastKey = inputData; // Saves the last key pressed
|
||||||
hiddenInput.value = ' '; //This previously allowed us to have a character to delete, but beforeinput doesn't require this. This does allow us to check wether Duplicate Mode is necessary though
|
hiddenInput.value = ' '; //This previously allowed us to have a character to delete, but beforeinput doesn't require this. This does allow us to check wether Duplicate Mode is necessary though
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
hiddenInput.addEventListener(
|
hiddenInput.addEventListener(
|
||||||
'input',
|
'input',
|
||||||
@ -764,14 +766,16 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
hiddenInput.value = ' ';
|
hiddenInput.value = ' ';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
hiddenInput.addEventListener(
|
hiddenInput.addEventListener(
|
||||||
'keydown',
|
'keydown',
|
||||||
function (e) {
|
function (e) {
|
||||||
// Enables Compatibility Mode if we receive an invalid key press event
|
// Enables Compatibility Mode if we receive an invalid key press event
|
||||||
if ((e.keyCode == 229 || e.which == 229) && !window.keyboardFix) {
|
if ((e.keyCode == 229 || e.which == 229) && !window.keyboardFix) {
|
||||||
window.console.warn('Switching from keydown to input events due to invalid KeyboardEvent. Some functionality will be lost.');
|
window.console.warn(
|
||||||
|
'Switching from keydown to input events due to invalid KeyboardEvent. Some functionality will be lost.',
|
||||||
|
);
|
||||||
window.keyboardFix = true;
|
window.keyboardFix = true;
|
||||||
if (window.lastKey) {
|
if (window.lastKey) {
|
||||||
// Resend the last saved key press (which is being tracked by the beforeinput event listener) so the transition to Compatibility Mode isn't noticeable
|
// Resend the last saved key press (which is being tracked by the beforeinput event listener) so the transition to Compatibility Mode isn't noticeable
|
||||||
@ -780,7 +784,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
hiddenInput.addEventListener('blur', function (e) {
|
hiddenInput.addEventListener('blur', function (e) {
|
||||||
// Updates window.hiddenInputFocused to reflect the actual state of the focus
|
// Updates window.hiddenInputFocused to reflect the actual state of the focus
|
||||||
@ -795,7 +799,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
keyboardButton.addEventListener(
|
keyboardButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
@ -808,7 +812,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
window.hiddenInputFocused = true;
|
window.hiddenInputFocused = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(keyboardButton);
|
document.body.appendChild(keyboardButton);
|
||||||
const placeButton = createTouchButton('placeButton', 'inGame');
|
const placeButton = createTouchButton('placeButton', 'inGame');
|
||||||
@ -818,14 +822,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
mouseEvent(2, 'mousedown', canvas);
|
mouseEvent(2, 'mousedown', canvas);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
placeButton.addEventListener(
|
placeButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
mouseEvent(2, 'mouseup', canvas);
|
mouseEvent(2, 'mouseup', canvas);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(placeButton);
|
document.body.appendChild(placeButton);
|
||||||
const breakButton = createTouchButton('breakButton', 'inGame');
|
const breakButton = createTouchButton('breakButton', 'inGame');
|
||||||
@ -835,14 +839,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
mouseEvent(0, 'mousedown', canvas);
|
mouseEvent(0, 'mousedown', canvas);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
breakButton.addEventListener(
|
breakButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
mouseEvent(0, 'mouseup', canvas);
|
mouseEvent(0, 'mouseup', canvas);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(breakButton);
|
document.body.appendChild(breakButton);
|
||||||
const selectButton = createTouchButton('selectButton', 'inGame');
|
const selectButton = createTouchButton('selectButton', 'inGame');
|
||||||
@ -852,14 +856,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
mouseEvent(1, 'mousedown', canvas);
|
mouseEvent(1, 'mousedown', canvas);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
selectButton.addEventListener(
|
selectButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
mouseEvent(1, 'mouseup', canvas);
|
mouseEvent(1, 'mouseup', canvas);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(selectButton);
|
document.body.appendChild(selectButton);
|
||||||
const scrollUpButton = createTouchButton('scrollUpButton', 'inGame');
|
const scrollUpButton = createTouchButton('scrollUpButton', 'inGame');
|
||||||
@ -870,7 +874,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
wheelEvent(canvas, -10);
|
wheelEvent(canvas, -10);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(scrollUpButton);
|
document.body.appendChild(scrollUpButton);
|
||||||
const scrollDownButton = createTouchButton('scrollDownButton', 'inGame');
|
const scrollDownButton = createTouchButton('scrollDownButton', 'inGame');
|
||||||
@ -881,7 +885,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
wheelEvent(canvas, 10);
|
wheelEvent(canvas, 10);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(scrollDownButton);
|
document.body.appendChild(scrollDownButton);
|
||||||
const throwButton = createTouchButton('throwButton', 'inGame');
|
const throwButton = createTouchButton('throwButton', 'inGame');
|
||||||
@ -892,14 +896,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('q', 'keydown');
|
keyEvent('q', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
throwButton.addEventListener(
|
throwButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('q', 'keyup');
|
keyEvent('q', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(throwButton);
|
document.body.appendChild(throwButton);
|
||||||
const sprintButton = createTouchButton('sprintButton', 'inGame');
|
const sprintButton = createTouchButton('sprintButton', 'inGame');
|
||||||
@ -914,7 +918,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
sprintButton.classList.toggle('active');
|
sprintButton.classList.toggle('active');
|
||||||
}, 1000);
|
}, 1000);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
|
|
||||||
sprintButton.addEventListener(
|
sprintButton.addEventListener(
|
||||||
@ -927,7 +931,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
}
|
}
|
||||||
clearTimeout(window.sprintTimer);
|
clearTimeout(window.sprintTimer);
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(sprintButton);
|
document.body.appendChild(sprintButton);
|
||||||
const pauseButton = createTouchButton('pauseButton', 'inGame');
|
const pauseButton = createTouchButton('pauseButton', 'inGame');
|
||||||
@ -938,14 +942,14 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('`', 'keydown');
|
keyEvent('`', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
pauseButton.addEventListener(
|
pauseButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('`', 'keyup');
|
keyEvent('`', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(pauseButton);
|
document.body.appendChild(pauseButton);
|
||||||
const chatButton = createTouchButton('chatButton', 'inGame');
|
const chatButton = createTouchButton('chatButton', 'inGame');
|
||||||
@ -956,7 +960,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
function (e) {
|
function (e) {
|
||||||
keyEvent('t', 'keydown');
|
keyEvent('t', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
); // For some reason dispatching a keyup event for this closes the chat, which is really weird
|
); // For some reason dispatching a keyup event for this closes the chat, which is really weird
|
||||||
document.body.appendChild(chatButton);
|
document.body.appendChild(chatButton);
|
||||||
const perspectiveButton = createTouchButton('perspectiveButton', 'inGame');
|
const perspectiveButton = createTouchButton('perspectiveButton', 'inGame');
|
||||||
@ -968,7 +972,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('f', 'keydown');
|
keyEvent('f', 'keydown');
|
||||||
keyEvent('5', 'keydown');
|
keyEvent('5', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
perspectiveButton.addEventListener(
|
perspectiveButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
@ -976,7 +980,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('f', 'keyup');
|
keyEvent('f', 'keyup');
|
||||||
keyEvent('5', 'keyup');
|
keyEvent('5', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(perspectiveButton);
|
document.body.appendChild(perspectiveButton);
|
||||||
const screenshotButton = createTouchButton('screenshotButton', 'inGame');
|
const screenshotButton = createTouchButton('screenshotButton', 'inGame');
|
||||||
@ -988,7 +992,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('f', 'keydown');
|
keyEvent('f', 'keydown');
|
||||||
keyEvent('2', 'keydown');
|
keyEvent('2', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
screenshotButton.addEventListener(
|
screenshotButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
@ -996,7 +1000,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('f', 'keyup');
|
keyEvent('f', 'keyup');
|
||||||
keyEvent('2', 'keyup');
|
keyEvent('2', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(screenshotButton);
|
document.body.appendChild(screenshotButton);
|
||||||
const coordinatesButton = createTouchButton('coordinatesButton', 'inGame');
|
const coordinatesButton = createTouchButton('coordinatesButton', 'inGame');
|
||||||
@ -1008,7 +1012,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('f', 'keydown');
|
keyEvent('f', 'keydown');
|
||||||
keyEvent('3', 'keydown');
|
keyEvent('3', 'keydown');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
coordinatesButton.addEventListener(
|
coordinatesButton.addEventListener(
|
||||||
'touchend',
|
'touchend',
|
||||||
@ -1016,7 +1020,7 @@ if (new URLSearchParams(window.location.search).get('mobile') === 'true') {
|
|||||||
keyEvent('f', 'keyup');
|
keyEvent('f', 'keyup');
|
||||||
keyEvent('3', 'keyup');
|
keyEvent('3', 'keyup');
|
||||||
},
|
},
|
||||||
false
|
false,
|
||||||
);
|
);
|
||||||
document.body.appendChild(coordinatesButton);
|
document.body.appendChild(coordinatesButton);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,10 @@ let articleAnimationLock = false;
|
|||||||
const theme = {
|
const theme = {
|
||||||
load: function (themeToLoad?: string) {
|
load: function (themeToLoad?: string) {
|
||||||
const themeElement = document.querySelector('#theme') as HTMLLinkElement | null;
|
const themeElement = document.querySelector('#theme') as HTMLLinkElement | null;
|
||||||
if (themeElement) themeElement.href = themeToLoad ? `/resources/styles/themes/${themeToLoad}.css` : `/resources/styles/themes/${storage.local.get('theme') ?? 'default'}.css`;
|
if (themeElement)
|
||||||
|
themeElement.href = themeToLoad
|
||||||
|
? `/resources/styles/themes/${themeToLoad}.css`
|
||||||
|
: `/resources/styles/themes/${storage.local.get('theme') ?? 'default'}.css`;
|
||||||
},
|
},
|
||||||
set: function (newTheme: string) {
|
set: function (newTheme: string) {
|
||||||
storage.local.set('theme', newTheme);
|
storage.local.set('theme', newTheme);
|
||||||
@ -77,7 +80,9 @@ const game = {
|
|||||||
'1.5': '15-client-version',
|
'1.5': '15-client-version',
|
||||||
'b1.3': 'b13-client-version',
|
'b1.3': 'b13-client-version',
|
||||||
};
|
};
|
||||||
const dropdown = clients[client] ? (document.querySelector(`#${clients[client]}`) as HTMLSelectElement | null) : null;
|
const dropdown = clients[client]
|
||||||
|
? (document.querySelector(`#${clients[client]}`) as HTMLSelectElement | null)
|
||||||
|
: null;
|
||||||
if (dropdown?.value) {
|
if (dropdown?.value) {
|
||||||
selectedVersion = `https://archive.eaglercraft.rip/Eaglercraft${client === '1.8' ? 'X_1.8' : `_${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();
|
||||||
@ -174,7 +179,7 @@ const article = {
|
|||||||
modal.addEventListener('click', closeArticleHandler);
|
modal.addEventListener('click', closeArticleHandler);
|
||||||
articleAnimationLock = false;
|
articleAnimationLock = false;
|
||||||
},
|
},
|
||||||
{ once: true }
|
{ once: true },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -189,7 +194,7 @@ const article = {
|
|||||||
modal.style.display = 'none';
|
modal.style.display = 'none';
|
||||||
articleAnimationLock = false;
|
articleAnimationLock = false;
|
||||||
},
|
},
|
||||||
{ once: true }
|
{ once: true },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -408,7 +413,13 @@ if (window.location.pathname === '/') {
|
|||||||
const lastPage = storage.session.get('lastPage');
|
const lastPage = storage.session.get('lastPage');
|
||||||
const isMobile = detect.mobile();
|
const isMobile = detect.mobile();
|
||||||
const iframe = document.createElement('iframe');
|
const iframe = document.createElement('iframe');
|
||||||
iframe.src = !storage.local.get('lastVersion') ? '/welcome/' : lastPage ? lastPage : isMobile ? '/mobile/' : '/home/game/';
|
iframe.src = !storage.local.get('lastVersion')
|
||||||
|
? '/welcome/'
|
||||||
|
: lastPage
|
||||||
|
? lastPage
|
||||||
|
: isMobile
|
||||||
|
? '/mobile/'
|
||||||
|
: '/home/game/';
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => document.body.appendChild(iframe));
|
document.addEventListener('DOMContentLoaded', () => document.body.appendChild(iframe));
|
||||||
|
|
||||||
@ -429,7 +440,7 @@ if (window.location.pathname === '/') {
|
|||||||
theme.load();
|
theme.load();
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const profileName = document.querySelector('.profile-name');
|
const profileName = document.querySelector('.profile span');
|
||||||
const titleBarText = document.querySelector('.title-bar span');
|
const titleBarText = document.querySelector('.title-bar span');
|
||||||
|
|
||||||
const lastVersion = storage.local.get('lastVersion');
|
const lastVersion = storage.local.get('lastVersion');
|
||||||
@ -440,8 +451,11 @@ if (window.location.pathname === '/') {
|
|||||||
if (profileName) profileName.textContent = storage.local.get('username');
|
if (profileName) profileName.textContent = storage.local.get('username');
|
||||||
if (titleBarText) titleBarText.textContent += ` ${currentVersion}`;
|
if (titleBarText) titleBarText.textContent += ` ${currentVersion}`;
|
||||||
|
|
||||||
// @ts-expect-error
|
if (
|
||||||
if (lastVersion && gt(coerce(currentVersion, { includePrerelease: true }), coerce(lastVersion, { includePrerelease: true }))) {
|
lastVersion &&
|
||||||
|
// @ts-expect-error
|
||||||
|
gt(coerce(currentVersion, { includePrerelease: true }), coerce(lastVersion, { includePrerelease: true }))
|
||||||
|
) {
|
||||||
alert(`MineXLauncher has been updated to v${currentVersion}!\n\nChanges in v${currentVersion}:\n${changelog}`);
|
alert(`MineXLauncher has been updated to v${currentVersion}!\n\nChanges in v${currentVersion}:\n${changelog}`);
|
||||||
storage.local.set('lastVersion', currentVersion);
|
storage.local.set('lastVersion', currentVersion);
|
||||||
}
|
}
|
||||||
@ -469,7 +483,7 @@ if (window.location.pathname === '/') {
|
|||||||
|
|
||||||
if (window.location.pathname === '/settings/') {
|
if (window.location.pathname === '/settings/') {
|
||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const profileName = document.querySelector('.profile-name');
|
const profileName = document.querySelector('.profile span');
|
||||||
const usernameInput = document.querySelector('#username-input') as HTMLInputElement | null;
|
const usernameInput = document.querySelector('#username-input') as HTMLInputElement | null;
|
||||||
const themeSelect = document.querySelector('#theme-select') as HTMLSelectElement | null;
|
const themeSelect = document.querySelector('#theme-select') as HTMLSelectElement | null;
|
||||||
const offlineCheckbox = document.querySelector('#offline-checkbox') as HTMLInputElement | null;
|
const offlineCheckbox = document.querySelector('#offline-checkbox') as HTMLInputElement | null;
|
||||||
@ -506,7 +520,7 @@ if (window.location.pathname === '/settings/') {
|
|||||||
if (offlineCheckbox.checked) {
|
if (offlineCheckbox.checked) {
|
||||||
sw.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 {
|
||||||
sw.register('/sw.js');
|
sw.register('/sw.js');
|
||||||
@ -567,12 +581,15 @@ if (window.location.pathname === '/settings/') {
|
|||||||
// storage.local.set('offlineCache', offlineCheckbox?.checked ?? false);
|
// storage.local.set('offlineCache', offlineCheckbox?.checked ?? false);
|
||||||
// storage.local.set('showAds', true);
|
// storage.local.set('showAds', true);
|
||||||
storage.local.set('mods', []);
|
storage.local.set('mods', []);
|
||||||
storage.local.set('lastVersion', (await (await fetch('/resources/data/main.json')).json()).updates[0].version);
|
storage.local.set(
|
||||||
|
'lastVersion',
|
||||||
|
(await (await fetch('/resources/data/main.json')).json()).updates[0].version,
|
||||||
|
);
|
||||||
|
|
||||||
if (offlineCheckbox?.checked) {
|
if (offlineCheckbox?.checked) {
|
||||||
sw.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 sw.register('/sw.js');
|
} else sw.register('/sw.js');
|
||||||
|
|
||||||
@ -585,7 +602,14 @@ if (window.location.pathname === '/settings/') {
|
|||||||
} else if (window.location.pathname === '/mods/mods/' || window.location.pathname === '/mods/resourcepacks/') {
|
} else if (window.location.pathname === '/mods/mods/' || window.location.pathname === '/mods/resourcepacks/') {
|
||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const addonType: 'mods' | 'resourcepacks' = window.location.pathname === '/mods/mods/' ? 'mods' : 'resourcepacks';
|
const addonType: 'mods' | 'resourcepacks' = window.location.pathname === '/mods/mods/' ? 'mods' : 'resourcepacks';
|
||||||
const addonData: { id: string; name: string; description: string; author: string; authorLink: string; source: string }[] = (await (await fetch('/resources/data/main.json')).json()).addons;
|
const addonData: {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
author: string;
|
||||||
|
authorLink: string;
|
||||||
|
source: string;
|
||||||
|
}[] = (await (await fetch('/resources/data/main.json')).json()).addons;
|
||||||
const modList = document.querySelector('.mod-list');
|
const modList = document.querySelector('.mod-list');
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
addonData[addonType].forEach((addon) => {
|
addonData[addonType].forEach((addon) => {
|
||||||
@ -616,7 +640,9 @@ if (window.location.pathname === '/settings/') {
|
|||||||
} else if (window.location.pathname === '/updates/') {
|
} else if (window.location.pathname === '/updates/') {
|
||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const updatesContainer = document.querySelector('.updates-container');
|
const updatesContainer = document.querySelector('.updates-container');
|
||||||
const updateData: { version: string; changelog: string[] }[] = (await (await fetch('/resources/data/main.json')).json()).updates;
|
const updateData: { version: string; changelog: string[] }[] = (
|
||||||
|
await (await fetch('/resources/data/main.json')).json()
|
||||||
|
).updates;
|
||||||
updateData.forEach((update) => {
|
updateData.forEach((update) => {
|
||||||
const versionHeader = document.createElement('strong');
|
const versionHeader = document.createElement('strong');
|
||||||
versionHeader.textContent = `MineXLauncher ${update.version}`;
|
versionHeader.textContent = `MineXLauncher ${update.version}`;
|
||||||
|
@ -26,8 +26,8 @@ body {
|
|||||||
border-bottom: 1px solid #4a2f1b;
|
border-bottom: 1px solid #4a2f1b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #5a3a2a;
|
background-color: #5a3a2a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,8 +22,8 @@ body {
|
|||||||
border-bottom: 1px solid #e0d1e3;
|
border-bottom: 1px solid #e0d1e3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #f4c6d0;
|
background-color: #f4c6d0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-name {
|
.profile span {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@ -83,7 +83,7 @@ body {
|
|||||||
scrollbar-color: #555 #333;
|
scrollbar-color: #555 #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item {
|
.nav-bar li {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 15px 20px;
|
padding: 15px 20px;
|
||||||
@ -91,18 +91,18 @@ body {
|
|||||||
transition: background-color 0.2s;
|
transition: background-color 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #444;
|
background-color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item .nav-icon {
|
.nav-bar li img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item .nav-text {
|
.nav-bar li span {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +249,10 @@ body {
|
|||||||
scrollbar-color: #048239 #035525;
|
scrollbar-color: #048239 #035525;
|
||||||
max-height: 0;
|
max-height: 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
transition: max-height 0.3s ease-out, padding 0.3s ease-out, opacity 0.3s ease-out;
|
transition:
|
||||||
|
max-height 0.3s ease-out,
|
||||||
|
padding 0.3s ease-out,
|
||||||
|
opacity 0.3s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-options.open {
|
.custom-options.open {
|
||||||
@ -292,7 +295,10 @@ body {
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
transition: background-color 0.2s, border-color 0.2s, transform 0.2s;
|
transition:
|
||||||
|
background-color 0.2s,
|
||||||
|
border-color 0.2s,
|
||||||
|
transform 0.2s;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -539,11 +545,18 @@ body {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
background-image: linear-gradient(45deg, transparent 50%, #ffffff 50%), linear-gradient(135deg, #1e1e1e 50%, transparent 50%);
|
background-image: linear-gradient(45deg, transparent 50%, #ffffff 50%),
|
||||||
background-position: right 0.7rem center, right 0.7rem center;
|
linear-gradient(135deg, #1e1e1e 50%, transparent 50%);
|
||||||
|
background-position:
|
||||||
|
right 0.7rem center,
|
||||||
|
right 0.7rem center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 0.65rem auto, 0.65rem auto;
|
background-size:
|
||||||
transition: border-color 0.3s, background-color 0.3s;
|
0.65rem auto,
|
||||||
|
0.65rem auto;
|
||||||
|
transition:
|
||||||
|
border-color 0.3s,
|
||||||
|
background-color 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.version-select:focus {
|
.version-select:focus {
|
||||||
|
@ -18,8 +18,8 @@ body {
|
|||||||
background-color: #262626;
|
background-color: #262626;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,111 +1,117 @@
|
|||||||
body {
|
body {
|
||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.launcher {
|
.launcher {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-bar, .top-title, .top-nav, .bottom-bar {
|
.title-bar,
|
||||||
background-color: #e0e0e0;
|
.top-title,
|
||||||
color: #333;
|
.top-nav,
|
||||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
.bottom-bar {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
color: #333;
|
||||||
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar {
|
.sidebar {
|
||||||
background-color: #f0f0f0;
|
background-color: #f0f0f0;
|
||||||
border-right: 1px solid #ddd;
|
border-right: 1px solid #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile {
|
.profile {
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item {
|
.nav-bar li {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover, .nav-bar .nav-item.selected {
|
.nav-bar li:hover,
|
||||||
background-color: #ddd;
|
.nav-bar li.selected {
|
||||||
|
background-color: #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-panel, .main-content {
|
.main-panel,
|
||||||
background-color: #fafafa;
|
.main-content {
|
||||||
|
background-color: #fafafa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.installations {
|
.installations {
|
||||||
background-color: #e0e0e0;
|
background-color: #e0e0e0;
|
||||||
border-top: 1px solid #ddd;
|
border-top: 1px solid #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-select {
|
.custom-select {
|
||||||
border: 2px solid #ccc;
|
border: 2px solid #ccc;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
color: #333;
|
color: #333;
|
||||||
box-shadow: 4px 4px #ddd;
|
box-shadow: 4px 4px #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-select:hover {
|
.custom-select:hover {
|
||||||
box-shadow: 6px 6px #ddd;
|
box-shadow: 6px 6px #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-options {
|
.custom-options {
|
||||||
border: 2px solid #ccc;
|
border: 2px solid #ccc;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
box-shadow: 4px 4px #ddd;
|
box-shadow: 4px 4px #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-option {
|
.custom-option {
|
||||||
border-bottom: 1px solid #ccc;
|
border-bottom: 1px solid #ccc;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-option:hover {
|
.custom-option:hover {
|
||||||
background-color: #f0f0f0;
|
background-color: #f0f0f0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.play-button {
|
.play-button {
|
||||||
background-color: #4caf50;
|
background-color: #4caf50;
|
||||||
border: 2px solid #388e3c;
|
border: 2px solid #388e3c;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.play-button:hover {
|
.play-button:hover {
|
||||||
background-color: #66bb6a;
|
background-color: #66bb6a;
|
||||||
border-color: #2e7d32;
|
border-color: #2e7d32;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-bar .bottom-bar-left, .bottom-bar .bottom-bar-right {
|
.bottom-bar .bottom-bar-left,
|
||||||
color: #333;
|
.bottom-bar .bottom-bar-right {
|
||||||
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.minecraft-button {
|
.minecraft-button {
|
||||||
background-color: #e0e0e0;
|
background-color: #e0e0e0;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.minecraft-button:hover {
|
.minecraft-button:hover {
|
||||||
background-color: #d5d5d5;
|
background-color: #d5d5d5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.minecraft-button:active {
|
.minecraft-button:active {
|
||||||
background-color: #bdbdbd;
|
background-color: #bdbdbd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.download-link {
|
.download-link {
|
||||||
background-color: #4caf50;
|
background-color: #4caf50;
|
||||||
}
|
}
|
||||||
|
|
||||||
.download-link:hover {
|
.download-link:hover {
|
||||||
background-color: #66bb6a;
|
background-color: #66bb6a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-nav ul li {
|
.top-nav ul li {
|
||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-nav ul li.selected {
|
.top-nav ul li.selected {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
@ -25,8 +25,8 @@ body {
|
|||||||
color: #ff4500;
|
color: #ff4500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #5c3c3c;
|
background-color: #5c3c3c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ body {
|
|||||||
color: #00ff00;
|
color: #00ff00;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #5c7c5c;
|
background-color: #5c7c5c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.profile,
|
.profile,
|
||||||
.nav-bar .nav-item,
|
.nav-bar li,
|
||||||
.installations,
|
.installations,
|
||||||
.custom-select,
|
.custom-select,
|
||||||
.custom-options,
|
.custom-options,
|
||||||
@ -38,8 +38,8 @@ body {
|
|||||||
color: #00ff00;
|
color: #00ff00;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected,
|
.nav-bar li.selected,
|
||||||
.custom-option:hover,
|
.custom-option:hover,
|
||||||
.play-button:hover,
|
.play-button:hover,
|
||||||
.minecraft-button:hover,
|
.minecraft-button:hover,
|
||||||
|
@ -18,8 +18,8 @@ body {
|
|||||||
box-shadow: 0 2px 4px rgba(255, 255, 255, 0.2);
|
box-shadow: 0 2px 4px rgba(255, 255, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: rgba(255, 255, 255, 0.1);
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
color: #00ccff;
|
color: #00ccff;
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,8 @@ body {
|
|||||||
border-bottom: 1px solid #330066;
|
border-bottom: 1px solid #330066;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar .nav-item:hover,
|
.nav-bar li:hover,
|
||||||
.nav-bar .nav-item.selected {
|
.nav-bar li.selected {
|
||||||
background-color: #330066;
|
background-color: #330066;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.home.game()">
|
<li onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.servers()">
|
<li class="selected" onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -60,7 +67,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -68,7 +77,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item" onclick="navigate.updates()">
|
<li onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.home.game()">
|
<li onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item selected" onclick="navigate.settings()">
|
<li class="selected" onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -80,7 +87,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -88,7 +97,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -16,7 +16,7 @@ self.addEventListener('install', (event) => {
|
|||||||
|
|
||||||
console.log(`Cached: ${asset} (${progress})`);
|
console.log(`Cached: ${asset} (${progress})`);
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ self.addEventListener('activate', (event) => {
|
|||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@ -46,7 +46,7 @@ self.addEventListener('activate', (event) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -54,6 +54,6 @@ self.addEventListener('fetch', (event) => {
|
|||||||
event.respondWith(
|
event.respondWith(
|
||||||
caches.match(event.request).then((response) => {
|
caches.match(event.request).then((response) => {
|
||||||
return response ?? fetch(event.request);
|
return response ?? fetch(event.request);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
10
src/sw.ts
10
src/sw.ts
@ -55,7 +55,7 @@ self.addEventListener('install', (event) => {
|
|||||||
|
|
||||||
console.log(`Cached: ${asset} (${progress})`);
|
console.log(`Cached: ${asset} (${progress})`);
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -69,9 +69,9 @@ self.addEventListener('activate', (event) => {
|
|||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -80,13 +80,13 @@ self.addEventListener('fetch', (event) => {
|
|||||||
event.respondWith(
|
event.respondWith(
|
||||||
fetch(event.request).catch(() => {
|
fetch(event.request).catch(() => {
|
||||||
return caches.match(OFFLINE_URL);
|
return caches.match(OFFLINE_URL);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
event.respondWith(
|
event.respondWith(
|
||||||
fetch(event.request).catch(() => {
|
fetch(event.request).catch(() => {
|
||||||
return caches.match(event.request);
|
return caches.match(event.request);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -12,7 +12,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
<div class="launcher">
|
<div class="launcher">
|
||||||
<div class="title-bar">
|
<div class="title-bar">
|
||||||
@ -21,32 +28,32 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<span class="profile-name"></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="nav-bar">
|
<nav class="nav-bar">
|
||||||
<li class="nav-item selected" onclick="navigate.updates()">
|
<li class="selected" onclick="navigate.updates()">
|
||||||
<img src="/resources/images/icons/nav/updates.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/updates.webp" />
|
||||||
<span class="nav-text">Updates</span>
|
<span>Updates</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.home.game()">
|
<li onclick="navigate.home.game()">
|
||||||
<img src="/resources/images/icons/nav/game.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/game.webp" />
|
||||||
<span class="nav-text">Game</span>
|
<span>Game</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.servers()">
|
<li onclick="navigate.servers()">
|
||||||
<img src="/resources/images/icons/nav/servers.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/servers.webp" />
|
||||||
<span class="nav-text">Server List</span>
|
<span>Server List</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.mods.mods()">
|
<li onclick="navigate.mods.mods()">
|
||||||
<img src="/resources/images/icons/nav/mods.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/mods.webp" />
|
||||||
<span class="nav-text">Mods</span>
|
<span>Mods</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.articles()">
|
<li onclick="navigate.articles()">
|
||||||
<img src="/resources/images/icons/nav/articles.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/articles.webp" />
|
||||||
<span class="nav-text">Tutorials</span>
|
<span>Tutorials</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" onclick="navigate.settings()">
|
<li onclick="navigate.settings()">
|
||||||
<img src="/resources/images/icons/nav/settings.webp" class="nav-icon" />
|
<img src="/resources/images/icons/nav/settings.webp" />
|
||||||
<span class="nav-text">Settings</span>
|
<span>Settings</span>
|
||||||
</li>
|
</li>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
@ -61,7 +68,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
@ -69,7 +78,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ads-container">
|
<div class="ads-container">
|
||||||
<ins class="adsbygoogle" style="display: block" data-ad-client="ca-pub-1132419379737567" data-ad-slot="3280170072" data-ad-format="auto" data-full-width-responsive="true"></ins>
|
<ins
|
||||||
|
class="adsbygoogle"
|
||||||
|
style="display: block"
|
||||||
|
data-ad-client="ca-pub-1132419379737567"
|
||||||
|
data-ad-slot="3280170072"
|
||||||
|
data-ad-format="auto"
|
||||||
|
data-full-width-responsive="true"
|
||||||
|
></ins>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en" style="display: none">
|
<html lang="en" style="display: none">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@ -39,7 +39,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar">
|
<div class="bottom-bar">
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank">Join the MineXLauncher Discord</a>
|
<a href="https://discord.gg/VRwbRJjXzt" class="bottom-bar-left link" target="_blank"
|
||||||
|
>Join the MineXLauncher Discord</a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-bar-links">
|
<div class="bottom-bar-links">
|
||||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user