Call EntityPortalEnterEvent on endgateways and make cancellable (#10892)

This commit is contained in:
Jake Potrebic 2024-06-23 15:01:12 -07:00 committed by GitHub
parent 5ae4758c8b
commit 897ece48d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 148 additions and 23 deletions

View file

@ -4,6 +4,85 @@ Date: Thu, 15 Dec 2022 10:33:34 -0800
Subject: [PATCH] Improve PortalEvents
diff --git a/src/main/java/org/bukkit/PortalType.java b/src/main/java/org/bukkit/PortalType.java
index 427cfbb8b542215c5d9993056e0cadf18ab9bd4b..e6120b83259c15189bbbf6b6dd13fbe7ccdf073d 100644
--- a/src/main/java/org/bukkit/PortalType.java
+++ b/src/main/java/org/bukkit/PortalType.java
@@ -14,6 +14,12 @@ public enum PortalType {
* This is an Ender portal.
*/
ENDER,
+ // Paper start
+ /**
+ * This is an end gateway
+ */
+ END_GATEWAY,
+ // Paper end
/**
* This is a custom Plugin portal.
diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..d3724db0a5a67cde15b05fecd32b2ca370cca998 100644
--- a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
@@ -7,14 +7,25 @@ import org.jetbrains.annotations.NotNull;
/**
* Called when an entity comes into contact with a portal
+ * <p>
+ * Cancelling this event prevents any further processing of the portal for that tick.
+ * @see io.papermc.paper.event.entity.EntityInsideBlockEvent
*/
-public class EntityPortalEnterEvent extends EntityEvent {
+public class EntityPortalEnterEvent extends EntityEvent implements org.bukkit.event.Cancellable { // Paper
private static final HandlerList handlers = new HandlerList();
private final Location location;
+ @Deprecated(since = "1.21") @io.papermc.paper.annotation.DoNotUse // Paper
public EntityPortalEnterEvent(@NotNull final Entity entity, @NotNull final Location location) {
+ // Paper start
+ this(entity, location, org.bukkit.PortalType.CUSTOM);
+ }
+ @org.jetbrains.annotations.ApiStatus.Internal
+ public EntityPortalEnterEvent(@NotNull final Entity entity, @NotNull final Location location, @NotNull final org.bukkit.PortalType portalType) {
+ // Paper end
super(entity);
this.location = location;
+ this.portalType = portalType; // Paper
}
/**
@@ -27,6 +38,30 @@ public class EntityPortalEnterEvent extends EntityEvent {
return location;
}
+ // Paper start
+ private boolean cancelled = false;
+ private final org.bukkit.PortalType portalType;
+
+ /**
+ * Get the portal type.
+ *
+ * @return the portal type
+ */
+ public org.bukkit.@NotNull PortalType getPortalType() {
+ return this.portalType;
+ }
+
+ @Override
+ public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ @Override
+ public void setCancelled(final boolean cancel) {
+ this.cancelled = cancel;
+ }
+ // Paper end
+
@NotNull
@Override
public HandlerList getHandlers() {
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

View file

@ -50,10 +50,10 @@ index 099efafa14c10910e4ed04abb1823f0c1a96b6a6..8506fa03293c575c35b55b0522248074
/**
diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..e4e3d2e22c28ef251d76c48ade267b4eb3749e7d 100644
index d3724db0a5a67cde15b05fecd32b2ca370cca998..8b2caf665b9e829ceefc89bf41b192f53f3d5773 100644
--- a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
@@ -24,7 +24,7 @@ public class EntityPortalEnterEvent extends EntityEvent {
@@ -35,7 +35,7 @@ public class EntityPortalEnterEvent extends EntityEvent implements org.bukkit.ev
*/
@NotNull
public Location getLocation() {
@ -61,7 +61,7 @@ index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..e4e3d2e22c28ef251d76c48ade267b4e
+ return location.clone(); // Paper - clone to avoid changes
}
@NotNull
// Paper start
diff --git a/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java b/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java
index 6fc66197eb2c5d59c70d8d028b7963748371edbe..2bb29fa449cd6c90b52d2786ed15b6154d591607 100644
--- a/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java