mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
30285e7121
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: 3a3bea52 SPIGOT-7829: Increase maximum outgoing plugin message size to match Vanilla intention 5cd1c8cb SPIGOT-7831: Add CreatureSpawnEvent.SpawnReason#POTION_EFFECT a8e278f0 SPIGOT-7827: Sync EntityPortalEvent with PlayerPortalEvent since non-players can now create portals 53729d12 Remove spurious ApiStatus.Internal annotation b9f57486 SPIGOT-7799, PR-1039: Expose explosion world interaction in EntityExplodeEvent and BlockExplodeEvent 7983b966 PR-1029: Trial changing a small number of inner enums to classes/interfaces to better support custom values CraftBukkit Changes: 403accd56 SPIGOT-7831: Add CreatureSpawnEvent.SpawnReason#POTION_EFFECT 812761660 Increase outdated build delay bed1e3ff6 SPIGOT-7827: Sync EntityPortalEvent with PlayerPortalEvent since non-players can now create portals 2444c8b23 SPIGOT-7823: Suspicious sand and gravel material are not marked as having gravity correctly aceddcd0b SPIGOT-7820: Enum changes - duplicate method name a0d2d6a84 SPIGOT-7813: Material#isInteractable() always returns false 8fd64b091 SPIGOT-7806: Handle both loot and inventory item drop behaviour in PlayerDeathEvent a4ee40b74 SPIGOT-7799, PR-1436: Expose explosion world interaction in EntityExplodeEvent and BlockExplodeEvent 082aa51c5 PR-1424: Trial changing a small number of inner enums to classes/interfaces to better support custom values 66e78a96b SPIGOT-7815: Consider EntityDamageEvent status for Wolf armor damage Spigot Changes: 5bbef5ad SPIGOT-7834: Modify max value for generic.max_absorption
225 lines
8.3 KiB
Diff
225 lines
8.3 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/PortalType.java b/src/main/java/org/bukkit/PortalType.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/org/bukkit/PortalType.java
|
|
+++ b/src/main/java/org/bukkit/PortalType.java
|
|
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
|
|
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java
|
|
@@ -0,0 +0,0 @@ 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
|
|
}
|
|
|
|
/**
|
|
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
|
|
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalEvent.java
|
|
@@ -0,0 +0,0 @@ package org.bukkit.event.entity;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.event.HandlerList;
|
|
+import org.jetbrains.annotations.ApiStatus;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
@@ -0,0 +0,0 @@ public class EntityPortalEvent extends EntityTeleportEvent {
|
|
private int searchRadius = 128;
|
|
private boolean canCreatePortal = true;
|
|
private int creationRadius = 16;
|
|
+ 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
|
|
}
|
|
|
|
public EntityPortalEvent(@NotNull Entity entity, @NotNull Location from, @Nullable Location to, int searchRadius, boolean canCreatePortal, int creationRadius) {
|
|
+ // Paper start
|
|
+ this(entity, from, to, searchRadius, canCreatePortal, creationRadius, org.bukkit.PortalType.CUSTOM);
|
|
+ }
|
|
+
|
|
+ @ApiStatus.Internal
|
|
+ public EntityPortalEvent(@NotNull Entity entity, @NotNull Location from, @Nullable Location to, int searchRadius, boolean canCreatePortal, int creationRadius, final @NotNull org.bukkit.PortalType portalType) {
|
|
super(entity, from, to);
|
|
+ this.type = portalType;
|
|
+ // Paper end
|
|
this.searchRadius = searchRadius;
|
|
this.canCreatePortal = canCreatePortal;
|
|
this.creationRadius = creationRadius;
|
|
}
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
|
|
+++ b/src/main/java/org/bukkit/event/player/PlayerPortalEvent.java
|
|
@@ -0,0 +0,0 @@ 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.
|