diff --git a/.github/workflows/update-clients.yml b/.github/workflows/update-clients.yml index bec09fb..6ed88df 100644 --- a/.github/workflows/update-clients.yml +++ b/.github/workflows/update-clients.yml @@ -67,6 +67,28 @@ jobs: # 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/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 if: success() || failure() run: | diff --git a/src/game/web/clients/starlike/.gitkeep b/src/game/web/clients/starlike/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/home/clients/index.html b/src/home/clients/index.html index 8c5b676..80cb99a 100644 --- a/src/home/clients/index.html +++ b/src/home/clients/index.html @@ -84,6 +84,12 @@ >Select a client
+
+ + Starlike Client +
diff --git a/src/home/downloads/index.html b/src/home/downloads/index.html index a112739..bb21424 100644 --- a/src/home/downloads/index.html +++ b/src/home/downloads/index.html @@ -112,6 +112,10 @@ >Indev

+ Starlike Client EaglerForge div .links .install[data-mod-id='${modId}']`, - ); - if (modInstallElem) { - modInstallElem.textContent = 'Uninstall'; - modInstallElem.classList.add('installed'); +const addons = { + mods: { + toggle: function (modId: string): void { + const mod = `/resources/addons/${modId}.js`; + const addons: { mods: string[] } = storage.local.get('addons') ?? { + mods: [], + }; + const modIndex = addons.mods.indexOf(mod); + if (modIndex === -1) { + addons.mods.push(mod); + addons.mods.sort(); + storage.local.set('addons', addons); + const modInstallElem = document.querySelector( + `.mod-list > div .links .install[data-mod-id='${modId}']`, + ); + 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('offlineCache', offlineCheckbox?.checked ?? false); // storage.local.set('showAds', true); - storage.local.set('mods', []); + storage.local.set('addons', { mods: [] }); storage.local.set( 'lastVersion', (await (await fetch('/resources/data/main.json')).json()).updates[0] @@ -951,38 +955,47 @@ if (window.location.pathname === '/settings/general/') { document.addEventListener('DOMContentLoaded', async () => { const addonType: 'mods' | 'resourcepacks' = window.location.pathname === '/addons/mods/' ? 'mods' : 'resourcepacks'; - const data: { - 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'); - // @ts-expect-error - data[addonType].forEach((addon) => { - const modItem = document.createElement('div'); - modItem.innerHTML = `
${ + const addons: { + mods: { + id: string; + name: string; + description: string; + author: string; + authorLink: string; + source: string; + }[]; + resourcepacks: { + id: string; + name: string; + 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 = `
${ addon.name }

By ${addon.author}

${addon.description}

`; - modList?.append(modItem); + addonList?.append(addonItem); }); if (addonType === 'mods') { - const installedMods = storage.local.get('mods') ?? []; + const installedMods = storage.local.get('addons').mods ?? []; const modElements = document.querySelectorAll( '.mod-list > div .links .install', ); modElements.forEach((element) => { const modId = (element as HTMLElement).dataset['modId']; if (installedMods.includes(`/resources/addons/${modId}.js`)) { - element.textContent = 'Uninstall'; element.classList.add('installed'); + element.textContent = 'Uninstall'; } }); } @@ -1025,7 +1038,7 @@ if (window.location.hostname === null) { query, versionSelector, game, - mods, + addons, base64Gzip, article, downloadFile,