From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paul Sauve Date: Sat, 13 Mar 2021 10:19:15 -0600 Subject: [PATCH] Skip copying unloading tile entities diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 30ff822fb0d1a973feb8fa0a34d024608cbabbcf..996fa5b4652f847f4e64d4cd191fe5a597471afe 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -44,7 +44,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { //public final List tileEntityList = Lists.newArrayList(); // Paper - remove unused list public final List tileEntityListTick = Lists.newArrayList(); protected final List tileEntityListPending = Lists.newArrayList(); - protected final java.util.Set tileEntityListUnload = com.google.common.collect.Sets.newHashSet(); + protected final java.util.Set tileEntityListUnload = java.util.Collections.newSetFromMap(new java.util.IdentityHashMap<>()); // Airplane - use set with faster contains public final Thread serverThread; private final boolean debugWorld; private int d; @@ -924,12 +924,17 @@ public abstract class World implements GeneratorAccess, AutoCloseable { gameprofilerfiller.enter("blockEntities"); timings.tileEntityTick.startTiming(); // Spigot if (!this.tileEntityListUnload.isEmpty()) { + // Airplane start - we just use the identitymap as the basis for the unload set now instead of copying + /* // Paper start - Use alternate implementation with faster contains java.util.Set toRemove = java.util.Collections.newSetFromMap(new java.util.IdentityHashMap<>()); toRemove.addAll(tileEntityListUnload); this.tileEntityListTick.removeAll(toRemove); // Paper end //this.tileEntityList.removeAll(this.tileEntityListUnload); // Paper - remove unused list + */ + this.tileEntityListTick.removeAll(this.tileEntityListUnload); + // Airplane end this.tileEntityListUnload.clear(); }