import { NotFound } from "@/app/components/not-found"; import { LookupServer } from "@/app/components/server/lookup-server"; import { Card } from "@/app/components/ui/card"; import { generateEmbed } from "@/common/embed"; import { capitalizeFirstLetter } from "@/common/string-utils"; import { getServer } from "mcutils-library"; import JavaMinecraftServer from "mcutils-library/dist/types/server/javaServer"; import { ServerPlatform } from "mcutils-library/dist/types/server/platform"; import { MinecraftServer } from "mcutils-library/dist/types/server/server"; import { Metadata } from "next"; import Image from "next/image"; type Params = { params: { platform: ServerPlatform; hostname: string; }; }; export async function generateMetadata({ params: { platform, hostname } }: Params): Promise { const server = await getData(platform, hostname); if (server == null) { return generateEmbed({ title: "Unknown Server", description: "Server not responding" }); } const { hostname: serverHostname, players } = server; let favicon = null; // Server favicon // Java specific if (platform === ServerPlatform.Java) { const javaServer = server as JavaMinecraftServer; favicon = javaServer.favicon && javaServer.favicon.url; } const description = ` ${capitalizeFirstLetter(platform)} Server Hostname: ${serverHostname} ${players.online}/${players.max} players online`; return generateEmbed({ title: `${serverHostname}`, description: description, image: favicon, }); } async function getData(platform: ServerPlatform, id: string): Promise { try { const cachedServer = await getServer(platform, id); return cachedServer.server; } catch (error) { return null; // Server not found } } export default async function Page({ params: { platform, hostname } }: Params) { const server = await getData(platform, hostname); let favicon = null; // Server favicon // Java specific if (server && platform === ServerPlatform.Java) { const javaServer = server as JavaMinecraftServer; favicon = javaServer.favicon && javaServer.favicon.url; } return (

Lookup a {capitalizeFirstLetter(platform)} Server

You can enter a server hostname to get information about the server.

{server == null && } {server != null && (
{favicon && (
The server's favicon
)}

{server.hostname}

Players online: {server.players.online}/{server.players.max}

)}
); }