diff options
author | Owen <[email protected]> | 2022-03-11 15:13:46 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2022-03-11 21:13:46 +0100 |
commit | ea1efef1164aa7653119eb4be000749930e5b4da (patch) | |
tree | 104968ec407cf897e14388b14d2bf397844c8279 /patches/server/0480-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch | |
parent | 1790528a6104c7c801e02a6f6d2ec0dda70e2af9 (diff) | |
download | Paper-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.patch | 82 |
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; |