aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0384-Improve-PortalEvents.patch
blob: f7f53b19fc9782882898d8565756a4f2a421cb06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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.