4d40e87b33
Had to drop some hunks modifying getEntities, as those methods were rewritten by Mojang in 1.17
39 lines
1.8 KiB
Diff
39 lines
1.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: giacomo <32515303+giacomozama@users.noreply.github.com>
|
|
Date: Sat, 10 Oct 2020 12:15:33 +0200
|
|
Subject: [PATCH] Fixed TileEntityBell memory leak
|
|
|
|
TileEntityBell has a list of entities (entitiesAtRing) that was not being cleared at the right time, causing leaks whenever a bell would be rung near a crowd of entities.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
|
|
index 58ee348d0934a8d8743005b4b8e9114cfe1bc028..a71bf0802d04217dd11086901b7148957d32ca89 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
|
|
@@ -61,6 +61,11 @@ public class BellBlockEntity extends BlockEntity {
|
|
|
|
if (blockEntity.ticks >= 50) {
|
|
blockEntity.shaking = false;
|
|
+ // Paper start
|
|
+ if (!blockEntity.resonating) {
|
|
+ blockEntity.nearbyEntities.clear();
|
|
+ }
|
|
+ // Paper end
|
|
blockEntity.ticks = 0;
|
|
}
|
|
|
|
@@ -74,6 +79,7 @@ public class BellBlockEntity extends BlockEntity {
|
|
++blockEntity.resonationTicks;
|
|
} else {
|
|
bellEffect.run(world, pos, blockEntity.nearbyEntities);
|
|
+ blockEntity.nearbyEntities.clear(); // Paper
|
|
blockEntity.resonating = false;
|
|
}
|
|
}
|
|
@@ -116,6 +122,7 @@ public class BellBlockEntity extends BlockEntity {
|
|
}
|
|
}
|
|
|
|
+ this.nearbyEntities.removeIf(e -> !e.isAlive()); // Paper
|
|
}
|
|
|
|
private static boolean areRaidersNearby(BlockPos pos, List<LivingEntity> hearingEntities) {
|