Files
Stargate/README.md
T

75 lines
3.1 KiB
Markdown

# Stargate
A network-aware Stargate portal plugin for PaperMC, with sign-based dialing and
cross-server travel over Velocity or BungeeCord.
## Modules
| Module | What it is |
|---|---|
| `stargate-common` | Shared models + JDBC storage (SQLite / MySQL) used only by the Paper plugin |
| `stargate-paper` | The actual gate plugin — install this on every backend server |
| `stargate-velocity` | Proxy companion for Velocity — install on the proxy only if using cross-server gates |
| `stargate-bungee` | Same, for BungeeCord/Waterfall |
Build everything with `./gradlew build`. Jars land in each module's `build/libs/`.
## Building a gate
1. Build a ring out of any block in `gate.frame-materials` (default: obsidian, gold
block, birch/oak planks — matches an obsidian+gold arch design). Leave the middle
hollow.
2. Embed a few blocks of `gate.chevron-unlit-material` (default black stained glass)
into the ring — these light up to `gate.chevron-lit-material` (default glowstone)
as the gate dials.
3. Place a sign on the outside of the frame with:
- Line 1: `[Stargate]`
- Line 2: network name (blank = default network)
- Line 3: gate name (blank = auto-generated)
- Line 4: `hidden` to keep it out of the cycle list, otherwise blank
The plugin flood-fills the frame from the block behind the sign, confirms it's a
fully enclosed ring, and registers the gate. If nothing happens, the ring isn't
sealed or none of its blocks match `frame-materials`.
## Using a gate
- **Right-click** the sign: cycles the destination shown on line 3 among the other
gates on the same network.
- **Left-click** the sign: dials the shown destination — chevrons light in sequence,
then the interior fills with `gate.iris-material` (default water). Walk into it to
teleport. It auto-closes after `dialing.open-seconds`.
## Multi-world
Gates are addressed by network name, not world — a gate on any loaded world can dial
any other gate on the same network regardless of world, exactly like same-server
cross-world travel in the original Stargate mod.
## Cross-server (Velocity / Bungee)
1. Set `storage.type: mysql` in every backend server's `config.yml` and point them at
the **same** database — this is how servers see each other's gates.
2. Give each backend a unique `server-id` in `config.yml` that matches its name in
the proxy config (`velocity.toml` / `config.yml` servers list).
3. Set `cross-server.enabled: true` on every backend.
4. Drop `stargate-velocity` (or `stargate-bungee`) into the proxy's plugin folder.
When a player dials a gate hosted on another backend, the Paper plugin asks the
proxy (over the `stargate:teleport` plugin channel) to connect the player to that
server; once they land, the proxy forwards a delivery message so the destination
server's Stargate instance teleports them to the gate's exit point.
## Permissions
- `stargate.use` (default: true) — dial/cycle gates
- `stargate.create` (default: op) — build new gates
- `stargate.destroy` (default: op) — break your own gates
- `stargate.admin` (default: op) — reload, break/manage any gate
## Commands
- `/sg list [network]`
- `/sg destroy` (look at a gate's sign)
- `/sg reload`