mirror of
https://github.com/zumbiepig/MineXLauncher.git
synced 2025-06-08 09:24:48 +00:00
.
This commit is contained in:
parent
8e4bc58460
commit
3173208f3b
22
.github/workflows/update-clients.yml
vendored
22
.github/workflows/update-clients.yml
vendored
@ -67,6 +67,28 @@ jobs:
|
|||||||
# cp -r ${{ runner.temp }}/eaglerl/javascript/lang/ ./src/game/web/main/1.9.4/lang/
|
# cp -r ${{ runner.temp }}/eaglerl/javascript/lang/ ./src/game/web/main/1.9.4/lang/
|
||||||
# cp ${{ runner.temp }}/eaglerl/javascript/assets.epk ./src/game/web/main/1.9.4/assets.epk
|
# cp ${{ runner.temp }}/eaglerl/javascript/assets.epk ./src/game/web/main/1.9.4/assets.epk
|
||||||
# cp ${{ runner.temp }}/eaglerl/javascript/classes.js ./src/game/web/main/1.9.4/classes.js
|
# cp ${{ runner.temp }}/eaglerl/javascript/classes.js ./src/game/web/main/1.9.4/classes.js
|
||||||
|
- name: Compile Starlike Client
|
||||||
|
if: success() || failure()
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/SpeedSlicer/Starlike-Client.git ${{ runner.temp }}/starlike
|
||||||
|
rm -rf \
|
||||||
|
./src/game/web/clients/starlike/lang/ \
|
||||||
|
./src/game/web/clients/starlike/assets.epk \
|
||||||
|
./src/game/web/clients/starlike/classes.js \
|
||||||
|
./src/game/web/clients/starlike/classes.js.map \
|
||||||
|
./src/game/offline/clients/Starlike_Client.html \
|
||||||
|
${{ runner.temp }}/starlike/javascript/assets.epk \
|
||||||
|
${{ runner.temp }}/starlike/javascript/classes.js
|
||||||
|
cd ${{ runner.temp }}/starlike/
|
||||||
|
chmod +x ./gradlew
|
||||||
|
java -jar "desktopRuntime/CompileEPK.jar" "desktopRuntime/resources" "javascript/assets.epk"
|
||||||
|
./gradlew generateJavascript
|
||||||
|
java -cp "desktopRuntime/MakeOfflineDownload.jar:desktopRuntime/CompileEPK.jar" net.lax1dude.eaglercraft.v1_8.buildtools.workspace.MakeOfflineDownload "javascript/OfflineDownloadTemplate.txt" "javascript/classes.js" "javascript/assets.epk" "/dev/null" "javascript/Starlike_Client_International.html" "javascript/lang"
|
||||||
|
cd ${{ github.workspace }}
|
||||||
|
cp -r ${{ runner.temp }}/starlike/javascript/lang/ ./src/game/web/clients/starlike/lang/
|
||||||
|
cp ${{ runner.temp }}/starlike/javascript/assets.epk ./src/game/web/clients/starlike/assets.epk
|
||||||
|
cp ${{ runner.temp }}/starlike/javascript/classes.js ./src/game/web/clients/starlike/classes.js
|
||||||
|
cp ${{ runner.temp }}/starlike/javascript/Starlike_Client_International.html ./src/game/offline/clients/Starlike_Client.html
|
||||||
- name: Compile Shadow Client
|
- name: Compile Shadow Client
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: |
|
run: |
|
||||||
|
0
src/game/web/clients/starlike/.gitkeep
Normal file
0
src/game/web/clients/starlike/.gitkeep
Normal file
@ -84,6 +84,12 @@
|
|||||||
>Select a client</span
|
>Select a client</span
|
||||||
>
|
>
|
||||||
<div class="options">
|
<div class="options">
|
||||||
|
<div
|
||||||
|
onclick="game.select('/game/web/clients/starlike/', 'Starlike Client')"
|
||||||
|
>
|
||||||
|
<img src="/resources/images/icons/clients/starlike.webp" />
|
||||||
|
<span>Starlike Client</span>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
onclick="game.select('/game/web/clients/eaglerforge/', 'EaglerForge')"
|
onclick="game.select('/game/web/clients/eaglerforge/', 'EaglerForge')"
|
||||||
>
|
>
|
||||||
|
@ -112,6 +112,10 @@
|
|||||||
>Indev</span
|
>Indev</span
|
||||||
>
|
>
|
||||||
<br /><br />
|
<br /><br />
|
||||||
|
<span
|
||||||
|
onclick="downloadFile('/game/offline/clients/Starlike_Client.html', 'Starlike_Client.html')"
|
||||||
|
>Starlike Client</span
|
||||||
|
>
|
||||||
<span
|
<span
|
||||||
onclick="downloadFile('/game/offline/clients/EaglerForge.html', 'EaglerForge.html')"
|
onclick="downloadFile('/game/offline/clients/EaglerForge.html', 'EaglerForge.html')"
|
||||||
>EaglerForge</span
|
>EaglerForge</span
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
{
|
{
|
||||||
"version": "1.7.2",
|
"version": "1.7.2",
|
||||||
"changelog": [
|
"changelog": [
|
||||||
|
"Added Starlike Client",
|
||||||
"Updated EaglercraftX 1.8 to u37",
|
"Updated EaglercraftX 1.8 to u37",
|
||||||
"Added Sweet Cherry 16x texture pack",
|
"Added Sweet Cherry 16x texture pack",
|
||||||
"New setting to open new tab instead of popup"
|
"New setting to open new tab instead of popup"
|
||||||
|
@ -479,7 +479,7 @@ window.eaglercraftXOpts = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Mods: storage.local.get('mods') ?? [],
|
Mods: storage.local.get('addons').mods ?? [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
@ -498,33 +498,37 @@ const detect = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const mods = {
|
const addons = {
|
||||||
toggle: function (modId: string): void {
|
mods: {
|
||||||
const mod = `/resources/addons/${modId}.js`;
|
toggle: function (modId: string): void {
|
||||||
const mods: string[] = storage.local.get('mods') ?? [];
|
const mod = `/resources/addons/${modId}.js`;
|
||||||
const modIndex = mods.indexOf(mod);
|
const addons: { mods: string[] } = storage.local.get('addons') ?? {
|
||||||
if (modIndex === -1) {
|
mods: [],
|
||||||
mods.push(mod);
|
};
|
||||||
mods.sort();
|
const modIndex = addons.mods.indexOf(mod);
|
||||||
storage.local.set('mods', mods);
|
if (modIndex === -1) {
|
||||||
const modInstallElem = document.querySelector(
|
addons.mods.push(mod);
|
||||||
`.mod-list > div .links .install[data-mod-id='${modId}']`,
|
addons.mods.sort();
|
||||||
);
|
storage.local.set('addons', addons);
|
||||||
if (modInstallElem) {
|
const modInstallElem = document.querySelector(
|
||||||
modInstallElem.textContent = 'Uninstall';
|
`.mod-list > div .links .install[data-mod-id='${modId}']`,
|
||||||
modInstallElem.classList.add('installed');
|
);
|
||||||
|
if (modInstallElem) {
|
||||||
|
modInstallElem.classList.add('installed');
|
||||||
|
modInstallElem.textContent = 'Uninstall';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
addons.mods.splice(modIndex, 1);
|
||||||
|
storage.local.set('addons', addons);
|
||||||
|
const modInstallElem = document.querySelector(
|
||||||
|
`.mod-list > div .links .install[data-mod-id='${modId}']`,
|
||||||
|
);
|
||||||
|
if (modInstallElem) {
|
||||||
|
modInstallElem.classList.remove('installed');
|
||||||
|
modInstallElem.textContent = 'Install';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
},
|
||||||
mods.splice(modIndex, 1);
|
|
||||||
storage.local.set('mods', mods);
|
|
||||||
const modInstallElem = document.querySelector(
|
|
||||||
`.mod-list > div .links .install[data-mod-id='${modId}']`,
|
|
||||||
);
|
|
||||||
if (modInstallElem) {
|
|
||||||
modInstallElem.textContent = 'Install';
|
|
||||||
modInstallElem.classList.remove('installed');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -924,7 +928,7 @@ if (window.location.pathname === '/settings/general/') {
|
|||||||
storage.local.set('noPopup', false);
|
storage.local.set('noPopup', false);
|
||||||
// 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('addons', { mods: [] });
|
||||||
storage.local.set(
|
storage.local.set(
|
||||||
'lastVersion',
|
'lastVersion',
|
||||||
(await (await fetch('/resources/data/main.json')).json()).updates[0]
|
(await (await fetch('/resources/data/main.json')).json()).updates[0]
|
||||||
@ -951,38 +955,47 @@ if (window.location.pathname === '/settings/general/') {
|
|||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const addonType: 'mods' | 'resourcepacks' =
|
const addonType: 'mods' | 'resourcepacks' =
|
||||||
window.location.pathname === '/addons/mods/' ? 'mods' : 'resourcepacks';
|
window.location.pathname === '/addons/mods/' ? 'mods' : 'resourcepacks';
|
||||||
const data: {
|
const addons: {
|
||||||
id: string;
|
mods: {
|
||||||
name: string;
|
id: string;
|
||||||
description: string;
|
name: string;
|
||||||
author: string;
|
description: string;
|
||||||
authorLink: string;
|
author: string;
|
||||||
source: string;
|
authorLink: string;
|
||||||
}[] = (await (await fetch('/resources/data/main.json')).json()).addons;
|
source: string;
|
||||||
const modList = document.querySelector('.mod-list');
|
}[];
|
||||||
// @ts-expect-error
|
resourcepacks: {
|
||||||
data[addonType].forEach((addon) => {
|
id: string;
|
||||||
const modItem = document.createElement('div');
|
name: string;
|
||||||
modItem.innerHTML = `<img loading="lazy" src="/resources/images/icons/addons/${addon.id}.webp" /><div class="details"><strong>${
|
description: string;
|
||||||
|
author: string;
|
||||||
|
authorLink: string;
|
||||||
|
source: string;
|
||||||
|
}[];
|
||||||
|
} = (await (await fetch('/resources/data/main.json')).json()).addons;
|
||||||
|
const addonList = document.querySelector('.mod-list');
|
||||||
|
addons[addonType].forEach((addon) => {
|
||||||
|
const addonItem = document.createElement('div');
|
||||||
|
addonItem.innerHTML = `<img loading="lazy" src="/resources/images/icons/addons/${addon.id}.webp" /><div class="details"><strong>${
|
||||||
addon.name
|
addon.name
|
||||||
}</strong><p class="author">By <a href="${addon.authorLink}" target="_blank">${addon.author}</a></p><p class="description">${addon.description}</p></div><div class="links">${
|
}</strong><p class="author">By <a href="${addon.authorLink}" target="_blank">${addon.author}</a></p><p class="description">${addon.description}</p></div><div class="links">${
|
||||||
addonType === 'mods'
|
addonType === 'mods'
|
||||||
? `<span class="download" onclick="downloadFile('/resources/addons/${addon.id}.js', '${addon.name.replace('\\', '\\\\').replace("'", "\\'")}.js')">Download</span><span class="install" data-mod-id="${addon.id}" onclick="mods.toggle('${addon.id}')">Install</span>`
|
? `<span class="download" onclick="downloadFile('/resources/addons/${addon.id}.js', '${addon.name.replace('\\', '\\\\').replace("'", "\\'")}.js')">Download</span><span class="install" data-mod-id="${addon.id}" onclick="addons.mods.toggle('${addon.id}')">Install</span>`
|
||||||
: `<span class="download" onclick="downloadFile('/resources/addons/${addon.id}.zip', '${addon.name.replace('\\', '\\\\').replace("'", "\\'")}.zip')">Download</span>`
|
: `<span class="download" onclick="downloadFile('/resources/addons/${addon.id}.zip', '${addon.name.replace('\\', '\\\\').replace("'", "\\'")}.zip')">Download</span>`
|
||||||
}</div>`;
|
}</div>`;
|
||||||
modList?.append(modItem);
|
addonList?.append(addonItem);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (addonType === 'mods') {
|
if (addonType === 'mods') {
|
||||||
const installedMods = storage.local.get('mods') ?? [];
|
const installedMods = storage.local.get('addons').mods ?? [];
|
||||||
const modElements = document.querySelectorAll(
|
const modElements = document.querySelectorAll(
|
||||||
'.mod-list > div .links .install',
|
'.mod-list > div .links .install',
|
||||||
);
|
);
|
||||||
modElements.forEach((element) => {
|
modElements.forEach((element) => {
|
||||||
const modId = (element as HTMLElement).dataset['modId'];
|
const modId = (element as HTMLElement).dataset['modId'];
|
||||||
if (installedMods.includes(`/resources/addons/${modId}.js`)) {
|
if (installedMods.includes(`/resources/addons/${modId}.js`)) {
|
||||||
element.textContent = 'Uninstall';
|
|
||||||
element.classList.add('installed');
|
element.classList.add('installed');
|
||||||
|
element.textContent = 'Uninstall';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1025,7 +1038,7 @@ if (window.location.hostname === null) {
|
|||||||
query,
|
query,
|
||||||
versionSelector,
|
versionSelector,
|
||||||
game,
|
game,
|
||||||
mods,
|
addons,
|
||||||
base64Gzip,
|
base64Gzip,
|
||||||
article,
|
article,
|
||||||
downloadFile,
|
downloadFile,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user