diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 731b9ee..e6f2b89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,6 +41,12 @@ importers: react-markdown: specifier: ^10.1.0 version: 10.1.0(@types/react@19.2.14)(react@19.2.4) + rehype-raw: + specifier: ^7.0.0 + version: 7.0.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 remark-gfm: specifier: ^4.0.1 version: 4.0.1 @@ -860,6 +866,10 @@ packages: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + esbuild@0.27.4: resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} @@ -928,15 +938,36 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-sanitize@5.0.2: + resolution: {integrity: sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==} + hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} @@ -1230,6 +1261,9 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1279,6 +1313,12 @@ packages: resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -1400,6 +1440,9 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -1446,6 +1489,9 @@ packages: yaml: optional: true + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -2090,6 +2136,8 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.0 + entities@6.0.1: {} + esbuild@0.27.4: optionalDependencies: '@esbuild/aix-ppc64': 0.27.4 @@ -2158,6 +2206,43 @@ snapshots: graceful-fs@4.2.11: {} + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.0 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-sanitize@5.0.2: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.0 + unist-util-position: 5.0.0 + hast-util-to-jsx-runtime@2.3.6: dependencies: '@types/estree': 1.0.8 @@ -2178,12 +2263,32 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + html-url-attributes@3.0.1: {} + html-void-elements@3.0.0: {} + inline-style-parser@0.2.7: {} is-alphabetical@2.0.1: {} @@ -2654,6 +2759,10 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse5@7.3.0: + dependencies: + entities: 6.0.1 + path-exists@4.0.0: {} picocolors@1.1.1: {} @@ -2705,6 +2814,17 @@ snapshots: react@19.2.4: {} + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-sanitize@6.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-sanitize: 5.0.2 + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 @@ -2876,6 +2996,11 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -2900,6 +3025,8 @@ snapshots: jiti: 2.6.1 lightningcss: 1.31.1 + web-namespaces@2.0.1: {} + which-module@2.0.1: {} wrap-ansi@6.2.0: diff --git a/public/images/hellishEndsIcon.png b/public/images/hellishEndsIcon.png new file mode 100644 index 0000000..d005cd8 Binary files /dev/null and b/public/images/hellishEndsIcon.png differ diff --git a/public/images/netherrack_0.png b/public/images/netherrack_0.png deleted file mode 100644 index ee994ea..0000000 Binary files a/public/images/netherrack_0.png and /dev/null differ diff --git a/public/panorama/hellishends_Panorama_Background_Day.png b/public/panorama/hellishends_Panorama_Background_Day.png new file mode 100644 index 0000000..e856bf1 Binary files /dev/null and b/public/panorama/hellishends_Panorama_Background_Day.png differ diff --git a/public/panorama/hellishends_Panorama_Background_Night.png b/public/panorama/hellishends_Panorama_Background_Night.png new file mode 100644 index 0000000..e856bf1 Binary files /dev/null and b/public/panorama/hellishends_Panorama_Background_Night.png differ diff --git a/src/hooks/useGameManager.ts b/src/hooks/useGameManager.ts index 6628c56..b7b0d60 100644 --- a/src/hooks/useGameManager.ts +++ b/src/hooks/useGameManager.ts @@ -59,12 +59,12 @@ const BASE_EDITIONS = [ { id: "legacy_nether_fork", name: "Hellish Ends", - desc: "QoL, Random additions, and Nether/End dimensions overhaul (Modded build!)", + desc: "QoL, Random additions, and Nether/End/Aether dimensions overhaul (Modded build!)", url: "https://github.com/deadvoxelx/ThatModdedRepo/releases/download/nightly/LCEWindows64.zip", titleImage: "/images/minecraft_title_hellishends.png", supportsSlimSkins: false, - logo: "/images/netherrack_0.png", - panorama: "vanilla_tu19", + logo: "/images/hellishEndsIcon.png", + panorama: "hellishends", }, ]; diff --git a/src/services/TauriService.ts b/src/services/TauriService.ts index 77548da..adc6e14 100644 --- a/src/services/TauriService.ts +++ b/src/services/TauriService.ts @@ -151,7 +151,11 @@ export class TauriService { servers: McServer[], extraArgs?: string[], ): Promise { - return invoke("launch_game", { instanceId, servers, extraArgs: extraArgs ?? [] }); + return invoke("launch_game", { + instanceId, + servers, + extraArgs: extraArgs ?? [], + }); } static async stopGame(instanceId: string): Promise { @@ -173,7 +177,10 @@ export class TauriService { }); } - static async workshopUninstall(instanceId: string, packageId: string): Promise { + static async workshopUninstall( + instanceId: string, + packageId: string, + ): Promise { return invoke("workshop_uninstall", { instanceId, packageId }); } @@ -227,7 +234,10 @@ export class TauriService { return invoke("save_global_skin_pck", { pckData: Array.from(pckData) }); } - static async checkGameUpdate(instanceId: string, url: string): Promise { + static async checkGameUpdate( + instanceId: string, + url: string, + ): Promise { return invoke("check_game_update", { instanceId, url }); } @@ -239,7 +249,11 @@ export class TauriService { return invoke("pick_file", { title, filters }); } - static async saveFileDialog(title: string, filename: string, filters: string[]): Promise { + static async saveFileDialog( + title: string, + filename: string, + filters: string[], + ): Promise { return invoke("save_file_dialog", { title, filename, filters }); } @@ -260,25 +274,47 @@ export class TauriService { instanceId: string, name: string, titleBase64: string, - panoramaBase64: string + panoramaBase64: string, ): Promise { - return invoke("add_to_steam", { instanceId, name, titleBase64, panoramaBase64 }); + return invoke("add_to_steam", { + instanceId, + name, + titleBase64, + panoramaBase64, + }); } static async stunDiscover(): Promise<{ ip: string; port: number }> { return invoke("stun_discover"); } - static async startDirectProxy(targetIp: string, targetPort: number): Promise { + static async startDirectProxy( + targetIp: string, + targetPort: number, + ): Promise { return invoke("start_direct_proxy", { targetIp, targetPort }); } - static async startRelayProxy(apiBaseUrl: string, accessToken: string, sessionId: string): Promise { + static async startRelayProxy( + apiBaseUrl: string, + accessToken: string, + sessionId: string, + ): Promise { return invoke("start_relay_proxy", { apiBaseUrl, accessToken, sessionId }); } - static async startHostRelay(apiBaseUrl: string, accessToken: string, sessionId: string, gamePort: number): Promise { - return invoke("start_host_relay", { apiBaseUrl, accessToken, sessionId, gamePort }); + static async startHostRelay( + apiBaseUrl: string, + accessToken: string, + sessionId: string, + gamePort: number, + ): Promise { + return invoke("start_host_relay", { + apiBaseUrl, + accessToken, + sessionId, + gamePort, + }); } static async stopProxy(sessionId: string): Promise { @@ -297,14 +333,21 @@ export class TauriService { sessionId: string, instanceId: string, ): Promise { - return invoke("join_game", { apiBaseUrl, accessToken, hostIp, hostPort, sessionId, instanceId }); + return invoke("join_game", { + apiBaseUrl, + accessToken, + hostIp, + hostPort, + sessionId, + instanceId, + }); } static async httpProxyRequest( method: string, url: string, body: string | null, - headers: Record + headers: Record, ): Promise<{ status: number; body: string }> { return invoke("http_proxy_request", { method, url, body, headers }); } @@ -313,7 +356,10 @@ export class TauriService { return invoke("get_playtime", { instanceId }); } - static async getPlaytimeDaily(instanceId: string, days: number): Promise { + static async getPlaytimeDaily( + instanceId: string, + days: number, + ): Promise { return invoke("get_playtime_daily", { instanceId, days }); } @@ -345,7 +391,9 @@ export class TauriService { return invoke("remove_plugin_dir", { pluginId }); } - static async listDirectory(path: string): Promise> { + static async listDirectory( + path: string, + ): Promise> { return invoke("list_directory", { path }); } @@ -355,5 +403,4 @@ export class TauriService { ): Promise { return invoke("import_world", { inputPath, outputPath }); } - }