Transport non-player entities through gates too

GateTeleportListener previously only listened to PlayerMoveEvent, so
mobs, dropped items, minecarts, boats, and everything else that isn't
a player just walked/rolled/drifted straight through the event
horizon block with no effect. Added a Paper EntityMoveEvent handler
sharing the same one-way/outgoing-only matching, safe-landing, and
cooldown logic as the player path.

Non-player entities are restricted to same-server destinations - the
cross-server plugin-messaging protocol only carries a player's UUID
and look direction across the proxy hop, not arbitrary entity state,
so there's no way to hand off a mob or item to another backend.
This commit is contained in:
Michael Burgess
2026-08-09 11:54:40 -04:00
parent 8932dfed29
commit f58fad26d7
2 changed files with 77 additions and 22 deletions
+12 -6
View File
@@ -60,12 +60,18 @@ material, unsealed interior, too far from the sign, etc.
- **Left-click** the sign: dials the shown destination - chevrons light in sequence,
then the interior becomes the event horizon (`gate.iris-open-material`, default
water) and travel opens up. It auto-closes after `dialing.open-seconds`.
- Travel is **one-way**: only the gate you dialed *from* can send you anywhere.
Walking into its event horizon teleports you to the destination, arriving just
clear of its iris (never inside it) and still facing whatever direction you were
already walking, so entering forward always means exiting forward. The
destination's horizon is visible but not walkable - stepping into it does nothing,
same as a real Stargate only running one direction at a time.
- Travel is **one-way**: only the gate you dialed *from* can send anything anywhere.
Walking (or wandering, or drifting) into its event horizon teleports whatever
entered to the destination, arriving just clear of its iris (never inside it) and
still facing whatever direction it was already moving, so entering forward always
means exiting forward. The destination's horizon is visible but not walkable -
stepping into it does nothing, same as a real Stargate only running one direction
at a time.
- Not just players - mobs, dropped items, minecarts, boats, arrows, anything that
moves through the event horizon gets sent through too. Non-player entities can
only travel to a same-server destination, though; there's no way to carry an
arbitrary entity's state across the Velocity/Bungee plugin-messaging hop, so a
cross-server gate just won't move anything but players.
- The **iris shield** is a separate, physical thing from the wormhole connection.
**Right-click a button placed directly below the sign** to toggle it. Closed means
closed - `gate.iris-shield-material` (default bedrock), solid, blocking everything -