Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-21 22:10:10 +01:00
40 Zeilen
1.8 KiB
Diff
40 Zeilen
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) {
|