+
-
-
@@ -504,9 +551,49 @@ const VersionsView = memo(function VersionsView() {
setSelectedProfile(id);
}
}}
- playSfx={playSfx}
+ playPressSound={playPressSound}
+ playBackSound={playBackSound}
editingEdition={editingEdition}
/>
+
+ {deleteConfirmEdition && (
+
+
+
+ Delete {deleteConfirmEdition.name}?
+
+
+ Warning: All your saves and worlds for this version will be permanently deleted!
+
+
+ {
+ playBackSound();
+ setDeleteConfirmEdition(null);
+ }}
+ />
+ {
+ playPressSound();
+ handleUninstall(deleteConfirmEdition.id);
+ setDeleteConfirmEdition(null);
+ }}
+ />
+
+
+
+ )}
);
});
diff --git a/src/context/LauncherContext.tsx b/src/context/LauncherContext.tsx
index 11bcb81..d264b68 100644
--- a/src/context/LauncherContext.tsx
+++ b/src/context/LauncherContext.tsx
@@ -72,7 +72,8 @@ export function LauncherProvider({ children }: { children: React.ReactNode }) {
const game = useMemo(() => gameRaw, [
gameRaw.installs, gameRaw.isGameRunning, gameRaw.downloadProgress,
gameRaw.downloadingId, gameRaw.editions, gameRaw.isRunnerDownloading,
- gameRaw.runnerDownloadProgress, gameRaw.error, gameRaw.updateCustomEdition, configRaw.profile
+ gameRaw.runnerDownloadProgress, gameRaw.error, gameRaw.updateCustomEdition,
+ gameRaw.handleUninstall, gameRaw.handleCancelDownload, configRaw.profile
]);
const audio = useMemo(() => audioRaw, [
diff --git a/src/css/index.css b/src/css/index.css
index 98da105..eab5d9d 100644
--- a/src/css/index.css
+++ b/src/css/index.css
@@ -87,16 +87,43 @@ body {
}
::-webkit-scrollbar-track {
- background: url('/images/backgroundframe.png') center;
- background-size: 100% auto;
+ background: url('/images/SliderHandlerBackground.png') center;
+ background-size: 100% 100%;
image-rendering: pixelated;
}
::-webkit-scrollbar-thumb {
- background: url('/images/SliderHandlerBackground.png') no-repeat center;
+ background: url('/images/Slider_Handle.png') no-repeat center;
background-size: 100% 100%;
image-rendering: pixelated;
cursor: pointer;
+ min-height: 44px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ filter: brightness(1.2);
+}
+
+.custom-scrollbar::-webkit-scrollbar {
+ width: 14px;
+}
+
+.custom-scrollbar::-webkit-scrollbar-track {
+ background: url('/images/SliderHandlerBackground.png') center;
+ background-size: 100% 100%;
+ image-rendering: pixelated;
+}
+
+.custom-scrollbar::-webkit-scrollbar-thumb {
+ background: url('/images/Slider_Handle.png') no-repeat center;
+ background-size: 100% 100%;
+ image-rendering: pixelated;
+ cursor: pointer;
+ min-height: 44px;
+}
+
+.custom-scrollbar::-webkit-scrollbar-thumb:hover {
+ filter: brightness(1.2);
}
.no-animations * {
diff --git a/src/hooks/useGameManager.ts b/src/hooks/useGameManager.ts
index bf5fcd0..503da80 100644
--- a/src/hooks/useGameManager.ts
+++ b/src/hooks/useGameManager.ts
@@ -14,13 +14,13 @@ const BASE_EDITIONS = [
id: "revelations",
name: "Legacy Revelations",
desc: "QoL, performance, hardcore mode, & security features for LCE.",
- url: "https://github.com/itsRevela/MinecraftConsoles/releases/download/Nightly/LCREWindows64.zip",
+ url: "https://github.com/LCE-Hub/LCE-Revelations/releases/download/Nightly/LCE-Revelations-Client-Win64.zip",
titleImage: "/images/minecraft_title_revelations.png",
supportsSlimSkins: false,
},
{
id: "360revived",
- name: "360Revived",
+ name: "360 Revived",
desc: "PC port of Xbox 360 Edition TU19",
url: "https://github.com/BluTac10/360Revived/releases/download/nightly/LCEWindows64.zip",
titleImage: "/images/minecraft_title_360revived.png",
@@ -144,6 +144,19 @@ export function useGameManager({
[checkInstalls],
);
+ const handleCancelDownload = useCallback(async () => {
+ if (!downloadingId) return;
+ try {
+ await TauriService.cancelDownload();
+ await TauriService.deleteInstance(downloadingId);
+ setDownloadingId(null);
+ setDownloadProgress(null);
+ await checkInstalls();
+ } catch (e) {
+ console.error(e);
+ }
+ }, [downloadingId, checkInstalls]);
+
const handleLaunch = useCallback(async () => {
if (isGameRunning) return;
setError(null);
@@ -212,6 +225,7 @@ export function useGameManager({
editions,
toggleInstall,
handleUninstall,
+ handleCancelDownload,
handleLaunch,
stopGame,
addCustomEdition,
diff --git a/src/pages/App.tsx b/src/pages/App.tsx
index 91e531f..96e86ca 100644
--- a/src/pages/App.tsx
+++ b/src/pages/App.tsx
@@ -57,8 +57,11 @@ export default function App() {
(e: any) => e.id === config.profile,
);
const selectedVersionName = selectedEdition?.name || "";
+ const hasAnyInstall = game.installs.length > 0;
- const titleImage = selectedEdition?.titleImage || "/images/MenuTitle.png";
+ const titleImage = hasAnyInstall
+ ? (selectedEdition?.titleImage || "/images/MenuTitle.png")
+ : "/images/MenuTitle.png";
useEffect(() => {
if (config.isLoaded) {
@@ -285,6 +288,7 @@ export default function App() {
{activeView === "main" &&
+ hasAnyInstall &&
titleImage === "/images/MenuTitle.png" && (