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.
This commit is contained in:
@@ -25,16 +25,20 @@ Build everything with `./gradlew build`. Jars land in each module's `build/libs/
|
||||
`gate.chevron-lit-material` (default gilded blackstone); closing the gate restores
|
||||
them to their original block, so a chevron can rest as plain obsidian and blend
|
||||
invisibly into the frame until it lights up.
|
||||
3. Place a sign on the outside of the frame with:
|
||||
3. Place a sign anywhere - it doesn't need to touch the frame, so it can act like a DHD
|
||||
console standing apart from the gate - 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
|
||||
4. The sign will show "Punch the gate (30s)". Within `gate.link-timeout-seconds`,
|
||||
left-click (punch) any block of the frame ring, within `gate.max-link-distance` of
|
||||
the sign. The plugin flood-fills out from that block, confirms it's a fully enclosed
|
||||
ring, and links the sign to it.
|
||||
|
||||
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`.
|
||||
If punching a block doesn't work, the plugin tells you exactly why in chat - an
|
||||
unrecognized frame material, a gap in the ring, too far from the sign, etc.
|
||||
|
||||
## Using a gate
|
||||
|
||||
|
||||
Reference in New Issue
Block a user