From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: wangxyper Date: Thu, 12 Jan 2023 13:57:52 +0800 Subject: [PATCH] Hearse: Fix some concurrent problems in Entity.java Original license: MIT Original project: https://github.com/NaturalCodeClub/HearseRewrite diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java index f33476a35706d7a236fe3bb178d166d568c07674..483c19ac24b074cbdb924d684c0892ddc546af3e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -24,6 +24,8 @@ import java.util.function.BiConsumer; import java.util.function.Predicate; import java.util.stream.Stream; import javax.annotation.Nullable; + +import it.unimi.dsi.fastutil.objects.Object2DoubleMaps; import net.minecraft.BlockUtil; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; @@ -511,14 +513,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.nextStep = 1.0F; this.random = SHARED_RANDOM; // Paper this.remainingFireTicks = -this.getFireImmuneTicks(); - this.fluidHeight = new Object2DoubleArrayMap(2); - this.fluidOnEyes = new HashSet(); + this.fluidHeight = Object2DoubleMaps.synchronize(new Object2DoubleArrayMap(2)); + this.fluidOnEyes = Sets.newConcurrentHashSet(); this.firstTick = true; this.levelCallback = EntityInLevelCallback.NULL; this.packetPositionCodec = new VecDeltaCodec(); this.uuid = Mth.createInsecureUUID(this.random); this.stringUUID = this.uuid.toString(); - this.tags = Sets.newHashSet(); + this.tags = Sets.newConcurrentHashSet(); this.pistonDeltas = new double[]{0.0D, 0.0D, 0.0D}; this.feetBlockState = null; this.type = type;