From 368a822c47d53b0a6fc6aec2cb983be93b787b00 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 29 Apr 2016 21:23:40 -0400 Subject: [PATCH] Rename a Timings class and split up Tracker timings --- Spigot-Server-Patches/0005-Timings-v2.patch | 264 ++++++++++++++---- ...ient-crashes-server-lists-and-Mojang.patch | 8 +- .../0026-Entity-Origin-API.patch | 8 +- .../0031-Lighting-Queue.patch | 29 +- .../0036-Optimize-explosions.patch | 10 +- ...port-to-tab-completers-vanilla-featu.patch | 8 +- .../0118-Add-getEntity-by-UUID-API.patch | 8 +- ...-possibility-for-getServer-singleton.patch | 6 +- 8 files changed, 252 insertions(+), 89 deletions(-) diff --git a/Spigot-Server-Patches/0005-Timings-v2.patch b/Spigot-Server-Patches/0005-Timings-v2.patch index 8ad2939ca..7ee73747d 100644 --- a/Spigot-Server-Patches/0005-Timings-v2.patch +++ b/Spigot-Server-Patches/0005-Timings-v2.patch @@ -1,4 +1,4 @@ -From f0cccb930c97f03205579dba1faf032ed9969b0a Mon Sep 17 00:00:00 2001 +From 7446c784f0bad396c8f8f8da924f322d9f794252 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Mar 2016 04:00:11 -0600 Subject: [PATCH] Timings v2 @@ -21,11 +21,11 @@ index 8899e3a..8bc1a26 100644 net.sf.trove4j trove4j 3.0.3 -diff --git a/src/main/java/co/aikar/timings/SpigotTimings.java b/src/main/java/co/aikar/timings/SpigotTimings.java +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..3f4271c +index 0000000..0f8315c --- /dev/null -+++ b/src/main/java/co/aikar/timings/SpigotTimings.java ++++ b/src/main/java/co/aikar/timings/MinecraftTimings.java @@ -0,0 +1,110 @@ +package co.aikar.timings; + @@ -35,7 +35,7 @@ index 0000000..3f4271c + +import org.bukkit.craftbukkit.scheduler.CraftTask; + -+public final class SpigotTimings { ++public final class MinecraftTimings { + + public static final Timing playerListTimer = Timings.ofSafe("Player List"); + public static final Timing connectionTimer = Timings.ofSafe("Connection Handler"); @@ -59,7 +59,7 @@ index 0000000..3f4271c + public static final Timing antiXrayUpdateTimer = Timings.ofSafe("anti-xray - update"); + public static final Timing antiXrayObfuscateTimer = Timings.ofSafe("anti-xray - obfuscate"); + -+ private SpigotTimings() {} ++ private MinecraftTimings() {} + + /** + * Gets a timer associated with a plugins tasks. @@ -139,10 +139,10 @@ index 0000000..3f4271c +} 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..9ebc710 +index 0000000..11dd692 --- /dev/null +++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java -@@ -0,0 +1,69 @@ +@@ -0,0 +1,71 @@ +package co.aikar.timings; + +import net.minecraft.server.World; @@ -167,7 +167,8 @@ index 0000000..9ebc710 + public final Timing entityTick; + public final Timing tileEntityTick; + public final Timing tileEntityPending; -+ public final Timing tracker; ++ public final Timing tracker1; ++ public final Timing tracker2; + public final Timing doTick; + public final Timing tickEntities; + @@ -207,7 +208,8 @@ index 0000000..9ebc710 + syncChunkLoadTileTicksTimer = Timings.ofSafe(name + "chunkLoad - TileTicks"); + syncChunkLoadPostTimer = Timings.ofSafe(name + "chunkLoad - Post"); + -+ tracker = Timings.ofSafe(name + "tracker"); ++ tracker1 = Timings.ofSafe(name + "tracker stage 1"); ++ tracker2 = Timings.ofSafe(name + "tracker stage 2"); + doTick = Timings.ofSafe(name + "doTick"); + tickEntities = Timings.ofSafe(name + "tickEntities"); + } @@ -273,7 +275,7 @@ index dca7763..7cfe3b9 100644 + } } diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index 1d2f580..88e1e98 100644 +index 1d2f580..6005d03 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -32,6 +32,15 @@ public class Block { @@ -284,7 +286,7 @@ index 1d2f580..88e1e98 100644 + public co.aikar.timings.Timing timing; + public co.aikar.timings.Timing getTiming() { + if (timing == null) { -+ timing = co.aikar.timings.SpigotTimings.getBlockTiming(this); ++ timing = co.aikar.timings.MinecraftTimings.getBlockTiming(this); + } + return timing; + } @@ -293,7 +295,7 @@ index 1d2f580..88e1e98 100644 public static int getId(Block block) { return Block.REGISTRY.a(block); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 328857d..0225a2e 100644 +index 328857d..42752d9 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -22,7 +22,7 @@ import java.io.PrintStream; @@ -301,12 +303,30 @@ index 328857d..0225a2e 100644 import org.bukkit.craftbukkit.LoggerOutputStream; -import org.bukkit.craftbukkit.SpigotTimings; // Spigot -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.craftbukkit.util.Waitable; import org.bukkit.event.server.RemoteServerCommandEvent; +@@ -428,7 +428,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + } + + public void aL() { +- SpigotTimings.serverCommandTimer.startTiming(); // Spigot ++ MinecraftTimings.serverCommandTimer.startTiming(); // Spigot + while (!this.serverCommandQueue.isEmpty()) { + ServerCommand servercommand = (ServerCommand) this.serverCommandQueue.remove(0); + +@@ -443,7 +443,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + // CraftBukkit end + } + +- SpigotTimings.serverCommandTimer.stopTiming(); // Spigot ++ MinecraftTimings.serverCommandTimer.stopTiming(); // Spigot + } + + public boolean aa() { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 2983756..9e84616 100644 +index 2983756..54367ef 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -24,7 +24,8 @@ import org.bukkit.block.BlockFace; @@ -314,7 +334,7 @@ index 2983756..9e84616 100644 import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Vehicle; -import org.spigotmc.CustomTimingsHandler; // Spigot -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper +import co.aikar.timings.Timing; // Paper import org.bukkit.event.entity.EntityCombustByEntityEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent; @@ -324,7 +344,7 @@ index 2983756..9e84616 100644 public org.bukkit.projectiles.ProjectileSource projectileSource; // CraftBukkit - For projectiles only public boolean forceExplosionKnockback; // CraftBukkit - SPIGOT-949 - public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot -+ public Timing tickTimer = SpigotTimings.getEntityTimings(this); // Paper ++ public Timing tickTimer = MinecraftTimings.getEntityTimings(this); // Paper // Spigot start public final byte activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this); public final boolean defaultActivationState; @@ -345,7 +365,7 @@ index 2983756..9e84616 100644 public void recalcPosition() { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 09d6bd5..81525ee 100644 +index 09d6bd5..9fc46b1 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -25,7 +25,7 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -353,7 +373,7 @@ index 09d6bd5..81525ee 100644 // CraftBukkit end -import org.bukkit.craftbukkit.SpigotTimings; // Spigot -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper public abstract class EntityLiving extends Entity { @@ -415,8 +435,39 @@ index 09d6bd5..81525ee 100644 this.world.methodProfiler.b(); } +diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java +index 3773bb1..8eceb93 100644 +--- a/src/main/java/net/minecraft/server/EntityTracker.java ++++ b/src/main/java/net/minecraft/server/EntityTracker.java +@@ -172,7 +172,7 @@ public class EntityTracker { + public void updatePlayers() { + ArrayList arraylist = Lists.newArrayList(); + Iterator iterator = this.c.iterator(); +- ++ world.timings.tracker1.startTiming(); // Spigot + while (iterator.hasNext()) { + EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next(); + +@@ -185,7 +185,9 @@ public class EntityTracker { + } + } + } ++ world.timings.tracker1.stopTiming(); // Spigot + ++ world.timings.tracker2.startTiming(); // Spigot + for (int i = 0; i < arraylist.size(); ++i) { + EntityPlayer entityplayer = (EntityPlayer) arraylist.get(i); + Iterator iterator1 = this.c.iterator(); +@@ -198,6 +200,7 @@ public class EntityTracker { + } + } + } ++ world.timings.tracker2.stopTiming(); // Spigot + + } + diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0caa3f9..a5fea4a 100644 +index 0caa3f9..8bfbc2c 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.craftbukkit.CraftServer; @@ -424,7 +475,7 @@ index 0caa3f9..a5fea4a 100644 // CraftBukkit start // CraftBukkit end -import org.bukkit.craftbukkit.SpigotTimings; // Spigot -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper public abstract class MinecraftServer implements Runnable, ICommandListener, IAsyncTaskHandler, IMojangStatistics { @@ -432,7 +483,7 @@ index 0caa3f9..a5fea4a 100644 } // CraftBukkit end MinecraftServer.LOGGER.info("Stopping server"); -+ SpigotTimings.stopServer(); // Paper ++ MinecraftTimings.stopServer(); // Paper // CraftBukkit start if (this.server != null) { this.server.disablePlugins(); @@ -445,9 +496,29 @@ index 0caa3f9..a5fea4a 100644 long i = System.nanoTime(); ++this.ticks; -@@ -706,11 +707,11 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -673,7 +674,7 @@ 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 +@@ -688,7 +689,7 @@ 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"); +@@ -705,12 +706,13 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs + this.methodProfiler.b(); this.methodProfiler.b(); ++ org.spigotmc.WatchdogThread.tick(); // Spigot - SpigotTimings.serverTickTimer.stopTiming(); // Spigot - org.spigotmc.CustomTimingsHandler.tick(); // Spigot @@ -455,36 +526,100 @@ index 0caa3f9..a5fea4a 100644 } public void D() { -+ SpigotTimings.minecraftSchedulerTimer.startTiming(); // Paper ++ MinecraftTimings.minecraftSchedulerTimer.startTiming(); // Paper this.methodProfiler.a("jobs"); Queue queue = this.j; -@@ -721,13 +722,14 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -721,26 +723,27 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs SystemUtils.a(entry, MinecraftServer.LOGGER); } // Spigot end -+ SpigotTimings.minecraftSchedulerTimer.stopTiming(); // Paper ++ MinecraftTimings.minecraftSchedulerTimer.stopTiming(); // Paper this.methodProfiler.c("levels"); - SpigotTimings.schedulerTimer.startTiming(); // Spigot -+ SpigotTimings.bukkitSchedulerTimer.startTiming(); // Paper ++ MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Paper // CraftBukkit start this.server.getScheduler().mainThreadHeartbeat(this.ticks); - SpigotTimings.schedulerTimer.stopTiming(); // Spigot -+ SpigotTimings.bukkitSchedulerTimer.stopTiming(); // Paper ++ MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Paper // Run tasks that are waiting on processing - SpigotTimings.processQueueTimer.startTiming(); // Spigot +- SpigotTimings.processQueueTimer.startTiming(); // Spigot ++ MinecraftTimings.processQueueTimer.startTiming(); // Spigot + while (!processQueue.isEmpty()) { + processQueue.remove().run(); + } +- SpigotTimings.processQueueTimer.stopTiming(); // Spigot ++ MinecraftTimings.processQueueTimer.stopTiming(); // Spigot + +- SpigotTimings.chunkIOTickTimer.startTiming(); // Spigot ++ MinecraftTimings.chunkIOTickTimer.startTiming(); // Spigot + org.bukkit.craftbukkit.chunkio.ChunkIOExecutor.tick(); +- SpigotTimings.chunkIOTickTimer.stopTiming(); // Spigot ++ MinecraftTimings.chunkIOTickTimer.stopTiming(); // Spigot + +- SpigotTimings.timeUpdateTimer.startTiming(); // Spigot ++ MinecraftTimings.timeUpdateTimer.startTiming(); // Spigot + // 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) { +@@ -748,7 +751,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 + } + } +- SpigotTimings.timeUpdateTimer.stopTiming(); // Spigot ++ MinecraftTimings.timeUpdateTimer.stopTiming(); // Spigot + + int i; + +@@ -805,9 +808,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs + + this.methodProfiler.b(); + this.methodProfiler.a("tracker"); +- worldserver.timings.tracker.startTiming(); // Spigot + worldserver.getTracker().updatePlayers(); +- worldserver.timings.tracker.stopTiming(); // Spigot + this.methodProfiler.b(); + this.methodProfiler.b(); + // } // CraftBukkit +@@ -816,20 +817,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs + } + + this.methodProfiler.c("connection"); +- SpigotTimings.connectionTimer.startTiming(); // Spigot ++ MinecraftTimings.connectionTimer.startTiming(); // Spigot + this.am().c(); +- SpigotTimings.connectionTimer.stopTiming(); // Spigot ++ MinecraftTimings.connectionTimer.stopTiming(); // Spigot + this.methodProfiler.c("players"); +- SpigotTimings.playerListTimer.startTiming(); // Spigot ++ MinecraftTimings.playerListTimer.startTiming(); // Spigot + this.v.tick(); +- SpigotTimings.playerListTimer.stopTiming(); // Spigot ++ MinecraftTimings.playerListTimer.stopTiming(); // Spigot + this.methodProfiler.c("tickables"); + +- SpigotTimings.tickablesTimer.startTiming(); // Spigot ++ MinecraftTimings.tickablesTimer.startTiming(); // Spigot + for (i = 0; i < this.o.size(); ++i) { + ((ITickable) this.o.get(i)).c(); + } +- SpigotTimings.tickablesTimer.stopTiming(); // Spigot ++ MinecraftTimings.tickablesTimer.stopTiming(); // Spigot + + this.methodProfiler.b(); + } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index eb39362..085bb83 100644 +index 711b037..5599845 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -58,6 +58,7 @@ import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.InventoryView; import org.bukkit.util.NumberConversions; -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper // CraftBukkit end public class PlayerConnection implements PacketListenerPlayIn, ITickable { @@ -493,7 +628,7 @@ index eb39362..085bb83 100644 private void handleCommand(String s) { - org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot -+ SpigotTimings.playerCommandTimer.startTiming(); // Paper ++ MinecraftTimings.playerCommandTimer.startTiming(); // Paper // CraftBukkit start - whole method if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getName() + " issued server command: " + s); @@ -502,30 +637,30 @@ index eb39362..085bb83 100644 if (event.isCancelled()) { - org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot -+ SpigotTimings.playerCommandTimer.stopTiming(); // Paper ++ MinecraftTimings.playerCommandTimer.stopTiming(); // Paper return; } try { if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) { - org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot -+ SpigotTimings.playerCommandTimer.stopTiming(); // Paper ++ MinecraftTimings.playerCommandTimer.stopTiming(); // Paper return; } } catch (org.bukkit.command.CommandException ex) { player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command"); java.util.logging.Logger.getLogger(PlayerConnection.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot -+ SpigotTimings.playerCommandTimer.stopTiming(); // Paper ++ MinecraftTimings.playerCommandTimer.stopTiming(); // Paper return; } - org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot -+ SpigotTimings.playerCommandTimer.stopTiming(); // Paper ++ MinecraftTimings.playerCommandTimer.stopTiming(); // Paper // this.minecraftServer.getCommandHandler().a(this.player, s); // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index e6524e9..4193f20 100644 +index e6524e9..20bf384 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -6,12 +6,13 @@ import java.util.concurrent.Callable; @@ -533,14 +668,14 @@ index e6524e9..4193f20 100644 import org.apache.logging.log4j.Logger; -import org.spigotmc.CustomTimingsHandler; // Spigot -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper +import co.aikar.timings.Timing; // Paper import org.bukkit.inventory.InventoryHolder; // CraftBukkit public abstract class TileEntity { - public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot -+ public Timing tickTimer = SpigotTimings.getTileEntityTimings(this); // Paper ++ public Timing tickTimer = MinecraftTimings.getTileEntityTimings(this); // Paper private static final Logger a = LogManager.getLogger(); private static Map> f = Maps.newHashMap(); private static Map, String> g = Maps.newHashMap(); @@ -948,7 +1083,7 @@ index 41d2d87..0000000 - } -} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0756c81..888823c 100644 +index 6d13b62..dc5ddb1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -37,15 +37,9 @@ import org.bukkit.configuration.serialization.DelegateDeserialization; @@ -982,7 +1117,7 @@ index 0756c81..888823c 100644 public Player.Spigot spigot() diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 93d8d42..44e057c 100644 +index 93d8d42..2a22697 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -186,7 +186,7 @@ public class CraftScheduler implements BukkitScheduler { @@ -990,7 +1125,7 @@ index 93d8d42..44e057c 100644 } return false; - }}); -+ }}){{this.timings=co.aikar.timings.SpigotTimings.getCancelTasksTimer();}}; // Paper ++ }}){{this.timings=co.aikar.timings.MinecraftTimings.getCancelTasksTimer();}}; // Paper handle(task, 0l); for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) { if (taskPending == task) { @@ -999,7 +1134,7 @@ index 93d8d42..44e057c 100644 } } - }); -+ }){{this.timings=co.aikar.timings.SpigotTimings.getCancelTasksTimer(plugin);}}; // Paper ++ }){{this.timings=co.aikar.timings.MinecraftTimings.getCancelTasksTimer(plugin);}}; // Paper handle(task, 0l); for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) { if (taskPending == task) { @@ -1008,7 +1143,7 @@ index 93d8d42..44e057c 100644 CraftScheduler.this.temp.clear(); } - }); -+ }){{this.timings=co.aikar.timings.SpigotTimings.getCancelTasksTimer();}}; // Paper ++ }){{this.timings=co.aikar.timings.MinecraftTimings.getCancelTasksTimer();}}; // Paper handle(task, 0l); for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) { if (taskPending == task) { @@ -1023,7 +1158,7 @@ index 93d8d42..44e057c 100644 task.getOwner().getLogger().log( Level.WARNING, diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 220e39a..ecbb0e5 100644 +index 220e39a..afc6c17 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java @@ -1,8 +1,8 @@ @@ -1032,7 +1167,7 @@ index 220e39a..ecbb0e5 100644 import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.SpigotTimings; // Spigot -import org.spigotmc.CustomTimingsHandler; // Spigot -+import co.aikar.timings.SpigotTimings; // Paper ++import co.aikar.timings.MinecraftTimings; // Paper +import co.aikar.timings.Timing; // Paper import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitTask; @@ -1076,7 +1211,7 @@ index 220e39a..ecbb0e5 100644 - CraftTask(final Plugin plugin, final Runnable task, final int id, final long period) { - this(null, plugin, task, id, period); - // Spigot end -+ timings = task != null ? SpigotTimings.getPluginTaskTimings(this, period) : null; // Paper ++ timings = task != null ? MinecraftTimings.getPluginTaskTimings(this, period) : null; // Paper } public final int getTaskId() { @@ -1117,7 +1252,7 @@ index e52ef47..3d90b34 100644 this.value = value; } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index e53092c..0b057fa 100644 +index e53092c..499dc24 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -29,7 +29,7 @@ import net.minecraft.server.EntityWither; @@ -1125,10 +1260,39 @@ index e53092c..0b057fa 100644 import net.minecraft.server.MinecraftServer; import net.minecraft.server.World; -import org.bukkit.craftbukkit.SpigotTimings; -+import co.aikar.timings.SpigotTimings; ++import co.aikar.timings.MinecraftTimings; public class ActivationRange { +@@ -63,8 +63,8 @@ public class ActivationRange + /** + * These entities are excluded from Activation range checks. + * +- * @param entity +- * @param world ++ * @param entity Entity to initialize ++ * @param config Spigot config to determine ranges + * @return boolean If it should always tick. + */ + public static boolean initializeEntityActivationState(Entity entity, SpigotWorldConfig config) +@@ -97,7 +97,7 @@ public class ActivationRange + */ + public static void activateEntities(World world) + { +- SpigotTimings.entityActivationCheckTimer.startTiming(); ++ MinecraftTimings.entityActivationCheckTimer.startTiming(); + final int miscActivationRange = world.spigotConfig.miscActivationRange; + final int animalActivationRange = world.spigotConfig.animalActivationRange; + final int monsterActivationRange = world.spigotConfig.monsterActivationRange; +@@ -131,7 +131,7 @@ public class ActivationRange + } + } + } +- SpigotTimings.entityActivationCheckTimer.stopTiming(); ++ MinecraftTimings.entityActivationCheckTimer.stopTiming(); + } + + /** @@ -245,11 +245,9 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) @@ -1150,5 +1314,5 @@ index e53092c..0b057fa 100644 } } -- -2.8.0 +2.8.1 diff --git a/Spigot-Server-Patches/0018-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch b/Spigot-Server-Patches/0018-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch index 5beab3ace..500d75566 100644 --- a/Spigot-Server-Patches/0018-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch +++ b/Spigot-Server-Patches/0018-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch @@ -1,4 +1,4 @@ -From 0777499c5b969bd7241f6872ed59200d5ca6835a Mon Sep 17 00:00:00 2001 +From c4769bc62dc29d598093e20269fd1f8213cb0f20 Mon Sep 17 00:00:00 2001 From: Zach Brown 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 c872029..fac5f88 100644 EULA.a.warn("Failed to save " + 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 eac4e79..d901d2c 100644 +index 8bfbc2c..b510e31 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1024,7 +1024,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1023,7 +1023,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.7.4 +2.8.1 diff --git a/Spigot-Server-Patches/0026-Entity-Origin-API.patch b/Spigot-Server-Patches/0026-Entity-Origin-API.patch index e8e8bac9a..0e0060f21 100644 --- a/Spigot-Server-Patches/0026-Entity-Origin-API.patch +++ b/Spigot-Server-Patches/0026-Entity-Origin-API.patch @@ -1,17 +1,17 @@ -From 72f0c84a2ce35945f2df3a37d9a7304a50e710da Mon Sep 17 00:00:00 2001 +From 51306b297c90ec78be730733123a3e4be59904c7 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Tue, 1 Mar 2016 23:45:08 -0600 Subject: [PATCH] Entity Origin API diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 9e84616..2d22842 100644 +index 54367ef..9a8d534 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -142,6 +142,7 @@ public abstract class Entity implements ICommandListener { public org.bukkit.projectiles.ProjectileSource projectileSource; // CraftBukkit - For projectiles only public boolean forceExplosionKnockback; // CraftBukkit - SPIGOT-949 - public Timing tickTimer = SpigotTimings.getEntityTimings(this); // Paper + public Timing tickTimer = MinecraftTimings.getEntityTimings(this); // Paper + public Location origin; // Paper // Spigot start public final byte activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this); @@ -147,5 +147,5 @@ index c493c9c..93843aa 100644 + // Paper end } -- -2.8.0 +2.8.1 diff --git a/Spigot-Server-Patches/0031-Lighting-Queue.patch b/Spigot-Server-Patches/0031-Lighting-Queue.patch index acc5a0227..6a2735321 100644 --- a/Spigot-Server-Patches/0031-Lighting-Queue.patch +++ b/Spigot-Server-Patches/0031-Lighting-Queue.patch @@ -1,14 +1,14 @@ -From 4458f44347f9ab06bb50e6608531a6039c5d0b3d Mon Sep 17 00:00:00 2001 +From cf551879a447edab9e7fbbdbe01190b3663ad0dc Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 00:52:31 -0600 Subject: [PATCH] Lighting Queue -diff --git a/src/main/java/co/aikar/timings/SpigotTimings.java b/src/main/java/co/aikar/timings/SpigotTimings.java -index 3f4271c..5fdf051 100644 ---- a/src/main/java/co/aikar/timings/SpigotTimings.java -+++ b/src/main/java/co/aikar/timings/SpigotTimings.java -@@ -17,6 +17,7 @@ public final class SpigotTimings { +diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java +index 0f8315c..5afdc2c 100644 +--- a/src/main/java/co/aikar/timings/MinecraftTimings.java ++++ b/src/main/java/co/aikar/timings/MinecraftTimings.java +@@ -17,6 +17,7 @@ public final class MinecraftTimings { 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"); @@ -147,12 +147,12 @@ index 7d3adde..54c83f3 100644 ChunkUnloadEvent event = new ChunkUnloadEvent(chunk.bukkitChunk); server.getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3aac51d..24aa5b5 100644 +index cd784a0..75f2605 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -47,6 +47,11 @@ import org.bukkit.craftbukkit.CraftServer; // CraftBukkit end - import co.aikar.timings.SpigotTimings; // Paper + import co.aikar.timings.MinecraftTimings; // Paper +// Paper start +import java.util.LinkedList; @@ -170,14 +170,13 @@ index 3aac51d..24aa5b5 100644 // CraftBukkit end public MinecraftServer(OptionSet options, Proxy proxy, DataConverterManager dataconvertermanager, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache) { -@@ -759,6 +765,35 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -760,6 +766,34 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs + this.methodProfiler.b(); + this.methodProfiler.b(); - this.methodProfiler.b(); - this.methodProfiler.b(); -+ + // Paper start - Flush light updates + if (!lightingQueue.isEmpty()) { -+ SpigotTimings.lightingQueueTimer.startTiming(); ++ MinecraftTimings.lightingQueueTimer.startTiming(); + + int updatesThisTick = 0; + long cachedTime = System.currentTimeMillis(); @@ -199,7 +198,7 @@ index 3aac51d..24aa5b5 100644 + } + } + -+ SpigotTimings.lightingQueueTimer.stopTiming(); ++ MinecraftTimings.lightingQueueTimer.stopTiming(); + } + // Paper end + @@ -230,5 +229,5 @@ index 3b84e27..1793995 100644 } -- -2.8.0 +2.8.1 diff --git a/Spigot-Server-Patches/0036-Optimize-explosions.patch b/Spigot-Server-Patches/0036-Optimize-explosions.patch index c916c9065..8b45cf02f 100644 --- a/Spigot-Server-Patches/0036-Optimize-explosions.patch +++ b/Spigot-Server-Patches/0036-Optimize-explosions.patch @@ -1,4 +1,4 @@ -From e4f94a4f98e5082dc5522095541902f568b82c06 Mon Sep 17 00:00:00 2001 +From 5fbcaa4e972f9256ae7660441955f23a98148ee1 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 11:59:48 -0600 Subject: [PATCH] Optimize explosions @@ -124,11 +124,11 @@ index ae49403..7e99b7d 100644 + // Paper end } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 24aa5b5..ee9491f 100644 +index 75f2605..d515dcb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -900,6 +900,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs - worldserver.timings.tracker.stopTiming(); // Spigot +@@ -898,6 +898,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs + worldserver.getTracker().updatePlayers(); this.methodProfiler.b(); this.methodProfiler.b(); + worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions @@ -156,5 +156,5 @@ index 1793995..a9cda67 100644 public CraftWorld getWorld() { return this.world; -- -2.8.0 +2.8.1 diff --git a/Spigot-Server-Patches/0059-Add-Location-support-to-tab-completers-vanilla-featu.patch b/Spigot-Server-Patches/0059-Add-Location-support-to-tab-completers-vanilla-featu.patch index 1f8d08274..e594dfdff 100644 --- a/Spigot-Server-Patches/0059-Add-Location-support-to-tab-completers-vanilla-featu.patch +++ b/Spigot-Server-Patches/0059-Add-Location-support-to-tab-completers-vanilla-featu.patch @@ -1,4 +1,4 @@ -From 722700414bcbb589d78ddd5fd87e32faa8146760 Mon Sep 17 00:00:00 2001 +From b8ff86f276a84f71244e65081715bac5e4e8375b Mon Sep 17 00:00:00 2001 From: DemonWav Date: Thu, 3 Mar 2016 01:44:39 -0600 Subject: [PATCH] Add Location support to tab completers (vanilla feature @@ -20,10 +20,10 @@ index 0e03d9a..a73542d 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ee9491f..058735e 100644 +index d515dcb..3420b8b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1186,7 +1186,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1184,7 +1184,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs return arraylist; } */ @@ -151,5 +151,5 @@ index 100d84a..a40218c 100644 public static CommandSender lastSender = null; // Nasty :( -- -2.8.0 +2.8.1 diff --git a/Spigot-Server-Patches/0118-Add-getEntity-by-UUID-API.patch b/Spigot-Server-Patches/0118-Add-getEntity-by-UUID-API.patch index f072a31a4..b103d2969 100644 --- a/Spigot-Server-Patches/0118-Add-getEntity-by-UUID-API.patch +++ b/Spigot-Server-Patches/0118-Add-getEntity-by-UUID-API.patch @@ -1,14 +1,14 @@ -From 11e2be232ed4dd1dd6cb9ffc043a90e99cb39541 Mon Sep 17 00:00:00 2001 +From 8082519bb735558d60447b300f684c4b1ca9f539 Mon Sep 17 00:00:00 2001 From: DemonWav 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 058735e..06dec17 100644 +index 3420b8b..f46cf24 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1622,4 +1622,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1620,4 +1620,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs return (Bukkit.getServer() instanceof CraftServer) ? ((CraftServer) Bukkit.getServer()).getServer() : null; } // CraftBukkit end @@ -57,5 +57,5 @@ index e957ed0..0a5301f 100644 // Paper end } -- -2.8.0 +2.8.1 diff --git a/Spigot-Server-Patches/0151-remove-null-possibility-for-getServer-singleton.patch b/Spigot-Server-Patches/0151-remove-null-possibility-for-getServer-singleton.patch index aac5756cc..2ab267ef1 100644 --- a/Spigot-Server-Patches/0151-remove-null-possibility-for-getServer-singleton.patch +++ b/Spigot-Server-Patches/0151-remove-null-possibility-for-getServer-singleton.patch @@ -1,4 +1,4 @@ -From 58c6555de6de8075c9c1ebfca359e0e5c37707c2 Mon Sep 17 00:00:00 2001 +From a1323acf735c05c96afd84a30ba5d9059f78582b Mon Sep 17 00:00:00 2001 From: Aikar 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 b1e6e5d..08997ea 100644 +index 26380e7..6efc569 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -54,6 +54,7 @@ import java.util.Queue; @@ -25,7 +25,7 @@ index b1e6e5d..08997ea 100644 io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable this.e = proxy; this.U = yggdrasilauthenticationservice; -@@ -1620,7 +1622,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1618,7 +1620,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // CraftBukkit start @Deprecated public static MinecraftServer getServer() {