27 lines
1.5 KiB
Markdown
27 lines
1.5 KiB
Markdown
# Share a map with friends
|
|
|
|
The original owner can choose **Export ZIP** in their map editor or on the public
|
|
map page. The ZIP includes the saved map, selected panoramas, coordinates, and
|
|
signed original-owner attribution. Save edits before exporting. Raw world files,
|
|
server addresses, account IDs, tokens, and storage links are excluded.
|
|
|
|
On **Servers**, choose **Import** beside search, then select the exported ZIP.
|
|
Sign in first to keep the imported map in your dashboard. The ZIP limit is 256 MB.
|
|
Files upload directly to private Supabase Storage, then the deployed image
|
|
processor checks sizes, hashes, formats, and dimensions and creates the draft.
|
|
Neither Minecraft nor the terrain-rendering worker is required for these imports.
|
|
|
|
Imported maps are private and show **Owned by [original owner]**. The recipient
|
|
can play solo or host an invite-only multiplayer room after processing, with no
|
|
moderator approval. Submission, publication, and re-export of imported copies
|
|
are blocked. The original owner keeps the normal export and public review flow.
|
|
Private imported games do not contribute to the public leaderboard.
|
|
|
|
Apply `supabase/migrations/20261007145000_map_sharing.sql` before deploying.
|
|
Archive ownership signatures use a purpose-specific HMAC derived from the
|
|
server's Supabase secret key. Rotating that key invalidates ownership signatures
|
|
in older ZIPs; the original owner can export a new ZIP.
|
|
|
|
Verification: `npm test`, `npm run typecheck -- --incremental false`,
|
|
`node scripts/test-map-sharing-sql.mjs`, and `npm run build`.
|