Skip to content

Commit c5caee3

Browse files
authored
Prevent entity loading causing async lookups (#7553)
1 parent 2d17a50 commit c5caee3

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
3+
Date: Sun, 6 Mar 2022 11:09:09 -0500
4+
Subject: [PATCH] Prevent entity loading causing async lookups
5+
6+
7+
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
8+
index 86a2eddf344503cbe75a5243a114f6fe1578185f..dfd1f37757af1bd808cc2e2d8bf97123adf638bb 100644
9+
--- a/src/main/java/net/minecraft/world/entity/Entity.java
10+
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
11+
@@ -725,6 +725,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
12+
13+
public void baseTick() {
14+
this.level.getProfiler().push("entityBaseTick");
15+
+ if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking
16+
this.feetBlockState = null;
17+
if (this.isPassenger() && this.getVehicle().isRemoved()) {
18+
this.stopRiding();
19+
diff --git a/src/main/java/net/minecraft/world/entity/NeutralMob.java b/src/main/java/net/minecraft/world/entity/NeutralMob.java
20+
index dedf76de5d6f46b9626ca4a98cfffe125b90dd0c..78632fd681049fbd49d0030c23ed204dbc515a44 100644
21+
--- a/src/main/java/net/minecraft/world/entity/NeutralMob.java
22+
+++ b/src/main/java/net/minecraft/world/entity/NeutralMob.java
23+
@@ -42,18 +42,7 @@ public interface NeutralMob {
24+
UUID uuid = nbt.getUUID("AngryAt");
25+
26+
this.setPersistentAngerTarget(uuid);
27+
- Entity entity = ((ServerLevel) world).getEntity(uuid);
28+
-
29+
- if (entity != null) {
30+
- if (entity instanceof Mob) {
31+
- this.setLastHurtByMob((Mob) entity);
32+
- }
33+
-
34+
- if (entity.getType() == EntityType.PLAYER) {
35+
- this.setLastHurtByPlayer((Player) entity);
36+
- }
37+
-
38+
- }
39+
+ // Paper - Moved diff to separate method
40+
}
41+
}
42+
}
43+
@@ -127,4 +116,26 @@ public interface NeutralMob {
44+
45+
@Nullable
46+
LivingEntity getTarget();
47+
+
48+
+ // Paper start - Update last hurt when ticking
49+
+ default void tickInitialPersistentAnger(Level level) {
50+
+ UUID target = getPersistentAngerTarget();
51+
+ if (target == null) {
52+
+ return;
53+
+ }
54+
+
55+
+ Entity entity = ((ServerLevel) level).getEntity(target);
56+
+
57+
+ if (entity != null) {
58+
+ if (entity instanceof Mob) {
59+
+ this.setLastHurtByMob((Mob) entity);
60+
+ }
61+
+
62+
+ if (entity.getType() == EntityType.PLAYER) {
63+
+ this.setLastHurtByPlayer((Player) entity);
64+
+ }
65+
+
66+
+ }
67+
+ }
68+
+ // Paper end
69+
}

0 commit comments

Comments
 (0)