Improve MineGeo interface and functionality

This commit is contained in:
2026-10-06 19:24:41 +05:00
parent 7404f1dc1c
commit 233e4d57f0
67 changed files with 3053 additions and 643 deletions

View File

@@ -1,9 +1,11 @@
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";
export const dynamic = "force-dynamic";
export default function Downloads() {
export default async function Downloads() {
const { t } = await getI18n();
const fabric = existsSync("public/tools/mod/minegeo-fabric-1.21.11.jar"),
plugin = existsSync("public/tools/plugin/minegeo-plugin-1.21.11.jar");
return (
@@ -11,32 +13,40 @@ export default function Downloads() {
<Header />
<main className="section page-content">
<span className="eyebrow">
MADE FOR THE PEOPLE WHO KNOW THEIR WORLDS
{t("MADE FOR THE PEOPLE WHO KNOW THEIR WORLDS")}
</span>
<h1>Become a cartographer.</h1>
<h1>{t("Become a cartographer.")}</h1>
<p className="lead">
Two ways to bring your world to MineGeo. Both create private drafts
for you to preview before submitting for review.
{t(
"Two ways to bring your world to MineGeo. Both create private drafts for you to preview before submitting for review.",
)}
</p>
<div className="tool-grid">
<article className="tool-card">
<Blocks size={34} />
<span className="eyebrow">FOR PLAYERS</span>
<h2>Fabric capture mod.</h2>
<span className="eyebrow">{t("FOR PLAYERS")}</span>
<h2>{t("Fabric capture mod.")}</h2>
<p className="muted">
Explore normally and capture the places worth remembering. Your
server doesn’t need a plugin.
{t(
"Explore normally and capture the places worth remembering. Your server doesn’t need a plugin.",
)}
</p>
<ul>
<li>Minecraft Java 1.21.11 + Fabric Loader + Fabric API</li>
<li>Open the capture panel with G</li>
<li>Link your account through a browser pairing code</li>
<li>Capture 5–24 viewpoints for a new map, then upload</li>
<li>
Paste a map ID into “Add to map” to contribute 1–12 panoramas
{t("Minecraft Java 1.21.11 + Fabric Loader + Fabric API")}
</li>
<li>Only terrain received by your client enters the map</li>
<li>Contributions check the recorded server address</li>
<li>{t("Open the capture panel with G")}</li>
<li>{t("Link your account through a browser pairing code")}</li>
<li>{t("Capture 5–24 viewpoints for a new map, then upload")}</li>
<li>
{t(
"Paste a map ID into “Add to map” to contribute 1–12 panoramas",
)}
</li>
<li>
{t("Only terrain received by your client enters the map")}
</li>
<li>{t("Contributions check the recorded server address")}</li>
</ul>
{fabric ? (
<a
@@ -44,34 +54,40 @@ export default function Downloads() {
href="/tools/mod/minegeo-fabric-1.21.11.jar"
download
>
<Download size={16} /> Download Fabric mod
<Download size={16} /> {t("Download Fabric mod")}
</a>
) : (
<p className="muted">The Fabric build is not available yet.</p>
<p className="muted">
{t("The Fabric build is not available yet.")}
</p>
)}
<p className="muted" style={{ fontSize: 11, marginTop: 20 }}>
Install the JAR in your Minecraft mods folder alongside Fabric
API.
{t(
"Install the JAR in your Minecraft mods folder alongside Fabric API.",
)}
</p>
</article>
<article className="tool-card">
<Server size={34} />
<span className="eyebrow">FOR SERVER ADMINISTRATORS</span>
<h2>Server export plugin.</h2>
<span className="eyebrow">{t("FOR SERVER ADMINISTRATORS")}</span>
<h2>{t("Server export plugin.")}</h2>
<p className="muted">
Export generated Overworld terrain. MineGeo renders panoramas
without a connected player or BlueMap.
{t(
"Export generated Overworld terrain. MineGeo renders panoramas without a connected player or BlueMap.",
)}
</p>
<ul>
<li>Bukkit/Paper 1.21.11 · Java 21</li>
<li>Select a bounded area and export existing chunks</li>
<li>Choose up to 24 random, safe surface viewpoints</li>
<li>{t("Bukkit/Paper 1.21.11 · Java 21")}</li>
<li>{t("Select a bounded area and export existing chunks")}</li>
<li>{t("Choose up to 24 random, safe surface viewpoints")}</li>
<li>
Use /minegeo contribute &lt;map ID&gt; to join an existing map
</li>
<li>Link a contributor token and upload resumably</li>
<li>Set the public Minecraft server address before exporting</li>
<li>Vanilla blocks/fluids, simplified lighting</li>
<li>{t("Link a contributor token and upload resumably")}</li>
<li>
{t("Set the public Minecraft server address before exporting")}
</li>
<li>{t("Vanilla blocks/fluids, simplified lighting")}</li>
</ul>
{plugin ? (
<a
@@ -79,10 +95,12 @@ export default function Downloads() {
href="/tools/plugin/minegeo-plugin-1.21.11.jar"
download
>
<Download size={16} /> Download server plugin
<Download size={16} /> {t("Download server plugin")}
</a>
) : (
<p className="muted">The plugin build is not available yet.</p>
<p className="muted">
{t("The plugin build is not available yet.")}
</p>
)}
<pre>
{
@@ -90,10 +108,13 @@ export default function Downloads() {
}
</pre>
<p className="muted">
Start with a small, explored area around your builds. Exports are
saved in <code>plugins/MineGeo/exports/export-…/</code>. The
manifest appears when export finishes. Upload sends the latest
completed export; it does not capture the world.
{t(
"Start with a small, explored area around your builds. Exports are saved in",
)}{" "}
<code>plugins/MineGeo/exports/export-…/</code>
{t(
". The manifest appears when export finishes. Upload sends the latest completed export; it does not capture the world.",
)}
</p>
<p className="muted" style={{ fontSize: 11 }}>
Put the JAR in plugins/ and restart. Set website, server-name and
@@ -105,15 +126,15 @@ export default function Downloads() {
</div>
<div className="contribute-banner">
<div>
<h2>Your map, your credit.</h2>
<h2>{t("Your map, your credit.")}</h2>
<p>
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(
"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.",
)}
</p>
</div>
<Link className="button" href="/dashboard">
Open my dashboard <ExternalLink size={15} />
{t("Open my dashboard")} <ExternalLink size={15} />
</Link>
</div>
</main>