feat: Entity#teleportAsync method with TeleportFlags (#10371)

* feat: Entity#teleportAsync method with TeleportFlags

* use method-local class

---------

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
This commit is contained in:
Bridge 2024-04-06 22:38:37 +02:00 committed by GitHub
parent bd38e0318a
commit a774fbaca8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 160 additions and 144 deletions

View file

@ -485,10 +485,10 @@ index 8bef6168caf0932a5a64cf69eb7988fa3191b13a..ab183821b93dcfed1e881b481f0a3166
* Get a list of all players in this World
*
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 57a1d07d0430019fd38c72b9f58c7145927ecd02..a0ed358156f9cbeb9e3cbb910ac17785edd30152 100644
index 57a1d07d0430019fd38c72b9f58c7145927ecd02..8a7a4a8cf5f0b88664859cd43b0b01e6d261715d 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -168,6 +168,33 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -168,6 +168,39 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
public boolean teleport(@NotNull Entity destination, @NotNull TeleportCause cause);
@ -498,25 +498,31 @@ index 57a1d07d0430019fd38c72b9f58c7145927ecd02..a0ed358156f9cbeb9e3cbb910ac17785
+ * @param loc Location to teleport to
+ * @return A future that will be completed with the result of the teleport
+ */
+ @NotNull
+ public default java.util.concurrent.CompletableFuture<Boolean> teleportAsync(@NotNull Location loc) {
+ return teleportAsync(loc, TeleportCause.PLUGIN);
+ default java.util.concurrent.@NotNull CompletableFuture<Boolean> teleportAsync(final @NotNull Location loc) {
+ return this.teleportAsync(loc, TeleportCause.PLUGIN);
+ }
+
+ /**
+ * Loads/Generates(in 1.13+) the Chunk asynchronously, and then teleports the entity when the chunk is ready.
+ * @param loc Location to teleport to
+ * @param cause Reason for teleport
+ * @return A future that will be completed with the result of the teleport
+ */
+ @NotNull
+ public default java.util.concurrent.CompletableFuture<Boolean> teleportAsync(@NotNull Location loc, @NotNull TeleportCause cause) {
+ java.util.concurrent.CompletableFuture<Boolean> future = new java.util.concurrent.CompletableFuture<>();
+ loc.getWorld().getChunkAtAsyncUrgently(loc).thenAccept((chunk) -> future.complete(teleport(loc, cause))).exceptionally(ex -> {
+ future.completeExceptionally(ex);
+ return null;
+ });
+ return future;
+ default java.util.concurrent.@NotNull CompletableFuture<Boolean> teleportAsync(final @NotNull Location loc, final @NotNull TeleportCause cause) {
+ final class Holder {
+ static final io.papermc.paper.entity.TeleportFlag[] EMPTY_FLAGS = new io.papermc.paper.entity.TeleportFlag[0];
+ }
+ return this.teleportAsync(loc, cause, Holder.EMPTY_FLAGS);
+ }
+
+ /**
+ * Loads/Generates(in 1.13+) the Chunk asynchronously, and then teleports the entity when the chunk is ready.
+ * @param loc Location to teleport to
+ * @param cause Reason for teleport
+ * @param teleportFlags Flags to be used in this teleportation
+ * @return A future that will be completed with the result of the teleport
+ */
+ java.util.concurrent.@NotNull CompletableFuture<Boolean> teleportAsync(@NotNull Location loc, @NotNull TeleportCause cause, @NotNull io.papermc.paper.entity.TeleportFlag @NotNull... teleportFlags);
+ // Paper end
+
/**

View file

@ -12,10 +12,10 @@ or DEFAULT since data was not stored.
Co-authored-by: Aurora <aurora@relanet.eu>
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index a0ed358156f9cbeb9e3cbb910ac17785edd30152..8a01590cc0ee7517dc4c2a52e95aad2680610a43 100644
index 8a7a4a8cf5f0b88664859cd43b0b01e6d261715d..11a77f977c6abc031cf5a4d58924bc7af5e7ea53 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -836,5 +836,11 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -842,5 +842,11 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
// TODO remove impl here
return getLocation().getChunk();
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add entity liquid API
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 8a01590cc0ee7517dc4c2a52e95aad2680610a43..4d6d75387b9a3ec467982e17a5131cd10f302260 100644
index 11a77f977c6abc031cf5a4d58924bc7af5e7ea53..3deccdf110c2cb74444b5d715082fbbdaa8f20ce 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -842,5 +842,40 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -848,5 +848,40 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
@NotNull
org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason getEntitySpawnReason();

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Entity#isTicking
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 4d6d75387b9a3ec467982e17a5131cd10f302260..56e3a0649089e2546658144a3f09135be3a4e5e8 100644
index 3deccdf110c2cb74444b5d715082fbbdaa8f20ce..9711a8077238383f23fb7aa2c20b2c089776e3f8 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -877,5 +877,10 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -883,5 +883,10 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* Check if entity is in lava
*/
boolean isInLava();

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Expose Tracked Players
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 56e3a0649089e2546658144a3f09135be3a4e5e8..d68ccecaadcf7a906058e66a750f4cfce5dd7b3f 100644
index 9711a8077238383f23fb7aa2c20b2c089776e3f8..b32683b5e4431950d9dccec3ae11f6377c7b0da7 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -882,5 +882,14 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -888,5 +888,14 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* Check if entity is inside a ticking chunk
*/
boolean isTicking();

View file

@ -417,10 +417,10 @@ index 9e7f42caab1204036f4203354c115fd40c6def92..138d2530de2410f4a9424dabd3e5ce0c
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index d68ccecaadcf7a906058e66a750f4cfce5dd7b3f..578c22b0aef9c89a3c33b75c33bcdc60bdab6b49 100644
index b32683b5e4431950d9dccec3ae11f6377c7b0da7..b2466aa08ebb26f3a5edd6a4b2c7e12f7a90ef0a 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -283,6 +283,40 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -289,6 +289,40 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
boolean isFrozen();
@ -585,7 +585,7 @@ index 6b3c9bef9a8a34ddc6ff42cf358541a2665bf5e3..9c618a27d590f186f29c5d9094fc565e
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
index 99f314f25d1d6118e0884822d428c47060373bec..13eb80455dd589e87c39a7a5570ef093c7660205 100644
index a253ac2b60b038177e6c4f20d8367be36f10b1bd..2036e7b464f631054abb94333a8674d31bdce800 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -992,6 +992,7 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource

View file

@ -24,10 +24,10 @@ index ca0b126bff245ed3fe69bc49c28499f7a7aa9556..6426d8585bba71b3e998b1eb078ac0fc
* Creates and returns the next EntityId available.
* <p>
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 578c22b0aef9c89a3c33b75c33bcdc60bdab6b49..621ee3fd49ee96143df2f24889e9aef74448a544 100644
index b2466aa08ebb26f3a5edd6a4b2c7e12f7a90ef0a..d4f84318265343242a9fca565e456c7a8c1d68f7 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -925,5 +925,32 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -931,5 +931,32 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
@Deprecated
@NotNull Set<Player> getTrackedPlayers();

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Entity powdered snow API
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 9cb84eababf159b04618a605ff03cdaee72c9502..a7b37ba26d8999a78a747fe5a41e15327ae3a2ee 100644
index d4f84318265343242a9fca565e456c7a8c1d68f7..6db147a2330e8046c1bfb5ec2acd8dd30827d475 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -952,5 +952,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -958,5 +958,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* @return Whether the entity was successfully spawned.
*/
public boolean spawnAt(@NotNull Location location, @NotNull org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason);

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Freeze Tick Lock API
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index a7b37ba26d8999a78a747fe5a41e15327ae3a2ee..9b5fe55399594c57c1b1521bea03781fd99fdf60 100644
index 6db147a2330e8046c1bfb5ec2acd8dd30827d475..8827defeb26593cb2c2391e505b008f1190b01f3 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -317,6 +317,26 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -323,6 +323,26 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
boolean hasNoPhysics();
// Paper end - missing entity api

View file

@ -25,10 +25,10 @@ index 44ee56a5956cc17194c767a0c1071a2abffe818a..43dd6c59cceba12f27e6b265acc3ad97
// Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index e2f315db8d137d7bc1b6fc83ed29032152f881f2..4951afd12de6145f671bae40a4df6e2222bc3fd8 100644
index bc1547381b08d1acbbef885d9c3ecd63f3550426..8e2fa4dba0337a175acfee24fc59423ab4714977 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -1002,4 +1002,26 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -1008,4 +1008,26 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
boolean isInPowderedSnow();
// Paper end

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add Sneaking API for Entities
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 4951afd12de6145f671bae40a4df6e2222bc3fd8..909926485a66e09988f7787b1d5ee2cf9c012558 100644
index 8e2fa4dba0337a175acfee24fc59423ab4714977..2d6f7b2bf4cb23ef43a4dcbab2ecd2a7c7c2809c 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -813,6 +813,25 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -819,6 +819,25 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@NotNull
Pose getPose();

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add Entity Body Yaw API
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index d6e4c7cdd34b03295825b3c5ad76626f8f48ec0e..11df702c6f8282aa96ae1ed6b9b29c81fbfadbad 100644
index 2d6f7b2bf4cb23ef43a4dcbab2ecd2a7c7c2809c..0be4107270fb7fdba5c7d0e6f3964d33337f91f0 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -1020,6 +1020,43 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -1026,6 +1026,43 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* @return true if in powdered snow.
*/
boolean isInPowderedSnow();

View file

@ -769,10 +769,10 @@ index d433a9d2fe0bb487865fec33307cc4c45af475a0..f819de247080d58803a2851a4cab28d2
+ // Paper end - Folia region threading API
}
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 17d5a5458ee51d8db243326745875ef31ba95fb3..05076e0648407d026b3adba43756e57f7e925abe 100644
index 0be4107270fb7fdba5c7d0e6f3964d33337f91f0..c01c3f6576d4c0a8a173080ce01509d3eb678611 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -1080,4 +1080,15 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -1086,4 +1086,15 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
boolean wouldCollideUsing(@NotNull BoundingBox boundingBox);
// Paper end - Collision API

View file

@ -7,10 +7,10 @@ Was obtainable through different methods, but you had to use different
methods depending on the implementation of Entity you were working with.
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 05076e0648407d026b3adba43756e57f7e925abe..a7045fdf70e7dac94034ed6727a4eb29f31a9cdf 100644
index c01c3f6576d4c0a8a173080ce01509d3eb678611..2a30cda9efb24829f9c6a265e8be2dd848fa7c7c 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -1091,4 +1091,15 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -1097,4 +1097,15 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
*/
@NotNull io.papermc.paper.threadedregions.scheduler.EntityScheduler getScheduler();
// Paper end - Folia schedulers

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Expand Pose API
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index a7045fdf70e7dac94034ed6727a4eb29f31a9cdf..66f9e50d96710a41ac009271a499318fcf119c54 100644
index 2a30cda9efb24829f9c6a265e8be2dd848fa7c7c..23def071492ccd715693d534cc506936e18f0f46 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -830,6 +830,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
@@ -836,6 +836,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
* @param sneak true if the entity should be sneaking
*/
void setSneaking(boolean sneak);