Fix one-way travel, rework iris to SG-1 mechanics, glowstone chevrons, pin-locked shield
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.
This commit is contained in:
@@ -34,19 +34,22 @@ further outward than their immediate ring-neighbours - the "elbow" points of the
|
||||
shape, which is where a real Stargate's chevrons sit (an 11-wide octagonal ring like
|
||||
the reference design naturally produces 7 of them: the top apex, the four shoulder
|
||||
elbows, and the two side bumps). Those blocks swap to `gate.chevron-lit-material`
|
||||
(default gilded blackstone) while dialing/open, and revert to whatever they looked
|
||||
like at rest when the gate closes - so a chevron can rest as plain obsidian and blend
|
||||
(default glowstone) while dialing/open, and revert to whatever they looked like at
|
||||
rest when the gate closes - so a chevron can rest as plain obsidian and blend
|
||||
invisibly into the frame until it lights up.
|
||||
|
||||
1. Build the ring.
|
||||
2. Place a sign anywhere - it doesn't need to touch the frame, so it can act like a DHD
|
||||
2. Optionally place a button directly below where you'll put the sign - this becomes
|
||||
the iris shield toggle (see below). Not required; a gate without one just has no
|
||||
shield control.
|
||||
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
|
||||
3. The sign will show "Punch the gate (30s)". Within `gate.link-timeout-seconds`,
|
||||
4. The sign will show "Punch the gate (30s)". Within `gate.link-timeout-seconds`,
|
||||
left-click (punch) any frame block, within `gate.max-link-distance` of the sign.
|
||||
The plugin scans out from that block and links the sign to it.
|
||||
|
||||
@@ -57,11 +60,21 @@ material, unsealed interior, too far from the sign, etc.
|
||||
|
||||
- **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 switches from `gate.iris-closed-material` (default bedrock - solid,
|
||||
nothing can pass through a closed/idle gate) to `gate.iris-open-material` (default
|
||||
water, the "event horizon"). Walk into it to teleport. It auto-closes after
|
||||
`dialing.open-seconds`, switching the interior back to bedrock.
|
||||
- **Left-click** the sign: dials the shown destination - chevrons light in sequence,
|
||||
then the interior switches from `gate.iris-idle-material` (default air - an idle gate
|
||||
is just an empty ring you can see straight through) to either the event horizon
|
||||
(`gate.iris-open-material`, default water) or, if the iris shield is closed, to
|
||||
`gate.iris-shield-material` (default iron block) instead, blocking travel even
|
||||
though the gate is actively connected. It auto-closes after `dialing.open-seconds`,
|
||||
switching back to the idle material either way.
|
||||
- Walking into the event horizon teleports you to the connected gate, arriving just
|
||||
clear of its iris (never inside it - that would immediately teleport you right back)
|
||||
and still facing whatever direction you were already walking, so entering forward
|
||||
always means exiting forward.
|
||||
- **Right-click a button placed directly below the sign** toggles the iris shield.
|
||||
Closing it never needs anything extra. If the gate has a pin set (`/sg pin <code>`),
|
||||
opening a closed shield prompts you to type the code in chat within
|
||||
`gate.pin-timeout-seconds` before it'll open.
|
||||
|
||||
## Multi-world
|
||||
|
||||
@@ -93,5 +106,8 @@ server's Stargate instance teleports them to the gate's exit point.
|
||||
## Commands
|
||||
|
||||
- `/sg list [network]`
|
||||
- `/sg networks`
|
||||
- `/sg destroy` (look at a gate's sign)
|
||||
- `/sg pin <code|clear>` (look at a gate's sign) — requires that code in chat before a
|
||||
closed iris shield will open on that gate
|
||||
- `/sg reload`
|
||||
|
||||
Reference in New Issue
Block a user