diff options
author | Jake Potrebic <[email protected]> | 2024-04-26 14:29:16 -0700 |
---|---|---|
committer | Jake Potrebic <[email protected]> | 2024-04-26 14:29:21 -0700 |
commit | 19ac9d43ceafbbbf8c3e75dbe79d67516a8ee3b7 (patch) | |
tree | 695ca93b74fa417205ce379f5fb1d324090a6dd0 /removed-patches-1-20-5 | |
parent | 1bc278b125eac414943d4096da4a0c0a93e83bb0 (diff) | |
download | Paper-19ac9d43ceafbbbf8c3e75dbe79d67516a8ee3b7.tar.gz Paper-19ac9d43ceafbbbf8c3e75dbe79d67516a8ee3b7.zip |
remove no longer needed patches and fix tests
Diffstat (limited to 'removed-patches-1-20-5')
9 files changed, 0 insertions, 332 deletions
diff --git a/removed-patches-1-20-5/0532-Prevent-grindstones-from-overstacking-items.patch b/removed-patches-1-20-5/0532-Prevent-grindstones-from-overstacking-items.patch deleted file mode 100644 index d98bb3f1c4..0000000000 --- a/removed-patches-1-20-5/0532-Prevent-grindstones-from-overstacking-items.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: chickeneer <[email protected]> -Date: Tue, 16 Feb 2021 21:37:51 -0600 -Subject: [PATCH] Prevent grindstones from overstacking items - - -diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 1783661f38a6f5fb655ea83953b9467bd91a1302..95ac3446fba1f37637c9700080de2e1ce7a3550a 100644 ---- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -198,13 +198,13 @@ public class GrindstoneMenu extends AbstractContainerMenu { - i = Math.max(item.getMaxDamage() - l, 0); - itemstack2 = this.mergeEnchants(itemstack, itemstack1); - if (!itemstack2.isDamageableItem()) { -- if (!ItemStack.matches(itemstack, itemstack1)) { -+ if (!ItemStack.matches(itemstack, itemstack1) || (itemstack2.getMaxStackSize() == 1 && !io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowGrindstoneOverstacking)) { // Paper - add max stack size check & config value - org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareGrindstoneEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit - this.broadcastChanges(); - return; - } - -- b0 = 2; -+ b0 = 2; // Paper - add max stack size check & config value; the problem line for above change, causing over-stacking - } - } else { - boolean flag3 = !itemstack.isEmpty(); diff --git a/removed-patches-1-20-5/0603-Add-config-for-mobs-immune-to-default-effects.patch b/removed-patches-1-20-5/0603-Add-config-for-mobs-immune-to-default-effects.patch deleted file mode 100644 index 10ce8bf043..0000000000 --- a/removed-patches-1-20-5/0603-Add-config-for-mobs-immune-to-default-effects.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic <[email protected]> -Date: Wed, 2 Dec 2020 21:03:02 -0800 -Subject: [PATCH] Add config for mobs immune to default effects - - -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 60c9bae18f277a90b464a6f1f55d074ed9046aff..f01ace6a6e517ff3d3cd66e69e2594ae3d702072 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1172,7 +1172,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - if (this.getMobType() == MobType.UNDEAD) { - MobEffect mobeffectlist = effect.getEffect(); - -- if (mobeffectlist == MobEffects.REGENERATION || mobeffectlist == MobEffects.POISON) { -+ if ((mobeffectlist == MobEffects.REGENERATION || mobeffectlist == MobEffects.POISON) && this.level().paperConfig().entities.mobEffects.undeadImmuneToCertainEffects) { // Paper - Add config for mobs immune to default effects - return false; - } - } -diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index bd9453a92e1b2eca0a6dc56aef921e31a18a20c3..25f611b35a5710c595574d2d6ed50c442ca55721 100644 ---- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -607,7 +607,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob - - @Override - public boolean canBeAffected(MobEffectInstance effect) { -- return effect.getEffect() == MobEffects.WITHER ? false : super.canBeAffected(effect); -+ return effect.getEffect() == MobEffects.WITHER && this.level().paperConfig().entities.mobEffects.immuneToWitherEffect.wither ? false : super.canBeAffected(effect); // Paper - Add config for mobs immune to default effects - } - - private class WitherDoNothingGoal extends Goal { -diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 6241baccd3fdee59175f616cdf69d3873074f855..4d5cfaa58bdf4e6cb975134004d14c591f6e85fa 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/Spider.java -+++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java -@@ -135,7 +135,7 @@ public class Spider extends Monster { - - @Override - public boolean canBeAffected(MobEffectInstance effect) { -- return effect.getEffect() == MobEffects.POISON ? false : super.canBeAffected(effect); -+ return effect.getEffect() == MobEffects.POISON && this.level().paperConfig().entities.mobEffects.spidersImmuneToPoisonEffect ? false : super.canBeAffected(effect); // Paper - Add config for mobs immune to default effects - } - - public boolean isClimbing() { -diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index 62943d43b701d9ae6d955003f4e7658f76d5bdb3..20a65c11ededcd7170704b70118da6200151fbab 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -+++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -@@ -128,6 +128,6 @@ public class WitherSkeleton extends AbstractSkeleton { - - @Override - public boolean canBeAffected(MobEffectInstance effect) { -- return effect.getEffect() == MobEffects.WITHER ? false : super.canBeAffected(effect); -+ return effect.getEffect() == MobEffects.WITHER && this.level().paperConfig().entities.mobEffects.immuneToWitherEffect.witherSkeleton ? false : super.canBeAffected(effect); // Paper - Add config for mobs immune to default effects - } - } diff --git a/removed-patches-1-20-5/0608-Fix-incosistency-issue-with-empty-map-items-in-CB.patch b/removed-patches-1-20-5/0608-Fix-incosistency-issue-with-empty-map-items-in-CB.patch deleted file mode 100644 index 926fba2c7f..0000000000 --- a/removed-patches-1-20-5/0608-Fix-incosistency-issue-with-empty-map-items-in-CB.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Shane Freeder <[email protected]> -Date: Sun, 1 Aug 2021 09:49:06 +0100 -Subject: [PATCH] Fix incosistency issue with empty map items in CB - - -diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index f643d3c06bd8fc37f6c571a19d5691694b0ce8d3..d8dd99ec8bf7444c5a3c426db3a9c13e334dc0ff 100644 ---- a/src/main/java/net/minecraft/world/item/MapItem.java -+++ b/src/main/java/net/minecraft/world/item/MapItem.java -@@ -69,7 +69,7 @@ public class MapItem extends ComplexItem { - public static Integer getMapId(ItemStack stack) { - CompoundTag nbttagcompound = stack.getTag(); - -- return nbttagcompound != null && nbttagcompound.contains("map", 99) ? nbttagcompound.getInt("map") : -1; // CraftBukkit - make new maps for no tag -+ return nbttagcompound != null && nbttagcompound.contains("map", 99) ? nbttagcompound.getInt("map") : null; // CraftBukkit - make new maps for no tag // Paper - don't return invalid ID - } - - public static int createNewSavedData(Level world, int x, int z, int scale, boolean showIcons, boolean unlimitedTracking, ResourceKey<Level> dimension) { -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java -index 0c7280621cce9855dcc9569e0aefba77bfd555cb..0c7c67e1eea44487c52ebf650d35b3b43cd00c3a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java -@@ -133,6 +133,7 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta { - - @Override - public int getMapId() { -+ Preconditions.checkState(this.hasMapView(), "Item does not have map associated - check hasMapView() first!"); // Paper - more friendly message - return this.mapId; - } - diff --git a/removed-patches-1-20-5/0757-properly-read-and-store-sus-effect-duration.patch b/removed-patches-1-20-5/0757-properly-read-and-store-sus-effect-duration.patch deleted file mode 100644 index 94589408f4..0000000000 --- a/removed-patches-1-20-5/0757-properly-read-and-store-sus-effect-duration.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic <[email protected]> -Date: Mon, 18 Dec 2023 20:05:50 -0800 -Subject: [PATCH] properly read and store sus effect duration - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java -index e13146b71552ab3f9ae867110650fe3977563dfb..2c3b9f76067088efdc2250cdb5070df86e2dc0f5 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java -@@ -49,7 +49,14 @@ public class CraftMetaSuspiciousStew extends CraftMetaItem implements Suspicious - if (type == null) { - continue; - } -- int duration = effect.getInt(CraftMetaSuspiciousStew.DURATION.NBT); -+ // Paper start - default duration is 160 -+ final int duration; -+ if (effect.contains(CraftMetaSuspiciousStew.DURATION.NBT)) { -+ duration = effect.getInt(CraftMetaSuspiciousStew.DURATION.NBT); -+ } else { -+ duration = net.minecraft.world.item.SuspiciousStewItem.DEFAULT_DURATION; -+ } -+ // Paper end start - default duration is 160 - this.customEffects.add(new PotionEffect(type, duration, 0)); - } - } -@@ -80,7 +87,7 @@ public class CraftMetaSuspiciousStew extends CraftMetaItem implements Suspicious - for (PotionEffect effect : this.customEffects) { - CompoundTag effectData = new CompoundTag(); - effectData.putString(CraftMetaSuspiciousStew.ID.NBT, effect.getType().getKey().toString()); -- effectData.putInt(CraftMetaSuspiciousStew.DURATION.NBT, effect.getDuration()); -+ if (effect.getDuration() != net.minecraft.world.item.SuspiciousStewItem.DEFAULT_DURATION) effectData.putInt(CraftMetaSuspiciousStew.DURATION.NBT, effect.getDuration()); // Paper - don't save duration if it's the default value - effectList.add(effectData); - } - } diff --git a/removed-patches-1-20-5/0815-Track-projectile-source-for-fireworks-from-dispenser.patch b/removed-patches-1-20-5/0815-Track-projectile-source-for-fireworks-from-dispenser.patch deleted file mode 100644 index b78dda85fc..0000000000 --- a/removed-patches-1-20-5/0815-Track-projectile-source-for-fireworks-from-dispenser.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic <[email protected]> -Date: Thu, 23 Jun 2022 19:25:51 -0700 -Subject: [PATCH] Track projectile source for fireworks from dispensers - - -diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index b4f7e3ae855cbf48925f0db916501adf513ae08c..24b2d57ebe76ce825686a53c94ae994b418a1272 100644 ---- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -517,6 +517,7 @@ public interface DispenseItemBehavior { - itemstack1 = CraftItemStack.asNMSCopy(event.getItem()); - Vec3 vec3d = DispenseItemBehavior.getEntityPokingOutOfBlockPos(pointer, EntityType.FIREWORK_ROCKET, enumdirection); - FireworkRocketEntity entityfireworks = new FireworkRocketEntity(pointer.level(), itemstack1, vec3d.x(), vec3d.y(), vec3d.z(), true); // Paper - GH-2871 - fix last firework in stack having no effects when dispensed -+ entityfireworks.projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(pointer.blockEntity()); // Paper - Track projectile source for fireworks from dispensers - - entityfireworks.shoot((double) enumdirection.getStepX(), (double) enumdirection.getStepY(), (double) enumdirection.getStepZ(), 0.5F, 1.0F); - pointer.level().addFreshEntity(entityfireworks); diff --git a/removed-patches-1-20-5/0876-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch b/removed-patches-1-20-5/0876-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch deleted file mode 100644 index 0731970718..0000000000 --- a/removed-patches-1-20-5/0876-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf <[email protected]> -Date: Mon, 15 May 2023 00:20:59 -0700 -Subject: [PATCH] Fix concurrenct access to lookups field in RegistryOps - -The concurrent access occurs on the Netty IO threads when -serializing packets. Thus, it seems it was an oversight of -the implementator of this function as there are typically -more than one Netty IO thread. - -Fixes https://github.com/PaperMC/Folia/issues/11 - -diff --git a/src/main/java/net/minecraft/resources/RegistryOps.java b/src/main/java/net/minecraft/resources/RegistryOps.java -index 0272fe45449785e8589b6e42fa454f2abfcc0476..dd8a6bd463e5c8fe69271663cb46b45b201ba59c 100644 ---- a/src/main/java/net/minecraft/resources/RegistryOps.java -+++ b/src/main/java/net/minecraft/resources/RegistryOps.java -@@ -19,7 +19,10 @@ public class RegistryOps<T> extends DelegatingOps<T> { - - private static RegistryOps.RegistryInfoLookup memoizeLookup(RegistryOps.RegistryInfoLookup registryInfoGetter) { - return new RegistryOps.RegistryInfoLookup() { -- private final Map<ResourceKey<? extends Registry<?>>, Optional<? extends RegistryOps.RegistryInfo<?>>> lookups = new HashMap<>(); -+ // The concurrent access occurs on the Netty IO threads when serializing packets. -+ // Thus, it seems it was an oversight of the implementator of this function as there -+ // are typically more than one Netty IO thread. -+ private final Map<ResourceKey<? extends Registry<?>>, Optional<? extends RegistryOps.RegistryInfo<?>>> lookups = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - fix concurrent access to lookups field - - @Override - public <T> Optional<RegistryOps.RegistryInfo<T>> lookup(ResourceKey<? extends Registry<? extends T>> registryRef) { diff --git a/removed-patches-1-20-5/0896-Array-backed-synched-entity-data.patch b/removed-patches-1-20-5/0896-Array-backed-synched-entity-data.patch deleted file mode 100644 index 2345458940..0000000000 --- a/removed-patches-1-20-5/0896-Array-backed-synched-entity-data.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: jellysquid3 <[email protected]> -Date: Sat, 8 Jul 2023 21:38:05 +0200 -Subject: [PATCH] Array backed synched entity data - -Original code by jellysquid3 in Lithium, licensed under the GNU Lesser General Public License v3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) - -diff --git a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -index d088479d160dbd2fc90b48a30553be141db8eef2..07a362f9e485d0d507f16f1dda1ac84ade07ab27 100644 ---- a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -+++ b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -@@ -34,6 +34,11 @@ public class SynchedEntityData { - private final Int2ObjectMap<SynchedEntityData.DataItem<?>> itemsById = new Int2ObjectOpenHashMap(); - // private final ReadWriteLock lock = new ReentrantReadWriteLock(); // Spigot - not required - private boolean isDirty; -+ // Paper start - Perf: array backed synched entity data -+ private static final int DEFAULT_ENTRY_COUNT = 10; -+ private static final int GROW_FACTOR = 8; -+ private SynchedEntityData.DataItem<?>[] itemsArray = new SynchedEntityData.DataItem<?>[DEFAULT_ENTRY_COUNT]; -+ // Paper end - Perf: array backed synched entity data - - public SynchedEntityData(Entity trackedEntity) { - this.entity = trackedEntity; -@@ -103,6 +108,15 @@ public class SynchedEntityData { - // this.lock.writeLock().lock(); // Spigot - not required - this.itemsById.put(key.getId(), datawatcher_item); - // this.lock.writeLock().unlock(); // Spigot - not required -+ // Paper start - Perf: array backed synched entity data -+ if (this.itemsArray.length <= key.getId()) { -+ final int newSize = Math.min(key.getId() + GROW_FACTOR, MAX_ID_VALUE); -+ -+ this.itemsArray = java.util.Arrays.copyOf(this.itemsArray, newSize); -+ } -+ -+ this.itemsArray[key.getId()] = datawatcher_item; -+ // Paper end - Perf: array backed synched entity data - } - - public <T> boolean hasItem(EntityDataAccessor<T> key) { -@@ -130,7 +144,15 @@ public class SynchedEntityData { - - return datawatcher_item; - */ -- return (SynchedEntityData.DataItem) this.itemsById.get(key.getId()); -+ // Paper start - Perf: array backed synched entity data -+ final int id = key.getId(); -+ -+ if (id < 0 || id >= this.itemsArray.length) { -+ return null; -+ } -+ -+ return (DataItem<T>) this.itemsArray[id]; -+ // Paper end - Perf: array backed synched entity data - // Spigot end - } - diff --git a/removed-patches-1-20-5/0931-Deep-clone-unhandled-nbt-tags.patch b/removed-patches-1-20-5/0931-Deep-clone-unhandled-nbt-tags.patch deleted file mode 100644 index 0f522edd88..0000000000 --- a/removed-patches-1-20-5/0931-Deep-clone-unhandled-nbt-tags.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: SoSeDiK <[email protected]> -Date: Thu, 26 May 2022 03:30:05 +0300 -Subject: [PATCH] Deep clone unhandled nbt tags - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 7d3d32679bdfe373d89a28c3616da5069640d1bb..9137d6d56386111dfd072859df84e533580ee294 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -305,7 +305,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); - - private CompoundTag internalTag; -- final Map<String, Tag> unhandledTags = new TreeMap<String, Tag>(); // Visible for testing only // Paper -+ Map<String, Tag> unhandledTags = new TreeMap<String, Tag>(); // Visible for testing only // Paper - Deep clone unhandled nbt tags; remove final - private CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(CraftMetaItem.DATA_TYPE_REGISTRY); - - private int version = CraftMagicNumbers.INSTANCE.getDataVersion(); // Internal use only -@@ -346,8 +346,10 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - this.destroyableKeys = new java.util.HashSet<>(meta.destroyableKeys); - } - // Paper end - Add API for CanPlaceOn and CanDestroy NBT values -- this.unhandledTags.putAll(meta.unhandledTags); -- this.persistentDataContainer.putAll(meta.persistentDataContainer.getRaw()); -+ // Paper start - Deep clone unhandled nbt tags -+ meta.unhandledTags.forEach((key, tag) -> this.unhandledTags.put(key, tag.copy())); -+ this.persistentDataContainer.putAll(meta.persistentDataContainer.getTagsCloned()); -+ // Paper end - Deep clone unhandled nbt tags - - this.internalTag = meta.internalTag; - if (this.internalTag != null) { -@@ -1393,7 +1395,11 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - if (this.hasAttributeModifiers()) { - clone.attributeModifiers = LinkedHashMultimap.create(this.attributeModifiers); - } -- clone.persistentDataContainer = new CraftPersistentDataContainer(this.persistentDataContainer.getRaw(), CraftMetaItem.DATA_TYPE_REGISTRY); -+ // Paper start - Deep clone unhandled nbt tags -+ clone.persistentDataContainer = new CraftPersistentDataContainer(this.persistentDataContainer.getTagsCloned(), CraftMetaItem.DATA_TYPE_REGISTRY); -+ clone.unhandledTags = new TreeMap<>(this.unhandledTags); -+ clone.unhandledTags.replaceAll((key, tag) -> tag.copy()); -+ // Paper end - Deep clone unhandled nbt tags - clone.hideFlag = this.hideFlag; - clone.unbreakable = this.unbreakable; - clone.damage = this.damage; -diff --git a/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java b/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java -index 5a4e7e7150b7c137b077e0b393f17ed35b5aec34..f55fdd57ced259ad5a95878840e98ffaa3db2e05 100644 ---- a/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java -+++ b/src/main/java/org/bukkit/craftbukkit/persistence/CraftPersistentDataContainer.java -@@ -207,4 +207,12 @@ public class CraftPersistentDataContainer implements PersistentDataContainer { - } - } - // Paper end - byte array serialization -+ -+ // Paper start - deep clone tags -+ public Map<String, Tag> getTagsCloned() { -+ final Map<String, Tag> tags = new HashMap<>(); -+ this.customDataTags.forEach((key, tag) -> tags.put(key, tag.copy())); -+ return tags; -+ } -+ // Paper end - deep clone tags - } diff --git a/removed-patches-1-20-5/0955-Use-correct-variable-for-initializing-CraftLootTable.patch b/removed-patches-1-20-5/0955-Use-correct-variable-for-initializing-CraftLootTable.patch deleted file mode 100644 index ab46cdf78a..0000000000 --- a/removed-patches-1-20-5/0955-Use-correct-variable-for-initializing-CraftLootTable.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic <[email protected]> -Date: Tue, 10 Oct 2023 10:17:43 -0700 -Subject: [PATCH] Use correct variable for initializing CraftLootTable - - -diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -index 973b786368cf628815f099eefe968338c97c52ed..3ddf6ab00de2456ebf504985b88994f970e3b5c4 100644 ---- a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -+++ b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -@@ -103,7 +103,7 @@ public class LootDataManager implements PreparableReloadListener, LootDataResolv - }); - // CraftBukkit start - map1.forEach((key, lootTable) -> { -- if (object instanceof LootTable table) { -+ if (lootTable instanceof LootTable table) { // Paper - Use correct variable for initializing CraftLootTable - table.craftLootTable = new CraftLootTable(CraftNamespacedKey.fromMinecraft(key.location()), table); - } - }); |