One-way travel bug: the exit point landed players directly inside the
destination gate's own iris footprint. Since dialing opens both ends,
arriving there immediately re-triggered the teleport listener and
bounced them straight back - reading exactly like one-way travel.
GateManager.computeSafeLanding now nudges the landing spot along the
player's travel direction until it clears the destination's iris
blocks, and GateTeleportListener adds a short per-player cooldown as a
second guard against re-trigger. Same-server teleports now also
preserve the player's exact yaw/pitch and velocity instead of forcing
a fixed stored orientation, so entering forward always means exiting
forward; the cross-server plugin-messaging protocol was extended to
carry yaw/pitch through the proxy hop for the same reason.
Iris rework to match SG-1 rather than a binary open/closed gate:
- Idle (not connected): iris-idle-material, default AIR - you see
straight through an inactive ring, not a wall.
- Connected: iris-open-material (WATER, the event horizon) unless the
gate's separate iris shield is closed, in which case
iris-shield-material (IRON_BLOCK) blocks travel even though the
wormhole is active.
- A button placed directly below the control sign toggles the shield
(GateIrisButtonListener). Closing needs nothing; opening a gate with
a pin code set (/sg pin <code>) prompts the player to type it in
chat within gate.pin-timeout-seconds first.
Also: gate.chevron-lit-material default changed from gilded blackstone
to glowstone per feedback.
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.
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.