2021-06-14 18:58:00 +02:00
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
2024-01-20 12:50:16 +01:00
Subject: [PATCH] Fix bell block entity memory leak
2021-06-14 18:58:00 +02:00
2024-01-20 12:50:16 +01:00
BellBlockEntity 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.
2021-06-14 18:58:00 +02:00
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
2024-04-24 15:46:45 +02:00
index e1adfd10a2f67687b7123d20d31eb7d059a3e1e3..86dac3f82da065bf79d94da9df192f51ce4665e2 100644
2021-06-14 18:58:00 +02:00
--- a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
2023-04-07 20:39:13 +02:00
@@ -63,6 +63,11 @@ public class BellBlockEntity extends BlockEntity {
2021-06-14 18:58:00 +02:00
if (blockEntity.ticks >= 50) {
blockEntity.shaking = false;
2024-01-20 12:50:16 +01:00
+ // Paper start - Fix bell block entity memory leak
2021-06-14 18:58:00 +02:00
+ if (!blockEntity.resonating) {
+ blockEntity.nearbyEntities.clear();
+ }
2024-01-20 12:50:16 +01:00
+ // Paper end - Fix bell block entity memory leak
2021-06-14 18:58:00 +02:00
blockEntity.ticks = 0;
}
2023-04-07 20:39:13 +02:00
@@ -76,6 +81,7 @@ public class BellBlockEntity extends BlockEntity {
2021-06-14 18:58:00 +02:00
++blockEntity.resonationTicks;
} else {
bellEffect.run(world, pos, blockEntity.nearbyEntities);
2024-01-20 12:50:16 +01:00
+ blockEntity.nearbyEntities.clear(); // Paper - Fix bell block entity memory leak
2021-06-14 18:58:00 +02:00
blockEntity.resonating = false;
}
}
2023-04-07 20:39:13 +02:00
@@ -125,6 +131,7 @@ public class BellBlockEntity extends BlockEntity {
2021-06-14 18:58:00 +02:00
}
}
2024-01-20 12:50:16 +01:00
+ this.nearbyEntities.removeIf(e -> !e.isAlive()); // Paper - Fix bell block entity memory leak
2021-06-14 18:58:00 +02:00
}
private static boolean areRaidersNearby(BlockPos pos, List<LivingEntity> hearingEntities) {