A standalone Minecraft Java server-list editor and preview. Use the TypeScript core in Node, the DOM editor in any framework, or the optional React adapter. Grounds is one consumer; no Portal, account or server connection is required.
The viewer targets Vanilla Java behavior for the selected client profile. MOTDs and servericons remain supplied status snapshots; client-owned obfuscation and panorama motion are separate effects. Preview-only MOTD animation timelines are outside its scope. Profile-specific evidence and approximations remain explicit; see native behavior and limits.
The unreleased vanillaSpriteCatalog(profile) supplies a curated set of 20 built-in sprite IDs audited in the supported sprite-capable client versions. It loads no textures or network resources. Hosts supply corresponding assets through SpriteProvider; the normal examples offer Vanilla choices, without custom demo sprites or a client-pack switch. A server-list ping cannot load a server resource pack. See Vanilla sprite selection and private local preview.
npm install @groundsgg/motdnpmjs.com is the primary registry; the same package is also published to GitHub Packages. See registry configuration and releases.
import { createDocument, parseText, java1211Profile } from "@groundsgg/motd";
import { createEditor } from "@groundsgg/motd/dom";
import "@groundsgg/motd/styles.css";
const document = createDocument(
parseText(
"<gold><bold>Hello</bold><newline><gray>{{players}} online",
"minimessage",
).value!,
);
const context = {
base: {
version: { protocol: 767, name: "1.21.1" },
players: { online: 42, max: 500, sample: [] },
description: "",
},
clientProtocol: 767,
values: { region: "EU" },
profile: java1211Profile,
viewportWidth: 640,
guiScale: 2,
serverName: "My server",
pingMs: 35,
animations: true,
};
const editor = createEditor(host, {
document,
context,
onChange(next, change) {
// Persist next; context and UI history are separate.
},
});
// editor.update({...}); editor.getDocument(); editor.destroy();Use createComparison (DOM) or ServerListComparison (React) for side-by-side client comparisons with per-client context and diagnostics.
React: import ServerListEditor or ServerListPreview from @groundsgg/motd/react, pass the same options as props, and return onChange values through controlled state. React >=18 is an optional peer; core and DOM consumers need no React. SSR renders an empty host and initializes in the browser.
- Public API
- Text formats
- Variable discovery and host catalogs
- Embedding and configuration
- Localization, catalogs and diagnostics
- Opt-in gradient and alignment import assistance
- Native inline sprites and optional editor catalogs (unreleased)
- Static server icons and animation limits
- Vanilla viewer behavior and native MOTD timing
- Client profile and reference evidence
- Local font-provider inspection
- Local bitmap glyph decoding
- Local Unihex glyph decoding
- Paired runtime sources and MOTD viewer rendering
- Known limits
Develop with Node 24: npm ci, npm run dev, then open /examples/dom/ or /examples/react/. Bundled fonts are local; host asset providers remain optional. npm run typecheck, npm test, npm run build, npm run test:browser, npm run test:package and npm run build:examples validate the sources, package and examples. Install the engines and dependencies with npx playwright install --with-deps chromium firefox webkit before browser tests. The same suite runs in all three engines; see browser verification for coverage and limits.
Builds and type checks use TypeScript 7 through the @typescript/native npm alias. The typescript alias supplies Microsoft's TypeScript 6 compatibility API for ESLint and other API consumers. This is the TypeScript team's recommended side-by-side setup: npx tsc --version reports 7.x, while node -p "require('typescript').version" reports 6.x. Keep both aliases until API-dependent tools support the native compiler.
See contributing for formatting, linting, checks and release conventions. Issue and PR templates come from the shared groundsgg/.github repository.
MIT code; local pixel fonts use SIL OFL 1.1. See THIRD_PARTY_NOTICES.md. No original Minecraft game assets are included in the npm archive. Client captures are test evidence only.
Preview profiles include 26.1, 26.1.1, 26.1.2, 26.2 and 26.3 alongside older references. Select a client independently of compatibility. Optional per-version asset providers keep original/host resources separate from this package. The bundled illustrations are approximate.
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.