aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAikar <[email protected]>2016-10-20 00:21:35 -0400
committerAikar <[email protected]>2016-10-20 00:21:35 -0400
commit874c7a2ef871d572ad5a56f0a351de60088c1f82 (patch)
treed377c74a7503281600e9ad3caeea716665c2f9fc
parent64e537e63cc322154e1ed366d4b1c01f706df374 (diff)
downloadPaper-874c7a2ef871d572ad5a56f0a351de60088c1f82.tar.gz
Paper-874c7a2ef871d572ad5a56f0a351de60088c1f82.zip
Updated Timings to better detail saves
-rw-r--r--Spigot-Server-Patches/0005-Timings-v2.patch129
-rw-r--r--Spigot-Server-Patches/0017-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch8
-rw-r--r--Spigot-Server-Patches/0030-Lighting-Queue.patch20
-rw-r--r--Spigot-Server-Patches/0035-Optimize-explosions.patch8
-rw-r--r--Spigot-Server-Patches/0052-Add-PlayerInitialSpawnEvent.patch8
-rw-r--r--Spigot-Server-Patches/0067-Add-exception-reporting-event.patch8
-rw-r--r--Spigot-Server-Patches/0109-Add-getEntity-by-UUID-API.patch10
-rw-r--r--Spigot-Server-Patches/0113-Fix-reducedDebugInfo-not-initialized-on-client.patch8
-rw-r--r--Spigot-Server-Patches/0124-Configurable-Player-Collision.patch16
-rw-r--r--Spigot-Server-Patches/0137-remove-null-possibility-for-getServer-singleton.patch8
-rw-r--r--Spigot-Server-Patches/0171-Auto-Save-Improvements.patch24
-rw-r--r--Spigot-Server-Patches/0177-Disable-Vanilla-Chunk-GC.patch12
12 files changed, 179 insertions, 80 deletions
diff --git a/Spigot-Server-Patches/0005-Timings-v2.patch b/Spigot-Server-Patches/0005-Timings-v2.patch
index fdab7ab138..5d4ce1a830 100644
--- a/Spigot-Server-Patches/0005-Timings-v2.patch
+++ b/Spigot-Server-Patches/0005-Timings-v2.patch
@@ -1,4 +1,4 @@
-From a500af740a3d0d36fbcd5e0b3f1558e14d6a7f0d Mon Sep 17 00:00:00 2001
+From 816dc32418ed79b5a38e7a4b5bc58bddc8123af1 Mon Sep 17 00:00:00 2001
From: Aikar <[email protected]>
Date: Thu, 3 Mar 2016 04:00:11 -0600
Subject: [PATCH] Timings v2
@@ -23,7 +23,7 @@ index 4ae34c8..63aaa7a 100644
<version>3.0.3</version>
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
new file mode 100644
-index 0000000..2dff5e3
+index 0000000..29838de
--- /dev/null
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -0,0 +1,114 @@
@@ -45,7 +45,7 @@ index 0000000..2dff5e3
+ public static final Timing chunkIOTickTimer = Timings.ofSafe("ChunkIOTick");
+ public static final Timing timeUpdateTimer = Timings.ofSafe("Time Update");
+ public static final Timing serverCommandTimer = Timings.ofSafe("Server Command");
-+ public static final Timing worldSaveTimer = Timings.ofSafe("World Save");
++ public static final Timing savePlayers = Timings.ofSafe("Save Players");
+
+ public static final Timing tickEntityTimer = Timings.ofSafe("## tickEntity");
+ public static final Timing tickTileEntityTimer = Timings.ofSafe("## tickTileEntity");
@@ -275,10 +275,10 @@ index 0000000..2bf5b66
+}
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
new file mode 100644
-index 0000000..36aafb2
+index 0000000..e778911
--- /dev/null
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
-@@ -0,0 +1,91 @@
+@@ -0,0 +1,101 @@
+package co.aikar.timings;
+
+import net.minecraft.server.World;
@@ -325,6 +325,11 @@ index 0000000..36aafb2
+ public final Timing chunkGeneration;
+ public final Timing chunkIOStage1;
+ public final Timing chunkIOStage2;
++ public final Timing worldSave;
++ public final Timing worldSaveChunks;
++ public final Timing worldSaveLevel;
++ public final Timing chunkSaveNop;
++ public final Timing chunkSaveData;
+
+ public WorldTimingsHandler(World server) {
+ String name = server.worldData.getName() +" - ";
@@ -363,6 +368,11 @@ index 0000000..36aafb2
+ chunkGeneration = Timings.ofSafe(name + "chunkGeneration");
+ chunkIOStage1 = Timings.ofSafe(name + "ChunkIO Stage 1 - DiskIO");
+ chunkIOStage2 = Timings.ofSafe(name + "ChunkIO Stage 2 - Post Load");
++ worldSave = Timings.ofSafe(name + "World Save");
++ worldSaveLevel = Timings.ofSafe(name + "World Save - Level");
++ worldSaveChunks = Timings.ofSafe(name + "World Save - Chunks");
++ chunkSaveNop = Timings.ofSafe(name + "Chunk Save - NOP");
++ chunkSaveData = Timings.ofSafe(name + "Chunk Save - Data");
+
+ tracker1 = Timings.ofSafe(name + "tracker stage 1");
+ tracker2 = Timings.ofSafe(name + "tracker stage 2");
@@ -482,6 +492,28 @@ index b651edc..5807bb8 100644
}
private void z() {
+diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
+index 5682f03..1380815 100644
+--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
++++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
+@@ -194,7 +194,7 @@ public class ChunkProviderServer implements IChunkProvider {
+ }
+
+ public void saveChunkNOP(Chunk chunk) {
+- try {
++ try (co.aikar.timings.Timing timed = world.timings.chunkSaveNop.startTiming()) {
+ this.chunkLoader.b(this.world, chunk);
+ } catch (Exception exception) {
+ ChunkProviderServer.a.error("Couldn\'t save entities", exception);
+@@ -203,7 +203,7 @@ public class ChunkProviderServer implements IChunkProvider {
+ }
+
+ public void saveChunk(Chunk chunk) {
+- try {
++ try (co.aikar.timings.Timing timed = world.timings.chunkSaveData.startTiming()) {
+ chunk.setLastSaved(this.world.getTime());
+ this.chunkLoader.a(this.world, chunk);
+ } catch (IOException ioexception) {
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index f604639..17dd7bb 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -695,7 +727,7 @@ index 5432e70..72cd51a 100644
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 26f8467..891c7ea 100644
+index 26f8467..4814643 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -45,7 +45,7 @@ import org.bukkit.Bukkit;
@@ -724,25 +756,23 @@ index 26f8467..891c7ea 100644
long i = System.nanoTime();
++this.ticks;
-@@ -681,7 +682,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -681,7 +682,6 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
- SpigotTimings.worldSaveTimer.startTiming(); // Spigot
-+ MinecraftTimings.worldSaveTimer.startTiming(); // Spigot
this.methodProfiler.a("save");
this.v.savePlayers();
// Spigot Start
-@@ -696,7 +697,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -696,7 +696,6 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
// this.saveChunks(true);
// Spigot End
this.methodProfiler.b();
- SpigotTimings.worldSaveTimer.stopTiming(); // Spigot
-+ MinecraftTimings.worldSaveTimer.stopTiming(); // Spigot
}
this.methodProfiler.a("tallying");
-@@ -713,15 +714,16 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -713,15 +712,16 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b();
this.methodProfiler.b();
@@ -763,7 +793,7 @@ index 26f8467..891c7ea 100644
this.methodProfiler.a("jobs");
Queue queue = this.j;
-@@ -732,22 +734,23 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -732,22 +732,23 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
SystemUtils.a(entry, MinecraftServer.LOGGER);
}
// Spigot end
@@ -792,7 +822,7 @@ index 26f8467..891c7ea 100644
// Send time updates to everyone, it will get the right time from the world the player is in.
if (this.ticks % 20 == 0) {
for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
-@@ -755,7 +758,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -755,7 +756,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
entityplayer.playerConnection.sendPacket(new PacketPlayOutUpdateTime(entityplayer.world.getTime(), entityplayer.getPlayerTime(), entityplayer.world.getGameRules().getBoolean("doDaylightCycle"))); // Add support for per player time
}
}
@@ -801,7 +831,7 @@ index 26f8467..891c7ea 100644
int i;
-@@ -812,9 +815,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -812,9 +813,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b();
this.methodProfiler.a("tracker");
@@ -811,7 +841,7 @@ index 26f8467..891c7ea 100644
this.methodProfiler.b();
this.methodProfiler.b();
// } // CraftBukkit
-@@ -823,20 +824,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -823,20 +822,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
this.methodProfiler.c("connection");
@@ -986,6 +1016,30 @@ index f47c5fc..ae576f0 100644
// this.minecraftServer.getCommandHandler().a(this.player, s);
// CraftBukkit end
}
+diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
+index 6bd7151..1b2cc01 100644
+--- a/src/main/java/net/minecraft/server/PlayerList.java
++++ b/src/main/java/net/minecraft/server/PlayerList.java
+@@ -1,5 +1,6 @@
+ package net.minecraft.server;
+
++import co.aikar.timings.MinecraftTimings;
+ import com.google.common.collect.Lists;
+ import com.google.common.collect.Maps;
+ import com.google.common.collect.Sets;
+@@ -1167,10 +1168,11 @@ public abstract class PlayerList {
+ }
+
+ public void savePlayers() {
++ MinecraftTimings.savePlayers.startTiming(); // Paper
+ for (int i = 0; i < this.players.size(); ++i) {
+ this.savePlayerFile((EntityPlayer) this.players.get(i));
+ }
+-
++ MinecraftTimings.savePlayers.stopTiming(); // Paper
+ }
+
+ public void addWhitelist(GameProfile gameprofile) {
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java
index 8dd434c..c965af1 100644
--- a/src/main/java/net/minecraft/server/StructureGenerator.java
@@ -1155,7 +1209,7 @@ index e649435..b73f64e 100644
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index 50fad7c..769d55b 100644
+index 50fad7c..3d98392 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -246,13 +246,13 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -1244,6 +1298,49 @@ index 50fad7c..769d55b 100644
// CraftBukkit end
}
+@@ -1007,6 +1015,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+
+ if (chunkproviderserver.e()) {
+ org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
++ timings.worldSave.startTiming(); // Paper
+ if (iprogressupdate != null) {
+ iprogressupdate.a("Saving level");
+ }
+@@ -1016,7 +1025,9 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+ iprogressupdate.c("Saving chunks");
+ }
+
++ timings.worldSaveChunks.startTiming(); // Paper
+ chunkproviderserver.a(flag);
++ timings.worldSaveChunks.stopTiming(); // Paper
+ // CraftBukkit - ArrayList -> Collection
+ Collection arraylist = chunkproviderserver.a();
+ Iterator iterator = arraylist.iterator();
+@@ -1028,7 +1039,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+ chunkproviderserver.unload(chunk);
+ }
+ }
+-
++ timings.worldSave.stopTiming(); // Paper
+ }
+ }
+
+@@ -1041,6 +1052,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+ }
+
+ protected void a() throws ExceptionWorldConflict {
++ timings.worldSaveLevel.startTiming(); // Paper
+ this.checkSession();
+ WorldServer[] aworldserver = this.server.worldServer;
+ int i = aworldserver.length;
+@@ -1070,6 +1082,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+ this.worldData.e(this.getWorldBorder().i());
+ this.dataManager.saveWorldData(this.worldData, this.server.getPlayerList().t());
+ this.worldMaps.a();
++ timings.worldSaveLevel.stopTiming(); // Paper
+ }
+
+ // CraftBukkit start
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index e7e9941..5f2a9b0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
diff --git a/Spigot-Server-Patches/0017-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch b/Spigot-Server-Patches/0017-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch
index 94bee2a22f..e1e200ced2 100644
--- a/Spigot-Server-Patches/0017-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch
+++ b/Spigot-Server-Patches/0017-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch
@@ -1,4 +1,4 @@
-From 6758ff9e302ca3dc0b004c9724d49d831026dcc2 Mon Sep 17 00:00:00 2001
+From dfa1dfa903a53268c050cd0be90ed38d288c26c7 Mon Sep 17 00:00:00 2001
From: Zach Brown <[email protected]>
Date: Tue, 1 Mar 2016 14:32:43 -0600
Subject: [PATCH] Show 'Paper' in client crashes, server lists, and Mojang
@@ -20,10 +20,10 @@ index a8b5079..ebbc1fc 100644
EULA.a.warn("Failed to save {}", new Object[] { this.b, exception});
} finally {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 891c7ea..062cfd6 100644
+index 4814643..41f560f 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1030,7 +1030,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -1028,7 +1028,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
public String getServerModName() {
@@ -80,5 +80,5 @@ index 94a3d42..3ed983c 100644
log.log( Level.SEVERE, "------------------------------" );
//
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0030-Lighting-Queue.patch b/Spigot-Server-Patches/0030-Lighting-Queue.patch
index b0eaa09c7a..4822dda513 100644
--- a/Spigot-Server-Patches/0030-Lighting-Queue.patch
+++ b/Spigot-Server-Patches/0030-Lighting-Queue.patch
@@ -1,4 +1,4 @@
-From 92e46c6a80210fe9152b447e7dc2275dadb8e575 Mon Sep 17 00:00:00 2001
+From fa2e0c1e868ffb94b3748ffbd75b60a5b6ce38fc Mon Sep 17 00:00:00 2001
From: Byteflux <[email protected]>
Date: Wed, 2 Mar 2016 00:52:31 -0600
Subject: [PATCH] Lighting Queue
@@ -6,19 +6,19 @@ Subject: [PATCH] Lighting Queue
This provides option to queue lighting updates to ensure they do not cause the server lag
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
-index 36aafb2..90bdbf0 100644
+index e778911..f90f5bf 100644
--- a/src/main/java/co/aikar/timings/WorldTimingsHandler.java
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
-@@ -45,6 +45,8 @@ public class WorldTimingsHandler {
- public final Timing chunkIOStage1;
- public final Timing chunkIOStage2;
+@@ -50,6 +50,8 @@ public class WorldTimingsHandler {
+ public final Timing chunkSaveNop;
+ public final Timing chunkSaveData;
+ public final Timing lightingQueueTimer;
+
public WorldTimingsHandler(World server) {
String name = server.worldData.getName() +" - ";
-@@ -87,5 +89,7 @@ public class WorldTimingsHandler {
+@@ -97,5 +99,7 @@ public class WorldTimingsHandler {
tracker2 = Timings.ofSafe(name + "tracker stage 2");
doTick = Timings.ofSafe(name + "doTick");
tickEntities = Timings.ofSafe(name + "tickEntities");
@@ -85,7 +85,7 @@ index 445419f..76130c9 100644
TileEntity tileentity;
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
-index 5682f03..5eeefe8 100644
+index 1380815..466cd49 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -279,6 +279,7 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -97,7 +97,7 @@ index 5682f03..5eeefe8 100644
// Update neighbor counts
for (int x = -2; x < 3; x++) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 1363472..d0060d0 100644
+index 029a6c3..f0dcb9f 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -709,7 +709,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
@@ -109,7 +109,7 @@ index 1363472..d0060d0 100644
++this.ticks;
if (this.S) {
-@@ -769,6 +769,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -767,6 +767,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b();
org.spigotmc.WatchdogThread.tick(); // Spigot
@@ -235,5 +235,5 @@ index 8fb8176..672167a 100644
}
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0035-Optimize-explosions.patch b/Spigot-Server-Patches/0035-Optimize-explosions.patch
index 584cc7adbc..3c10e87b58 100644
--- a/Spigot-Server-Patches/0035-Optimize-explosions.patch
+++ b/Spigot-Server-Patches/0035-Optimize-explosions.patch
@@ -1,4 +1,4 @@
-From 428b111b0dd4542d55db721110adf33e7feead76 Mon Sep 17 00:00:00 2001
+From b543f01f64b3f40cf217d22ba12d5d9d23ad1b71 Mon Sep 17 00:00:00 2001
From: Byteflux <[email protected]>
Date: Wed, 2 Mar 2016 11:59:48 -0600
Subject: [PATCH] Optimize explosions
@@ -124,10 +124,10 @@ index f4765d3..caf29c7 100644
+ // Paper end
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d0060d0..d1d268f 100644
+index f0dcb9f..885fc80 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -872,6 +872,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -870,6 +870,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
worldserver.getTracker().updatePlayers();
this.methodProfiler.b();
this.methodProfiler.b();
@@ -156,5 +156,5 @@ index 672167a..e8cfe2b 100644
public CraftWorld getWorld() {
return this.world;
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0052-Add-PlayerInitialSpawnEvent.patch b/Spigot-Server-Patches/0052-Add-PlayerInitialSpawnEvent.patch
index fb24b33229..16a1494f54 100644
--- a/Spigot-Server-Patches/0052-Add-PlayerInitialSpawnEvent.patch
+++ b/Spigot-Server-Patches/0052-Add-PlayerInitialSpawnEvent.patch
@@ -1,4 +1,4 @@
-From e6aac3fdbf9ad18ef5a42c10511f2eb1849fbe5e Mon Sep 17 00:00:00 2001
+From 01731b5d0db283d9319b44123c70162f64d8f06c Mon Sep 17 00:00:00 2001
From: Steve Anton <[email protected]>
Date: Thu, 3 Mar 2016 00:09:38 -0600
Subject: [PATCH] Add PlayerInitialSpawnEvent
@@ -6,10 +6,10 @@ Subject: [PATCH] Add PlayerInitialSpawnEvent
For modifying a player's initial spawn location as they join the server
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index 6bd7151..e88e918 100644
+index 1b2cc01..28bcef8 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
-@@ -100,6 +100,21 @@ public abstract class PlayerList {
+@@ -101,6 +101,21 @@ public abstract class PlayerList {
}
// CraftBukkit end
@@ -32,5 +32,5 @@ index 6bd7151..e88e918 100644
entityplayer.playerInteractManager.a((WorldServer) entityplayer.world);
String s1 = "local";
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0067-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0067-Add-exception-reporting-event.patch
index 4e1cf6314a..513a116f23 100644
--- a/Spigot-Server-Patches/0067-Add-exception-reporting-event.patch
+++ b/Spigot-Server-Patches/0067-Add-exception-reporting-event.patch
@@ -1,4 +1,4 @@
-From 236c046bc5e75574bc47475a4969553a0830b522 Mon Sep 17 00:00:00 2001
+From 53c6f8cabb78c2f2b965fd952f410afefd78780f Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <[email protected]>
Date: Thu, 3 Mar 2016 03:15:41 -0600
Subject: [PATCH] Add exception reporting event
@@ -89,7 +89,7 @@ index 989d510..9118e4d 100644
}
}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
-index 5eeefe8..299cc91 100644
+index 466cd49..cbc93a8 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -11,6 +11,7 @@ import java.util.Iterator;
@@ -114,7 +114,7 @@ index 5eeefe8..299cc91 100644
}
}
@@ -197,7 +202,11 @@ public class ChunkProviderServer implements IChunkProvider {
- try {
+ try (co.aikar.timings.Timing timed = world.timings.chunkSaveNop.startTiming()) {
this.chunkLoader.b(this.world, chunk);
} catch (Exception exception) {
- ChunkProviderServer.a.error("Couldn\'t save entities", exception);
@@ -372,5 +372,5 @@ index 198c37c..cdb836a 100644
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
}
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0109-Add-getEntity-by-UUID-API.patch b/Spigot-Server-Patches/0109-Add-getEntity-by-UUID-API.patch
index d32b111685..c3f6f27bfa 100644
--- a/Spigot-Server-Patches/0109-Add-getEntity-by-UUID-API.patch
+++ b/Spigot-Server-Patches/0109-Add-getEntity-by-UUID-API.patch
@@ -1,14 +1,14 @@
-From 027f133012b8a6625b8188ad57a7a007a7c377db Mon Sep 17 00:00:00 2001
+From 190292d03cc0488c8792f1aa51881aa4839d26a2 Mon Sep 17 00:00:00 2001
From: DemonWav <[email protected]>
Date: Wed, 30 Mar 2016 01:20:11 -0500
Subject: [PATCH] Add getEntity by UUID API
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d1d268f..35a8602 100644
+index 885fc80..7bb6033 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1508,6 +1508,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -1506,6 +1506,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.Y = 0L;
}
@@ -16,7 +16,7 @@ index d1d268f..35a8602 100644
@Nullable
public Entity a(UUID uuid) {
WorldServer[] aworldserver = this.worldServer;
-@@ -1521,7 +1522,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -1519,7 +1520,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
if (worldserver != null) {
Entity entity = worldserver.getEntity(uuid);
@@ -53,5 +53,5 @@ index 15bef42..703aff1 100644
// Paper end
}
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0113-Fix-reducedDebugInfo-not-initialized-on-client.patch b/Spigot-Server-Patches/0113-Fix-reducedDebugInfo-not-initialized-on-client.patch
index f6228bad24..a4f4f9491a 100644
--- a/Spigot-Server-Patches/0113-Fix-reducedDebugInfo-not-initialized-on-client.patch
+++ b/Spigot-Server-Patches/0113-Fix-reducedDebugInfo-not-initialized-on-client.patch
@@ -1,14 +1,14 @@
-From 3ebce7ad05c9d5960572e7674e531ee57e45ca3b Mon Sep 17 00:00:00 2001
+From db122f3419edb02fe2f4dc8b826aec71207d2ac1 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <[email protected]>
Date: Sat, 2 Apr 2016 20:37:03 -0400
Subject: [PATCH] Fix reducedDebugInfo not initialized on client
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index e88e918..a41bc5f 100644
+index 28bcef8..d26da3a 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
-@@ -152,6 +152,7 @@ public abstract class PlayerList {
+@@ -153,6 +153,7 @@ public abstract class PlayerList {
playerconnection.sendPacket(new PacketPlayOutSpawnPosition(blockposition));
playerconnection.sendPacket(new PacketPlayOutAbilities(entityplayer.abilities));
playerconnection.sendPacket(new PacketPlayOutHeldItemSlot(entityplayer.inventory.itemInHandIndex));
@@ -17,5 +17,5 @@ index e88e918..a41bc5f 100644
entityplayer.getStatisticManager().d();
entityplayer.getStatisticManager().updateStatistics(entityplayer);
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0124-Configurable-Player-Collision.patch b/Spigot-Server-Patches/0124-Configurable-Player-Collision.patch
index c2a3a8fd6f..19de70d34c 100644
--- a/Spigot-Server-Patches/0124-Configurable-Player-Collision.patch
+++ b/Spigot-Server-Patches/0124-Configurable-Player-Collision.patch
@@ -1,4 +1,4 @@
-From 67f26ad0e1b64b12230b9fdd7dfd2374f7b88707 Mon Sep 17 00:00:00 2001
+From 49407d9d80719c50b8ec3eb8083a5265f63c9837 Mon Sep 17 00:00:00 2001
From: Aikar <[email protected]>
Date: Wed, 13 Apr 2016 02:10:49 -0400
Subject: [PATCH] Configurable Player Collision
@@ -37,7 +37,7 @@ index 8e5419d..64a3495 100644
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 8e364de..a5ebb17 100644
+index e35341b..01325b3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -324,6 +324,14 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
@@ -69,10 +69,10 @@ index d8ec504..eb45d3c 100644
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index a41bc5f..ea4c7ee 100644
+index d26da3a..eb846cf 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
-@@ -67,6 +67,7 @@ public abstract class PlayerList {
+@@ -68,6 +68,7 @@ public abstract class PlayerList {
// CraftBukkit start
private CraftServer cserver;
private final Map<String,EntityPlayer> playersByName = new org.spigotmc.CaseInsensitiveMap<EntityPlayer>();
@@ -80,7 +80,7 @@ index a41bc5f..ea4c7ee 100644
public PlayerList(MinecraftServer minecraftserver) {
this.cserver = minecraftserver.server = new CraftServer(minecraftserver, this);
-@@ -234,6 +235,12 @@ public abstract class PlayerList {
+@@ -235,6 +236,12 @@ public abstract class PlayerList {
}
entityplayer.syncInventory();
@@ -93,7 +93,7 @@ index a41bc5f..ea4c7ee 100644
// CraftBukkit - Moved from above, added world
PlayerList.f.info(entityplayer.getName() + "[" + s1 + "] logged in with entity id " + entityplayer.getId() + " at ([" + entityplayer.world.worldData.getName() + "]" + entityplayer.locX + ", " + entityplayer.locY + ", " + entityplayer.locZ + ")");
}
-@@ -404,6 +411,16 @@ public abstract class PlayerList {
+@@ -405,6 +412,16 @@ public abstract class PlayerList {
entityplayer.k_();// SPIGOT-924 // PAIL: rename - playerTick
// CraftBukkit end
@@ -110,7 +110,7 @@ index a41bc5f..ea4c7ee 100644
this.savePlayerFile(entityplayer);
if (entityplayer.isPassenger()) {
Entity entity = entityplayer.getVehicle();
-@@ -1302,7 +1319,13 @@ public abstract class PlayerList {
+@@ -1304,7 +1321,13 @@ public abstract class PlayerList {
player.playerConnection.disconnect(this.server.server.getShutdownMessage()); // CraftBukkit - add custom shutdown message
}
// CraftBukkit end
@@ -126,5 +126,5 @@ index a41bc5f..ea4c7ee 100644
// CraftBukkit start
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0137-remove-null-possibility-for-getServer-singleton.patch b/Spigot-Server-Patches/0137-remove-null-possibility-for-getServer-singleton.patch
index f439fe17fe..87594bc895 100644
--- a/Spigot-Server-Patches/0137-remove-null-possibility-for-getServer-singleton.patch
+++ b/Spigot-Server-Patches/0137-remove-null-possibility-for-getServer-singleton.patch
@@ -1,4 +1,4 @@
-From a47d239dfc2f8dcf30bf36ef6d228b20fb8f78b6 Mon Sep 17 00:00:00 2001
+From 4d88a9833dba3f9449be3f9bc0a9d8f773024fc7 Mon Sep 17 00:00:00 2001
From: Aikar <[email protected]>
Date: Thu, 28 Apr 2016 00:57:27 -0400
Subject: [PATCH] remove null possibility for getServer singleton
@@ -6,7 +6,7 @@ Subject: [PATCH] remove null possibility for getServer singleton
to stop IDE complaining about potential NPE
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index a5ebb17..6fbe9e6 100644
+index 01325b3..9455475 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -49,6 +49,7 @@ import co.aikar.timings.MinecraftTimings; // Paper
@@ -25,7 +25,7 @@ index a5ebb17..6fbe9e6 100644
io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable
this.e = proxy;
this.U = yggdrasilauthenticationservice;
-@@ -1605,7 +1607,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -1603,7 +1605,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
// CraftBukkit start
@Deprecated
public static MinecraftServer getServer() {
@@ -35,5 +35,5 @@ index a5ebb17..6fbe9e6 100644
// CraftBukkit end
}
--
-2.10.0.windows.1
+2.10.1
diff --git a/Spigot-Server-Patches/0171-Auto-Save-Improvements.patch b/Spigot-Server-Patches/0171-Auto-Save-Improvements.patch
index bfdf965f9d..e66a7ef5da 100644
--- a/Spigot-Server-Patches/0171-Auto-Save-Improvements.patch
+++ b/Spigot-Server-Patches/0171-Auto-Save-Improvements.patch
@@ -1,4 +1,4 @@
-From ac5e6492e7395bfff150b85781fe9d0e82ef72a4 Mon Sep 17 00:00:00 2001
+From efc5e2a80cc31881a2438fdf57211cb36aadd74d Mon Sep 17 00:00:00 2001
From: Aikar <[email protected]>
Date: Mon, 19 Sep 2016 23:16:39 -0400
Subject: [PATCH] Auto Save Improvements
@@ -55,7 +55,7 @@ index 683a6dd..547628a 100644
}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
-index 1ba02f1..65de280 100644
+index 3828da7..7e53fee 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -1,5 +1,6 @@
@@ -75,7 +75,7 @@ index 1ba02f1..65de280 100644
}
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 8ca8fbf..c19bde9 100644
+index a4f7e4d..fb06496 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -114,6 +114,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
@@ -86,12 +86,11 @@ index 8ca8fbf..c19bde9 100644
// CraftBukkit end
public MinecraftServer(OptionSet options, Proxy proxy, DataConverterManager dataconvertermanager, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache) {
-@@ -745,24 +746,28 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
+@@ -745,22 +746,26 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.q.b().a(agameprofile);
}
- if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
- MinecraftTimings.worldSaveTimer.startTiming(); // Spigot
this.methodProfiler.a("save");
+
+ serverAutoSave = (autosavePeriod > 0 && this.ticks % autosavePeriod == 0); // Paper
@@ -112,31 +111,34 @@ index 8ca8fbf..c19bde9 100644
// this.saveChunks(true);
// Spigot End
this.methodProfiler.b();
- MinecraftTimings.worldSaveTimer.stopTiming(); // Spigot
- }
+ //} // Paper - Incremental Auto Saving
this.methodProfiler.a("tallying");
this.h[this.ticks % 100] = System.nanoTime() - i;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index 24b79d3..9e38304 100644
+index fc33575..81712ff 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
-@@ -1017,12 +1017,12 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+@@ -1017,8 +1017,9 @@ public class WorldServer extends World implements IAsyncTaskHandler {
ChunkProviderServer chunkproviderserver = this.getChunkProviderServer();
if (chunkproviderserver.e()) {
- org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
+ if (flag) org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit // Paper - Incremental Auto Saving - Only fire event on full save
+ timings.worldSave.startTiming(); // Paper
++ if (flag || server.serverAutoSave) { // Paper
if (iprogressupdate != null) {
iprogressupdate.a("Saving level");
}
-
-- this.a();
-+ if (flag || server.serverAutoSave) this.a(); // Paper
+@@ -1027,6 +1028,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
if (iprogressupdate != null) {
iprogressupdate.c("Saving chunks");
}
++ } // Paper
+
+ timings.worldSaveChunks.startTiming(); // Paper
+ chunkproviderserver.a(flag);
--
2.10.1
diff --git a/Spigot-Server-Patches/0177-Disable-Vanilla-Chunk-GC.patch b/Spigot-Server-Patches/0177-Disable-Vanilla-Chunk-GC.patch
index ca9069acda..b75fc3b564 100644
--- a/Spigot-Server-Patches/0177-Disable-Vanilla-Chunk-GC.patch
+++ b/Spigot-Server-Patches/0177-Disable-Vanilla-Chunk-GC.patch
@@ -1,4 +1,4 @@
-From 115f50ab9b7570f7a78ad397d5bf5fe6fce2840b Mon Sep 17 00:00:00 2001
+From 2341f19c681ecd15a3326ba292a20828b9685bae Mon Sep 17 00:00:00 2001
From: Aikar <[email protected]>
Date: Mon, 26 Sep 2016 01:51:30 -0400
Subject: [PATCH] Disable Vanilla Chunk GC
@@ -6,26 +6,26 @@ Subject: [PATCH] Disable Vanilla Chunk GC
Bukkit has its own system for this.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index 9e38304..7c91625 100644
+index 81712ff..5c07180 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
-@@ -1029,7 +1029,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
-
+@@ -1034,7 +1034,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
chunkproviderserver.a(flag);
+ timings.worldSaveChunks.stopTiming(); // Paper
// CraftBukkit - ArrayList -> Collection
- Collection arraylist = chunkproviderserver.a();
+ /* //Paper start Collection arraylist = chunkproviderserver.a();
Iterator iterator = arraylist.iterator();
while (iterator.hasNext()) {
-@@ -1038,7 +1038,8 @@ public class WorldServer extends World implements IAsyncTaskHandler {
+@@ -1043,7 +1043,8 @@ public class WorldServer extends World implements IAsyncTaskHandler {
if (chunk != null && !this.manager.a(chunk.locX, chunk.locZ)) {
chunkproviderserver.unload(chunk);
}
- }
+ }*/
+ // Paper end
-
+ timings.worldSave.stopTiming(); // Paper
}
}
--