Files
lce-hub.github.io/assets/index-CjEpeUAh.js

20 lines
9.2 KiB
JavaScript

(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=class{musicFiles=[`music/music1.ogg`,`music/music2.ogg`,`music/music3.ogg`,`music/music4.ogg`,`music/music5.ogg`];musicIndex=Math.floor(Math.random()*5);music;isMuted=!1;hasInteracted=!1;constructor(){this.music=new Audio(this.musicFiles[this.musicIndex]),this.music.volume=.3,this.music.preload=`auto`,this.music.addEventListener(`ended`,()=>this.nextTrack()),localStorage.getItem(`emerald-muted`)===`true`&&(this.isMuted=!0,this.music.pause())}nextTrack(){this.musicIndex=(this.musicIndex+1)%this.musicFiles.length,this.music.src=this.musicFiles[this.musicIndex],this.music.preload=`auto`,this.isMuted||this.music.play().catch(()=>{})}start(){this.hasInteracted||this.isMuted||(this.hasInteracted=!0,this.music.play().catch(()=>{}))}toggleMute(){this.isMuted=!this.isMuted,localStorage.setItem(`emerald-muted`,String(this.isMuted)),this.isMuted?this.music.pause():(this.hasInteracted||=!0,this.music.play().catch(()=>{})),this.updateUI()}updateUI(){let e=document.getElementById(`audio-toggle`);if(e){e.classList.toggle(`muted`,this.isMuted);let t=e.querySelector(`i`);t&&(t.className=this.isMuted?`fas fa-volume-mute`:`fas fa-volume-up`)}}playSFX(e){let t=new Audio(`sounds/${e}`);t.volume=.4,t.play().catch(()=>{})}};document.addEventListener(`DOMContentLoaded`,()=>{let t=new e;t.updateUI(),document.addEventListener(`click`,()=>t.start(),{once:!0}),document.getElementById(`audio-toggle`)?.addEventListener(`click`,()=>{t.playSFX(`click.wav`),t.toggleMute()});let n=document.querySelectorAll(`.tab-item`),r=document.querySelectorAll(`.tab-content`),i=0,a=e=>{e<0&&(e=n.length-1),e>=n.length&&(e=0),i!==e&&t.playSFX(`click.wav`),i=e,n.forEach((t,n)=>{t.classList.toggle(`active`,n===e)}),r.forEach((t,n)=>{t.classList.toggle(`active`,n===e)})};n.forEach((e,t)=>{e.addEventListener(`click`,()=>a(t))}),window.addEventListener(`keydown`,e=>{(e.key===`q`||e.key===`ArrowLeft`)&&a(i-1),(e.key===`e`||e.key===`ArrowRight`)&&a(i+1)}),document.getElementById(`prev-tab`)?.addEventListener(`click`,()=>a(i-1)),document.getElementById(`next-tab`)?.addEventListener(`click`,()=>a(i+1));let o=document.querySelector(`.carousel-img`),s=[`Community/image.png`,`Community/image2.png`,`Community/image3.png`,`Community/image4.png`,`Community/image5.png`,`Community/image6.png`],c=0,l=(e,n=!1)=>{n&&t.playSFX(`wood click.wav`),c=(c+e+s.length)%s.length,o&&(o.style.opacity=`0`,setTimeout(()=>{o.src=s[c],o.style.opacity=`1`},100))};document.querySelector(`.carousel-arrow.left`)?.addEventListener(`click`,()=>l(-1,!0)),document.querySelector(`.carousel-arrow.right`)?.addEventListener(`click`,()=>l(1,!0));let u=`LCE-Hub/LCE-Emerald-Launcher`,d=document.getElementById(`download-modal`),f=document.getElementById(`modal-options`),p=document.getElementById(`modal-title`),m=document.getElementById(`close-modal`),h=[],g=[],_=`Windows`,v=`loading`,y=()=>{let e=window.navigator.userAgent.toLowerCase(),t=window.navigator.platform?.toLowerCase()||``,n=`Unknown`,r=`x64`;return e.includes(`win`)?n=`Windows`:e.includes(`mac`)?n=`macOS`:e.includes(`linux`)&&(n=`Linux`),(e.includes(`arm64`)||e.includes(`aarch64`)||t.includes(`arm64`)||t.includes(`aarch64`)||n===`macOS`&&window.navigator.maxTouchPoints>0)&&(r=`arm64`),{os:n,arch:r}},b=(e,t,n)=>{if(e===`Windows`)return n.find(e=>e.name.endsWith(`.exe`))||n.find(e=>e.name.endsWith(`.msi`));if(e===`macOS`){let e=t===`arm64`?`aarch64.dmg`:`x64.dmg`;return n.find(t=>t.name.endsWith(e))}if(e===`Linux`){let e=t===`arm64`?`aarch64`:`x86_64`;return n.find(t=>t.name.endsWith(`.flatpak`)&&t.name.includes(e))||n.find(e=>e.name.endsWith(`.flatpak`))}return null},x=(e,t)=>{let n=e.toLowerCase();if(t===`Windows`){if(n.endsWith(`.exe`))return`Windows Setup (.exe)`;if(n.endsWith(`.msi`))return`Windows Installer (.msi)`}if(t===`macOS`)return n.includes(`aarch64`)||n.includes(`arm64`)?`macOS Apple Silicon`:`macOS Intel`;if(t===`Linux`){if(n.endsWith(`.flatpak`))return`Flatpak`;if(n.endsWith(`.deb`))return`Debian/Ubuntu (.deb)`;if(n.endsWith(`.rpm`))return`RedHat/Fedora (.rpm)`;if(n.endsWith(`.appimage`))return`AppImage`}return e},S=e=>{if(!e||e===0)return`Size Unknown`;let t=1024,n=[`Bytes`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},C=e=>{if(!d||!f||!p)return;_=e;let t=document.getElementById(`nightly-toggle`)?.checked||!1,n=t?g:h,r=[],i=`Select Downloader`;e===`Windows`?(r=n.filter(e=>e.name.endsWith(`.exe`)||e.name.endsWith(`.msi`)),i=`Emerald Legacy for Windows ${t?`(Nightly)`:``}`):e===`macOS`?(r=n.filter(e=>e.name.endsWith(`.dmg`)),i=`Emerald Legacy for macOS ${t?`(Nightly)`:``}`):e===`Linux`&&(r=n.filter(e=>e.name.endsWith(`.flatpak`)||e.name.endsWith(`.deb`)||e.name.endsWith(`.rpm`)||e.name.endsWith(`.AppImage`)),i=`Emerald Legacy for Linux ${t?`(Nightly)`:``}`);let{arch:a}=y(),o=b(e,a,r);p.innerText=i,r.length>0?f.innerHTML=r.map(t=>{let n=t.name===o?.name,r=x(t.name,e),i=S(t.size);return`
<div class="modal-btn-container">
<a href="${t.browser_download_url}" class="main-btn" onclick="window.playAudioSFX('levelup.ogg')">
<span>${r} <small style="opacity: 0.7; font-size: 0.8rem; margin-left: 8px;">(${i})</small></span>
</a>
${n?`<span class="splash-text">Recommended!</span>`:``}
</div>
`}).join(``):v===`loading`?f.innerHTML=`<div style="color: #ccc; font-size: 1.2rem; padding: 20px; text-align: center;"><i class="fas fa-spinner fa-spin" style="margin-right: 8px;"></i>Loading download links...</div>`:v===`error`?f.innerHTML=`
<div style="color: #ff8888; font-size: 1.1rem; padding: 20px; text-align: center; font-family: var(--font-pixel);">
<p style="margin-bottom: 15px;">Failed to retrieve download links automatically.</p>
<a href="https://github.com/${u}/releases" target="_blank" class="main-btn" style="display: inline-flex; justify-content: center; align-items: center; text-decoration: none; max-width: 320px; margin: 0 auto;">
VIEW RELEASES ON GITHUB
</a>
</div>
`:t?f.innerHTML=`
<div style="color: #ccc; font-size: 1.1rem; padding: 20px; text-align: center;">
<p>No nightly builds are currently available.</p>
<p style="font-size: 0.9rem; margin-top: 10px; opacity: 0.8;">Please toggle Nightly off to download stable versions.</p>
</div>
`:f.innerHTML=`<div style="color: #ccc; font-size: 1.2rem; padding: 20px; text-align: center;">No builds found for this platform.</div>`,d.classList.add(`active`)};document.getElementById(`nightly-toggle`)?.addEventListener(`change`,()=>{t.playSFX(`click.wav`),C(_)}),window.playAudioSFX=e=>t.playSFX(e);let w=async()=>{v=`loading`;try{let[e,t]=await Promise.allSettled([fetch(`https://api.github.com/repos/${u}/releases/latest`),fetch(`https://api.github.com/repos/${u}/releases/tags/nightly`)]);e.status===`fulfilled`&&e.value.ok?(h=(await e.value.json()).assets||[],v=`success`):v=`error`,g=t.status===`fulfilled`&&t.value.ok&&(await t.value.json()).assets||[]}catch(e){console.error(`Error fetching releases:`,e),v=`error`}},T=document.getElementById(`download-win`),E=document.getElementById(`download-linux`),D=document.getElementById(`download-macos`);T?.addEventListener(`click`,e=>{e.preventDefault(),C(`Windows`)}),E?.addEventListener(`click`,e=>{e.preventDefault(),C(`Linux`)}),D?.addEventListener(`click`,e=>{e.preventDefault(),C(`macOS`)});let{os:O}=y(),k=document.getElementById(`main-download-btn`);if(k){k.addEventListener(`click`,e=>{e.preventDefault(),C(O===`Unknown`?`Windows`:O)});let e=k.querySelector(`span`);e&&(e.innerText=`Download for ${O===`Unknown`?`Your OS`:O}`)}m?.addEventListener(`click`,()=>{t.playSFX(`back.ogg`),d?.classList.remove(`active`)}),d?.addEventListener(`click`,e=>{e.target===d&&(t.playSFX(`back.ogg`),d.classList.remove(`active`))}),window.addEventListener(`keydown`,e=>{e.key===`Escape`&&(d?.classList.contains(`active`)&&t.playSFX(`back.ogg`),d?.classList.remove(`active`))});let A=document.getElementById(`image-modal`),j=document.getElementById(`expanded-image`),M=document.getElementById(`close-image-modal`),N=e=>{!A||!j||(t.playSFX(`levelup.ogg`),j.src=e,A.classList.add(`active`))};document.querySelectorAll(`.gallery-frame img, .carousel-img`).forEach(e=>{e.style.cursor=`pointer`,e.addEventListener(`click`,()=>{N(e.src)})}),M?.addEventListener(`click`,()=>{t.playSFX(`back.ogg`),A?.classList.remove(`active`)}),A?.addEventListener(`click`,e=>{e.target===A&&(t.playSFX(`back.ogg`),A.classList.remove(`active`))}),window.addEventListener(`keydown`,e=>{e.key===`Escape`&&A?.classList.contains(`active`)&&(t.playSFX(`back.ogg`),A.classList.remove(`active`))}),w(),setInterval(()=>l(1,!1),5e3)});