import { getI18n } from "@/lib/i18n"; import { Header, Footer } from "@/components/Shell"; import { Blocks, Server, Download, ExternalLink } from "lucide-react"; import { existsSync } from "node:fs"; import Link from "next/link"; import desktopRelease from "@/shared/desktop-release.json"; const release = "0.1.3"; const versions = ["1.21.11", "26.1", "26.2"]; export const dynamic = "force-dynamic"; export default async function Downloads() { const { t } = await getI18n(); const pluginPath = `/tools/plugin/minegeo-plugin-${release}.jar`; const plugin = existsSync(`public${pluginPath}`); return ( <>
{t("MINEGEO DESKTOP")}

{t("Your next expedition, on your desktop.")}

{t( "Download the portable app, run the EXE, and start exploring. No installation needed.", )}

{t("Download for Windows")}

{t( "Windows 10/11 · 64-bit · Version {version} · Internet required", { version: desktopRelease.version }, )}

{t( "The app connects to minegeo.vercel.app and keeps you signed in on this device.", )}

{t( "This release is unsigned. Windows may show a publisher warning when you open it.", )}

{t("MADE FOR THE PEOPLE WHO KNOW THEIR WORLDS")}

{t("Become a cartographer.")}

{t( "Two ways to bring your world to MineGeo. Both create private drafts for you to preview before submitting for review.", )}

{t("FOR PLAYERS")}

{t("Fabric capture mod.")}

{t( "Explore normally and capture the places worth remembering. Your server doesn’t need a plugin.", )}

  • {t( "Minecraft Java 1.21.11, 26.1 & 26.2 + Fabric Loader + Fabric API", )}
  • {t("Open the capture panel with G")}
  • {t("Link your account through a browser pairing code")}
  • {t("Capture 5–24 viewpoints for a new map, then upload")}
  • {t( "Paste a map ID into “Add to map” to contribute 1–12 panoramas", )}
  • {t("Only terrain received by your client enters the map")}
  • {t("Contributions check the recorded server address")}
{versions.map((version) => existsSync( `public/tools/mod/minegeo-fabric-${version}-${release}.jar`, ) ? ( {t("Download Fabric mod")} · {version} ) : (

{version}: {t("The Fabric build is not available yet.")}

), )}

{t( "Install the JAR in your Minecraft mods folder alongside Fabric API.", )}

{t( "Java 21 for 1.21.11; Java 25 for 26.1 and 26.2. Both tools connect to minegeo.vercel.app automatically.", )}

{t("FOR SERVER ADMINISTRATORS")}

{t("Server export plugin.")}

{t( "Export generated Overworld terrain. MineGeo renders panoramas without a connected player or BlueMap.", )}

  • {t("Bukkit/Paper 1.21.11, 26.1 & 26.2")}
  • {t("Select a bounded area and export existing chunks")}
  • {t("Choose up to 24 random, safe surface viewpoints")}
  • Use /minegeo contribute <map ID> to join an existing map
  • {t("Link a contributor token and upload resumably")}
  • {t("Set the public Minecraft server address before exporting")}
  • {t("Vanilla blocks/fluids, simplified lighting")}
{plugin ? ( {t("Download server plugin")} ) : (

{t("The plugin build is not available yet.")}

)}
              {
                "/minegeo server play.your-server.example\n/minegeo link \n/minegeo area world -64 -64 64 64\n/minegeo export My Overworld\n/minegeo status\n# Wait for Export complete, then:\n/minegeo upload"
              }
            

{t( "Start with a small, explored area around your builds. Exports are saved in", )}{" "} plugins/MineGeo/exports/export-…/ {t( ". The manifest appears when export finishes. Upload sends the latest completed export; it does not capture the world.", )}

{t( "Put the JAR in plugins/ and restart. Set server-name and server-address in plugins/MineGeo/config.yml, then run /minegeo reload. Permission: minegeo.admin. The same plugin JAR supports all three versions.", )}

{t("Your map, your credit.")}

{t( "Map owners can allow player contributions. Each player may add up to 12 panoramas per map. Owners approve the selection, then moderators review the map update before it becomes playable.", )}

{t("Open my dashboard")}