mirror of
https://github.com/PaperMC/Folia.git
synced 2025-04-23 04:39:19 +08:00
Fix NPE in TeleportUtils if the Entity becomes retired
The onComplete variable is possibly null and should be checked before trying to invoke it. Fixes https://github.com/PaperMC/Folia/issues/151
This commit is contained in:
parent
f6e91e9a4c
commit
1f46b2ca93
@ -5472,10 +5472,10 @@ index 0000000000000000000000000000000000000000..112d24a93bddf3d81c9176c05340c94e
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/io/papermc/paper/threadedregions/TeleportUtils.java b/src/main/java/io/papermc/paper/threadedregions/TeleportUtils.java
|
diff --git a/src/main/java/io/papermc/paper/threadedregions/TeleportUtils.java b/src/main/java/io/papermc/paper/threadedregions/TeleportUtils.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..84b4ff07735fb84e28ee8966ffdedb1bb3d07dff
|
index 0000000000000000000000000000000000000000..7b31c4ea6d01f936271bdadc3626201dcf32a683
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/io/papermc/paper/threadedregions/TeleportUtils.java
|
+++ b/src/main/java/io/papermc/paper/threadedregions/TeleportUtils.java
|
||||||
@@ -0,0 +1,60 @@
|
@@ -0,0 +1,70 @@
|
||||||
+package io.papermc.paper.threadedregions;
|
+package io.papermc.paper.threadedregions;
|
||||||
+
|
+
|
||||||
+import ca.spottedleaf.concurrentutil.completable.Completable;
|
+import ca.spottedleaf.concurrentutil.completable.Completable;
|
||||||
@ -5496,7 +5496,9 @@ index 0000000000000000000000000000000000000000..84b4ff07735fb84e28ee8966ffdedb1b
|
|||||||
+ positionCompletable.addWaiter(
|
+ positionCompletable.addWaiter(
|
||||||
+ (final Location loc, final Throwable thr) -> {
|
+ (final Location loc, final Throwable thr) -> {
|
||||||
+ if (loc == null) {
|
+ if (loc == null) {
|
||||||
|
+ if (onComplete != null) {
|
||||||
+ onComplete.accept(null);
|
+ onComplete.accept(null);
|
||||||
|
+ }
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ final boolean scheduled = from.getBukkitEntity().taskScheduler.schedule(
|
+ final boolean scheduled = from.getBukkitEntity().taskScheduler.schedule(
|
||||||
@ -5510,14 +5512,18 @@ index 0000000000000000000000000000000000000000..84b4ff07735fb84e28ee8966ffdedb1b
|
|||||||
+ );
|
+ );
|
||||||
+ },
|
+ },
|
||||||
+ (final Entity retired) -> {
|
+ (final Entity retired) -> {
|
||||||
|
+ if (onComplete != null) {
|
||||||
+ onComplete.accept(null);
|
+ onComplete.accept(null);
|
||||||
|
+ }
|
||||||
+ },
|
+ },
|
||||||
+ 1L
|
+ 1L
|
||||||
+ );
|
+ );
|
||||||
+ if (!scheduled) {
|
+ if (!scheduled) {
|
||||||
|
+ if (onComplete != null) {
|
||||||
+ onComplete.accept(null);
|
+ onComplete.accept(null);
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
+ }
|
||||||
+ );
|
+ );
|
||||||
+
|
+
|
||||||
+ final boolean scheduled = to.getBukkitEntity().taskScheduler.schedule(
|
+ final boolean scheduled = to.getBukkitEntity().taskScheduler.schedule(
|
||||||
@ -5525,14 +5531,18 @@ index 0000000000000000000000000000000000000000..84b4ff07735fb84e28ee8966ffdedb1b
|
|||||||
+ positionCompletable.complete(target.getBukkitEntity().getLocation());
|
+ positionCompletable.complete(target.getBukkitEntity().getLocation());
|
||||||
+ },
|
+ },
|
||||||
+ (final Entity retired) -> {
|
+ (final Entity retired) -> {
|
||||||
|
+ if (onComplete != null) {
|
||||||
+ onComplete.accept(null);
|
+ onComplete.accept(null);
|
||||||
|
+ }
|
||||||
+ },
|
+ },
|
||||||
+ 1L
|
+ 1L
|
||||||
+ );
|
+ );
|
||||||
+ if (!scheduled) {
|
+ if (!scheduled) {
|
||||||
|
+ if (onComplete != null) {
|
||||||
+ onComplete.accept(null);
|
+ onComplete.accept(null);
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
+ private TeleportUtils() {}
|
+ private TeleportUtils() {}
|
||||||
+}
|
+}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user