From abf62839e19e8fcfa055d5091b11be5949bf3f69 Mon Sep 17 00:00:00 2001 From: neoapps-dev Date: Sun, 16 Aug 2026 22:57:42 +0300 Subject: [PATCH] feat: add playerhead to rpc --- public/fonts/Mojang Font_11.ttf | Bin 0 -> 69116 bytes public/fonts/Mojang Font_7.ttf | Bin 0 -> 69100 bytes src/components/views/HomeView.tsx | 165 +++++++++++++------------- src/components/views/SettingsView.tsx | 17 ++- src/css/index.css | 59 +++++++-- src/hooks/useDiscordRPC.ts | 17 ++- src/pages/App.tsx | 4 - src/services/RpcService.ts | 122 +++++++++++++++++-- 8 files changed, 271 insertions(+), 113 deletions(-) create mode 100644 public/fonts/Mojang Font_11.ttf create mode 100644 public/fonts/Mojang Font_7.ttf diff --git a/public/fonts/Mojang Font_11.ttf b/public/fonts/Mojang Font_11.ttf new file mode 100644 index 0000000000000000000000000000000000000000..969cee585a78c13e86bf4e3e1090dece8526a71a GIT binary patch literal 69116 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 Rp1fTUG%Yu#$2pXS{{+h+;Di7G literal 0 HcmV?d00001 diff --git a/public/fonts/Mojang Font_7.ttf b/public/fonts/Mojang Font_7.ttf new file mode 100644 index 0000000000000000000000000000000000000000..727c5fb6cdac39e4ee99c6bcd851b26ed0d1233e GIT binary patch literal 69100 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 literal 0 HcmV?d00001 diff --git a/src/components/views/HomeView.tsx b/src/components/views/HomeView.tsx index e681c76..5139024 100644 --- a/src/components/views/HomeView.tsx +++ b/src/components/views/HomeView.tsx @@ -11,10 +11,9 @@ import { usePlatform } from "../../hooks/usePlatform"; import type { Edition } from "../../types/edition"; const HomeView = memo(function HomeView() { - const { setActiveView, focusSection, onNavigateToSkin } = - useUI(); + const { setActiveView, focusSection, onNavigateToSkin } = useUI(); const { profile, legacyMode } = useConfig(); - const { playPressSound, playSfx } = useAudio(); + const { playPressSound } = useAudio(); const { handleLaunch, editions, @@ -37,79 +36,85 @@ const HomeView = memo(function HomeView() { const hasAnyInstall = installs.length > 0; - const buttonsVal = useMemo( - () => { - const mainBtn = { - label: !hasAnyInstall - ? "Install a version" - : isGameRunning - ? "Stop Game" - : isDownloading - ? "Installation in progress..." - : isInstalled - ? "Play Game" - : `Download ${selectedVersionName}`, - action: !hasAnyInstall - ? () => setActiveView("versions") - : isGameRunning - ? stopGame - : isDownloading - ? () => {} - : isInstalled - ? handleLaunch - : () => toggleInstall(profile), - isDanger: isGameRunning, - disabled: isDownloading, - id: "main-action", - }; + const buttonsVal = useMemo(() => { + const mainBtn = { + label: !hasAnyInstall + ? "Install a version" + : isGameRunning + ? "Stop Game" + : isDownloading + ? "Installation in progress..." + : isInstalled + ? "Play Game" + : `Download ${selectedVersionName}`, + action: !hasAnyInstall + ? () => setActiveView("versions") + : isGameRunning + ? stopGame + : isDownloading + ? () => {} + : isInstalled + ? handleLaunch + : () => toggleInstall(profile), + isDanger: isGameRunning, + disabled: isDownloading, + id: "main-action", + }; - const pluginBtns = pluginActions.map((a) => ({ - label: a.label, - action: () => a.onClick(), + const pluginBtns = pluginActions.map((a) => ({ + label: a.label, + action: () => a.onClick(), + isDanger: false, + disabled: false, + id: a.id, + })); + + const menuBtns = [ + { + label: "Help & Options", + action: () => setActiveView("settings"), isDanger: false, disabled: false, - id: a.id, - })); + id: "settings", + }, + { + label: "Versions", + action: () => setActiveView("versions"), + isDanger: false, + disabled: false, + id: "versions", + }, + { + label: "Workshop", + action: () => setActiveView("workshop"), + isDanger: false, + disabled: false, + id: "workshop", + }, + { + label: "Developer Tools", + action: () => setActiveView("devtools"), + isDanger: false, + disabled: false, + id: "devtools", + }, + ].filter((b) => !(isAndroid && b.id === "devtools")); - const menuBtns = [ - { - label: "Help & Options", - action: () => setActiveView("settings"), - isDanger: false, - disabled: false, - id: "settings", - }, - { - label: "Versions", - action: () => setActiveView("versions"), - isDanger: false, - disabled: false, - id: "versions", - }, - { - label: "Workshop", - action: () => setActiveView("workshop"), - isDanger: false, - disabled: false, - id: "workshop", - }, - { - label: "Developer Tools", - action: () => setActiveView("devtools"), - isDanger: false, - disabled: false, - id: "devtools", - }, - ].filter((b) => !(isAndroid && b.id === "devtools")); - - return [mainBtn, ...pluginBtns, ...menuBtns]; - }, - [ - isDownloading, hasAnyInstall, isInstalled, selectedVersionName, - handleLaunch, toggleInstall, profile, setActiveView, - isGameRunning, stopGame, pluginActions, isAndroid, - ], - ); + return [mainBtn, ...pluginBtns, ...menuBtns]; + }, [ + isDownloading, + hasAnyInstall, + isInstalled, + selectedVersionName, + handleLaunch, + toggleInstall, + profile, + setActiveView, + isGameRunning, + stopGame, + pluginActions, + isAndroid, + ]); useEffect(() => { if (!isFocusedSection) { @@ -127,7 +132,8 @@ const HomeView = memo(function HomeView() { prev === null ? buttonsVal.length - 1 : prev > 0 ? prev - 1 : prev, ); if (e.key === "ArrowLeft") onNavigateToSkin(); - if (e.key === "Enter" && menuFocus !== null) buttonsVal[menuFocus].action(); + if (e.key === "Enter" && menuFocus !== null) + buttonsVal[menuFocus].action(); }; window.addEventListener("keydown", handleKey); return () => window.removeEventListener("keydown", handleKey); @@ -189,6 +195,7 @@ const HomeView = memo(function HomeView() { {!legacyMode && (
+
-
-
)} diff --git a/src/components/views/SettingsView.tsx b/src/components/views/SettingsView.tsx index 842f84b..4935765 100644 --- a/src/components/views/SettingsView.tsx +++ b/src/components/views/SettingsView.tsx @@ -151,7 +151,7 @@ const SettingsView = memo(function SettingsView() { "fixed inset-0 bg-black/80 flex items-center justify-center z-50"; dialog.innerHTML = `
-

Reset Setup

+

Reset Setup

Are you sure you want to reset launcher setup?

@@ -189,7 +189,7 @@ const SettingsView = memo(function SettingsView() { "fixed inset-0 bg-black/80 flex items-center justify-center z-50"; dialog.innerHTML = `
-

CONFIRM RESET

+

CONFIRM RESET

⚠️ This will:

    @@ -198,7 +198,7 @@ const SettingsView = memo(function SettingsView() {
  • Show setup screen again
  • Require reconfiguration
-

This action cannot be undone!

+

This action cannot be undone!

@@ -355,6 +355,15 @@ const SettingsView = memo(function SettingsView() { }, }); } + items.push({ + id: "credits", + label: "Credits", + type: "button", + onClick: () => { + playPressSound(); + setActiveView("credits"); + }, + }); } else if (currentSubMenu === "audio") { items.push({ id: "music", @@ -708,7 +717,7 @@ const SettingsView = memo(function SettingsView() { transition={{ duration: animationsEnabled ? 0.3 : 0 }} className="flex flex-col items-center w-full max-w-5xl outline-none" > -

+

{currentSubMenu === "main" ? "Settings" : currentSubMenu === "audio" diff --git a/src/css/index.css b/src/css/index.css index 33554c9..bb82e3d 100644 --- a/src/css/index.css +++ b/src/css/index.css @@ -1,5 +1,23 @@ @import "tailwindcss"; +@layer base { + *, + ::before, + ::after { + -webkit-font-smoothing: none; + -moz-osx-font-smoothing: auto; + } + button, + input, + select, + textarea { + font-weight: normal; + } + body { + font-synthesis: none; + } +} + @font-face { font-family: "Mojangles"; src: url("/fonts/Mojangles.ttf") format("truetype"); @@ -7,6 +25,20 @@ font-style: normal; } +@font-face { + font-family: "Mojang7"; + src: url("/fonts/Mojang Font_7.ttf") format("truetype"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Mojang11"; + src: url("/fonts/Mojang Font_11.ttf") format("truetype"); + font-weight: normal; + font-style: normal; +} + .gamepad-connected-indicator { position: fixed; bottom: 10px; @@ -122,7 +154,6 @@ body { margin: 0; background-color: #000; font-family: "Mojangles", monospace; - -webkit-font-smoothing: none; } .mc-button { @@ -188,12 +219,19 @@ body { } ::-webkit-scrollbar-thumb { - background-image: url("/images/Slider_Handle_top.png"), + background-image: + url("/images/Slider_Handle_top.png"), url("/images/Slider_Handle_mid.png"), url("/images/Slider_Handle_bottom.png"); background-repeat: no-repeat, no-repeat, no-repeat; - background-position: 50% 4px, 50% 8px, 50% 100%; - background-size: 16px 4px, 16px calc(100% - 14px), 16px 6px; + background-position: + 50% 4px, + 50% 8px, + 50% 100%; + background-size: + 16px 4px, + 16px calc(100% - 14px), + 16px 6px; image-rendering: pixelated; min-height: 44px; } @@ -209,12 +247,19 @@ body { } .custom-scrollbar::-webkit-scrollbar-thumb { - background-image: url("/images/Slider_Handle_top.png"), + background-image: + url("/images/Slider_Handle_top.png"), url("/images/Slider_Handle_mid.png"), url("/images/Slider_Handle_bottom.png"); background-repeat: no-repeat, no-repeat, no-repeat; - background-position: 50% 4px, 50% 8px, 50% 100%; - background-size: 16px 4px, 16px calc(100% - 14px), 16px 6px; + background-position: + 50% 4px, + 50% 8px, + 50% 100%; + background-size: + 16px 4px, + 16px calc(100% - 14px), + 16px 6px; image-rendering: pixelated; min-height: 44px; } diff --git a/src/hooks/useDiscordRPC.ts b/src/hooks/useDiscordRPC.ts index 5f66430..ccd88b8 100644 --- a/src/hooks/useDiscordRPC.ts +++ b/src/hooks/useDiscordRPC.ts @@ -78,7 +78,22 @@ export function useDiscordRPC({ details = tabNames[activeView] || "In Menus"; } - await RpcService.updateActivity(details, state, isGameRunning, username); + const skinUrl = (() => { + try { + return ( + JSON.parse(localStorage.getItem("lce-skin") || "null") || undefined + ); + } catch { + return undefined; + } + })(); + await RpcService.updateActivity( + details, + state, + isGameRunning, + username, + skinUrl, + ); }; updateRPC(); diff --git a/src/pages/App.tsx b/src/pages/App.tsx index 5a3a327..714747d 100644 --- a/src/pages/App.tsx +++ b/src/pages/App.tsx @@ -742,10 +742,6 @@ export default function App() {
Version: {pkg.version} ({__BUILD_DATE__})
-
- Not affiliated with Mojang AB or Microsoft. "Minecraft" is a - trademark of Mojang Synergies AB. -
{connected && "CONTROLLER CONNECTED"}
diff --git a/src/services/RpcService.ts b/src/services/RpcService.ts index 53839d4..98c3504 100644 --- a/src/services/RpcService.ts +++ b/src/services/RpcService.ts @@ -1,3 +1,4 @@ +import { invoke } from "@tauri-apps/api/core"; import { setActivity, start, clearActivity, stop } from "tauri-plugin-drpc"; import { Activity, @@ -11,6 +12,95 @@ class RPC { private startTime: number = Date.now(); private initializationPromise: Promise | null = null; private initialized: boolean = false; + private headUrlCache: Map = new Map(); + private headUploadPending: Map> = new Map(); + private async renderHeadBlob(skinUrl: string): Promise { + return new Promise((resolve) => { + const img = new Image(); + img.crossOrigin = "anonymous"; + img.onload = () => { + const canvas = document.createElement("canvas"); + canvas.width = 64; + canvas.height = 64; + const ctx = canvas.getContext("2d"); + if (!ctx) { + resolve(null); + return; + } + ctx.imageSmoothingEnabled = false; + ctx.drawImage(img, 8, 8, 8, 8, 0, 0, 64, 64); + if (img.height !== 32) { + ctx.drawImage(img, 40, 8, 8, 8, 0, 0, 64, 64); + } + canvas.toBlob((blob) => { + resolve(blob); + }, "image/png"); + }; + img.onerror = () => { + resolve(null); + }; + img.src = skinUrl; + }); + } + + private async uploadHead(skinUrl: string): Promise { + const cached = this.headUrlCache.get(skinUrl); + if (cached) { + return cached; + } + const pending = this.headUploadPending.get(skinUrl); + if (pending) { + return pending; + } + const uploadPromise = (async (): Promise => { + const blob = await this.renderHeadBlob(skinUrl); + if (!blob) { + return null; + } + const formData = new FormData(); + formData.append("file", blob, "head.png"); + formData.append("expire", "21600"); + try { + const res = await fetch("https://tmpfiles.org/api/v1/upload", { + method: "POST", + body: formData, + }); + const json = await res.json(); + if (json.status === "success" && json.data?.url) { + const pageUrl = json.data.url; + const pageRes = await invoke<{ status: number; body: string }>( + "http_proxy_request", + { + method: "GET", + url: pageUrl, + body: null, + headers: {}, + }, + ); + const html = pageRes.body; + const match = html.match(/id="img_preview"\s+src="([^"]+)"/); + if (match) { + const directUrl = match[1]; + this.headUrlCache.set(skinUrl, directUrl); + return directUrl; + } + console.error( + "[RPC] uploadHead: could not extract direct image url from page", + ); + } + console.error("[RPC] uploadHead: upload failed or no url in response"); + } catch (e) { + console.error("[RPC] uploadHead: fetch error:", e); + } + return null; + })(); + this.headUploadPending.set(skinUrl, uploadPromise); + try { + return await uploadPromise; + } finally { + this.headUploadPending.delete(skinUrl); + } + } public async StartRPC() { if (this.initialized) return; if (sessionStorage.getItem("lce_rpc_started") === "true") { @@ -38,6 +128,7 @@ class RPC { state: string, isPlaying: boolean = false, username: string, + skinUrl?: string, ) { if (!this.initialized) { await this.StartRPC(); @@ -54,8 +145,15 @@ class RPC { const assets = new Assets(); assets.setLargeImage("logo"); assets.setLargeText("LCE Emerald Launcher"); - assets.setSmallImage("app-icon"); - assets.setSmallText(isPlaying ? "Playing" : "In Menus"); + const headUrl = skinUrl ? await this.uploadHead(skinUrl) : null; + console.log("[RPC] updateActivity: headUrl:", headUrl); + if (headUrl) { + assets.setSmallImage(headUrl); + assets.setSmallText(username); + } else { + assets.setSmallImage("app-icon"); + assets.setSmallText(isPlaying ? "Playing" : "In Menus"); + } activity.setAssets(assets); activity.setTimestamps(new Timestamps(this.startTime)); activity.setButton([ @@ -74,16 +172,16 @@ class RPC { } public async StopRPC() { - try { - await clearActivity(); - await stop(); - } catch (e) { - // no need to handle errors here as the launcher will close anyways! - } finally { - this.initialized = false; - this.initializationPromise = null; - sessionStorage.removeItem("lce_rpc_started"); - } + try { + await clearActivity(); + await stop(); + } catch (e) { + // no need to handle errors here as the launcher will close anyways! + } finally { + this.initialized = false; + this.initializationPromise = null; + sessionStorage.removeItem("lce_rpc_started"); + } } }