From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic 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. + *

+ * For {@link org.bukkit.PortalType#ENDER}, this will initially be the exact destination + * either, the world spawn for end->any world or end spawn for any world->end. + * + * @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..da753259e3c461d9fd40b7eb7d0abf7965497a47 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. + *

+ * For {@link TeleportCause#END_PORTAL}, this will initially be the exact destination + * either, the world spawn for end->any world or end spawn for any world->end. + * + * @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 getRelativeTeleportationFlags() { + return super.getRelativeTeleportationFlags(); + } + // Paper end /** * Set the Block radius to search in for available portals.