9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-23 08:59:23 +00:00
Files
Leaf/patches/server/0064-Hearse-Fix-some-concurrent-problems-in-LivingEntity.patch
2023-01-13 00:15:47 -05:00

57 lines
2.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: wangxyper <wangxyper@163.com>
Date: Wed, 11 Jan 2023 20:24:40 +0800
Subject: [PATCH] Hearse: Fix some concurrent problems in LivingEntity
Original license: MIT
Original project: https://github.com/NaturalCodeClub/HearseRewrite
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 93c32dd39693b37efaa05af0486e1bdd298661f3..cdb33a430d0d1671899ab8bb0911193a5688af23 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -17,6 +17,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
import javax.annotation.Nullable;
import net.minecraft.BlockUtil;
@@ -181,7 +182,7 @@ public abstract class LivingEntity extends Entity {
public static final float EXTRA_RENDER_CULLING_SIZE_WITH_BIG_HAT = 0.5F;
private final AttributeMap attributes;
public CombatTracker combatTracker = new CombatTracker(this);
- public final Map<MobEffect, MobEffectInstance> activeEffects = Maps.newHashMap();
+ public final Map<MobEffect, MobEffectInstance> activeEffects = Maps.newConcurrentMap();
private final NonNullList<ItemStack> lastHandItemStacks;
private final NonNullList<ItemStack> lastArmorItemStacks;
public boolean swinging;
@@ -257,7 +258,7 @@ public abstract class LivingEntity extends Entity {
// CraftBukkit start
public int expToDrop;
public boolean forceDrops;
- public ArrayList<org.bukkit.inventory.ItemStack> drops = new ArrayList<org.bukkit.inventory.ItemStack>();
+ public List<org.bukkit.inventory.ItemStack> drops = new CopyOnWriteArrayList<>();
public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes;
public boolean collides = true;
public Set<UUID> collidableExemptions = new HashSet<>();
@@ -875,7 +876,7 @@ public abstract class LivingEntity extends Entity {
// CraftBukkit start
private boolean isTickingEffects = false;
- private List<ProcessableEffect> effectsToProcess = Lists.newArrayList();
+ private List<ProcessableEffect> effectsToProcess = Lists.newCopyOnWriteArrayList();
private static class ProcessableEffect {
@@ -1779,7 +1780,7 @@ public abstract class LivingEntity extends Entity {
}
}); // Paper end
this.postDeathDropItems(deathEvent); // Paper
- this.drops = new ArrayList<>();
+ this.drops = new CopyOnWriteArrayList<>();
// CraftBukkit end
// this.dropInventory();// CraftBukkit - moved up