Paper/patches/api/0407-Improve-PortalEvents.patch
Jake Potrebic 5730a94208
Updated Upstream (Bukkit/CraftBukkit) (#8991)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
2b4582fb SPIGOT-5916: getLastColors does not work with the rgb colors

CraftBukkit Changes:
f7707086d SPIGOT-7299: Fix indirect/anvil damage events and minor improvements
2023-03-18 10:05:04 -07:00

129 lines
4.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
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.