Michael Burgess 56c089f656 Add gilded blackstone to default frame materials, report scan failure reasons
Sign creation now tells the player exactly why the structure scan failed
(missing frame material, ring not sealed, interior too large, etc.)
instead of one generic error.
2026-08-09 10:08:21 -04:00

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, fixed:GateName to lock this gate to always dial GateName (no right-click cycling), or 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
S
Description
No description provided
Readme
390 KiB
Languages
Java 100%