diff --git a/public/home/archive/index.html b/public/home/archive/index.html
index 806262f..25d88e1 100644
--- a/public/home/archive/index.html
+++ b/public/home/archive/index.html
@@ -13,7 +13,7 @@
- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/home/clients/index.html b/public/home/clients/index.html
index 204623f..09daa87 100644
--- a/public/home/clients/index.html
+++ b/public/home/clients/index.html
@@ -13,7 +13,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/home/downloads/index.html b/public/home/downloads/index.html
index 6371da2..d1f0e6f 100644
--- a/public/home/downloads/index.html
+++ b/public/home/downloads/index.html
@@ -13,7 +13,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/home/game/index.html b/public/home/game/index.html
index b2fffda..35c3200 100644
--- a/public/home/game/index.html
+++ b/public/home/game/index.html
@@ -13,7 +13,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/index.html b/public/index.html
index ea7de88..e1edd88 100644
--- a/public/index.html
+++ b/public/index.html
@@ -6,9 +6,10 @@
MineXLauncher
+
-
+
-
+
-
-
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000..c423b12
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,39 @@
+{
+ "name": "MineXLauncher",
+ "short_name": "MineX",
+ "description": "MineXLauncher is a custom launcher for Eaglercraft that has many versions and clients.",
+ "id": "/",
+ "start_url": "/",
+ "theme_color": "#333",
+ "background_color": "#333",
+ "orientation": "landscape",
+ "display": "standalone",
+ "display_override": ["fullscreen"],
+ "categories": ["games"],
+ "icons": [
+ {
+ "src": "/resources/manifest/icons/any/192x192.webp",
+ "sizes": "192x192",
+ "type": "image/webp"
+ },
+ {
+ "src": "/resources/manifest/icons/any/512x512.webp",
+ "sizes": "512x512",
+ "type": "image/webp"
+ },
+ {
+ "src": "/resources/manifest/icons/maskable/2275x2275.webp",
+ "sizes": "2275x2275",
+ "type": "image/webp",
+ "purpose": "maskable"
+ }
+ ],
+ "screenshots": [
+ {
+ "src": "/resources/manifest/screenshots/home.webp",
+ "sizes": "1366x768",
+ "type": "image/webp",
+ "form_factor": "wide"
+ }
+ ]
+}
diff --git a/public/mobile/index.html b/public/mobile/index.html
index b8e685c..82896de 100644
--- a/public/mobile/index.html
+++ b/public/mobile/index.html
@@ -13,7 +13,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
diff --git a/public/mods/client/index.html b/public/mods/client/index.html
index a57b247..19c90f6 100644
--- a/public/mods/client/index.html
+++ b/public/mods/client/index.html
@@ -13,7 +13,7 @@
- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/mods/mods/index.html b/public/mods/mods/index.html
index 4f51813..fbbe73c 100644
--- a/public/mods/mods/index.html
+++ b/public/mods/mods/index.html
@@ -14,7 +14,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -34,9 +34,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/mods/resourcepacks/index.html b/public/mods/resourcepacks/index.html
index 67ed218..00acd6a 100644
--- a/public/mods/resourcepacks/index.html
+++ b/public/mods/resourcepacks/index.html
@@ -14,7 +14,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -34,9 +34,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/offline.html b/public/offline.html
index 2d6fec9..5a091e9 100644
--- a/public/offline.html
+++ b/public/offline.html
@@ -14,7 +14,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
diff --git a/public/resources/data/mods.json b/public/resources/data/mods.json
deleted file mode 100644
index d7bf155..0000000
--- a/public/resources/data/mods.json
+++ /dev/null
@@ -1,226 +0,0 @@
-{
- "mods": [
- {
- "display-name": "Burmod WIP",
- "mod-name": "burmod",
- "author": "Murturtle",
- "author-link": "https://github.com/Murturtle",
- "description": "client for eaglerforge (v0.2)",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/Murturtle/Burmod",
- "download-link": "/resources/mods/burmod.js"
- },
- {
- "display-name": "StatsHud",
- "mod-name": "statshud",
- "author": "Neverflagastralis",
- "author-link": "https://github.com/AstralisLLC",
- "description": "An all-new StatsHud, soon to be updated with customization functionality!",
- "icon": "/resources/images/icons/mods/statshud.webp",
- "repo-link": "https://github.com/AstralisLLC/EaglerForge-Mods/blob/main/StatsHudV3.js",
- "download-link": "/resources/mods/statshud.js"
- },
- {
- "display-name": "FreshEaglerUI",
- "mod-name": "freshui",
- "author": "Murturtle",
- "author-link": "https://github.com/Murturtle",
- "description": "Makes the UIs slide in and re works the main screen!",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/Murturtle/MursMods/blob/main/FreshEaglerUI.js",
- "download-link": "/resources/mods/freshui.js"
- },
- {
- "display-name": "Chat commands mod",
- "mod-name": "chatcmd",
- "author": "Neverflagastralis",
- "author-link": "https://github.com/AstralisLLC",
- "description": "An open source mod with a built in customizable bug reports system!",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/AstralisLLC/EaglerForge-Mods/blob/main/chat%20utils.js",
- "download-link": "/resources/mods/chatcmd.js"
- },
- {
- "display-name": "SemiAutoLogin",
- "mod-name": "autologin",
- "author": "Murturtle",
- "author-link": "https://github.com/Murturtle",
- "description": "Press L to login without typing!",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/Murturtle/MursMods/blob/main/SemiAutoLogin.js",
- "download-link": "/resources/mods/autologin.js"
- },
- {
- "display-name": "Blur",
- "mod-name": "blur",
- "author": "Murturtle",
- "author-link": "https://github.com/Murturtle",
- "description": "Makes your fps 5 when unfocused!",
- "icon": "/resources/images/icons/mods/blur.webp",
- "repo-link": "https://github.com/Murturtle/MursMods/blob/main/Blur.js",
- "download-link": "/resources/mods/blur.js"
- },
- {
- "display-name": "Jetpack",
- "mod-name": "jetpack",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "allows you to fly as if you had a jetpack. keybind(hold): h",
- "icon": "/resources/images/icons/mods/jetpack.webp",
- "repo-link": "https://github.com/radmanplays/eaglerreborn-plugins/blob/main/jetpack-ef.js",
- "download-link": "/resources/mods/jetpack.js"
- },
- {
- "display-name": "Barney's Music Mod",
- "mod-name": "barneysmusicmod",
- "author": "BarneyTheGod",
- "author-link": "https://github.com/BarneyCompiler",
- "description": "Plays a users music through a direct mp3 link. Saves music through Local Browser storage.",
- "icon": "/resources/images/icons/mods/barneysmusicmod.webp",
- "repo-link": "https://github.com/BarneyCompiler/barneysmods/blob/main/Barneys%20Music%20Player",
- "download-link": "/resources/mods/barneysmusicmod.js"
- },
- {
- "display-name": "Blink",
- "mod-name": "blinkmod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "use by typing the .blinkon and .blinkoff commands and sending it",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/radmanplays/eaglerreborn-plugins",
- "download-link": "/resources/mods/blinkmod.js"
- },
- {
- "display-name": "GrappleHook",
- "mod-name": "graplehookmod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "grappling hook mod. how to use: 1.grab a fishing rod 2.use the fishing rod 3.grappling hook! ",
- "icon": "/resources/images/icons/mods/graplehookmod.webp",
- "repo-link": "https://github.com/radmanplays/eaglerreborn-plugins",
- "download-link": "/resources/mods/graplehookmod.js"
- },
- {
- "display-name": "Xray",
- "mod-name": "xraymod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "simple xray mod. its recommended to use this with Fullbright. keybind: x",
- "icon": "/resources/images/icons/mods/xraymod.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/Xray.js",
- "download-link": "/resources/mods/xraymod.js"
- },
- {
- "display-name": "Fullbright",
- "mod-name": "fullbright",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "full bright mod for eaglerforge. keybind(enabled by default): f",
- "icon": "/resources/images/icons/mods/fullbright.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/fullbright.js",
- "download-link": "/resources/mods/fullbright.js"
- },
- {
- "display-name": "Autoclicker",
- "mod-name": "autoclicker",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "this mod clicks for you",
- "icon": "/resources/images/icons/mods/autoclicker.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/autoclicker.js",
- "download-link": "/resources/mods/autoclicker.js"
- },
- {
- "display-name": "Speed Mod",
- "mod-name": "speedmod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "makes you faster",
- "icon": "/resources/images/icons/mods/speedmod.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/Speed.js",
- "download-link": "/resources/mods/speedmod.js"
- },
- {
- "display-name": "Chat Shortcuts",
- "mod-name": "chatshortcutsmod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "shortcuts: {health}, {pos}, {name}, {me}, {x}, {y}, {z}, {level}, {walked}, {chunk}",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/ChatShortcuts.js",
- "download-link": "/resources/mods/chatshortcutsmod.js"
- },
- {
- "display-name": "NoFall",
- "mod-name": "nofallmod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "makes you not take fall damage",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/NoFall.js",
- "download-link": "/resources/mods/nofallmod.js"
- },
- {
- "display-name": "AutoFish",
- "mod-name": "autofishmod",
- "author": "radmanplays",
- "author-link": "https://github.com/radmanplays",
- "description": "fishes for you. just throw a fishing rod in water to use this mod",
- "icon": "/resources/images/icons/mods/all.webp",
- "repo-link": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/AutoFish.js",
- "download-link": "/resources/mods/autofishmod.js"
- }
- ],
- "resourcepacks": [
- {
- "display-name": "Barebones Bossbars",
- "mod-name": "barebones-bossbars",
- "author": "vexcenot",
- "author-link": "https://modrinth.com/user/vexcenot",
- "description": "simplistic per-mob icons and colors to decorate boss bars with",
- "icon": "/resources/images/icons/resourcepacks/barebones-bossbars.webp",
- "repo-link": "https://modrinth.com/resourcepack/barebones-bossbars",
- "download-link": "/resources/resourcepacks/barebones-bossbars.zip"
- },
- {
- "display-name": "Daggers",
- "mod-name": "daggers",
- "author": "devin",
- "author-link": "https://modrinth.com/user/devin",
- "description": "Shorter swords for better visibility.",
- "icon": "/resources/images/icons/resourcepacks/daggers.webp",
- "repo-link": "https://modrinth.com/resourcepack/daggers",
- "download-link": "/resources/resourcepacks/daggers.zip"
- },
- {
- "display-name": "Faithful (32x)",
- "mod-name": "faithful-32x",
- "author": "Faithful-Resource-Pack",
- "author-link": "https://modrinth.com/user/Faithful-Resource-Pack",
- "description": "The original Minecraft texture feel, with double the resolution and double the fun!",
- "icon": "/resources/images/icons/resourcepacks/faithful-32x.webp",
- "repo-link": "https://modrinth.com/resourcepack/faithful-32x",
- "download-link": "/resources/resourcepacks/faithful-32x.zip"
- },
- {
- "display-name": "Low On Fire",
- "mod-name": "low-on-fire",
- "author": "Haikis",
- "author-link": "https://modrinth.com/user/Haikis",
- "description": "Low fire on your screen! Vanilla Friendly",
- "icon": "/resources/images/icons/resourcepacks/low-on-fire.webp",
- "repo-link": "https://modrinth.com/resourcepack/low-on-fire",
- "download-link": "/resources/resourcepacks/low-on-fire.zip"
- },
- {
- "display-name": "Serified Font",
- "mod-name": "serified-font",
- "author": "bebebea_loste",
- "author-link": "https://modrinth.com/user/bebebea_loste",
- "description": "My take on a fancier Minecraft typeface",
- "icon": "/resources/images/icons/resourcepacks/serified-font.webp",
- "repo-link": "https://modrinth.com/resourcepack/serified-font",
- "download-link": "/resources/resourcepacks/serified-font.zip"
- }
- ]
-}
diff --git a/public/resources/images/icons/clients/1.9.4.webp b/public/resources/images/icons/clients/1.9.4.webp
index aca4f7b..c5c5a89 100644
Binary files a/public/resources/images/icons/clients/1.9.4.webp and b/public/resources/images/icons/clients/1.9.4.webp differ
diff --git a/public/resources/images/icons/clients/astra.webp b/public/resources/images/icons/clients/astra.webp
index 897a44e..09d27cb 100644
Binary files a/public/resources/images/icons/clients/astra.webp and b/public/resources/images/icons/clients/astra.webp differ
diff --git a/public/resources/images/icons/clients/eaglerforge.webp b/public/resources/images/icons/clients/eaglerforge.webp
index 4d44db0..da37782 100644
Binary files a/public/resources/images/icons/clients/eaglerforge.webp and b/public/resources/images/icons/clients/eaglerforge.webp differ
diff --git a/public/resources/images/icons/clients/eaglermobile.webp b/public/resources/images/icons/clients/eaglermobile.webp
index 0accb14..a114de0 100644
Binary files a/public/resources/images/icons/clients/eaglermobile.webp and b/public/resources/images/icons/clients/eaglermobile.webp differ
diff --git a/public/resources/images/icons/clients/eaglerpocketmobile.webp b/public/resources/images/icons/clients/eaglerpocketmobile.webp
index 49cff56..98f0e0b 100644
Binary files a/public/resources/images/icons/clients/eaglerpocketmobile.webp and b/public/resources/images/icons/clients/eaglerpocketmobile.webp differ
diff --git a/public/resources/images/icons/clients/resent.webp b/public/resources/images/icons/clients/resent.webp
index efd4ce2..4801266 100644
Binary files a/public/resources/images/icons/clients/resent.webp and b/public/resources/images/icons/clients/resent.webp differ
diff --git a/public/resources/images/icons/clients/shadow.webp b/public/resources/images/icons/clients/shadow.webp
index bae938d..c1b56ea 100644
Binary files a/public/resources/images/icons/clients/shadow.webp and b/public/resources/images/icons/clients/shadow.webp differ
diff --git a/public/resources/images/icons/clients/starlike.webp b/public/resources/images/icons/clients/starlike.webp
index fbb1ac5..117eb22 100644
Binary files a/public/resources/images/icons/clients/starlike.webp and b/public/resources/images/icons/clients/starlike.webp differ
diff --git a/public/resources/images/icons/favicon.webp b/public/resources/images/icons/favicon.webp
index e0b6cef..105ba3f 100644
Binary files a/public/resources/images/icons/favicon.webp and b/public/resources/images/icons/favicon.webp differ
diff --git a/public/resources/images/icons/mods/all.webp b/public/resources/images/icons/mods/all.webp
deleted file mode 100644
index 73393a6..0000000
Binary files a/public/resources/images/icons/mods/all.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/autoclicker.webp b/public/resources/images/icons/mods/autoclicker.webp
deleted file mode 100644
index 652a13a..0000000
Binary files a/public/resources/images/icons/mods/autoclicker.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/barneysmusicmod.webp b/public/resources/images/icons/mods/barneysmusicmod.webp
deleted file mode 100644
index ca24297..0000000
Binary files a/public/resources/images/icons/mods/barneysmusicmod.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/blur.webp b/public/resources/images/icons/mods/blur.webp
deleted file mode 100644
index e965079..0000000
Binary files a/public/resources/images/icons/mods/blur.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/fullbright.webp b/public/resources/images/icons/mods/fullbright.webp
deleted file mode 100644
index 8f95f87..0000000
Binary files a/public/resources/images/icons/mods/fullbright.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/graplehookmod.webp b/public/resources/images/icons/mods/graplehookmod.webp
deleted file mode 100644
index eebc5c9..0000000
Binary files a/public/resources/images/icons/mods/graplehookmod.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/jetpack.webp b/public/resources/images/icons/mods/jetpack.webp
deleted file mode 100644
index 74a7ceb..0000000
Binary files a/public/resources/images/icons/mods/jetpack.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/speedmod.webp b/public/resources/images/icons/mods/speedmod.webp
deleted file mode 100644
index d507015..0000000
Binary files a/public/resources/images/icons/mods/speedmod.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/statshud.webp b/public/resources/images/icons/mods/statshud.webp
deleted file mode 100644
index 322af78..0000000
Binary files a/public/resources/images/icons/mods/statshud.webp and /dev/null differ
diff --git a/public/resources/images/icons/mods/xraymod.webp b/public/resources/images/icons/mods/xraymod.webp
deleted file mode 100644
index ec7699a..0000000
Binary files a/public/resources/images/icons/mods/xraymod.webp and /dev/null differ
diff --git a/public/resources/images/icons/nav/game.webp b/public/resources/images/icons/nav/game.webp
index 97cddfd..399c6a1 100644
Binary files a/public/resources/images/icons/nav/game.webp and b/public/resources/images/icons/nav/game.webp differ
diff --git a/public/resources/images/icons/nav/mods.webp b/public/resources/images/icons/nav/mods.webp
index 351305b..233ee34 100644
Binary files a/public/resources/images/icons/nav/mods.webp and b/public/resources/images/icons/nav/mods.webp differ
diff --git a/public/resources/images/icons/nav/servers.webp b/public/resources/images/icons/nav/servers.webp
index 50feadb..61392c6 100644
Binary files a/public/resources/images/icons/nav/servers.webp and b/public/resources/images/icons/nav/servers.webp differ
diff --git a/public/resources/images/icons/nav/settings.webp b/public/resources/images/icons/nav/settings.webp
index ca114f3..7456ac1 100644
Binary files a/public/resources/images/icons/nav/settings.webp and b/public/resources/images/icons/nav/settings.webp differ
diff --git a/public/resources/images/icons/nav/updates.webp b/public/resources/images/icons/nav/updates.webp
index 5238419..a546615 100644
Binary files a/public/resources/images/icons/nav/updates.webp and b/public/resources/images/icons/nav/updates.webp differ
diff --git a/public/resources/images/icons/resourcepacks/barebones-bossbars.webp b/public/resources/images/icons/resourcepacks/barebones-bossbars.webp
deleted file mode 100644
index acff176..0000000
Binary files a/public/resources/images/icons/resourcepacks/barebones-bossbars.webp and /dev/null differ
diff --git a/public/resources/images/icons/resourcepacks/daggers.webp b/public/resources/images/icons/resourcepacks/daggers.webp
deleted file mode 100644
index 72a9043..0000000
Binary files a/public/resources/images/icons/resourcepacks/daggers.webp and /dev/null differ
diff --git a/public/resources/images/icons/resourcepacks/faithful-32x.webp b/public/resources/images/icons/resourcepacks/faithful-32x.webp
deleted file mode 100644
index e21b99b..0000000
Binary files a/public/resources/images/icons/resourcepacks/faithful-32x.webp and /dev/null differ
diff --git a/public/resources/images/icons/resourcepacks/low-on-fire.webp b/public/resources/images/icons/resourcepacks/low-on-fire.webp
deleted file mode 100644
index d0910cd..0000000
Binary files a/public/resources/images/icons/resourcepacks/low-on-fire.webp and /dev/null differ
diff --git a/public/resources/images/icons/resourcepacks/serified-font.webp b/public/resources/images/icons/resourcepacks/serified-font.webp
deleted file mode 100644
index 1a53e18..0000000
Binary files a/public/resources/images/icons/resourcepacks/serified-font.webp and /dev/null differ
diff --git a/public/resources/manifest/icons/any/192x192.webp b/public/resources/manifest/icons/any/192x192.webp
new file mode 100644
index 0000000..03e378c
Binary files /dev/null and b/public/resources/manifest/icons/any/192x192.webp differ
diff --git a/public/resources/manifest/icons/any/512x512.webp b/public/resources/manifest/icons/any/512x512.webp
new file mode 100644
index 0000000..1008f6c
Binary files /dev/null and b/public/resources/manifest/icons/any/512x512.webp differ
diff --git a/public/resources/manifest/icons/maskable/2275x2275.webp b/public/resources/manifest/icons/maskable/2275x2275.webp
new file mode 100644
index 0000000..1aeed27
Binary files /dev/null and b/public/resources/manifest/icons/maskable/2275x2275.webp differ
diff --git a/public/resources/manifest/screenshots/home.webp b/public/resources/manifest/screenshots/home.webp
new file mode 100644
index 0000000..946241e
Binary files /dev/null and b/public/resources/manifest/screenshots/home.webp differ
diff --git a/public/resources/mods/data.json b/public/resources/mods/data.json
new file mode 100644
index 0000000..db2bb52
--- /dev/null
+++ b/public/resources/mods/data.json
@@ -0,0 +1,183 @@
+{
+ "mods": [
+ {
+ "id": "burmod",
+ "name": "Burmod",
+ "description": "client for eaglerforge (v0.2)",
+ "author": "Murturtle",
+ "authorLink": "https://github.com/Murturtle",
+ "source": "https://github.com/Murturtle/Burmod"
+ },
+ {
+ "id": "statshud",
+ "name": "StatsHud",
+ "description": "An all-new StatsHud, soon to be updated with customization functionality!",
+ "author": "Neverflagastralis",
+ "authorLink": "https://github.com/AstralisLLC",
+ "source": "https://github.com/AstralisLLC/EaglerForge-Mods/blob/main/StatsHudV3.js"
+ },
+ {
+ "id": "fresheaglerui",
+ "name": "FreshEaglerUI",
+ "description": "Makes the UIs slide in and re works the main screen!",
+ "author": "Murturtle",
+ "authorLink": "https://github.com/Murturtle",
+ "source": "https://github.com/Murturtle/MursMods/blob/main/FreshEaglerUI.js"
+ },
+ {
+ "id": "chat-commands-mod",
+ "name": "Chat commands mod",
+ "description": "An open source mod with a built in customizable bug reports system!",
+ "author": "Neverflagastralis",
+ "authorLink": "https://github.com/AstralisLLC",
+ "source": "https://github.com/AstralisLLC/EaglerForge-Mods/blob/main/chat%20utils.js"
+ },
+ {
+ "id": "semiautologin",
+ "name": "SemiAutoLogin",
+ "description": "Press L to login without typing!",
+ "author": "Murturtle",
+ "authorLink": "https://github.com/Murturtle",
+ "source": "https://github.com/Murturtle/MursMods/blob/main/SemiAutoLogin.js"
+ },
+ {
+ "id": "blur",
+ "name": "Blur",
+ "description": "Makes your fps 5 when unfocused!",
+ "author": "Murturtle",
+ "authorLink": "https://github.com/Murturtle",
+ "source": "https://github.com/Murturtle/MursMods/blob/main/Blur.js"
+ },
+ {
+ "id": "jetpack",
+ "name": "Jetpack",
+ "description": "allows you to fly as if you had a jetpack. keybind(hold): h",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/radmanplays/eaglerreborn-plugins/blob/main/jetpack-ef.js"
+ },
+ {
+ "id": "barneys-music-mod",
+ "name": "Barney's Music Mod",
+ "description": "Plays a users music through a direct mp3 link. Saves music through Local Browser storage.",
+ "author": "BarneyTheGod",
+ "authorLink": "https://github.com/BarneyCompiler",
+ "source": "https://github.com/BarneyCompiler/barneysmods/blob/main/Barneys%20Music%20Player"
+ },
+ {
+ "id": "blink",
+ "name": "Blink",
+ "description": "use by typing the .blinkon and .blinkoff commands and sending it",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/radmanplays/eaglerreborn-plugins"
+ },
+ {
+ "id": "grapplehook",
+ "name": "GrappleHook",
+ "description": "grappling hook mod. how to use: 1.grab a fishing rod 2.use the fishing rod 3.grappling hook!",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/radmanplays/eaglerreborn-plugins"
+ },
+ {
+ "id": "xray",
+ "name": "Xray",
+ "description": "simple xray mod. its recommended to use this with Fullbright. keybind: x",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/Xray.js"
+ },
+ {
+ "id": "fullbright",
+ "name": "Fullbright",
+ "description": "full bright mod for eaglerforge. keybind(enabled by default): f",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/fullbright.js"
+ },
+ {
+ "id": "autoclicker",
+ "name": "Autoclicker",
+ "description": "this mod clicks for you",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/autoclicker.js"
+ },
+ {
+ "id": "speed-mod",
+ "name": "Speed Mod",
+ "description": "makes you faster",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/Speed.js"
+ },
+ {
+ "id": "chat-shortcuts",
+ "name": "Chat Shortcuts",
+ "description": "shortcuts: {health}, {pos}, {name}, {me}, {x}, {y}, {z}, {level}, {walked}, {chunk}",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/ChatShortcuts.js"
+ },
+ {
+ "id": "nofall",
+ "name": "NoFall",
+ "description": "makes you not take fall damage",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/NoFall.js"
+ },
+ {
+ "id": "autofish",
+ "name": "AutoFish",
+ "description": "fishes for you. just throw a fishing rod in water to use this mod",
+ "author": "radmanplays",
+ "authorLink": "https://github.com/radmanplays",
+ "source": "https://github.com/EaglerRinth/eaglerrinth.github.io/blob/main/CommunityMods/AutoFish.js"
+ }
+ ],
+
+ "resourcepacks": [
+ {
+ "id": "barebones-bossbars",
+ "name": "Barebones Bossbars",
+ "description": "simplistic per-mob icons and colors to decorate boss bars with",
+ "author": "vexcenot",
+ "authorLink": "https://modrinth.com/user/vexcenot",
+ "source": "https://modrinth.com/resourcepack/barebones-bossbars"
+ },
+ {
+ "id": "daggers",
+ "name": "Daggers",
+ "description": "Shorter swords for better visibility.",
+ "author": "devin",
+ "authorLink": "https://modrinth.com/user/devin",
+ "source": "https://modrinth.com/resourcepack/daggers"
+ },
+ {
+ "id": "faithful-32x",
+ "name": "Faithful (32x)",
+ "description": "The original Minecraft texture feel, with double the resolution and double the fun!",
+ "author": "Faithful-Resource-Pack",
+ "authorLink": "https://modrinth.com/user/Faithful-Resource-Pack",
+ "source": "https://modrinth.com/resourcepack/faithful-32x"
+ },
+ {
+ "id": "low-on-fire",
+ "name": "Low On Fire",
+ "description": "Low fire on your screen! Vanilla Friendly",
+ "author": "Haikis",
+ "authorLink": "https://modrinth.com/user/Haikis",
+ "source": "https://modrinth.com/resourcepack/low-on-fire"
+ },
+ {
+ "id": "serified-font",
+ "name": "Serified Font",
+ "description": "My take on a fancier Minecraft typeface",
+ "author": "bebebea_loste",
+ "authorLink": "https://modrinth.com/user/bebebea_loste",
+ "source": "https://modrinth.com/resourcepack/serified-font"
+ }
+ ]
+}
diff --git a/public/resources/mods/autoclicker.js b/public/resources/mods/downloads/autoclicker.js
similarity index 100%
rename from public/resources/mods/autoclicker.js
rename to public/resources/mods/downloads/autoclicker.js
diff --git a/public/resources/mods/autofishmod.js b/public/resources/mods/downloads/autofish.js
similarity index 100%
rename from public/resources/mods/autofishmod.js
rename to public/resources/mods/downloads/autofish.js
diff --git a/public/resources/resourcepacks/barebones-bossbars.zip b/public/resources/mods/downloads/barebones-bossbars.zip
similarity index 100%
rename from public/resources/resourcepacks/barebones-bossbars.zip
rename to public/resources/mods/downloads/barebones-bossbars.zip
diff --git a/public/resources/mods/barneysmusicmod.js b/public/resources/mods/downloads/barneys-music-mod.js
similarity index 100%
rename from public/resources/mods/barneysmusicmod.js
rename to public/resources/mods/downloads/barneys-music-mod.js
diff --git a/public/resources/mods/blinkmod.js b/public/resources/mods/downloads/blink.js
similarity index 100%
rename from public/resources/mods/blinkmod.js
rename to public/resources/mods/downloads/blink.js
diff --git a/public/resources/mods/blur.js b/public/resources/mods/downloads/blur.js
similarity index 100%
rename from public/resources/mods/blur.js
rename to public/resources/mods/downloads/blur.js
diff --git a/public/resources/mods/burmod.js b/public/resources/mods/downloads/burmod.js
similarity index 100%
rename from public/resources/mods/burmod.js
rename to public/resources/mods/downloads/burmod.js
diff --git a/public/resources/mods/chatcmd.js b/public/resources/mods/downloads/chat-commands-mod.js
similarity index 100%
rename from public/resources/mods/chatcmd.js
rename to public/resources/mods/downloads/chat-commands-mod.js
diff --git a/public/resources/mods/chatshortcutsmod.js b/public/resources/mods/downloads/chat-shortcuts.js
similarity index 100%
rename from public/resources/mods/chatshortcutsmod.js
rename to public/resources/mods/downloads/chat-shortcuts.js
diff --git a/public/resources/resourcepacks/daggers.zip b/public/resources/mods/downloads/daggers.zip
similarity index 100%
rename from public/resources/resourcepacks/daggers.zip
rename to public/resources/mods/downloads/daggers.zip
diff --git a/public/resources/resourcepacks/faithful-32x.zip b/public/resources/mods/downloads/faithful-32x.zip
similarity index 100%
rename from public/resources/resourcepacks/faithful-32x.zip
rename to public/resources/mods/downloads/faithful-32x.zip
diff --git a/public/resources/mods/freshui.js b/public/resources/mods/downloads/fresheaglerui.js
similarity index 100%
rename from public/resources/mods/freshui.js
rename to public/resources/mods/downloads/fresheaglerui.js
diff --git a/public/resources/mods/fullbright.js b/public/resources/mods/downloads/fullbright.js
similarity index 100%
rename from public/resources/mods/fullbright.js
rename to public/resources/mods/downloads/fullbright.js
diff --git a/public/resources/mods/graplehookmod.js b/public/resources/mods/downloads/grapplehook.js
similarity index 100%
rename from public/resources/mods/graplehookmod.js
rename to public/resources/mods/downloads/grapplehook.js
diff --git a/public/resources/mods/jetpack.js b/public/resources/mods/downloads/jetpack.js
similarity index 100%
rename from public/resources/mods/jetpack.js
rename to public/resources/mods/downloads/jetpack.js
diff --git a/public/resources/resourcepacks/low-on-fire.zip b/public/resources/mods/downloads/low-on-fire.zip
similarity index 100%
rename from public/resources/resourcepacks/low-on-fire.zip
rename to public/resources/mods/downloads/low-on-fire.zip
diff --git a/public/resources/mods/nofallmod.js b/public/resources/mods/downloads/nofall.js
similarity index 100%
rename from public/resources/mods/nofallmod.js
rename to public/resources/mods/downloads/nofall.js
diff --git a/public/resources/mods/autologin.js b/public/resources/mods/downloads/semiautologin.js
similarity index 100%
rename from public/resources/mods/autologin.js
rename to public/resources/mods/downloads/semiautologin.js
diff --git a/public/resources/resourcepacks/serified-font.zip b/public/resources/mods/downloads/serified-font.zip
similarity index 100%
rename from public/resources/resourcepacks/serified-font.zip
rename to public/resources/mods/downloads/serified-font.zip
diff --git a/public/resources/mods/speedmod.js b/public/resources/mods/downloads/speed-mod.js
similarity index 100%
rename from public/resources/mods/speedmod.js
rename to public/resources/mods/downloads/speed-mod.js
diff --git a/public/resources/mods/statshud.js b/public/resources/mods/downloads/statshud.js
similarity index 100%
rename from public/resources/mods/statshud.js
rename to public/resources/mods/downloads/statshud.js
diff --git a/public/resources/mods/xraymod.js b/public/resources/mods/downloads/xray.js
similarity index 100%
rename from public/resources/mods/xraymod.js
rename to public/resources/mods/downloads/xray.js
diff --git a/public/resources/mods/icons/autoclicker.webp b/public/resources/mods/icons/autoclicker.webp
new file mode 100644
index 0000000..1778e59
Binary files /dev/null and b/public/resources/mods/icons/autoclicker.webp differ
diff --git a/public/resources/mods/icons/autofish.webp b/public/resources/mods/icons/autofish.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/autofish.webp differ
diff --git a/public/resources/mods/icons/barebones-bossbars.webp b/public/resources/mods/icons/barebones-bossbars.webp
new file mode 100644
index 0000000..1bd93b1
Binary files /dev/null and b/public/resources/mods/icons/barebones-bossbars.webp differ
diff --git a/public/resources/mods/icons/barneys-music-mod.webp b/public/resources/mods/icons/barneys-music-mod.webp
new file mode 100644
index 0000000..6e76558
Binary files /dev/null and b/public/resources/mods/icons/barneys-music-mod.webp differ
diff --git a/public/resources/mods/icons/blink.webp b/public/resources/mods/icons/blink.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/blink.webp differ
diff --git a/public/resources/mods/icons/blur.webp b/public/resources/mods/icons/blur.webp
new file mode 100644
index 0000000..f1d17c2
Binary files /dev/null and b/public/resources/mods/icons/blur.webp differ
diff --git a/public/resources/mods/icons/burmod.webp b/public/resources/mods/icons/burmod.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/burmod.webp differ
diff --git a/public/resources/mods/icons/chat-commands-mod.webp b/public/resources/mods/icons/chat-commands-mod.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/chat-commands-mod.webp differ
diff --git a/public/resources/mods/icons/chat-shortcuts.webp b/public/resources/mods/icons/chat-shortcuts.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/chat-shortcuts.webp differ
diff --git a/public/resources/mods/icons/daggers.webp b/public/resources/mods/icons/daggers.webp
new file mode 100644
index 0000000..edc19b1
Binary files /dev/null and b/public/resources/mods/icons/daggers.webp differ
diff --git a/public/resources/mods/icons/faithful-32x.webp b/public/resources/mods/icons/faithful-32x.webp
new file mode 100644
index 0000000..a79e642
Binary files /dev/null and b/public/resources/mods/icons/faithful-32x.webp differ
diff --git a/public/resources/mods/icons/fresheaglerui.webp b/public/resources/mods/icons/fresheaglerui.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/fresheaglerui.webp differ
diff --git a/public/resources/mods/icons/fullbright.webp b/public/resources/mods/icons/fullbright.webp
new file mode 100644
index 0000000..a9280e2
Binary files /dev/null and b/public/resources/mods/icons/fullbright.webp differ
diff --git a/public/resources/mods/icons/grapplehook.webp b/public/resources/mods/icons/grapplehook.webp
new file mode 100644
index 0000000..9386943
Binary files /dev/null and b/public/resources/mods/icons/grapplehook.webp differ
diff --git a/public/resources/mods/icons/jetpack.webp b/public/resources/mods/icons/jetpack.webp
new file mode 100644
index 0000000..4e9484a
Binary files /dev/null and b/public/resources/mods/icons/jetpack.webp differ
diff --git a/public/resources/mods/icons/low-on-fire.webp b/public/resources/mods/icons/low-on-fire.webp
new file mode 100644
index 0000000..a48f0f1
Binary files /dev/null and b/public/resources/mods/icons/low-on-fire.webp differ
diff --git a/public/resources/mods/icons/nofall.webp b/public/resources/mods/icons/nofall.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/nofall.webp differ
diff --git a/public/resources/mods/icons/semiautologin.webp b/public/resources/mods/icons/semiautologin.webp
new file mode 100644
index 0000000..bbac126
Binary files /dev/null and b/public/resources/mods/icons/semiautologin.webp differ
diff --git a/public/resources/mods/icons/serified-font.webp b/public/resources/mods/icons/serified-font.webp
new file mode 100644
index 0000000..5c6459e
Binary files /dev/null and b/public/resources/mods/icons/serified-font.webp differ
diff --git a/public/resources/mods/icons/speed-mod.webp b/public/resources/mods/icons/speed-mod.webp
new file mode 100644
index 0000000..aca9144
Binary files /dev/null and b/public/resources/mods/icons/speed-mod.webp differ
diff --git a/public/resources/mods/icons/statshud.webp b/public/resources/mods/icons/statshud.webp
new file mode 100644
index 0000000..86be389
Binary files /dev/null and b/public/resources/mods/icons/statshud.webp differ
diff --git a/public/resources/mods/icons/xray.webp b/public/resources/mods/icons/xray.webp
new file mode 100644
index 0000000..573fa4e
Binary files /dev/null and b/public/resources/mods/icons/xray.webp differ
diff --git a/public/resources/styles/themes/default.css b/public/resources/styles/themes/default.css
index 509f7af..716510b 100644
--- a/public/resources/styles/themes/default.css
+++ b/public/resources/styles/themes/default.css
@@ -611,10 +611,15 @@ nav {
.settings {
display: flex;
flex: 1;
+ flex-direction: column;
align-items: center;
justify-content: center;
}
+.settings-section {
+ margin: 5px;
+}
+
#username-input,
#theme-select {
width: calc(100% - 22px);
@@ -627,6 +632,11 @@ nav {
appearance: none;
}
+#offline-checkbox {
+ padding: 10px;
+ margin-bottom: 15px;
+}
+
#username-input:focus,
#theme-select:focus {
outline: none;
diff --git a/public/servers/index.html b/public/servers/index.html
index 6c1b0c5..53657fb 100644
--- a/public/servers/index.html
+++ b/public/servers/index.html
@@ -13,7 +13,7 @@
- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
diff --git a/public/settings/index.html b/public/settings/index.html
index 4fd1abc..060f64b 100644
--- a/public/settings/index.html
+++ b/public/settings/index.html
@@ -14,7 +14,7 @@
diff --git a/public/sw-register.js b/public/sw-register.js
deleted file mode 100644
index f42eeea..0000000
--- a/public/sw-register.js
+++ /dev/null
@@ -1,7 +0,0 @@
-if ('serviceWorker' in navigator) {
- window.addEventListener('load', () => {
- navigator.serviceWorker.register('/service-worker.js').catch((error) => {
- console.error('Service worker registration failed:', error);
- });
- });
-}
diff --git a/public/updates/index.html b/public/updates/index.html
index 03f98ff..cb40c55 100644
--- a/public/updates/index.html
+++ b/public/updates/index.html
@@ -13,7 +13,7 @@



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -34,9 +34,9 @@
Server List
-
+
- Mods
+ Addons
@@ -70,6 +70,10 @@
+



- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -33,9 +33,9 @@
Server List
-
+
- Mods
+ Addons
@@ -50,9 +50,12 @@



+ MineXLauncher 1.5
+ You can now install the launcher as a PWA web app
+
MineXLauncher 1.4Added welcome and setup screen
- Show changelog when MineXLauncher is updated
+ Show changelog when the launcher is updated
Added themes and backgrounds
Settings now update automatically without saving them
You will now stay on the same page when reloading
diff --git a/public/welcome.html b/public/welcome/index.html
similarity index 92%
rename from public/welcome.html
rename to public/welcome/index.html
index 463ab3c..400e718 100644
--- a/public/welcome.html
+++ b/public/welcome/index.html
@@ -15,7 +15,7 @@
`;
+ modListElement?.appendChild(div);
+ });
});
diff --git a/src/resources/scripts/mods/resourcepacks.ts b/src/resources/scripts/mods/resourcepacks.ts
index ec9b099..a803935 100644
--- a/src/resources/scripts/mods/resourcepacks.ts
+++ b/src/resources/scripts/mods/resourcepacks.ts
@@ -1,29 +1,13 @@
-document.addEventListener('DOMContentLoaded', function () {
- fetch('/resources/data/mods.json')
- .then((response) => response.json())
- .then((data: { resourcepacks: { [x: string]: string; icon: string; author: string; description: string }[] }) => {
- const modListElement = document.querySelector('.mod-list');
- data.resourcepacks.forEach((mod: { [x: string]: string; icon: string; author: string; description: string }) => {
- const modItem = document.createElement('div');
- modItem.classList.add('mod-item');
- modItem.innerHTML = `
-
`;
+ modListElement?.appendChild(div);
+ });
});
diff --git a/src/resources/scripts/settings.ts b/src/resources/scripts/settings.ts
index 3ffa3b0..9148c36 100644
--- a/src/resources/scripts/settings.ts
+++ b/src/resources/scripts/settings.ts
@@ -1,13 +1,15 @@
if (window.location.pathname === '/settings/') {
- document.addEventListener('DOMContentLoaded', function () {
+ document.addEventListener('DOMContentLoaded', () => {
const profileName = document.getElementById('profile-name');
const usernameInput = document.getElementById('username-input') as HTMLInputElement;
const themeSelect = document.getElementById('theme-select') as HTMLSelectElement;
+ // const offlineCheckbox = document.getElementById('offline-checkbox') as HTMLInputElement;
usernameInput.placeholder = storage.local.get('username') ?? '';
themeSelect.value = storage.local.get('theme') ?? '';
+ // offlineCheckbox.checked = storage.local.get('offlineCache') ?? false;
- usernameInput.addEventListener('input', function () {
+ usernameInput.addEventListener('input', () => {
let username = usernameInput.value.replace(/[^A-Za-z0-9]/g, '_').substring(0, 16);
usernameInput.value = username;
while (username.length < 3) {
@@ -19,28 +21,42 @@ if (window.location.pathname === '/settings/') {
}
});
- themeSelect.addEventListener('change', function () {
+ themeSelect.addEventListener('change', () => {
theme.set(themeSelect.value);
});
+
+ /* offlineCheckbox.addEventListener('change', () => {
+ storage.local.set('offlineCache', offlineCheckbox.checked);
+ if (offlineCheckbox.checked) {
+ serviceworker.register('/sw-full.js');
+ 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.'
+ );
+ } else {
+ serviceworker.register('/sw.js');
+ alert('Offline cache has been deleted.');
+ }
+ }); */
});
}
-if (window.location.pathname === '/welcome.html') {
- document.addEventListener('DOMContentLoaded', function () {
+if (window.location.pathname === '/welcome/') {
+ document.addEventListener('DOMContentLoaded', () => {
const setupForm = document.getElementById('setup-form') as HTMLFormElement;
const usernameInput = document.getElementById('username-input') as HTMLInputElement;
const themeSelect = document.getElementById('theme-select') as HTMLSelectElement;
+ // const offlineCheckbox = document.getElementById('offline-checkbox') as HTMLInputElement;
- usernameInput.addEventListener('input', function () {
+ usernameInput.addEventListener('input', () => {
const username = usernameInput.value.replace(/[^A-Za-z0-9]/g, '_').substring(0, 16);
usernameInput.value = username;
});
- themeSelect.addEventListener('change', function () {
+ themeSelect.addEventListener('change', () => {
theme.load(themeSelect.value);
});
- setupForm.addEventListener('submit', function (event) {
+ setupForm.addEventListener('submit', (event) => {
event.preventDefault();
let username = usernameInput.value.replace(/[^A-Za-z0-9]/g, '_').substring(0, 16);
@@ -53,10 +69,28 @@ if (window.location.pathname === '/welcome.html') {
while (username.length < 3) {
username += '_';
}
+
storage.local.set('username', username);
storage.local.set('theme', themeSelect.value);
+ // storage.local.set('offlineCache', offlineCheckbox.checked);
storage.local.set('lastVersion', launcherVersion);
- // @ts-expect-error 123
+
+ /* if (offlineCheckbox.checked) {
+ serviceworker.register('/sw-full.js');
+ 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.'
+ );
+ try {
+ // @ts-expect-error
+ installPwaEvent.prompt();
+ } catch (error) {
+ console.error('Failed to prompt PWA install:', error);
+ }
+ } else {
+ serviceworker.register('/sw.js');
+ } */
+
+ // @ts-expect-error
window.top.location.href = '/';
}
});
diff --git a/src/sw-full.ts b/src/sw-full.ts
new file mode 100644
index 0000000..64a4d95
--- /dev/null
+++ b/src/sw-full.ts
@@ -0,0 +1,59 @@
+// @ts-nocheck
+const cacheVersion = '1.5';
+const cacheName = `minexlauncher-full-v${cacheVersion}`;
+
+self.addEventListener('install', (event) => {
+ event.waitUntil(
+ caches.open(cacheName).then(async (cache) => {
+ const response = await fetch('/assets.json');
+ const cacheAssets = await response.json();
+ const totalAssets = cacheAssets.length;
+ let cachedAssets = 0;
+
+ for (const asset of cacheAssets) {
+ await cache.add(asset);
+ const progress = `${++cachedAssets}/${totalAssets}`;
+
+ console.log(`Cached: ${asset} (${progress})`);
+ }
+ })
+ );
+});
+
+self.addEventListener('activate', (event) => {
+ event.waitUntil(
+ caches
+ .keys()
+ .then((keyList) => {
+ return Promise.all(
+ keyList.map((key) => {
+ if (key !== cacheName) {
+ return caches.delete(key);
+ } else {
+ return null;
+ }
+ })
+ );
+ })
+ .then(() => {
+ return self.clients.claim();
+ })
+ .then(() => {
+ return self.clients.matchAll().then((clients) => {
+ clients.forEach((client) => {
+ client.postMessage({
+ title: 'sw-install-complete',
+ });
+ });
+ });
+ })
+ );
+});
+
+self.addEventListener('fetch', (event) => {
+ event.respondWith(
+ caches.match(event.request).then((response) => {
+ return response || fetch(event.request);
+ })
+ );
+});
diff --git a/public/service-worker.js b/src/sw.ts
similarity index 73%
rename from public/service-worker.js
rename to src/sw.ts
index cb45961..b2cb87e 100644
--- a/public/service-worker.js
+++ b/src/sw.ts
@@ -1,7 +1,9 @@
-const CACHE_NAME = 'minexlauncher';
-const OFFLINE_URL = '/offline.html';
-const ASSETS_TO_CACHE = [
- OFFLINE_URL,
+// @ts-nocheck
+const cacheVersion = '1.5';
+const cacheName = `minexlauncher-v${cacheVersion}`;
+const offlineUrl = '/offline.html';
+const cacheAssets = [
+ offlineUrl,
'/resources/images/icons/favicon.webp',
'/resources/scripts/google-tag.js',
'/resources/scripts/main.js',
@@ -27,9 +29,16 @@ const ASSETS_TO_CACHE = [
self.addEventListener('install', (event) => {
event.waitUntil(
- caches.delete(CACHE_NAME),
- caches.open(CACHE_NAME).then(async (cache) => {
- return await cache.addAll(ASSETS_TO_CACHE);
+ caches.open(cacheName).then(async (cache) => {
+ const totalAssets = cacheAssets.length;
+ let cachedAssets = 0;
+
+ for (const asset of cacheAssets) {
+ await cache.add(asset);
+ const progress = `${++cachedAssets}/${totalAssets}`;
+
+ console.log(`Cached: ${asset} (${progress})`);
+ }
})
);
});
@@ -39,8 +48,10 @@ self.addEventListener('activate', (event) => {
caches.keys().then((keyList) => {
return Promise.all(
keyList.map((key) => {
- if (key !== CACHE_NAME) {
+ if (key !== cacheName) {
return caches.delete(key);
+ } else {
+ return null;
}
})
);
@@ -52,7 +63,7 @@ self.addEventListener('fetch', (event) => {
if (event.request.mode === 'navigate') {
event.respondWith(
fetch(event.request).catch(() => {
- return caches.match(OFFLINE_URL);
+ return caches.match(offlineUrl);
})
);
} else {
MineXLauncher 1.4
- MineXLauncher 1.4
+ MineXLauncher 1.5
@@ -39,6 +39,8 @@
+
diff --git a/src/resources/scripts/eagler-launch/1.5.2/main.ts b/src/resources/scripts/eagler-launch/1.5.2/main.ts
index 4b8dedc..8868446 100644
--- a/src/resources/scripts/eagler-launch/1.5.2/main.ts
+++ b/src/resources/scripts/eagler-launch/1.5.2/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
window.addEventListener('load', function () {
const relayId = Math.floor(Math.random() * 3);
diff --git a/src/resources/scripts/eagler-launch/1.8.8/main.ts b/src/resources/scripts/eagler-launch/1.8.8/main.ts
index 6e6df37..0c633ea 100644
--- a/src/resources/scripts/eagler-launch/1.8.8/main.ts
+++ b/src/resources/scripts/eagler-launch/1.8.8/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
window.addEventListener('load', () => {
const relayId = Math.floor(Math.random() * 3);
diff --git a/src/resources/scripts/eagler-launch/1.9.4/main.ts b/src/resources/scripts/eagler-launch/1.9.4/main.ts
index b2b113f..ede13ae 100644
--- a/src/resources/scripts/eagler-launch/1.9.4/main.ts
+++ b/src/resources/scripts/eagler-launch/1.9.4/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
window.addEventListener('load', () => {
const relayId = Math.floor(Math.random() * 3);
diff --git a/src/resources/scripts/eagler-launch/b1.3/main.ts b/src/resources/scripts/eagler-launch/b1.3/main.ts
index 8e30c37..0f27acc 100644
--- a/src/resources/scripts/eagler-launch/b1.3/main.ts
+++ b/src/resources/scripts/eagler-launch/b1.3/main.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
window.addEventListener('load', function () {
window.minecraftOpts = ['game_frame', 'assets.epk'];
diff --git a/src/resources/scripts/google-tag.ts b/src/resources/scripts/google-tag.ts
index 4afbed3..7e674a6 100644
--- a/src/resources/scripts/google-tag.ts
+++ b/src/resources/scripts/google-tag.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
const script = document.createElement('script');
script.async = true;
diff --git a/src/resources/scripts/main.ts b/src/resources/scripts/main.ts
index 766c186..ce12026 100644
--- a/src/resources/scripts/main.ts
+++ b/src/resources/scripts/main.ts
@@ -1,5 +1,5 @@
let selectedVersion: string | undefined;
-const launcherVersion = '1.4';
+const launcherVersion = '1.5';
const theme = {
load: function (themeToLoad?: string) {
@@ -51,10 +51,10 @@ const versionSelector = {
const game = {
play: function (version?: string) {
if (version) {
- // @ts-expect-error 123
+ // @ts-expect-error
window.top.location.href = version;
} else if (selectedVersion) {
- // @ts-expect-error 123
+ // @ts-expect-error
window.top.location.href = selectedVersion;
} else {
alert('Please select a version to play.');
@@ -165,7 +165,7 @@ const cookie = {
for (const cookie of document.cookie.split('; ')) {
const cookiePair = cookie.split('=');
if (encodeURIComponent(key) === cookiePair[0]) {
- // @ts-expect-error 123
+ // @ts-expect-error
return decodeURIComponent(cookiePair[1]);
}
}
@@ -192,7 +192,7 @@ const storage = {
return null;
}
},
- set: function (key: string, value: string) {
+ set: function (key: string, value: string | number | object | [] | boolean | null) {
let item = localStorage.getItem('minexlauncher');
if (item === null) {
item = '{}';
@@ -224,7 +224,7 @@ const storage = {
return null;
}
},
- set: function (key: string, value: string) {
+ set: function (key: string, value: string | number | object | [] | boolean | null) {
let item = sessionStorage.getItem('minexlauncher');
if (item === null) {
item = '{}';
@@ -260,38 +260,92 @@ const detect = {
return true;
}
},
+ landscape: function () {
+ return window.innerWidth > window.innerHeight;
+ },
};
+const serviceworker = {
+ register: function (url: string) {
+ if ('serviceWorker' in navigator) {
+ window.addEventListener('load', () => {
+ navigator.serviceWorker.register(url).then(() => {
+ navigator.serviceWorker.addEventListener('message', (event) => {
+ if (event.origin === window.location.origin) {
+ if (event.data.title === 'sw-install-complete') {
+ alert('MineXLauncher is now ready for offline use!');
+ }
+ }
+ });
+ });
+ });
+ }
+ },
+};
+
+if (window.location.pathname === '/') {
+ const lastPage = storage.session.get('lastPage');
+ const isMobile = detect.mobile();
+ const iframe = document.createElement('iframe');
+ iframe.id = 'main_frame';
+
+ iframe.style.display = 'none';
+ iframe.addEventListener('load', () => {
+ iframe.style.display = '';
+ });
+
+ if (storage.local.get('lastVersion') === null) {
+ iframe.src = '/welcome/';
+ } else if (lastPage !== null) {
+ iframe.src = lastPage;
+ } else if (isMobile) {
+ iframe.src = '/mobile/';
+ } else {
+ iframe.src = '/home/game/';
+ }
+
+ document.addEventListener('DOMContentLoaded', () => {
+ document.body.appendChild(iframe);
+ });
+
+ window.addEventListener('beforeinstallprompt', (event) => {
+ if (iframe.contentWindow) {
+ // @ts-expect-error
+ iframe.contentWindow.installPwaEvent = event;
+ }
+ });
+
+ /* if (storage.local.get('offlineCache') === true) {
+ serviceworker.register('/sw-full.js');
+ } else {
+ serviceworker.register('/sw.js');
+ } */
+ serviceworker.register('/sw.js');
+} else {
+ document.addEventListener('DOMContentLoaded', () => {
+ const profileName = document.getElementById('profile-name');
+ if (profileName) {
+ profileName.textContent = storage.local.get('username');
+ }
+ });
+
+ document.addEventListener('DOMContentLoaded', () => {
+ const lastVersion = storage.local.get('lastVersion');
+ if (lastVersion !== null && lastVersion < launcherVersion) {
+ alert(`MineXLauncher has been updated to v${launcherVersion}!
+
+Changes in v${launcherVersion}:
+ - You can now install the launcher as a PWA web app`);
+ storage.local.set('lastVersion', launcherVersion);
+ }
+ });
+}
+
if (detect.mobile()) {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = '/resources/styles/mobile.css';
document.head.appendChild(link);
}
+
theme.load();
-
-if (window.location.pathname !== '/') {
- document.addEventListener('DOMContentLoaded', function () {
- const profileName = document.getElementById('profile-name');
- if (profileName) {
- profileName.textContent = storage.local.get('username');
- }
- });
-
- document.addEventListener('DOMContentLoaded', function () {
- const lastVersion = storage.local.get('lastVersion');
- if (lastVersion !== null && lastVersion < launcherVersion) {
- alert(`MineXLauncher has been updated to v${launcherVersion}!
-
-Changes in v${launcherVersion}:
- - Added welcome and setup screen
- - Show changelog when MineXLauncher is updated
- - Added themes and backgrounds
- - Settings now update automatically without saving them
- - You will now stay on the same page when reloading
- - Username rules have been updated to match Minecraft
- - Added Starlike Client`);
- storage.local.set('lastVersion', launcherVersion);
- }
- });
-}
diff --git a/src/resources/scripts/mods/mods.ts b/src/resources/scripts/mods/mods.ts
index b4579b5..658cc43 100644
--- a/src/resources/scripts/mods/mods.ts
+++ b/src/resources/scripts/mods/mods.ts
@@ -1,29 +1,13 @@
-document.addEventListener('DOMContentLoaded', function () {
- fetch('/resources/data/mods.json')
- .then((response) => response.json())
- .then((data: { mods: { [x: string]: string; icon: string; author: string; description: string }[] }) => {
- const modListElement = document.querySelector('.mod-list');
- data.mods.forEach((mod: { [x: string]: string; icon: string; author: string; description: string }) => {
- const modItem = document.createElement('div');
- modItem.classList.add('mod-item');
- modItem.innerHTML = `
-
-
-
-
- `;
- modListElement?.appendChild(modItem);
- });
- })
- .catch((error: unknown) => {
- console.error('Error fetching mods:', error);
- });
+document.addEventListener('DOMContentLoaded', async () => {
+ const response = await fetch('/resources/mods/data.json');
+ const data = await response.json();
+ const modListElement = document.querySelector('.mod-list');
+
+ // @ts-expect-error
+ data.mods.forEach(({ id, name, description, author, authorLink, source }) => {
+ const div = document.createElement('div');
+ div.classList.add('mod-item');
+ div.innerHTML = `
-
-
-
- `;
- modListElement?.appendChild(modItem);
- });
- })
- .catch((error: unknown) => {
- console.error('Error fetching resource packs:', error);
- });
+document.addEventListener('DOMContentLoaded', async () => {
+ const response = await fetch('/resources/mods/data.json');
+ const data = await response.json();
+ const modListElement = document.querySelector('.mod-list');
+
+ // @ts-expect-error
+ data.resourcepacks.forEach(({ id, name, description, author, authorLink, source }) => {
+ const div = document.createElement('div');
+ div.classList.add('mod-item');
+ div.innerHTML = `