From 1e06e150b6721212cb3facd282f7a4e85f311bdd Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Thu, 8 Mar 2012 00:58:30 -0600 Subject: [PATCH] [Bleeding] Only do unload-all on tick when last player leaves. Fixes BUKKIT-1060 --- src/main/java/net/minecraft/server/PlayerManager.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/net/minecraft/server/PlayerManager.java b/src/main/java/net/minecraft/server/PlayerManager.java index a03d4dcad7..aaadfefb8a 100644 --- a/src/main/java/net/minecraft/server/PlayerManager.java +++ b/src/main/java/net/minecraft/server/PlayerManager.java @@ -12,6 +12,7 @@ public class PlayerManager { private int e; private int f; private final int[][] g = new int[][] { { 1, 0}, { 0, 1}, { -1, 0}, { 0, -1}}; + private boolean wasNotEmpty; // CraftBukkit public PlayerManager(MinecraftServer minecraftserver, int i, int j) { if (j > 15) { @@ -36,13 +37,19 @@ public class PlayerManager { this.c.clear(); if (this.managedPlayers.isEmpty()) { + if (!wasNotEmpty) return; // CraftBukkit - only do unload when we go from non-empty to empty WorldServer worldserver = this.server.getWorldServer(this.e); WorldProvider worldprovider = worldserver.worldProvider; if (!worldprovider.c()) { worldserver.chunkProviderServer.c(); } + // CraftBukkit start + wasNotEmpty = false; + } else { + wasNotEmpty = true; } + // CraftBukkit end } private PlayerInstance a(int i, int j, boolean flag) {