From f1691b34c5621e6c16dbb3f98ced50f57aacfe0c Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 15 Jul 2016 17:36:53 -0500 Subject: [PATCH] Update upstream B/CB/S --- .../0002-Paper-config-files.patch | 12 +++--- Spigot-Server-Patches/0005-Timings-v2.patch | 38 +++++++++---------- ...ient-crashes-server-lists-and-Mojang.patch | 8 ++-- .../0019-Player-affects-spawning-API.patch | 10 ++--- ...023-Further-improve-server-tick-loop.patch | 12 +++--- .../0031-Lighting-Queue.patch | 13 ++++--- .../0036-Optimize-explosions.patch | 8 ++-- ...port-to-tab-completers-vanilla-featu.patch | 8 ++-- .../0069-Add-exception-reporting-event.patch | 24 ++++++------ ...heck-async-remove-unused-vars-GH-159.patch | 10 ++--- .../0112-Add-getEntity-by-UUID-API.patch | 10 ++--- ...le-Keep-Spawn-Loaded-range-per-world.patch | 8 ++-- ...Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch | 10 ++--- ...-possibility-for-getServer-singleton.patch | 12 +++--- .../0148-Fix-Chunk-Unload-Queue-Issues.patch | 8 ++-- .../0151-Optimize-UserCache-Thread-Safe.patch | 8 ++-- ...unk-Unloads-based-on-Player-Movement.patch | 8 ++-- work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 20 files changed, 107 insertions(+), 106 deletions(-) diff --git a/Spigot-Server-Patches/0002-Paper-config-files.patch b/Spigot-Server-Patches/0002-Paper-config-files.patch index 6b3dcfc047..12ac8965ab 100644 --- a/Spigot-Server-Patches/0002-Paper-config-files.patch +++ b/Spigot-Server-Patches/0002-Paper-config-files.patch @@ -1,4 +1,4 @@ -From 673985161e2af584e3e18bbbf33829983c25f50e Mon Sep 17 00:00:00 2001 +From 6533449019b5309292af4ce05cfeabcd43bcae3c Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Mon, 29 Feb 2016 21:02:09 -0600 Subject: [PATCH] Paper config files @@ -253,10 +253,10 @@ index 0000000..dae60dc + } +} diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 8f26ab4..973e2c5 100644 +index 109d0e8..11a49a3 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java -@@ -181,6 +181,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +@@ -182,6 +182,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings")); org.spigotmc.SpigotConfig.registerCommands(); // Spigot end @@ -268,7 +268,7 @@ index 8f26ab4..973e2c5 100644 DedicatedServer.LOGGER.info("Generating keypair"); this.a(MinecraftEncryption.b()); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index b5b0fd7..4abeccd 100644 +index fcd90be..e649435 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -125,6 +125,8 @@ public abstract class World implements IBlockAccess { @@ -289,7 +289,7 @@ index b5b0fd7..4abeccd 100644 this.world = new CraftWorld((WorldServer) this, gen, env); this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d1a33c9..39d60e4 100644 +index c906eee..1ef30a3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -693,6 +693,7 @@ public final class CraftServer implements Server { @@ -335,5 +335,5 @@ index 337aa29..979adad 100644 }; -- -2.8.3 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0005-Timings-v2.patch b/Spigot-Server-Patches/0005-Timings-v2.patch index 8b32dc0c79..b529f8c016 100644 --- a/Spigot-Server-Patches/0005-Timings-v2.patch +++ b/Spigot-Server-Patches/0005-Timings-v2.patch @@ -1,4 +1,4 @@ -From d0fe49663f02efb35694b14bc4e0e6983bdf406c Mon Sep 17 00:00:00 2001 +From 154f0ef603f61f2902d211375f658b61246b350c Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Mar 2016 04:00:11 -0600 Subject: [PATCH] Timings v2 @@ -293,10 +293,10 @@ index a106e44..d17160a 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 0716cbc..a2bd64b 100644 +index 11a49a3..e70d5c5 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; +@@ -23,7 +23,7 @@ import java.io.PrintStream; import org.apache.logging.log4j.Level; import org.bukkit.craftbukkit.LoggerOutputStream; @@ -305,7 +305,7 @@ index 0716cbc..a2bd64b 100644 import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.craftbukkit.util.Waitable; import org.bukkit.event.server.RemoteServerCommandEvent; -@@ -427,7 +427,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +@@ -428,7 +428,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } public void aL() { @@ -314,7 +314,7 @@ index 0716cbc..a2bd64b 100644 while (!this.serverCommandQueue.isEmpty()) { ServerCommand servercommand = (ServerCommand) this.serverCommandQueue.remove(0); -@@ -442,7 +442,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +@@ -443,7 +443,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer // CraftBukkit end } @@ -363,7 +363,7 @@ index 6ac7f42..e6d11ee 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 a32e453..022745e 100644 +index 365b61d..0a583bc 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -26,7 +26,7 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -465,19 +465,19 @@ 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 80675f6..b7a3582 100644 +index 3d76e54..0024d3d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -50,7 +50,7 @@ import org.apache.logging.log4j.Logger; - import org.bukkit.Bukkit; +@@ -45,7 +45,7 @@ import org.bukkit.Bukkit; import org.bukkit.craftbukkit.CraftServer; + import org.bukkit.craftbukkit.Main; // CraftBukkit end -import org.bukkit.craftbukkit.SpigotTimings; // Spigot +import co.aikar.timings.MinecraftTimings; // Paper public abstract class MinecraftServer implements Runnable, ICommandListener, IAsyncTaskHandler, IMojangStatistics { -@@ -455,6 +455,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -450,6 +450,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs } // CraftBukkit end MinecraftServer.LOGGER.info("Stopping server"); @@ -485,7 +485,7 @@ index 80675f6..b7a3582 100644 // CraftBukkit start if (this.server != null) { this.server.disablePlugins(); -@@ -659,7 +660,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -654,7 +655,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs public void B() {} protected void C() throws ExceptionWorldConflict { // CraftBukkit - added throws @@ -494,7 +494,7 @@ index 80675f6..b7a3582 100644 long i = System.nanoTime(); ++this.ticks; -@@ -686,7 +687,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -681,7 +682,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs } if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit @@ -503,7 +503,7 @@ index 80675f6..b7a3582 100644 this.methodProfiler.a("save"); this.v.savePlayers(); // Spigot Start -@@ -701,7 +702,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -696,7 +697,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // this.saveChunks(true); // Spigot End this.methodProfiler.b(); @@ -512,7 +512,7 @@ index 80675f6..b7a3582 100644 } this.methodProfiler.a("tallying"); -@@ -718,15 +719,16 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -713,15 +714,16 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.methodProfiler.b(); this.methodProfiler.b(); @@ -533,7 +533,7 @@ index 80675f6..b7a3582 100644 this.methodProfiler.a("jobs"); Queue queue = this.j; -@@ -737,22 +739,23 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -732,22 +734,23 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs SystemUtils.a(entry, MinecraftServer.LOGGER); } // Spigot end @@ -562,7 +562,7 @@ index 80675f6..b7a3582 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) { -@@ -760,7 +763,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -755,7 +758,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 } } @@ -571,7 +571,7 @@ index 80675f6..b7a3582 100644 int i; -@@ -817,9 +820,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -812,9 +815,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.methodProfiler.b(); this.methodProfiler.a("tracker"); @@ -581,7 +581,7 @@ index 80675f6..b7a3582 100644 this.methodProfiler.b(); this.methodProfiler.b(); // } // CraftBukkit -@@ -828,20 +829,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -823,20 +824,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs } this.methodProfiler.c("connection"); @@ -883,7 +883,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 bcbb368..a691d8f 100644 +index 0668887..e0f448d 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -245,13 +245,13 @@ public class WorldServer extends World implements IAsyncTaskHandler { 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 df44ce239d..9275fa2d85 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 9c23c9b57712bada7bfe99affbe33c070cf8a24a Mon Sep 17 00:00:00 2001 +From acc975233d5156a27b006b1fb3c2d6f60af97aa2 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 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 b7a3582..295c673 100644 +index 0024d3d..37d25c1 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1035,7 +1035,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1030,7 +1030,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.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0019-Player-affects-spawning-API.patch b/Spigot-Server-Patches/0019-Player-affects-spawning-API.patch index 6d4a85f940..859266f22c 100644 --- a/Spigot-Server-Patches/0019-Player-affects-spawning-API.patch +++ b/Spigot-Server-Patches/0019-Player-affects-spawning-API.patch @@ -1,4 +1,4 @@ -From 64b8c63495187ad509ed8e98ee642f76548e68e0 Mon Sep 17 00:00:00 2001 +From 299aa64e2a7e8669521ab3a452d925f128308304 Mon Sep 17 00:00:00 2001 From: Jedediah Smith Date: Tue, 1 Mar 2016 14:47:52 -0600 Subject: [PATCH] Player affects spawning API @@ -50,7 +50,7 @@ index 85d4b81..74aaba2 100644 if (entityhuman != null) { double d0 = entityhuman.locX - this.locX; diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java -index c4e5f50..d6c70c4 100644 +index 78dbf79..e4d3ba4 100644 --- a/src/main/java/net/minecraft/server/EntitySilverfish.java +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java @@ -93,7 +93,7 @@ public class EntitySilverfish extends EntityMonster { @@ -89,10 +89,10 @@ index 7bae42a..f040775 100644 public void c() { diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index f8a871d..55c36fc 100644 +index 9e86aa2..fb0830d 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java -@@ -50,6 +50,8 @@ public final class SpawnerCreature { +@@ -52,6 +52,8 @@ public final class SpawnerCreature { while (iterator.hasNext()) { EntityHuman entityhuman = (EntityHuman) iterator.next(); @@ -101,7 +101,7 @@ index f8a871d..55c36fc 100644 if (!entityhuman.isSpectator()) { int l = MathHelper.floor(entityhuman.locX / 16.0D); -@@ -160,7 +162,7 @@ public final class SpawnerCreature { +@@ -162,7 +164,7 @@ public final class SpawnerCreature { float f = (float) j3 + 0.5F; float f1 = (float) l3 + 0.5F; diff --git a/Spigot-Server-Patches/0023-Further-improve-server-tick-loop.patch b/Spigot-Server-Patches/0023-Further-improve-server-tick-loop.patch index 764c669ae4..1ec818b855 100644 --- a/Spigot-Server-Patches/0023-Further-improve-server-tick-loop.patch +++ b/Spigot-Server-Patches/0023-Further-improve-server-tick-loop.patch @@ -1,4 +1,4 @@ -From 1f95abb8e7716c606dfdb71a97e94808cc2fc238 Mon Sep 17 00:00:00 2001 +From a1736bd08470fa83ab378b446396c85282b78180 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 1 Mar 2016 23:09:29 -0600 Subject: [PATCH] Further improve server tick loop @@ -12,10 +12,10 @@ Previous implementation did not calculate TPS correctly. Switch to a realistic rolling average and factor in std deviation as an extra reporting variable diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index fab855c..31d2a10 100644 +index 37d25c1..8ca0022 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -114,17 +114,11 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -109,17 +109,11 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs public org.bukkit.command.ConsoleCommandSender console; public org.bukkit.command.RemoteConsoleCommandSender remoteConsole; public ConsoleReader reader; @@ -34,7 +34,7 @@ index fab855c..31d2a10 100644 public MinecraftServer(OptionSet options, Proxy proxy, DataConverterManager dataconvertermanager, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache) { io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable -@@ -529,12 +523,54 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -524,12 +518,54 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.isRunning = false; } @@ -94,7 +94,7 @@ index fab855c..31d2a10 100644 public void run() { try { -@@ -548,24 +584,41 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -543,24 +579,41 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // Spigot start Arrays.fill( recentTps, 20 ); @@ -211,5 +211,5 @@ index be2e31d..6d21c32 100644 return ( ( tps > 18.0 ) ? ChatColor.GREEN : ( tps > 16.0 ) ? ChatColor.YELLOW : ChatColor.RED ).toString() + ( ( tps > 20.0 ) ? "*" : "" ) + Math.min( Math.round( tps * 100.0 ) / 100.0, 20.0 ); -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0031-Lighting-Queue.patch b/Spigot-Server-Patches/0031-Lighting-Queue.patch index c811bd4bb9..714b5d12e9 100644 --- a/Spigot-Server-Patches/0031-Lighting-Queue.patch +++ b/Spigot-Server-Patches/0031-Lighting-Queue.patch @@ -1,8 +1,9 @@ -From a7b8b2dfdda06856f138ea8b3fedc1c7aa72a75a Mon Sep 17 00:00:00 2001 +From bde4b00ccecf0fa1db80077b0aed4099978c6208 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 00:52:31 -0600 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 741da72..8b3aa17 100644 @@ -84,10 +85,10 @@ index 015a223..0fae95d 100644 TileEntity tileentity; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 023bcce..f39ec7e 100644 +index 5682f03..5eeefe8 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -280,6 +280,7 @@ public class ChunkProviderServer implements IChunkProvider { +@@ -279,6 +279,7 @@ public class ChunkProviderServer implements IChunkProvider { return false; } save = event.isSaveChunk(); @@ -96,10 +97,10 @@ index 023bcce..f39ec7e 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 95f407f..ff1dd53 100644 +index 8ca0022..7f6a29d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -714,7 +714,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -709,7 +709,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs protected void C() throws ExceptionWorldConflict { // CraftBukkit - added throws co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper @@ -108,7 +109,7 @@ index 95f407f..ff1dd53 100644 ++this.ticks; if (this.S) { -@@ -774,6 +774,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -769,6 +769,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.methodProfiler.b(); org.spigotmc.WatchdogThread.tick(); // Spigot diff --git a/Spigot-Server-Patches/0036-Optimize-explosions.patch b/Spigot-Server-Patches/0036-Optimize-explosions.patch index d72dafd704..70e44b3fac 100644 --- a/Spigot-Server-Patches/0036-Optimize-explosions.patch +++ b/Spigot-Server-Patches/0036-Optimize-explosions.patch @@ -1,4 +1,4 @@ -From 785ec5fad9779788978a1b2b4b187f331e32a31c Mon Sep 17 00:00:00 2001 +From 6eed8e312a9ea1123c11b99233f9411bfc7a0e03 Mon Sep 17 00:00:00 2001 From: Byteflux 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 ff1dd53..a8d9e67 100644 +index 7f6a29d..a41c931 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -877,6 +877,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -872,6 +872,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.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0057-Add-Location-support-to-tab-completers-vanilla-featu.patch b/Spigot-Server-Patches/0057-Add-Location-support-to-tab-completers-vanilla-featu.patch index 64549545aa..7a3a05d07f 100644 --- a/Spigot-Server-Patches/0057-Add-Location-support-to-tab-completers-vanilla-featu.patch +++ b/Spigot-Server-Patches/0057-Add-Location-support-to-tab-completers-vanilla-featu.patch @@ -1,4 +1,4 @@ -From 7ee7e55bf2dc94c90e59e6c2ea9819cd17708c84 Mon Sep 17 00:00:00 2001 +From 4f6415f24bde429a493de4e36f769b615d2cf0ed 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 b302cb7..75e7b78 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a8d9e67..9b330f6 100644 +index a41c931..453e600 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1163,7 +1163,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1158,7 +1158,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs return arraylist; } */ @@ -156,5 +156,5 @@ index 100d84a..a40218c 100644 public static CommandSender lastSender = null; // Nasty :( -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0069-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0069-Add-exception-reporting-event.patch index 2adb8105f9..cbf5ad2d78 100644 --- a/Spigot-Server-Patches/0069-Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/0069-Add-exception-reporting-event.patch @@ -1,4 +1,4 @@ -From c6c618ab92a20d2ede15a3cbc4ab76443a8a447e Mon Sep 17 00:00:00 2001 +From 570d621bb13515e668ed7a282e0d24f348f1cb82 Mon Sep 17 00:00:00 2001 From: Joseph Hirschfeld Date: Thu, 3 Mar 2016 03:15:41 -0600 Subject: [PATCH] Add exception reporting event @@ -89,7 +89,7 @@ index 684e5f7..bc55a2b 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 23dc778..d814670 100644 +index 5eeefe8..299cc91 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; @@ -100,7 +100,7 @@ index 23dc778..d814670 100644 import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -@@ -189,7 +190,11 @@ public class ChunkProviderServer implements IChunkProvider { +@@ -188,7 +189,11 @@ public class ChunkProviderServer implements IChunkProvider { return chunk; } catch (Exception exception) { @@ -113,7 +113,7 @@ index 23dc778..d814670 100644 return null; } } -@@ -198,7 +203,11 @@ public class ChunkProviderServer implements IChunkProvider { +@@ -197,7 +202,11 @@ public class ChunkProviderServer implements IChunkProvider { try { this.chunkLoader.b(this.world, chunk); } catch (Exception exception) { @@ -126,7 +126,7 @@ index 23dc778..d814670 100644 } } -@@ -208,9 +217,14 @@ public class ChunkProviderServer implements IChunkProvider { +@@ -207,9 +216,14 @@ public class ChunkProviderServer implements IChunkProvider { chunk.setLastSaved(this.world.getTime()); this.chunkLoader.a(this.world, chunk); } catch (IOException ioexception) { @@ -244,18 +244,18 @@ index 49fa5e4..2121e84 100644 } diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 55c36fc..b603b2c 100644 +index fb0830d..b3edaee 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java -@@ -5,6 +5,7 @@ import java.util.List; - import java.util.Random; +@@ -7,6 +7,7 @@ import java.util.Random; + import java.util.Set; // CraftBukkit start +import com.destroystokyo.paper.exception.ServerInternalException; import org.bukkit.craftbukkit.util.LongHash; import org.bukkit.craftbukkit.util.LongHashSet; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -@@ -177,6 +178,7 @@ public final class SpawnerCreature { +@@ -179,6 +180,7 @@ public final class SpawnerCreature { entityinsentient = (EntityInsentient) biomebase_biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { worldserver}); } catch (Exception exception) { exception.printStackTrace(); @@ -263,7 +263,7 @@ index 55c36fc..b603b2c 100644 return j1; } -@@ -284,6 +286,7 @@ public final class SpawnerCreature { +@@ -286,6 +288,7 @@ public final class SpawnerCreature { entityinsentient = (EntityInsentient) biomebase_biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world}); } catch (Exception exception) { exception.printStackTrace(); @@ -292,7 +292,7 @@ index e40fd93..d1458aa 100644 } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 2bf74ea..d54ff64 100644 +index a905ff9..48c0e14 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1,5 +1,7 @@ @@ -372,5 +372,5 @@ index 2a22697..d82dddf 100644 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0103-Check-async-remove-unused-vars-GH-159.patch b/Spigot-Server-Patches/0103-Check-async-remove-unused-vars-GH-159.patch index 8085f476b5..bdfbe637a9 100644 --- a/Spigot-Server-Patches/0103-Check-async-remove-unused-vars-GH-159.patch +++ b/Spigot-Server-Patches/0103-Check-async-remove-unused-vars-GH-159.patch @@ -1,14 +1,14 @@ -From ac5312f352b60d9cf048e9cabf8cc12a21fa8678 Mon Sep 17 00:00:00 2001 +From 18ca179be8e89fec0c5cd64332d1bfe1c2992db6 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sun, 27 Mar 2016 20:24:05 -0500 Subject: [PATCH] Check async, remove unused vars, GH-159 diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index b603b2c..14f1833 100644 +index b3edaee..ea0a145 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java -@@ -38,6 +38,7 @@ public final class SpawnerCreature { +@@ -40,6 +40,7 @@ public final class SpawnerCreature { // Spigot end public int a(WorldServer worldserver, boolean flag, boolean flag1, boolean flag2) { @@ -16,7 +16,7 @@ index b603b2c..14f1833 100644 if (!flag && !flag1) { return 0; } else { -@@ -120,8 +121,10 @@ public final class SpawnerCreature { +@@ -122,8 +123,10 @@ public final class SpawnerCreature { // CraftBukkit end if ((!enumcreaturetype.d() || flag1) && (enumcreaturetype.d() || flag) && (!enumcreaturetype.e() || flag2)) { @@ -28,5 +28,5 @@ index b603b2c..14f1833 100644 if ((mobcnt = getEntityCount(worldserver, enumcreaturetype.a())) <= limit * i / 256) { BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0112-Add-getEntity-by-UUID-API.patch b/Spigot-Server-Patches/0112-Add-getEntity-by-UUID-API.patch index d8283a481d..58df3c4b7d 100644 --- a/Spigot-Server-Patches/0112-Add-getEntity-by-UUID-API.patch +++ b/Spigot-Server-Patches/0112-Add-getEntity-by-UUID-API.patch @@ -1,14 +1,14 @@ -From 95e61169a47b04da263601f5d38dbe53fef67cd0 Mon Sep 17 00:00:00 2001 +From a9b3cc4ebc0b81074485a105f06ec1e20eb3882d 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 9b330f6..2d51202 100644 +index 453e600..11770ad 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1513,6 +1513,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1508,6 +1508,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.Y = 0L; } @@ -16,7 +16,7 @@ index 9b330f6..2d51202 100644 @Nullable public Entity a(UUID uuid) { WorldServer[] aworldserver = this.worldServer; -@@ -1526,7 +1527,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1521,7 +1522,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs if (worldserver != null) { Entity entity = worldserver.getEntity(uuid); @@ -53,5 +53,5 @@ index 8f08fa5..91d00dc 100644 // Paper end } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0118-Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/0118-Configurable-Keep-Spawn-Loaded-range-per-world.patch index 8b4fba1c00..6ffdf68ccb 100644 --- a/Spigot-Server-Patches/0118-Configurable-Keep-Spawn-Loaded-range-per-world.patch +++ b/Spigot-Server-Patches/0118-Configurable-Keep-Spawn-Loaded-range-per-world.patch @@ -1,4 +1,4 @@ -From bde87a70dfef5f3afd6fd58c60d86e8a17e29d49 Mon Sep 17 00:00:00 2001 +From 4b139b9ba8d5e924fe08bc5f2e938683a65c8244 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 13 Sep 2014 23:14:43 -0400 Subject: [PATCH] Configurable Keep Spawn Loaded range per world @@ -21,10 +21,10 @@ index 2374419..d6fef83 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d0aeec2..6ae3665 100644 +index 11770ad..89b8595 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -354,8 +354,9 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -349,8 +349,9 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs long j = av(); i = 0; @@ -81,5 +81,5 @@ index 2606890..1994401 100644 loadChunk(chunkCoordX + x, chunkCoordZ + z); } else { -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0131-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch b/Spigot-Server-Patches/0131-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch index 906de5e6e8..b78f6f0c24 100644 --- a/Spigot-Server-Patches/0131-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch +++ b/Spigot-Server-Patches/0131-Fix-Bugs-with-Spigot-Mob-Spawn-Logic.patch @@ -1,4 +1,4 @@ -From 119997f9b1d26d4b02d04d694ae9f9a3ba9b5415 Mon Sep 17 00:00:00 2001 +From 620bc10becb8a69aa1e8b4b46f6f8bf0f1549ef7 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 14 Apr 2016 21:01:39 -0400 Subject: [PATCH] Fix Bugs with Spigot Mob Spawn Logic @@ -27,10 +27,10 @@ index e36525a..3419d0f 100644 if (entity instanceof EntityItem) { itemCounts[i]--; diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 14f1833..4f392fb 100644 +index ea0a145..689d664 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java -@@ -21,6 +21,15 @@ public final class SpawnerCreature { +@@ -23,6 +23,15 @@ public final class SpawnerCreature { // Spigot start - get entity count only from chunks being processed in b private int getEntityCount(WorldServer server, Class oClass) { @@ -46,7 +46,7 @@ index 14f1833..4f392fb 100644 int i = 0; Iterator it = this.b.iterator(); while ( it.hasNext() ) -@@ -126,7 +135,7 @@ public final class SpawnerCreature { +@@ -128,7 +137,7 @@ public final class SpawnerCreature { int l1 = limit * i / a; // CraftBukkit - use per-world limits */ // Paper end @@ -56,5 +56,5 @@ index 14f1833..4f392fb 100644 Iterator iterator1 = this.b.iterator(); -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0141-remove-null-possibility-for-getServer-singleton.patch b/Spigot-Server-Patches/0141-remove-null-possibility-for-getServer-singleton.patch index e52ba8ca2b..32c48b9b5b 100644 --- a/Spigot-Server-Patches/0141-remove-null-possibility-for-getServer-singleton.patch +++ b/Spigot-Server-Patches/0141-remove-null-possibility-for-getServer-singleton.patch @@ -1,4 +1,4 @@ -From 10ee17c62df495549f10eb5046fe99d8ea5f156f Mon Sep 17 00:00:00 2001 +From 85d6076c686ce99de7e8d9b88f2958e1e63beeae 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,10 +6,10 @@ 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 dc07733..ede9c30 100644 +index 89b8595..0ebc566 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -54,6 +54,7 @@ import co.aikar.timings.MinecraftTimings; // Paper +@@ -49,6 +49,7 @@ import co.aikar.timings.MinecraftTimings; // Paper public abstract class MinecraftServer implements Runnable, ICommandListener, IAsyncTaskHandler, IMojangStatistics { @@ -17,7 +17,7 @@ index dc07733..ede9c30 100644 public static final Logger LOGGER = LogManager.getLogger(); public static final File a = new File("usercache.json"); public Convertable convertable; -@@ -121,6 +122,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -116,6 +117,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // CraftBukkit end public MinecraftServer(OptionSet options, Proxy proxy, DataConverterManager dataconvertermanager, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache) { @@ -25,7 +25,7 @@ index dc07733..ede9c30 100644 io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable this.e = proxy; this.U = yggdrasilauthenticationservice; -@@ -1602,7 +1604,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -1597,7 +1599,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // CraftBukkit start @Deprecated public static MinecraftServer getServer() { @@ -35,5 +35,5 @@ index dc07733..ede9c30 100644 // CraftBukkit end } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0148-Fix-Chunk-Unload-Queue-Issues.patch b/Spigot-Server-Patches/0148-Fix-Chunk-Unload-Queue-Issues.patch index ef841abeaa..1a4b88f1ff 100644 --- a/Spigot-Server-Patches/0148-Fix-Chunk-Unload-Queue-Issues.patch +++ b/Spigot-Server-Patches/0148-Fix-Chunk-Unload-Queue-Issues.patch @@ -1,4 +1,4 @@ -From d3ff485bf65704cddbc2b3ef9864d07dc56453c9 Mon Sep 17 00:00:00 2001 +From babbc2a5f3b448c1f07439bae81567532f6bb24c Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 12 May 2016 02:03:56 -0400 Subject: [PATCH] Fix Chunk Unload Queue Issues @@ -22,10 +22,10 @@ index a2d9f62..a1f7e83 100644 // Paper start diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index cc8602e..a40a6a4 100644 +index d4587c7..804a0ca 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -290,6 +290,7 @@ public class ChunkProviderServer implements IChunkProvider { +@@ -289,6 +289,7 @@ public class ChunkProviderServer implements IChunkProvider { if (chunk != null && chunk.d) { // CraftBukkit start - move unload logic to own method @@ -34,5 +34,5 @@ index cc8602e..a40a6a4 100644 continue; } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0151-Optimize-UserCache-Thread-Safe.patch b/Spigot-Server-Patches/0151-Optimize-UserCache-Thread-Safe.patch index 4370e87d98..ce1008e0e9 100644 --- a/Spigot-Server-Patches/0151-Optimize-UserCache-Thread-Safe.patch +++ b/Spigot-Server-Patches/0151-Optimize-UserCache-Thread-Safe.patch @@ -1,4 +1,4 @@ -From be4a05986327340da70869849edc7c950329ebb9 Mon Sep 17 00:00:00 2001 +From 738cd6e34f6484356db8a62bf78ce72369689b67 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 16 May 2016 20:47:41 -0400 Subject: [PATCH] Optimize UserCache / Thread Safe @@ -10,10 +10,10 @@ Additionally, move Saving of the User cache to be done async, incase the user never changed the default setting for Spigot's save on stop only. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0392042..0f5502c 100644 +index 0ebc566..b771d3d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -505,7 +505,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs +@@ -500,7 +500,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs // Spigot start if (org.spigotmc.SpigotConfig.saveUserCacheOnStopOnly) { LOGGER.info("Saving usercache.json"); @@ -96,5 +96,5 @@ index ccfc755..989758c 100644 } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0161-Delay-Chunk-Unloads-based-on-Player-Movement.patch b/Spigot-Server-Patches/0161-Delay-Chunk-Unloads-based-on-Player-Movement.patch index 3bd300eaae..db39ceba21 100644 --- a/Spigot-Server-Patches/0161-Delay-Chunk-Unloads-based-on-Player-Movement.patch +++ b/Spigot-Server-Patches/0161-Delay-Chunk-Unloads-based-on-Player-Movement.patch @@ -1,4 +1,4 @@ -From 54b4193c57fd00f93d585132e60ae22d9f0310de Mon Sep 17 00:00:00 2001 +From 0341934c1b8dff5cc3be6e3093e23802fbc70162 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 18 Jun 2016 23:22:12 -0400 Subject: [PATCH] Delay Chunk Unloads based on Player Movement @@ -49,10 +49,10 @@ index a1f7e83..30c3d6c 100644 public final int locZ; private boolean m; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index a40a6a4..69bc836 100644 +index 804a0ca..1ba02f1 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -300,6 +300,19 @@ public class ChunkProviderServer implements IChunkProvider { +@@ -299,6 +299,19 @@ public class ChunkProviderServer implements IChunkProvider { } } } @@ -142,5 +142,5 @@ index 1994401..f62878d 100644 } -- -2.9.0 +2.9.0.windows.1 diff --git a/work/Bukkit b/work/Bukkit index 19b3d5ef4c..e73ec6b833 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 19b3d5ef4cd3cc4cef246dd9dba02199e19f5daf +Subproject commit e73ec6b833d245ce3c984d6da1cccb22fbe9f3e5 diff --git a/work/CraftBukkit b/work/CraftBukkit index 301db84d3d..7f9fbe54ba 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 301db84d3d85f5218f3ec590224071c04140bbe2 +Subproject commit 7f9fbe54baf0e73dc6a9a1ff58d67f82881507a4 diff --git a/work/Spigot b/work/Spigot index 9797151286..078e2f8b3c 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 9797151286c045686e3d09389353431efcc6034a +Subproject commit 078e2f8b3c4d46cfc88cef5a0818891aeca78a2e