diff --git a/src/main/java/net/minecraft/world/World.java b/src/main/java/net/minecraft/world/World.java index eea905c..1cfedf0 100644 --- a/src/main/java/net/minecraft/world/World.java +++ b/src/main/java/net/minecraft/world/World.java @@ -2020,6 +2020,23 @@ this.theProfiler.endStartSection("blockEntities"); this.field_147481_N = true; + theProfiler.startSection("unload"); + if (!this.field_147483_b.isEmpty()) + { + for (Object tile : field_147483_b) + { + long startT = System.nanoTime(); + ((TileEntity)tile).onChunkUnload(); + long elapsed = System.nanoTime() - startT; + if(elapsed > 20000000) + FMLLog.warning("Possible lag source on unload TileEntity %s [%s](%s, %s, %s) %sms", tile.getClass(), provider.dimensionId, + ((TileEntity)tile).xCoord, ((TileEntity)tile).yCoord, ((TileEntity)tile).zCoord, (elapsed/1000000)); + } + this.loadedTileEntityList.removeAll(this.field_147483_b); + this.field_147483_b.clear(); + } + theProfiler.endSection(); + Iterator iterator = this.loadedTileEntityList.iterator(); eventProxy.pushState(WorldUpdateObjectType.TILEE_ENTITY); @@ -2079,22 +2096,7 @@ loadedTileEntityList.removeIf(LambdaHolder.TILE_ENTITY_REMOVAL_PREDICATE); eventProxy.popState(); - theProfiler.startSection("unload"); - if (!this.field_147483_b.isEmpty()) - { - for (Object tile : field_147483_b) - { - long startT = System.nanoTime(); - ((TileEntity)tile).onChunkUnload(); - long elapsed = System.nanoTime() - startT; - if(elapsed > 20000000) - FMLLog.warning("Possible lag source on unload TileEntity %s [%s](%s, %s, %s) %sms", tile.getClass(), provider.dimensionId, - ((TileEntity)tile).xCoord, ((TileEntity)tile).yCoord, ((TileEntity)tile).zCoord, (elapsed/1000000)); - } - this.loadedTileEntityList.removeAll(this.field_147483_b); - this.field_147483_b.clear(); - } - theProfiler.endSection(); + //UltraMine: "unload" section moved up, before TE processing this.field_147481_N = false;