diff options
Diffstat (limited to 'patches/api/0392-Improve-PortalEvents.patch')
-rw-r--r-- | patches/api/0392-Improve-PortalEvents.patch | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/patches/api/0392-Improve-PortalEvents.patch b/patches/api/0392-Improve-PortalEvents.patch new file mode 100644 index 0000000000..f7f53b19fc --- /dev/null +++ b/patches/api/0392-Improve-PortalEvents.patch @@ -0,0 +1,128 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic <[email protected]> +Date: Thu, 15 Dec 2022 10:33:34 -0800 +Subject: [PATCH] Improve PortalEvents + + +diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java +index 67fb9d93e808e907fa980f3004d415ae5d0a53fc..97e36c7f6e09276fbae20eaeee0965566332ca46 100644 +--- a/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java ++++ b/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java +@@ -15,15 +15,58 @@ import org.jetbrains.annotations.Nullable; + public class EntityPortalEvent extends EntityTeleportEvent { + private static final HandlerList handlers = new HandlerList(); + private int searchRadius = 128; ++ private final org.bukkit.PortalType type; // Paper + + public EntityPortalEvent(@NotNull final Entity entity, @NotNull final Location from, @Nullable final Location to) { +- super(entity, from, to); ++ this(entity, from, to, 128); // Paper + } + + public EntityPortalEvent(@NotNull Entity entity, @NotNull Location from, @Nullable Location to, int searchRadius) { + super(entity, from, to); + this.searchRadius = searchRadius; ++ this.type = org.bukkit.PortalType.CUSTOM; // Paper ++ } ++ ++ // Paper start ++ public EntityPortalEvent(@NotNull Entity entity, @NotNull Location from, @Nullable Location to, int searchRadius, final @NotNull org.bukkit.PortalType portalType) { ++ super(entity, from, to); ++ this.searchRadius = searchRadius; ++ this.type = portalType; ++ } ++ ++ /** ++ * Get the portal type relating to this event. ++ * ++ * @return the portal type ++ */ ++ public @NotNull org.bukkit.PortalType getPortalType() { ++ return this.type; ++ } ++ /** ++ * For {@link org.bukkit.PortalType#NETHER}, this is initially just the starting point ++ * for the search for a portal to teleport to. It will initially just be the {@link #getFrom()} ++ * scaled for dimension scaling and clamped to be inside the world border. ++ * <p> ++ * For {@link org.bukkit.PortalType#ENDER}, this will initially be the exact destination ++ * either, the world spawn for <i>end->any world</i> or end spawn for <i>any world->end</i>. ++ * ++ * @return starting point for search or exact destination ++ */ ++ @Override ++ public @Nullable Location getTo() { ++ return super.getTo(); ++ } ++ ++ /** ++ * See the description of {@link #getTo()}. ++ * @param to starting point for search or exact destination ++ * or null to cancel ++ */ ++ @Override ++ public void setTo(@Nullable final Location to) { ++ super.setTo(to); + } ++ // Paper end + + /** + * Set the Block radius to search in for available portals. +diff --git a/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java b/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java +index 57eeeafae84f83a939925820e827769749ff27ec..929a997671de8202efb9da97fbf9b4a0bf7c37e8 100644 +--- a/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java ++++ b/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java +@@ -32,6 +32,53 @@ public class PlayerPortalEvent extends PlayerTeleportEvent { + this.canCreatePortal = canCreatePortal; + this.creationRadius = creationRadius; + } ++ // Paper start ++ /** ++ * For {@link TeleportCause#NETHER_PORTAL}, this is initially just the starting point ++ * for the search for a portal to teleport to. It will initially just be the {@link #getFrom()} ++ * scaled for dimension scaling and clamped to be inside the world border. ++ * <p> ++ * For {@link TeleportCause#END_PORTAL}, this will initially be the exact destination ++ * either, the world spawn for <i>end->any world</i> or end spawn for <i>any world->end</i>. ++ * ++ * @return starting point for search or exact destination ++ */ ++ @Override ++ public @NotNull Location getTo() { ++ return super.getTo(); ++ } ++ ++ /** ++ * See the description of {@link #getTo()}. ++ * @param to starting point for search or exact destination ++ */ ++ @Override ++ public void setTo(@NotNull final Location to) { ++ super.setTo(to); ++ } ++ ++ /** ++ * No effect ++ * @return no effect ++ * @deprecated No effect ++ */ ++ @Deprecated ++ @Override ++ public boolean willDismountPlayer() { ++ return super.willDismountPlayer(); ++ } ++ ++ /** ++ * No effect ++ * @return no effect ++ * @deprecated No effect ++ */ ++ @Deprecated ++ @Override ++ public @NotNull java.util.Set<io.papermc.paper.entity.TeleportFlag.@NotNull Relative> getRelativeTeleportationFlags() { ++ return super.getRelativeTeleportationFlags(); ++ } ++ // Paper end + + /** + * Set the Block radius to search in for available portals. |