diff --git a/src/components/views/CreditsView.tsx b/src/components/views/CreditsView.tsx
index 1721874..432ab98 100644
--- a/src/components/views/CreditsView.tsx
+++ b/src/components/views/CreditsView.tsx
@@ -63,7 +63,10 @@ const CreditsView = memo(function CreditsView() {
{
role: "",
members: [
- { name: "Santiago Fisela", url: "https://github.com/PinkLittleKitty" },
+ {
+ name: "Santiago Fisela",
+ url: "https://github.com/PinkLittleKitty",
+ },
{ name: "Leon", url: "https://github.com/hornyalcoholic" },
{ name: "Criador_Mods", url: "https://github.com/CriadorMods" },
],
@@ -81,9 +84,7 @@ const CreditsView = memo(function CreditsView() {
roles: [
{
role: "Founder",
- members: [
- { name: "Piebot", url: "https://github.com/Piebot" },
- ],
+ members: [{ name: "Piebot", url: "https://github.com/Piebot" }],
},
],
subprojects: [
@@ -94,7 +95,10 @@ const CreditsView = memo(function CreditsView() {
role: "Active Maintainer",
members: [
{ name: "Andi_pog", url: "https://github.com/Andi-pog" },
- { name: "LordCambion", url: "https://github.com/LordCambion" },
+ {
+ name: "LordCambion",
+ url: "https://github.com/LordCambion",
+ },
{ name: "neoapps", url: "https://github.com/neoapps-dev" },
{ name: "tranqlmao", url: "https://github.com/tranqlmao" },
],
@@ -161,9 +165,7 @@ const CreditsView = memo(function CreditsView() {
roles: [
{
role: "Founder",
- members: [
- { name: "Revela", url: "https://github.com/Revela" },
- ],
+ members: [{ name: "Revela", url: "https://github.com/Revela" }],
},
],
},
@@ -173,9 +175,7 @@ const CreditsView = memo(function CreditsView() {
roles: [
{
role: "Founder",
- members: [
- { name: "TBD", url: "#" },
- ],
+ members: [{ name: "TBD", url: "#" }],
},
],
},
@@ -207,9 +207,7 @@ const CreditsView = memo(function CreditsView() {
roles: [
{
role: "",
- members: [
- { name: "faisal508508", url: "#" },
- ],
+ members: [{ name: "faisal508508", url: "#" }],
},
],
},
@@ -240,7 +238,9 @@ const CreditsView = memo(function CreditsView() {
onMouseLeave={() => setIsHovered(false)}
className="fixed bottom-8 left-8 z-50 h-10 flex items-center justify-center gap-2 px-4 text-xl mc-text-shadow outline-none border-none"
style={{
- backgroundImage: isHovered ? "url('/images/button_highlighted.png')" : "url('/images/Button_Background.png')",
+ backgroundImage: isHovered
+ ? "url('/images/button_highlighted.png')"
+ : "url('/images/Button_Background.png')",
backgroundSize: "100% 100%",
imageRendering: "pixelated",
color: isHovered ? "#FFFF55" : "white",
@@ -253,17 +253,26 @@ const CreditsView = memo(function CreditsView() {
initial={{ y: "50%" }}
animate={{ y: "-200%" }}
transition={{ duration: 45, ease: "linear" }}
- onAnimationComplete={() => setActiveView("main")}
className="flex flex-col items-center justify-center space-y-8 py-20"
>
+
+
+
{credits.map((cat) => (
-
{cat.icon && (
@@ -278,10 +287,17 @@ const CreditsView = memo(function CreditsView() {
{cat.subcategories.map((sub) => (
-
-
+
+
{sub.icon && (
{sub.roles.map((role) => (
-
+
{role.role && (
{role.role}
@@ -319,12 +338,18 @@ const CreditsView = memo(function CreditsView() {
{sub.subprojects && sub.subprojects.length > 0 && (
{sub.subprojects.map((project) => (
-
+
{project.name}
{project.roles.map((role) => (
-
+
{role.role && (
{role.role}
@@ -338,7 +363,9 @@ const CreditsView = memo(function CreditsView() {
target="_blank"
rel="noopener noreferrer"
className="text-[#e2cc4c] text-xl mc-text-shadow font-medium cursor-pointer"
- style={{ textShadow: "2px 2px 0px #000000" }}
+ style={{
+ textShadow: "2px 2px 0px #000000",
+ }}
>
{member.name}
@@ -368,8 +395,8 @@ const CreditsView = memo(function CreditsView() {
@@ -378,7 +405,9 @@ const CreditsView = memo(function CreditsView() {
- 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.
+ 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.
diff --git a/src/components/views/WorkshopView.tsx b/src/components/views/WorkshopView.tsx
index 94d090d..09bfc3b 100644
--- a/src/components/views/WorkshopView.tsx
+++ b/src/components/views/WorkshopView.tsx
@@ -1,4 +1,4 @@
-import {
+import React, {
useState,
useEffect,
memo,
@@ -37,7 +37,7 @@ const SERVERS_BASE =
"https://raw.githubusercontent.com/bytebukkit/servers/refs/heads/main";
const CATEGORY_TABS = ["Skin", "Texture", "World", "Mod", "DLC"] as const;
const UTILITY_TABS = ["Versions", "Installed", "Search"] as const;
-const SERVER_TABS = ["Server", "Plugins"] as const;
+const SERVER_TABS = ["Server", "Server Plugins"] as const;
const ALL_TABS = [...CATEGORY_TABS, ...UTILITY_TABS, ...SERVER_TABS] as const;
type TabType = (typeof ALL_TABS)[number];
interface RegistryPackage {
@@ -236,7 +236,7 @@ const WorkshopView = memo(function WorkshopView() {
}
return [];
}
- if (activeTab === "Plugins" || activeTab === "Server") return [];
+ if (activeTab === "Server Plugins" || activeTab === "Server") return [];
return installedPkgs.filter((p) => p.packageId === pkgId);
},
[installedPkgs, activeTab, config.customEditions, versionPackages],
@@ -244,7 +244,7 @@ const WorkshopView = memo(function WorkshopView() {
const isInstalled = useCallback(
(pkgId: string) => {
- if (activeTab === "Plugins" || activeTab === "Server") return false;
+ if (activeTab === "Server Plugins" || activeTab === "Server") return false;
if (activeTab === "Versions") {
return (
config.customEditions?.some(
@@ -263,7 +263,7 @@ const WorkshopView = memo(function WorkshopView() {
(pkg: RegistryPackage) => {
if (
activeTab === "Versions" ||
- activeTab === "Plugins" ||
+ activeTab === "Server Plugins" ||
activeTab === "Server"
)
return false;
@@ -288,7 +288,7 @@ const WorkshopView = memo(function WorkshopView() {
);
})
: installedPackageList
- : activeTab === "Plugins"
+ : activeTab === "Server Plugins"
? search.trim()
? serverPlugins.filter((pkg) => {
if (
@@ -485,7 +485,7 @@ const WorkshopView = memo(function WorkshopView() {
isSearchTab ||
isInstalledTab ||
isVersionTab ||
- activeTab === "Plugins" ||
+ activeTab === "Server Plugins" ||
activeTab === "Server";
return (
-
- {CATEGORY_TABS.map((tab) => {
- const isActive = tab === activeTab;
- return (
- selectTab(tab)}
- className={`
- relative h-10 px-5 text-sm mc-text-shadow tracking-widest border-none outline-none cursor-pointer
- ${isActive ? "text-[#FFFF55]" : "text-white hover:text-[#FFFF55]"}
- `}
- style={{
- backgroundImage: isActive
- ? "url('/images/button_highlighted.png')"
- : "url('/images/Button_Background.png')",
- backgroundSize: "100% 100%",
- imageRendering: "pixelated",
- }}
- >
- {tab.toUpperCase()}
-
- );
- })}
-
+
+
+ {CATEGORY_TABS.map((tab, i) => {
+ const isActive = tab === activeTab;
+ return (
+
+ {i > 0 &&
}
+ selectTab(tab)}
+ className={`relative h-8 px-3 text-xs mc-text-shadow tracking-widest border-none outline-none cursor-pointer transition-colors rounded-sm ${
+ isActive
+ ? "text-[#FFFF55] bg-[#FFFF55]/10 shadow-[0_0_12px_rgba(255,255,85,0.15)]"
+ : "text-[#aaa] hover:text-white hover:bg-white/5"
+ }`}
+ >
+ {tab.toUpperCase()}
+
+
+ );
+ })}
+
-
- {SERVER_TABS.map((tab) => {
- const isActive = tab === activeTab;
- return (
-
selectTab(tab)}
- className={`
- relative h-8 px-4 text-xs mc-text-shadow tracking-widest border outline-none cursor-pointer transition-all
- ${isActive ? "text-[#FFFF55] border-[#FFFF55] bg-black/40" : "text-[#A0A0A0] border-[#444] hover:text-white hover:border-[#888]"}
- `}
- >
- {tab.toUpperCase()}
-
- );
- })}
-
- {UTILITY_TABS.map((tab) => {
- const isActive = tab === activeTab;
- const updateCount =
- tab === "Installed"
- ? allPackages.filter((p) => hasUpdate(p)).length
- : 0;
- return (
-
selectTab(tab)}
- className={`
- relative h-8 px-4 text-xs mc-text-shadow tracking-widest border outline-none cursor-pointer transition-all
- ${isActive ? "text-[#FFFF55] border-[#FFFF55] bg-black/40" : "text-[#A0A0A0] border-[#444] hover:text-white hover:border-[#888]"}
- `}
- >
- {tab.toUpperCase()}
- {updateCount > 0 && (
-
- {updateCount}
-
- )}
-
- );
- })}
+
+ {UTILITY_TABS.map((tab, i) => {
+ const isActive = tab === activeTab;
+ const updateCount =
+ tab === "Installed"
+ ? allPackages.filter((p) => hasUpdate(p)).length
+ : 0;
+ return (
+
+ {i > 0 &&
}
+ selectTab(tab)}
+ className={`relative h-8 px-3 text-xs mc-text-shadow tracking-widest border-none outline-none cursor-pointer transition-colors rounded-sm ${
+ isActive
+ ? "text-[#FFFF55] bg-[#FFFF55]/10 shadow-[0_0_12px_rgba(255,255,85,0.15)]"
+ : "text-[#aaa] hover:text-white hover:bg-white/5"
+ }`}
+ >
+ {tab.toUpperCase()}
+ {updateCount > 0 && (
+
+ {updateCount}
+
+ )}
+
+
+ );
+ })}
+
+
+
+ {SERVER_TABS.map((tab, i) => {
+ const isActive = tab === activeTab;
+ return (
+
+ {i > 0 &&
}
+ selectTab(tab)}
+ className={`relative h-8 px-3 text-xs mc-text-shadow tracking-widest border-none outline-none cursor-pointer transition-colors rounded-sm ${
+ isActive
+ ? "text-[#FFFF55] bg-[#FFFF55]/10 shadow-[0_0_12px_rgba(255,255,85,0.15)]"
+ : "text-[#aaa] hover:text-white hover:bg-white/5"
+ }`}
+ >
+ {tab.toUpperCase()}
+
+
+ );
+ })}
+
@@ -594,7 +600,7 @@ const WorkshopView = memo(function WorkshopView() {
? "FILTER INSTALLED..."
: isVersionTab
? "FILTER VERSIONS..."
- : activeTab === "Plugins"
+ : activeTab === "Server Plugins"
? "FILTER PLUGINS..."
: activeTab === "Server"
? "FILTER SERVERS..."
@@ -617,7 +623,7 @@ const WorkshopView = memo(function WorkshopView() {
)}
- {activeTab === "Plugins" && serverCategories.length > 1 && (
+ {activeTab === "Server Plugins" && serverCategories.length > 1 && (
{serverCategories.map((cat) => (
{isInstalledTab
? "Nothing Installed"
- : activeTab === "Plugins"
+ : activeTab === "Server Plugins"
? "No plugins available"
: activeTab === "Server"
? "No servers available"
@@ -754,7 +760,7 @@ const WorkshopView = memo(function WorkshopView() {
))}
)}
- {(activeTab === "Plugins" || activeTab === "Server") && (
+ {(activeTab === "Server Plugins" || activeTab === "Server") && (