mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 15:49:00 +01:00
6d1a918378
This work is 100% unfinished. I am pushing it up so that we as a team can work on this update. Do not try to use this branch. You will fail.
67 lines
No EOL
2.6 KiB
Diff
67 lines
No EOL
2.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Joseph Hirschfeld <joe@ibj.io>
|
|
Date: Thu, 3 Mar 2016 02:39:54 -0600
|
|
Subject: [PATCH] Change implementation of (tile)entity removal list
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index d988fd007..26b2a1fd4 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -0,0 +0,0 @@ import org.bukkit.event.block.BlockPhysicsEvent;
|
|
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
|
import org.bukkit.generator.ChunkGenerator;
|
|
// CraftBukkit end
|
|
-
|
|
+// Paper start
|
|
+import java.util.Set;
|
|
+import com.google.common.collect.Sets;
|
|
+// Paper end
|
|
public abstract class World implements GeneratorAccess, IIBlockAccess, AutoCloseable {
|
|
|
|
protected static final Logger e = LogManager.getLogger();
|
|
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
|
}
|
|
};
|
|
// Spigot end
|
|
- protected final List<Entity> g = Lists.newArrayList();
|
|
+ protected final Set<Entity> g = Sets.newHashSet(); // Paper
|
|
public final List<TileEntity> tileEntityList = Lists.newArrayList();
|
|
public final List<TileEntity> tileEntityListTick = Lists.newArrayList();
|
|
private final List<TileEntity> c = Lists.newArrayList();
|
|
- private final List<TileEntity> tileEntityListUnload = Lists.newArrayList();
|
|
+ private final Set<TileEntity> tileEntityListUnload = Sets.newHashSet(); // Paper
|
|
public final List<EntityHuman> players = Lists.newArrayList();
|
|
public final List<Entity> k = Lists.newArrayList();
|
|
protected final IntHashMap<Entity> entitiesById = new IntHashMap();
|
|
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
|
this.entityList.removeAll(this.g);
|
|
|
|
int j;
|
|
+ // Paper start - Set based removal lists
|
|
+ for (Entity e : this.g) {
|
|
+ j = e.getChunkZ();
|
|
+ int k = e.getChunkX();
|
|
|
|
- for (i = 0; i < this.g.size(); ++i) {
|
|
- entity = (Entity) this.g.get(i);
|
|
- int k = entity.ae;
|
|
-
|
|
- j = entity.ag;
|
|
- if (entity.inChunk && this.isChunkLoaded(k, j, true)) {
|
|
- this.getChunkAt(k, j).b(entity);
|
|
+ if (e.inChunk && this.isChunkLoaded(k, j, true)) {
|
|
+ this.getChunkAt(k, j).b(e);
|
|
}
|
|
}
|
|
|
|
- for (i = 0; i < this.g.size(); ++i) {
|
|
- this.c((Entity) this.g.get(i));
|
|
+ for (Entity e : this.g) {
|
|
+ this.c(e);
|
|
}
|
|
+ // Paper end
|
|
|
|
this.g.clear();
|
|
this.p_();
|
|
--
|