feat: extended description and required versions (#119)

This commit is contained in:
/home/neo
2026-07-07 17:10:20 +03:00
committed by GitHub
parent b8c448dab8
commit f46453f1cd
2 changed files with 59 additions and 27 deletions

View File

@@ -25,6 +25,7 @@ import {
type CustomEdition,
} from "../../services/TauriService";
import { PluginManager } from "../../plugins/PluginManager";
import { BASE_EDITIONS } from "../../hooks/useGameManager";
const REGISTRY_URL =
"https://raw.githubusercontent.com/LCE-Hub/LCE-Workshop/refs/heads/main/registry.json";
const VERSIONS_URL =
@@ -75,6 +76,7 @@ interface RegistryPackage {
permissions?: string[];
files?: string[];
dependencies?: string[];
required_versions?: string[];
}
interface ServerListing {
@@ -1095,6 +1097,8 @@ const WorkshopView = memo(function WorkshopView({
<PackageModal
pkg={selectedPkg}
allPackages={allPackages}
versionPackages={versionPackages}
customEditions={config.customEditions || []}
installedPkgs={installedPkgs}
onClose={closeModal}
playPressSound={playPressSound}
@@ -1237,6 +1241,8 @@ function PackageCard({
function PackageModal({
pkg,
allPackages,
versionPackages,
customEditions,
installedPkgs,
onClose,
playPressSound,
@@ -1252,6 +1258,8 @@ function PackageModal({
}: {
pkg: RegistryPackage;
allPackages: RegistryPackage[];
versionPackages: RegistryPackage[];
customEditions: CustomEdition[];
installedPkgs: InstalledWorkshopPackage[];
onClose: () => void;
playPressSound: () => void;
@@ -1668,33 +1676,57 @@ function PackageModal({
))}
</div>
</div>
{pkg.dependencies && pkg.dependencies.length > 0 && (
<div className="flex flex-col gap-1.5 mt-4 pt-4 border-t border-[#333]">
<span className="text-[10px] text-[#FFAA33] mc-text-shadow uppercase tracking-[0.2em] font-bold">
Required Dependencies
</span>
<div className="flex flex-wrap gap-1.5">
{pkg.dependencies.map((depId) => {
const dep = allPackages.find((p) => p.id === depId);
const isDepInstalled = installedPkgs.some((p) => p.packageId === depId);
return (
<span
key={depId}
className={`text-[10px] border px-2 py-0.5 mc-text-shadow uppercase tracking-widest ${
isDepInstalled
? "bg-[#003300] border-[#55FF55]/60 text-[#55FF55]"
: "bg-black/60 border-[#FF8800]/40 text-[#FFAA33]"
}`}
>
{dep?.name || depId}
{isDepInstalled ? " (installed)" : ""}
</span>
);
})}
</div>
</div>
)}
</div>
{pkg.dependencies && pkg.dependencies.length > 0 && (
<div className="flex flex-col gap-1.5 pt-4 border-t border-[#333]">
<span className="text-[10px] text-[#FFAA33] mc-text-shadow uppercase tracking-[0.2em] font-bold">
Required Dependencies
</span>
<div className="flex flex-wrap gap-1.5 mt-1">
{pkg.dependencies.map((depId) => {
const dep = allPackages.find((p) => p.id === depId);
const isDepInstalled = installedPkgs.some((p) => p.packageId === depId);
return (
<span
key={depId}
className={`text-[10px] border px-2 py-0.5 mc-text-shadow uppercase tracking-widest ${
isDepInstalled
? "bg-[#003300] border-[#55FF55]/60 text-[#55FF55]"
: "bg-black/60 border-[#FF8800]/40 text-[#FFAA33]"
}`}
>
{dep?.name || depId}
{isDepInstalled ? " (installed)" : ""}
</span>
);
})}
</div>
</div>
)}
{pkg.required_versions && pkg.required_versions.length > 0 && (
<div className="flex flex-col gap-1.5 pt-4 border-t border-[#333]">
<span className="text-[10px] text-[#55AAFF] mc-text-shadow uppercase tracking-[0.2em] font-bold">
Required Editions
</span>
<div className="flex flex-wrap gap-1.5 mt-1">
{pkg.required_versions.map((verId) => {
const builtin = BASE_EDITIONS.find((e) => e.id === verId);
const versionPkg = versionPackages.find((v) => v.id === verId);
const customEd = customEditions.find((e) => e.id === verId);
const displayName = builtin?.name || customEd?.name || versionPkg?.name;
if (!displayName) return null;
return (
<span
key={verId}
className="text-[10px] bg-black/60 border border-[#55AAFF]/40 px-2 py-0.5 text-[#55AAFF] mc-text-shadow uppercase tracking-widest"
>
{displayName}
</span>
);
})}
</div>
</div>
)}
{pkg.zips && Object.keys(pkg.zips).length > 0 && (
<div className="flex flex-col gap-3 pt-4 border-t border-[#333]">
<span className="text-[10px] text-[#666] mc-text-shadow uppercase tracking-[0.2em] font-bold">

View File

@@ -25,7 +25,7 @@ async function imageUrlToBase64(url: string): Promise<string> {
reader.readAsDataURL(blob);
});
}
const BASE_EDITIONS = [
export const BASE_EDITIONS = [
{
id: "legacy_evolved",
name: "neoLegacy",