import { useEffect, useMemo, memo, useState } from "react"; import { motion } from "framer-motion"; import { useUI, useAudio } from "../../context/LauncherContext"; import { usePlatform } from "../../hooks/usePlatform"; interface CreditCategory { category: string; icon?: string; subcategories: { name: string; icon: string; roles: { role: string; members: { name: string; url: string; }[]; }[]; subprojects?: { name: string; roles: { role: string; members: { name: string; url: string; }[]; }[]; }[]; }[]; } const CreditsView = memo(function CreditsView() { const { setActiveView } = useUI(); const { playPressSound } = useAudio(); const { isAndroid } = usePlatform(); const [isHovered, setIsHovered] = useState(false); const shuffledAndroid = useMemo( //neo: yes im shuffling it () => [ "Peppinaramenisblack", "kacper", "tjdownchurch", "tjdownchurch's dad (rip)", "dadael3", "bekhens", "notrainbowsteve", "moth_scribe", "leader", "raymanroy", "fin", "liugu", "Zrox2013 (Zameras2013)", "kierwa", "cartox", "necmi", "theunknown", "XeroChunks (double thanks!)", "bee (quickjinxy_)", "loss_less", "ttfly", "harper", "dllie (tofou)", "recycleordie", "nezzled", "frenchwith0skill", "tarknim", "thehuckle", "gabrielblast", "nedjouamario", "bossanova", "jayem", "andrewjcf", "thingthing", "toastybaguette", "goobert", "Erickk64", "flamingphoenex", "Tymszn21", "DaPogLord", "turniphead", "ArthurDotPNG", "CounterrAct", "luckyduuckxd", "PixelatedCheese1", ].sort(() => Math.random() - 0.5), [], ); const credits: CreditCategory[] = [ { category: "Emerald Team", icon: "/images/emerald_0.png", subcategories: [ { name: "Leadership", icon: "", roles: [ { role: "Founder & Maintainer", members: [ { name: "KayJann", url: "https://github.com/KayJannOnGit" }, { name: "Architect", url: "#" }, { name: "neoapps", url: "https://github.com/neoapps-dev" }, ], }, { role: "Active Maintainer", members: [ { name: "neoapps", url: "https://github.com/neoapps-dev" }, ], }, ], }, { name: "Contributors", icon: "", roles: [ { role: "", members: [ { name: "Santiago Fisela", url: "https://github.com/PinkLittleKitty", }, { name: "Leon", url: "https://github.com/hornyalcoholic" }, { name: "Criador_Mods", url: "https://github.com/CriadorMods" }, { name: "j-carv", url: "https://github.com/j-carv" }, ], }, ], }, ], }, { category: "LCE TEAM", subcategories: [ { name: "neoLegacy", icon: "/images/neoLegacy.png", roles: [ { role: "Founder", members: [{ name: "Piebot", url: "https://github.com/Piebot" }], }, ], subprojects: [ { name: "neoStudios LCE", roles: [ { role: "Active Maintainer", members: [ { name: "Huckle", url: "https://github.com/TheHuckleDev" }, { name: "Andi_pog", url: "https://github.com/Andi-pog" }, { name: "neoapps", url: "https://github.com/neoapps-dev" }, { name: "tranqlmao", url: "https://github.com/tranqlmao" }, ], }, { role: "Contributors", members: [ { name: "Fireblade", url: "#" }, { name: "Rockefeler", url: "#" }, { name: "CDevJoud", url: "#" }, { name: "Rhys Evolution", url: "#" }, { name: "LordCambion", url: "https://github.com/LordCambion", }, ], }, ], }, { name: "Minigames Division (LMRP)", roles: [ { role: "Founders", members: [ { name: "700", url: "#" }, { name: "DankMan01", url: "#" }, ], }, { role: "Contributors", members: [ { name: "xxxtentactcles", url: "#" }, { name: "salad", url: "#" }, ], }, ], }, ], }, { name: "360 Revived", icon: "/images/360_revived.png", roles: [ { role: "Founder", members: [ { name: "BluTac10", url: "https://github.com/BluTac10" }, { name: "TheGrimReaper", url: "#" }, ], }, ], }, { name: "Hellish Ends", icon: "/images/hellishEndsIcon.png", roles: [ { role: "Founder", members: [ { name: "DeadVoxelx", url: "https://github.com/DeadVoxelx" }, ], }, ], }, { name: "Revelations", icon: "/images/revelations.png", roles: [ { role: "Founder", members: [{ name: "Revela", url: "https://github.com/Revela" }], }, ], }, { name: "Project Lost Legacy", icon: "/images/lostlegacy.png", roles: [ { role: "Founder", members: [{ name: "SailsYT", url: "#" }], }, ], }, { name: "Minecraft: Moon Edition", icon: "/images/moonEdition.png", roles: [ { role: "Founder", members: [{ name: "BlazinBlaze", url: "#" }], }, ], }, ], }, { category: "SPECIAL THANKS", icon: "", subcategories: [ ...(isAndroid ? [ { name: "Android Beta Testers", icon: "", roles: [ { role: "", members: shuffledAndroid.map((name) => ({ name, url: "#", })), }, ], }, ] : []), { name: "Discord Booster", icon: "/images/Nitro Boost.png", roles: [ { role: "", members: [ { name: "mr_anilex", url: "#" }, { name: "faisal508508", url: "#" }, { name: "dr.av", url: "#" }, { name: "alreadywarned", url: "#" }, { name: "andrewjcf", url: "#" }, { name: "dille", url: "#" }, { name: "neoapps", url: "#" }, ], }, ], }, { name: "Ko-fi Supporters", icon: "/images/kofi_symbol.svg", roles: [ { role: "", members: [{ name: "faisal508508", url: "#" }], }, ], }, ], }, ]; useEffect(() => { const handleKey = (e: KeyboardEvent) => { if (document.activeElement?.tagName === "INPUT") return; if (e.key === "Escape") { playPressSound(); setActiveView("main"); } }; window.addEventListener("keydown", handleKey); return () => window.removeEventListener("keydown", handleKey); }, [setActiveView, playPressSound]); return (
{!isAndroid && ( )}
Emerald Launcher
{credits.map((cat) => (

{cat.icon && ( {cat.category} )} {cat.category}

{cat.subcategories.map((sub) => (

{sub.icon && ( {sub.name} )} {sub.name}

{sub.roles.map((role) => (
{role.role && (

{role.role}

)}
{role.members.map((member) => ( {member.name} ))}
))} {sub.subprojects && sub.subprojects.length > 0 && (
{sub.subprojects.map((project) => (

{project.name}

{project.roles.map((role) => (
{role.role && (
{role.role}
)}
{role.members.map((member) => ( {member.name} ))}
))}
))}
)}
))}
))}
LCE Team
Emerald

Minecraft is a trademark of Mojang Synergies AB. This project is not affiliated with, endorsed by, sponsored by, or specifically approved by Mojang, Microsoft, or 4J Studios.

); }); export default CreditsView;