Commit Graph
8 Commits
Author SHA1 Message Date
Michael Burgess ed8415a497 Replace flood-fill scanner with an exact gate template
Instead of guessing a gate's shape by flood-filling connected frame
material, the plugin now matches a fixed ASCII template against the
world (gate.template in config.yml), the same idea as the classic
Stargate plugin's .gate files. Default is an 11x11 ring with 7
chevrons at their real positions rather than auto-spaced.

- New GateTemplate parses the '*'/'1'/'2'/'0' grid.
- New GateTemplateScanner tries every plausible alignment of a
  punched block against a frame/chevron cell, then verifies the rest
  of the template matches; no more flood-fill leak/enclosure
  diagnostics needed since the shape is exact.
- The player's look direction at punch time (snapped to N/S/E/W)
  decides whether template columns run along world X or Z; this
  facing is now stored in Gate.facing (repurposing the old
  sign-attachment field) so restarts can re-scan deterministically.
- Exit-teleport yaw now comes from that stored facing instead of a
  geometric guess.
- Removed gate.chevron-count/max-frame-blocks/max-iris-blocks/
  min-frame-blocks - the template itself defines size and chevrons.
2026-08-09 10:48:47 -04:00
Michael Burgess 317602c00e Decouple the control sign from the gate frame: place then punch to link
Sign creation no longer scans the block it's mounted on. Instead,
placing a "[Stargate]" sign starts a pending link (shown as "Punch the
gate" on the sign) and the next block the owner left-clicks within
gate.link-timeout-seconds and gate.max-link-distance becomes the scan
seed. This lets the sign act like a DHD console standing apart from
the gate instead of being physically attached to the frame.

- Gate now stores the punched link block's coordinates (link_x/y/z)
  so restarts re-scan from there instead of deriving a seed from the
  sign's attachment, which no longer applies.
- New GateLinkListener handles the punch and reports scan failures
  via the existing diagnostic messages; also clears pending state on
  disconnect.
- Exit-location facing is now derived from the punched frame block's
  position relative to the iris, since a WallSign facing is no longer
  guaranteed to exist or be relevant.
2026-08-09 10:32:46 -04:00
Michael Burgess 89d4fa0b63 Stop bundling DB drivers into the proxy jars
stargate-common declared HikariCP/SQLite/MySQL as implementation deps,
which leaked transitively into stargate-velocity and stargate-bungee
even though neither touches storage. That bloated each proxy jar from
~15KB to ~18MB for nothing. Switched to compileOnly in stargate-common;
stargate-paper already redeclares them as implementation so its shaded
jar is unaffected.
2026-08-09 10:23:04 -04:00
Michael Burgess c99f4c9f85 Auto-select chevron slots instead of requiring a distinct unlit material
Chevrons no longer need to be built out of a special block - the plugin
picks gate.chevron-count frame blocks evenly spaced around the scanned
ring and remembers their resting material, so a chevron can rest as
plain obsidian (matching the rest of the frame) and only reveal itself
by swapping to gate.chevron-lit-material while dialing/open. Restoring
on close now puts back the original block instead of a fixed material,
so alternating decorative frames (e.g. obsidian/gilded blackstone) are
preserved exactly.
2026-08-09 10:20:14 -04:00
Michael Burgess 62277a8d7b Fix interior scan failing on ground-standing gates
The floor a gate stands on (grass, stone, etc.) is a solid block that
isn't part of the frame, so touching it during the interior flood-fill
was treated as a leak and failed the whole scan. Solid non-frame blocks
now act as boundaries instead of auto-failures; a real gap in the ring
is still caught by the max-iris-blocks size cap.
2026-08-09 10:12:52 -04:00
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
Michael Burgess d651f6586f Add fixed-destination gates and /sg networks command
Sign line 4 now accepts fixed:GateName to lock a gate to one destination
without cycling, and /sg networks lists every known network.
2026-08-09 09:56:12 -04:00
Michael Burgess 83a0392ee9 Initial Stargate plugin: Paper gate plugin + Velocity/Bungee cross-server bridges 2026-08-09 09:53:55 -04:00