Actually add entities to chunks
Because, you know, vanishing entities is always nice to have
This commit is contained in:
@@ -14,9 +14,18 @@ Fix this by differing entity add to world for all entities at the same time
|
||||
the original entity is dead, overwrite it as the logic does for unloaod queued entities.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 37bb6f40c..ee4332eda 100644
|
||||
index 37bb6f40c..414c27516 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -0,0 +0,0 @@ package net.minecraft.server;
|
||||
|
||||
// Paper start
|
||||
import com.destroystokyo.paper.PaperWorldConfig.DuplicateUUIDMode;
|
||||
+
|
||||
+import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
// Paper end
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
this.world.a(this.tileEntities.values());
|
||||
List[] aentityslice = this.entitySlices; // Spigot
|
||||
@@ -40,20 +49,19 @@ index 37bb6f40c..ee4332eda 100644
|
||||
- }));
|
||||
- entityslice.removeAll(toRemove);
|
||||
// CraftBukkit end
|
||||
+ this.world.addChunkEntities(entityslice.stream() // Paper - add all at same time to avoid entities adding to world modifying slice state, skip already added entities (not normal, but can happen)
|
||||
+ // Paper start - Inline event into stream
|
||||
+ .filter((entity) -> {
|
||||
+ if (!this.needsDecoration) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return CraftEventFactory.doEntityAddEventCalling(this.world, entity, CreatureSpawnEvent.SpawnReason.CHUNK_GEN);
|
||||
+ })
|
||||
+ // Paper end - Inline event into stream
|
||||
+ .filter((entity) -> !(entity instanceof EntityHuman || entity.valid))); // Paper - add all at same time to avoid entities adding to world modifying slice state, skip already added entities (not normal, but can happen)
|
||||
}
|
||||
+ this.world.addChunkEntities(toAdd.stream() // Paper - add all at same time to avoid entities adding to world modifying slice state, skip already added entities (not normal, but can happen)
|
||||
+ // Paper start - Inline event into stream
|
||||
+ .filter((entity) -> {
|
||||
+ if (!this.needsDecoration) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return CraftEventFactory.doEntityAddEventCalling(this.world, entity, CreatureSpawnEvent.SpawnReason.CHUNK_GEN);
|
||||
+ })
|
||||
+ // Paper end - Inline event into stream
|
||||
+ .filter((entity) -> !(entity instanceof EntityHuman || entity.valid))); // Paper - add all at same time to avoid entities adding to world modifying slice state, skip already added entities (not normal, but can happen)
|
||||
|
||||
// CraftBukkit start
|
||||
org.bukkit.Server server = this.world.getServer();
|
||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||
index 5e61826f6..bd6f64e52 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
|
||||
Reference in New Issue
Block a user