aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch
diff options
context:
space:
mode:
authorOwen <[email protected]>2022-03-11 15:13:46 -0500
committerGitHub <[email protected]>2022-03-11 21:13:46 +0100
commitea1efef1164aa7653119eb4be000749930e5b4da (patch)
tree104968ec407cf897e14388b14d2bf397844c8279 /patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch
parent1790528a6104c7c801e02a6f6d2ec0dda70e2af9 (diff)
downloadPaper-ea1efef1164aa7653119eb4be000749930e5b4da.tar.gz
Paper-ea1efef1164aa7653119eb4be000749930e5b4da.zip
Remove Patches (#7541)
Diffstat (limited to 'patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch')
-rw-r--r--patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch82
1 files changed, 0 insertions, 82 deletions
diff --git a/patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch b/patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch
deleted file mode 100644
index 935dc6919a..0000000000
--- a/patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Spottedleaf <[email protected]>
-Date: Mon, 13 Jul 2020 06:22:54 -0700
-Subject: [PATCH] Fix AdvancementDataPlayer leak due from quitting early in
- login
-
-Move the criterion storage to the AdvancementDataPlayer object
-itself, so the criterion object stores no references - and thus
-needs no cleanup.
-
-diff --git a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
-index 06fc39b19385d36fd0c5bb9a7042a238eb6e8a57..bb1f0e9dbcb792d015d1cb65664a96fdd3e0489e 100644
---- a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
-+++ b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java
-@@ -14,22 +14,24 @@ import net.minecraft.server.level.ServerPlayer;
- import net.minecraft.world.level.storage.loot.LootContext;
-
- public abstract class SimpleCriterionTrigger<T extends AbstractCriterionTriggerInstance> implements CriterionTrigger<T> {
-- private final Map<PlayerAdvancements, Set<CriterionTrigger.Listener<T>>> players = Maps.newIdentityHashMap();
-+ //private final Map<PlayerAdvancements, Set<CriterionTrigger.Listener<T>>> players = Maps.newIdentityHashMap(); // Paper - moved into AdvancementDataPlayer to fix memory leak
-+
-+ public SimpleCriterionTrigger() {}
-
- @Override
- public final void addPlayerListener(PlayerAdvancements manager, CriterionTrigger.Listener<T> conditions) {
-- this.players.computeIfAbsent(manager, (managerx) -> {
-+ manager.criterionData.computeIfAbsent(this, (managerx) -> { // Paper - fix AdvancementDataPlayer leak
- return Sets.newHashSet();
- }).add(conditions);
- }
-
- @Override
- public final void removePlayerListener(PlayerAdvancements manager, CriterionTrigger.Listener<T> conditions) {
-- Set<CriterionTrigger.Listener<T>> set = this.players.get(manager);
-+ Set<CriterionTrigger.Listener<T>> set = (Set) manager.criterionData.get(this); // Paper - fix AdvancementDataPlayer leak
- if (set != null) {
- set.remove(conditions);
- if (set.isEmpty()) {
-- this.players.remove(manager);
-+ manager.criterionData.remove(this); // Paper - fix AdvancementDataPlayer leak
- }
- }
-
-@@ -37,7 +39,7 @@ public abstract class SimpleCriterionTrigger<T extends AbstractCriterionTriggerI
-
- @Override
- public final void removePlayerListeners(PlayerAdvancements tracker) {
-- this.players.remove(tracker);
-+ tracker.criterionData.remove(this); // Paper - fix AdvancementDataPlayer leak
- }
-
- protected abstract T createInstance(JsonObject obj, EntityPredicate.Composite playerPredicate, DeserializationContext predicateDeserializer);
-@@ -50,7 +52,7 @@ public abstract class SimpleCriterionTrigger<T extends AbstractCriterionTriggerI
-
- protected void trigger(ServerPlayer player, Predicate<T> predicate) {
- PlayerAdvancements playerAdvancements = player.getAdvancements();
-- Set<CriterionTrigger.Listener<T>> set = this.players.get(playerAdvancements);
-+ Set<CriterionTrigger.Listener<T>> set = (Set) playerAdvancements.criterionData.get(this); // Paper - fix AdvancementDataPlayer leak
- if (set != null && !set.isEmpty()) {
- LootContext lootContext = EntityPredicate.createContext(player, player);
- List<CriterionTrigger.Listener<T>> list = null;
-diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
-index f8f0be77126d2f3a1c53f7405ce4de4f0dca42be..8096f01fa7f1ed73e4812912fc9b21bafdd212c8 100644
---- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
-+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
-@@ -40,6 +40,7 @@ import net.minecraft.advancements.Criterion;
- import net.minecraft.advancements.CriterionProgress;
- import net.minecraft.advancements.CriterionTrigger;
- import net.minecraft.advancements.CriterionTriggerInstance;
-+import net.minecraft.advancements.critereon.SimpleCriterionTrigger;
- import net.minecraft.network.chat.ChatType;
- import net.minecraft.network.chat.TranslatableComponent;
- import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket;
-@@ -70,6 +71,8 @@ public class PlayerAdvancements {
- private Advancement lastSelectedTab;
- private boolean isFirstPacket = true;
-
-+ public final Map<SimpleCriterionTrigger, Set<CriterionTrigger.Listener>> criterionData = Maps.newIdentityHashMap(); // Paper - fix advancement data player leakage
-+
- public PlayerAdvancements(DataFixer dataFixer, PlayerList playerManager, ServerAdvancementManager advancementLoader, File advancementFile, ServerPlayer owner) {
- this.dataFixer = dataFixer;
- this.playerList = playerManager;