Rework BlueMap claiming and expand ranks guilds chat and warps
This commit is contained in:
1 parent
434ed5338a
commit
6a2944a88e
68 files changed
+1453
-2500
No files matched your search
+11
-65
@@ -1,75 +1,21 @@
|
||||
# Live Map (central Vantage)
|
||||
# Live map and land claims
|
||||
|
||||
> **Looking for the simplest map?** Use BlueMap: [bluemap.md](bluemap.md). It needs nothing on the panel, adds guild claims, pins and a player panel, and shows inside the launcher.
|
||||
>
|
||||
> **Setting up the panel-hosted Vantage map?** Follow [vantage-setup.md](vantage-setup.md). This page is the overview.
|
||||
SCOPENET uses [BlueMap](https://bluemap.bluecolored.de/) for terrain. Install BlueMap on the Minecraft server and make its web app reachable from players' computers. In the panel's **Servers → server settings**, enter the BlueMap **Map address**. The launcher opens the same map in its Live Map window and reads BlueMap's low resolution 2D tile images for the Guilds territory view.
|
||||
|
||||
The panel hosts a [Vantage](https://github.com/thoughts-on-things/vantage-mc) 3D map
|
||||
**for every game server**, so nobody has to run Vantage next to Minecraft.
|
||||
The terrain address must serve BlueMap's `settings.json`, per-map `settings.json`, and low resolution PNG tiles from the same URL path. A URL such as `https://maps.example.com/` works. If BlueMap is hosted below a path, include the trailing slash, for example `https://example.com/bluemap/`.
|
||||
|
||||
```
|
||||
Minecraft server ──(SCOPENET plugin/mod)──► Admin panel ──► Launcher "Live Map" button
|
||||
chunks + players HTTPS / WebSocket mirror + Vantage Vantage viewer in-app
|
||||
```
|
||||
## Center on the player
|
||||
|
||||
1. **Collect** – the SCOPENET Paper plugin / Fabric / Forge mod reads the world's
|
||||
region files (only chunks newer than what the panel already has) and sends them to
|
||||
the panel over HTTPS. Player positions stream over a WebSocket (HTTPS fallback).
|
||||
2. **Store & render** – the panel keeps a region-file mirror per server under
|
||||
`<data>/livemap/<server id>/world` and runs a `vantage server` sidecar over it on
|
||||
demand (stopped again after 15 idle minutes). Sidecars listen on loopback only.
|
||||
3. **Serve** – `GET /api/livemap/<server>/<dimension>/v1/worlds/default/…` proxies the
|
||||
sidecar to signed-in launcher/admin sessions. Player markers come straight from
|
||||
memory. One map per server and dimension (`overworld`, `the_nether`, `the_end`).
|
||||
4. **View** – the launcher checks `GET /api/v1/servers/<id>/livemap`; when Live Map is
|
||||
on for a server linked to the instance, the instance page shows a **Live Map**
|
||||
button that opens the map inside the launcher (and the Guilds territory view uses
|
||||
it too). Admins see the same map on *Servers → your server*.
|
||||
Turn on **Live player positions** in the server settings and leave `livemap.enabled: true` in the SCOPENET plugin or mod configuration. The game server sends current positions to the panel. The panel returns each signed-in player only their own position to the launcher. The **Find me** button centers the territory view on it; the blue dot marks their position. Positions expire when the server stops sending updates.
|
||||
|
||||
Chunk data only reaches the panel when the game server has written it, so the map
|
||||
follows autosaves (and `/save-all`) rather than every block change.
|
||||
The BlueMap map itself remains available when position relay is off. In that case, players can pan manually, but **Find me** is unavailable.
|
||||
|
||||
## Turn it on
|
||||
## Claim controls
|
||||
|
||||
1. **Servers → your server → Settings → Live Map** (on by default for new servers).
|
||||
2. Update the plugin/mod. `livemap.enabled: true` (Paper `config.yml`) or
|
||||
`livemap.enabled=true` (`config/scopenet.properties`) is the default; set it to
|
||||
`false` to keep a server off the map locally.
|
||||
3. The server page shows a checklist: generator, assets, world data, player positions.
|
||||
In **Guilds & Territories**, select the game server and dimension. Left click a chunk to claim it for your guild, or drag across chunks to claim an area. Right click or right drag unclaims your guild's chunks. Alt drag pans; the wheel zooms. The overlay shows your guild's claims in green and other guilds' claims in red. The panel checks membership and claim limits for every request; only successful claims appear in the final map state.
|
||||
|
||||
## Panel requirements
|
||||
BlueMap must have rendered the area to show terrain. Claims can still be managed by the in-game `/claim` and `/unclaim` commands when the web map is unavailable.
|
||||
|
||||
Rendering needs two things on the machine running the panel:
|
||||
## Existing world mirror
|
||||
|
||||
| Setting | Meaning |
|
||||
| --- | --- |
|
||||
| `SCOPENET_VANTAGE_BIN` | The `vantage` executable (default: `vantage` on `PATH`, then `/opt/vantage/vantage`). |
|
||||
| `SCOPENET_VANTAGE_ASSETS` | Minecraft client assets directory passed as `--assets` (default `<data>/livemap/assets`). |
|
||||
| `SCOPENET_VANTAGE_ARGS` | Optional extra `vantage server` flags, e.g. `--radius 2048 --memory 1024`. |
|
||||
|
||||
With Docker, either mount your binary at `/opt/vantage/vantage` and the assets at
|
||||
`/data/livemap/assets`, or bake a static Linux release in with
|
||||
`VANTAGE_URL=<release archive> docker compose build`. Until both exist the panel still
|
||||
stores what servers send and launchers show "the map is being prepared".
|
||||
Give the container more than the default 256 MB if Live Map is on (`PANEL_MEMORY`).
|
||||
|
||||
## Security
|
||||
|
||||
* Game servers authenticate with their existing `sn_…` token; the endpoints refuse
|
||||
servers whose Live Map switch is off.
|
||||
* Viewers must be signed in; the launcher attaches its session token natively, so it
|
||||
never reaches page scripts. Anyone with an account can view a server's map — use
|
||||
the server's access rules and leave Live Map off for private worlds.
|
||||
* The sidecar gets a random per-process bearer token and never leaves loopback.
|
||||
|
||||
## Ingest API (for reference)
|
||||
|
||||
All under `/api/server/v1/livemap/` with `Authorization: Bearer <server token>`:
|
||||
`GET config`, `GET manifest?dim=`, `POST chunks?dim=` (binary records of
|
||||
`i32 x, i32 z, u32 timestamp, u8 compression, u32 length, bytes`), `POST level`
|
||||
(`level.dat`), `POST players`, `GET ws` (WebSocket: JSON `players` frames).
|
||||
|
||||
## External Vantage (advanced)
|
||||
|
||||
Under *Use an external Vantage map instead* you can still point a server at a
|
||||
`manifest.json` / `world.json` you host yourself. It is only used when Live Map is off.
|
||||
Older SCOPENET game integrations uploaded region chunks to the panel under `/api/server/v1/livemap`. The panel retains those ingest endpoints for compatibility with existing servers, but the launcher terrain comes from BlueMap. Current integrations send player positions only.
|
||||
Reference in new issue
Block a user