From 01de058bf268a9f5c6c1d595236cd170c611bceb Mon Sep 17 00:00:00 2001
From: Zach Brown <zach@zachbr.io>
Date: Wed, 11 Dec 2019 18:03:31 -0600
Subject: [PATCH] Little more progress

Keep getting interrupted so not as much as I'd like :(
---
 ...-armor-stands-from-doing-entity-loo.patch} | 24 +++---
 ...-Vanished-players-don-t-have-rights.patch} | 40 +++++-----
 ...anytime-entities-change-to-guarante.patch} | 10 +--
 ...d-some-Debug-to-Chunk-Entity-slices.patch} | 20 ++---
 ...atch => 0259-EntityTransformedEvent.patch} | 22 +++---
 ...tch => 0260-SkeletonHorse-Additions.patch} | 28 +++----
 ...event-Saving-Bad-entities-to-chunks.patch} | 18 ++---
 ...n-t-call-getItemMeta-on-hasItemMeta.patch} | 57 +++++++-------
 ...ad-Entities-in-entityList-iteration.patch} | 50 ++++++-------
 ...64-MC-111480-Start-Entity-ID-s-at-1.patch} |  8 +-
 ...5-Implement-Expanded-ArmorStand-API.patch} | 18 ++---
 ...vent.patch => 0266-AnvilDamageEvent.patch} |  8 +-
 ...ent.patch => 0267-Add-TNTPrimeEvent.patch} | 20 ++---
 ...d-make-tab-spam-limits-configurable.patch} | 16 ++--
 ...h => 0269-Add-hand-to-bucket-events.patch} | 61 +++++++--------
 ...-Experience-should-save-as-Integers.patch} |  6 +-
 ...ent-rendering-skulls-from-same-user.patch} | 16 ++--
 ...d-Early-Warning-Feature-to-WatchDog.patch} | 24 +++---
 ...0273-Make-EnderDragon-implement-Mob.patch} |  6 +-
 ...4-Use-ConcurrentHashMap-in-JsonList.patch} |  6 +-
 ...5-Use-a-Queue-for-Queueing-Commands.patch} |  6 +-
 ...le-Entities-from-a-chunk-without-sn.patch} |  6 +-
 ...llow-disabling-armour-stand-ticking.patch} | 74 +++++++++----------
 ...timize-BlockPosition-helper-methods.patch} | 26 ++++---
 ...ts-from-world-player-list-not-serve.patch} | 30 ++++----
 ...tore-vanlla-default-mob-spawn-range.patch} |  6 +-
 ...pers.patch => 0281-Optimize-Hoppers.patch} | 63 ++++++++--------
 ...82-Optimize-CraftBlockData-Creation.patch} | 12 +--
 ...-124320.patch => 0283-Fix-MC-124320.patch} | 16 ++--
 ...tch => 0284-Slime-Pathfinder-Events.patch} | 44 +++++------
 ...e-speed-for-water-flowing-over-lava.patch} | 35 +++++----
 ... => 0286-Optimize-RegistryMaterials.patch} | 27 +++----
 ...ch => 0287-Add-PhantomPreSpawnEvent.patch} | 18 ++---
 ....patch => 0288-Add-More-Creeper-API.patch} | 14 ++--
 ...=> 0289-Inventory-removeItemAnySlot.patch} |  6 +-
 ...oadChunk-int-int-false-load-unconve.patch} |  8 +-
 ...ray-tracing-methods-to-LivingEntity.patch} |  8 +-
 ...-attack-cooldown-methods-for-Player.patch} | 30 ++++----
 ...uce-IO-ops-opening-a-new-region-file.patch |  0
 ...-Do-not-load-chunks-for-light-checks.patch |  0
 ...o-use-a-versioned-world-folder-for-t.patch |  0
 ...tect-and-repair-corrupt-Region-Files.patch |  0
 42 files changed, 437 insertions(+), 450 deletions(-)
 rename Spigot-Server-Patches/{0260-Option-to-prevent-armor-stands-from-doing-entity-loo.patch => 0255-Option-to-prevent-armor-stands-from-doing-entity-loo.patch} (71%)
 rename Spigot-Server-Patches/{0261-Vanished-players-don-t-have-rights.patch => 0256-Vanished-players-don-t-have-rights.patch} (84%)
 rename Spigot-Server-Patches/{0262-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch => 0257-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch} (75%)
 rename Spigot-Server-Patches/{0263-Add-some-Debug-to-Chunk-Entity-slices.patch => 0258-Add-some-Debug-to-Chunk-Entity-slices.patch} (82%)
 rename Spigot-Server-Patches/{0264-EntityTransformedEvent.patch => 0259-EntityTransformedEvent.patch} (89%)
 rename Spigot-Server-Patches/{0265-SkeletonHorse-Additions.patch => 0260-SkeletonHorse-Additions.patch} (82%)
 rename Spigot-Server-Patches/{0266-Prevent-Saving-Bad-entities-to-chunks.patch => 0261-Prevent-Saving-Bad-entities-to-chunks.patch} (80%)
 rename Spigot-Server-Patches/{0267-Don-t-call-getItemMeta-on-hasItemMeta.patch => 0262-Don-t-call-getItemMeta-on-hasItemMeta.patch} (65%)
 rename Spigot-Server-Patches/{0268-Ignore-Dead-Entities-in-entityList-iteration.patch => 0263-Ignore-Dead-Entities-in-entityList-iteration.patch} (82%)
 rename Spigot-Server-Patches/{0270-MC-111480-Start-Entity-ID-s-at-1.patch => 0264-MC-111480-Start-Entity-ID-s-at-1.patch} (85%)
 rename Spigot-Server-Patches/{0271-Implement-Expanded-ArmorStand-API.patch => 0265-Implement-Expanded-ArmorStand-API.patch} (90%)
 rename Spigot-Server-Patches/{0272-AnvilDamageEvent.patch => 0266-AnvilDamageEvent.patch} (89%)
 rename Spigot-Server-Patches/{0273-Add-TNTPrimeEvent.patch => 0267-Add-TNTPrimeEvent.patch} (93%)
 rename Spigot-Server-Patches/{0274-Break-up-and-make-tab-spam-limits-configurable.patch => 0268-Break-up-and-make-tab-spam-limits-configurable.patch} (89%)
 rename Spigot-Server-Patches/{0275-Add-hand-to-bucket-events.patch => 0269-Add-hand-to-bucket-events.patch} (81%)
 rename Spigot-Server-Patches/{0276-MC-135506-Experience-should-save-as-Integers.patch => 0270-MC-135506-Experience-should-save-as-Integers.patch} (92%)
 rename Spigot-Server-Patches/{0277-Fix-client-rendering-skulls-from-same-user.patch => 0271-Fix-client-rendering-skulls-from-same-user.patch} (94%)
 rename Spigot-Server-Patches/{0278-Add-Early-Warning-Feature-to-WatchDog.patch => 0272-Add-Early-Warning-Feature-to-WatchDog.patch} (94%)
 rename Spigot-Server-Patches/{0279-Make-EnderDragon-implement-Mob.patch => 0273-Make-EnderDragon-implement-Mob.patch} (92%)
 rename Spigot-Server-Patches/{0281-Use-ConcurrentHashMap-in-JsonList.patch => 0274-Use-ConcurrentHashMap-in-JsonList.patch} (97%)
 rename Spigot-Server-Patches/{0282-Use-a-Queue-for-Queueing-Commands.patch => 0275-Use-a-Queue-for-Queueing-Commands.patch} (94%)
 rename Spigot-Server-Patches/{0283-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch => 0276-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch} (92%)
 rename Spigot-Server-Patches/{0284-Allow-disabling-armour-stand-ticking.patch => 0277-Allow-disabling-armour-stand-ticking.patch} (82%)
 rename Spigot-Server-Patches/{0285-Optimize-BlockPosition-helper-methods.patch => 0278-Optimize-BlockPosition-helper-methods.patch} (85%)
 rename Spigot-Server-Patches/{0286-Send-nearby-packets-from-world-player-list-not-serve.patch => 0279-Send-nearby-packets-from-world-player-list-not-serve.patch} (82%)
 rename Spigot-Server-Patches/{0287-Restore-vanlla-default-mob-spawn-range.patch => 0280-Restore-vanlla-default-mob-spawn-range.patch} (86%)
 rename Spigot-Server-Patches/{0288-Optimize-Hoppers.patch => 0281-Optimize-Hoppers.patch} (89%)
 rename Spigot-Server-Patches/{0289-Optimize-CraftBlockData-Creation.patch => 0282-Optimize-CraftBlockData-Creation.patch} (90%)
 rename Spigot-Server-Patches/{0290-Fix-MC-124320.patch => 0283-Fix-MC-124320.patch} (87%)
 rename Spigot-Server-Patches/{0291-Slime-Pathfinder-Events.patch => 0284-Slime-Pathfinder-Events.patch} (84%)
 rename Spigot-Server-Patches/{0292-Configurable-speed-for-water-flowing-over-lava.patch => 0285-Configurable-speed-for-water-flowing-over-lava.patch} (75%)
 rename Spigot-Server-Patches/{0293-Optimize-RegistryMaterials.patch => 0286-Optimize-RegistryMaterials.patch} (61%)
 rename Spigot-Server-Patches/{0294-Add-PhantomPreSpawnEvent.patch => 0287-Add-PhantomPreSpawnEvent.patch} (90%)
 rename Spigot-Server-Patches/{0295-Add-More-Creeper-API.patch => 0288-Add-More-Creeper-API.patch} (90%)
 rename Spigot-Server-Patches/{0296-Inventory-removeItemAnySlot.patch => 0289-Inventory-removeItemAnySlot.patch} (95%)
 rename Spigot-Server-Patches/{0297-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch => 0290-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch} (85%)
 rename Spigot-Server-Patches/{0298-Add-ray-tracing-methods-to-LivingEntity.patch => 0291-Add-ray-tracing-methods-to-LivingEntity.patch} (96%)
 rename Spigot-Server-Patches/{0299-Expose-attack-cooldown-methods-for-Player.patch => 0292-Expose-attack-cooldown-methods-for-Player.patch} (70%)
 rename removed/{ => 1.15}/0078-Reduce-IO-ops-opening-a-new-region-file.patch (100%)
 rename removed/{ => 1.15}/0081-Do-not-load-chunks-for-light-checks.patch (100%)
 rename {Spigot-Server-Patches => removed/1.15}/0269-Provide-option-to-use-a-versioned-world-folder-for-t.patch (100%)
 rename {Spigot-Server-Patches => removed/1.15}/0280-Detect-and-repair-corrupt-Region-Files.patch (100%)

diff --git a/Spigot-Server-Patches/0260-Option-to-prevent-armor-stands-from-doing-entity-loo.patch b/Spigot-Server-Patches/0255-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
similarity index 71%
rename from Spigot-Server-Patches/0260-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
rename to Spigot-Server-Patches/0255-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
index 6d71112cdd..7af487d5e3 100644
--- a/Spigot-Server-Patches/0260-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
+++ b/Spigot-Server-Patches/0255-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
@@ -1,30 +1,28 @@
-From 0b4c26afdef9e3616c02b0d712527b266630fd31 Mon Sep 17 00:00:00 2001
+From 76c9cc9efc90a7643e725cad6fec6e30170cd4e5 Mon Sep 17 00:00:00 2001
 From: Hugo Manrique <hugmanrique@gmail.com>
 Date: Mon, 23 Jul 2018 12:57:39 +0200
 Subject: [PATCH] Option to prevent armor stands from doing entity lookups
 
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 1ffcebd3c..721685704 100644
+index b4e5948cc..0a99b8fe9 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-@@ -326,6 +326,11 @@ public class PaperWorldConfig {
+@@ -386,4 +386,9 @@ public class PaperWorldConfig {
+             log("Bed Search Radius: " + bedSearchRadius);
          }
      }
- 
++
 +    public boolean armorStandEntityLookups = true;
 +    private void armorStandEntityLookups() {
 +        armorStandEntityLookups = getBoolean("armor-stands-do-collision-entity-lookups", true);
 +    }
-+
-     public int maxCollisionsPerEntity;
-     private void maxEntityCollision() {
-         maxCollisionsPerEntity = getInt( "max-entity-collisions", this.spigotConfig.getInt("max-entity-collisions", 8) );
+ }
 diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 95c809ba9..98195fb16 100644
+index 7fcc8c52d..eea3a542d 100644
 --- a/src/main/java/net/minecraft/server/World.java
 +++ b/src/main/java/net/minecraft/server/World.java
-@@ -868,6 +868,14 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose
+@@ -788,6 +788,14 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
          }
      }
  
@@ -32,13 +30,13 @@ index 95c809ba9..98195fb16 100644
 +    @Override
 +    public boolean getCubes(@Nullable Entity entity, AxisAlignedBB axisAlignedBB) {
 +        if (entity instanceof EntityArmorStand && !entity.world.paperConfig.armorStandEntityLookups) return false;
-+        return GeneratorAccess.super.getCubes(entity, axisAlignedBB);
++        return GeneratorAccess.super.getCubes(entity, axisAlignedBB)
 +    }
 +    // Paper end
 +
-     public boolean a(AxisAlignedBB axisalignedbb) {
+     public boolean b(AxisAlignedBB axisalignedbb) {
          int i = MathHelper.floor(axisalignedbb.minX);
          int j = MathHelper.f(axisalignedbb.maxX);
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0261-Vanished-players-don-t-have-rights.patch b/Spigot-Server-Patches/0256-Vanished-players-don-t-have-rights.patch
similarity index 84%
rename from Spigot-Server-Patches/0261-Vanished-players-don-t-have-rights.patch
rename to Spigot-Server-Patches/0256-Vanished-players-don-t-have-rights.patch
index 50f722c15e..f14f95b071 100644
--- a/Spigot-Server-Patches/0261-Vanished-players-don-t-have-rights.patch
+++ b/Spigot-Server-Patches/0256-Vanished-players-don-t-have-rights.patch
@@ -1,14 +1,14 @@
-From f877fd71860241598d881907e582804237b726cc Mon Sep 17 00:00:00 2001
+From ed7ca392c8ac6f2e1acb67904f3da1bc65cf5aed Mon Sep 17 00:00:00 2001
 From: Hugo Manrique <hugmanrique@gmail.com>
 Date: Mon, 23 Jul 2018 14:22:26 +0200
 Subject: [PATCH] Vanished players don't have rights
 
 
 diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 9241874139..9776a29923 100644
+index 3458333c9..6ef5d2ebd 100644
 --- a/src/main/java/net/minecraft/server/Entity.java
 +++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -97,7 +97,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -98,7 +98,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
      private static double e = 1.0D;
      private final EntityTypes<?> f;
      private int id;
@@ -16,9 +16,9 @@ index 9241874139..9776a29923 100644
 +    public boolean i; public final boolean blocksEntitySpawning() { return this.i; } // Paper - OBFHELPER
      public final List<Entity> passengers;
      protected int j;
-     private Entity vehicle;
+     @Nullable
 diff --git a/src/main/java/net/minecraft/server/IBlockData.java b/src/main/java/net/minecraft/server/IBlockData.java
-index 3328a84792..367b02800a 100644
+index 8d9b9af9b..08d884649 100644
 --- a/src/main/java/net/minecraft/server/IBlockData.java
 +++ b/src/main/java/net/minecraft/server/IBlockData.java
 @@ -146,6 +146,7 @@ public class IBlockData extends BlockDataAbstract<Block, IBlockData> implements
@@ -30,21 +30,21 @@ index 3328a84792..367b02800a 100644
          return this.getBlock().b(this, iblockaccess, blockposition, voxelshapecollision);
      }
 diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java
-index c34c635a85..0c8b11bbec 100644
+index ab875a736..aed353365 100644
 --- a/src/main/java/net/minecraft/server/ItemBlock.java
 +++ b/src/main/java/net/minecraft/server/ItemBlock.java
 @@ -136,7 +136,8 @@ public class ItemBlock extends Item {
          EntityHuman entityhuman = blockactioncontext.getEntity();
          VoxelShapeCollision voxelshapecollision = entityhuman == null ? VoxelShapeCollision.a() : VoxelShapeCollision.a((Entity) entityhuman);
          // CraftBukkit start - store default return
--        boolean defaultReturn = (!this.d() || iblockdata.canPlace(blockactioncontext.getWorld(), blockactioncontext.getClickPosition())) && blockactioncontext.getWorld().a(iblockdata, blockactioncontext.getClickPosition(), voxelshapecollision);
+-        boolean defaultReturn = (!this.T_() || iblockdata.canPlace(blockactioncontext.getWorld(), blockactioncontext.getClickPosition())) && blockactioncontext.getWorld().a(iblockdata, blockactioncontext.getClickPosition(), voxelshapecollision);
 +        World world = blockactioncontext.getWorld(); // Paper
-+        boolean defaultReturn = (!this.d() || iblockdata.canPlace(world, blockactioncontext.getClickPosition())) && world.checkEntityCollision(iblockdata, entityhuman, voxelshapecollision, blockactioncontext.getClickPosition(), true); // Paper
++        boolean defaultReturn = (!this.T_() || iblockdata.canPlace(blockactioncontext.getWorld(), blockactioncontext.getClickPosition())) && world.checkEntityCollision(iblockdata, entityhuman, voxelshapecollision, blockactioncontext.getClickPosition(), true); // Paper
          org.bukkit.entity.Player player = (blockactioncontext.getEntity() instanceof EntityPlayer) ? (org.bukkit.entity.Player) blockactioncontext.getEntity().getBukkitEntity() : null;
  
          BlockCanBuildEvent event = new BlockCanBuildEvent(CraftBlock.at(blockactioncontext.getWorld(), blockactioncontext.getClickPosition()), player, CraftBlockData.fromData(iblockdata), defaultReturn);
 diff --git a/src/main/java/net/minecraft/server/VoxelShape.java b/src/main/java/net/minecraft/server/VoxelShape.java
-index 3801b3f21d..092f02cc2f 100644
+index 0f64a3c05..0f95bcbcc 100644
 --- a/src/main/java/net/minecraft/server/VoxelShape.java
 +++ b/src/main/java/net/minecraft/server/VoxelShape.java
 @@ -46,6 +46,7 @@ public abstract class VoxelShape {
@@ -56,7 +56,7 @@ index 3801b3f21d..092f02cc2f 100644
          return (VoxelShape) (this.isEmpty() ? VoxelShapes.a() : new VoxelShapeArray(this.a, new DoubleListOffset(this.a(EnumDirection.EnumAxis.X), d0), new DoubleListOffset(this.a(EnumDirection.EnumAxis.Y), d1), new DoubleListOffset(this.a(EnumDirection.EnumAxis.Z), d2)));
      }
 diff --git a/src/main/java/net/minecraft/server/VoxelShapes.java b/src/main/java/net/minecraft/server/VoxelShapes.java
-index b8659f703c..c8bd4b7034 100644
+index 143be566c..08c83c62d 100644
 --- a/src/main/java/net/minecraft/server/VoxelShapes.java
 +++ b/src/main/java/net/minecraft/server/VoxelShapes.java
 @@ -33,6 +33,7 @@ public final class VoxelShapes {
@@ -74,19 +74,19 @@ index b8659f703c..c8bd4b7034 100644
 +    public static final boolean applyOperation(VoxelShape voxelshape, VoxelShape voxelshape1, OperatorBoolean operatorboolean) { return VoxelShapes.c(voxelshape, voxelshape1, operatorboolean); } // Paper - OBFHELPER
      public static boolean c(VoxelShape voxelshape, VoxelShape voxelshape1, OperatorBoolean operatorboolean) {
          if (operatorboolean.apply(false, false)) {
-             throw new IllegalArgumentException();
+             throw (IllegalArgumentException) SystemUtils.c(new IllegalArgumentException());
 diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index cacc18ca41..c60279da8f 100644
+index eea3a542d..bdbabe6a0 100644
 --- a/src/main/java/net/minecraft/server/World.java
 +++ b/src/main/java/net/minecraft/server/World.java
-@@ -164,6 +164,48 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose
+@@ -164,6 +164,46 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
          this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime);
      }
  
 +    // Paper start
 +    // ret true if no collision
 +    public final boolean checkEntityCollision(IBlockData data, Entity source, VoxelShapeCollision voxelshapedcollision,
-+                                        BlockPosition position, boolean checkCanSee) {
++                                              BlockPosition position, boolean checkCanSee) {
 +        // Copied from IWorldReader#a(IBlockData, BlockPosition, VoxelShapeCollision) & EntityAccess#a(Entity, VoxelShape)
 +        VoxelShape voxelshape = data.getCollisionShape(this, position, voxelshapedcollision);
 +        if (voxelshape.isEmpty()) {
@@ -94,18 +94,16 @@ index cacc18ca41..c60279da8f 100644
 +        }
 +
 +        voxelshape = voxelshape.offset((double) position.getX(), (double) position.getY(), (double) position.getZ());
-+
 +        if (voxelshape.isEmpty()) {
 +            return true;
 +        }
 +
 +        List<Entity> entities = this.getEntities(null, voxelshape.getBoundingBox());
-+
 +        for (int i = 0, len = entities.size(); i < len; ++i) {
 +            Entity entity = entities.get(i);
 +
 +            if (checkCanSee && source instanceof EntityPlayer && entity instanceof EntityPlayer
-+                && !((EntityPlayer)source).getBukkitEntity().canSee(((EntityPlayer)entity).getBukkitEntity())) {
++                && !((EntityPlayer) source).getBukkitEntity().canSee(((EntityPlayer) entity).getBukkitEntity())) {
 +                continue;
 +            }
 +
@@ -126,10 +124,10 @@ index cacc18ca41..c60279da8f 100644
 +    // Paper end
 +
      @Override
-     public BiomeBase getBiome(BlockPosition blockposition) {
-         IChunkProvider ichunkprovider = this.getChunkProvider();
+     public boolean p_() {
+         return this.isClientSide;
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index ade1d42f7e..ac4369dcef 100644
+index 7967222d9..e954c59d5 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -1166,6 +1166,14 @@ public class CraftEventFactory {
@@ -148,5 +146,5 @@ index ade1d42f7e..ac4369dcef 100644
          return event;
      }
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0262-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch b/Spigot-Server-Patches/0257-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch
similarity index 75%
rename from Spigot-Server-Patches/0262-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch
rename to Spigot-Server-Patches/0257-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch
index 0b664168d9..955917ec4e 100644
--- a/Spigot-Server-Patches/0262-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch
+++ b/Spigot-Server-Patches/0257-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch
@@ -1,4 +1,4 @@
-From bdc8b4e008a43b7abca0d75d8bc9f3ed61a82fd2 Mon Sep 17 00:00:00 2001
+From ad87d83601ee698012d473208eb47ce44ddf42c3 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Mon, 23 Jul 2018 22:18:31 -0400
 Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it
@@ -6,10 +6,10 @@ Subject: [PATCH] Mark chunk dirty anytime entities change to guarantee it
 
 
 diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
-index 1da80e244b..4c0fc8f7ea 100644
+index 1efddb533..6774c6480 100644
 --- a/src/main/java/net/minecraft/server/Chunk.java
 +++ b/src/main/java/net/minecraft/server/Chunk.java
-@@ -416,6 +416,7 @@ public class Chunk implements IChunkAccess {
+@@ -410,6 +410,7 @@ public class Chunk implements IChunkAccess {
          entity.chunkY = k;
          entity.chunkZ = this.loc.z;
          this.entitySlices[k].add(entity);
@@ -17,7 +17,7 @@ index 1da80e244b..4c0fc8f7ea 100644
      }
  
      @Override
-@@ -442,6 +443,7 @@ public class Chunk implements IChunkAccess {
+@@ -436,6 +437,7 @@ public class Chunk implements IChunkAccess {
              return;
          }
          entityCounts.decrement(entity.getMinecraftKeyString());
@@ -26,5 +26,5 @@ index 1da80e244b..4c0fc8f7ea 100644
      }
  
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0263-Add-some-Debug-to-Chunk-Entity-slices.patch b/Spigot-Server-Patches/0258-Add-some-Debug-to-Chunk-Entity-slices.patch
similarity index 82%
rename from Spigot-Server-Patches/0263-Add-some-Debug-to-Chunk-Entity-slices.patch
rename to Spigot-Server-Patches/0258-Add-some-Debug-to-Chunk-Entity-slices.patch
index 7b4853a662..4702642e7a 100644
--- a/Spigot-Server-Patches/0263-Add-some-Debug-to-Chunk-Entity-slices.patch
+++ b/Spigot-Server-Patches/0258-Add-some-Debug-to-Chunk-Entity-slices.patch
@@ -1,4 +1,4 @@
-From 5e4738fb8845901178678c562879409f2aae83e5 Mon Sep 17 00:00:00 2001
+From 5ad8734def245b4eaeb12a9271d1d878e654f98a Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Mon, 23 Jul 2018 22:44:23 -0400
 Subject: [PATCH] Add some Debug to Chunk Entity slices
@@ -9,10 +9,10 @@ This should hopefully avoid duplicate entities ever being created
 if the entity was to end up in 2 different chunk slices
 
 diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
-index 4c0fc8f7ea..a74e389d14 100644
+index 6774c6480..b156f5428 100644
 --- a/src/main/java/net/minecraft/server/Chunk.java
 +++ b/src/main/java/net/minecraft/server/Chunk.java
-@@ -408,6 +408,25 @@ public class Chunk implements IChunkAccess {
+@@ -402,6 +402,25 @@ public class Chunk implements IChunkAccess {
          if (k >= this.entitySlices.length) {
              k = this.entitySlices.length - 1;
          }
@@ -38,7 +38,7 @@ index 4c0fc8f7ea..a74e389d14 100644
  
          if (!entity.inChunk || entity.getCurrentChunk() != this) entityCounts.increment(entity.getMinecraftKeyString()); // Paper
          entity.inChunk = true;
-@@ -416,6 +435,7 @@ public class Chunk implements IChunkAccess {
+@@ -410,6 +429,7 @@ public class Chunk implements IChunkAccess {
          entity.chunkY = k;
          entity.chunkZ = this.loc.z;
          this.entitySlices[k].add(entity);
@@ -46,7 +46,7 @@ index 4c0fc8f7ea..a74e389d14 100644
          this.markDirty(); // Paper
      }
  
-@@ -439,6 +459,9 @@ public class Chunk implements IChunkAccess {
+@@ -433,6 +453,9 @@ public class Chunk implements IChunkAccess {
          }
          // Paper start
          if (entity.currentChunk != null && entity.currentChunk.get() == this) entity.setCurrentChunk(null);
@@ -57,17 +57,17 @@ index 4c0fc8f7ea..a74e389d14 100644
              return;
          }
 diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 9776a29923..701090c11e 100644
+index 6ef5d2ebd..be8f6ac99 100644
 --- a/src/main/java/net/minecraft/server/Entity.java
 +++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -67,6 +67,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -71,6 +71,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
              }
          }
      };
 +    List<Entity> entitySlice = null;
      // Paper end
-     static boolean isLevelAtLeast(NBTTagCompound tag, int level) {
-         return tag.hasKey("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level;
+ 
+     public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0264-EntityTransformedEvent.patch b/Spigot-Server-Patches/0259-EntityTransformedEvent.patch
similarity index 89%
rename from Spigot-Server-Patches/0264-EntityTransformedEvent.patch
rename to Spigot-Server-Patches/0259-EntityTransformedEvent.patch
index 37c0e51f71..0429e12bd4 100644
--- a/Spigot-Server-Patches/0264-EntityTransformedEvent.patch
+++ b/Spigot-Server-Patches/0259-EntityTransformedEvent.patch
@@ -1,14 +1,14 @@
-From 5372197b746a06b86ed5a30e0cc24f048a583a99 Mon Sep 17 00:00:00 2001
+From 0c350de8da85d6bd775b71fa4219cce816aac3b9 Mon Sep 17 00:00:00 2001
 From: Anthony MacAllister <anthonymmacallister@gmail.com>
 Date: Thu, 26 Jul 2018 15:30:03 -0400
 Subject: [PATCH] EntityTransformedEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java
-index 3b1b0b599..1363069ff 100644
+index 1fff4ce63..efde7bd1d 100644
 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java
 +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java
-@@ -110,6 +110,7 @@ public class EntityMushroomCow extends EntityCow {
+@@ -116,6 +116,7 @@ public class EntityMushroomCow extends EntityCow {
                      if (CraftEventFactory.callEntityTransformEvent(this, entitycow, EntityTransformEvent.TransformReason.SHEARED).isCancelled()) {
                          return false;
                      }
@@ -17,10 +17,10 @@ index 3b1b0b599..1363069ff 100644
  
                      this.die(); // CraftBukkit - from above
 diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
-index a4033a666..c2ccb8589 100644
+index 4aa947e24..7ea55c939 100644
 --- a/src/main/java/net/minecraft/server/EntityVillager.java
 +++ b/src/main/java/net/minecraft/server/EntityVillager.java
-@@ -711,6 +711,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
+@@ -696,6 +696,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
          if (CraftEventFactory.callEntityTransformEvent(this, entitywitch, EntityTransformEvent.TransformReason.LIGHTNING).isCancelled()) {
              return;
          }
@@ -29,10 +29,10 @@ index a4033a666..c2ccb8589 100644
          // CraftBukkit end
          this.die();
 diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
-index a3af14630..832375f27 100644
+index 6333d2234..c8e4dcdac 100644
 --- a/src/main/java/net/minecraft/server/EntityZombie.java
 +++ b/src/main/java/net/minecraft/server/EntityZombie.java
-@@ -252,6 +252,7 @@ public class EntityZombie extends EntityMonster {
+@@ -257,6 +257,7 @@ public class EntityZombie extends EntityMonster {
                  return;
              }
              // CraftBukkit end
@@ -40,7 +40,7 @@ index a3af14630..832375f27 100644
              this.world.addEntity(entityzombie, CreatureSpawnEvent.SpawnReason.DROWNED); // CraftBukkit - added spawn reason
              this.die();
          }
-@@ -424,6 +425,7 @@ public class EntityZombie extends EntityMonster {
+@@ -463,6 +464,7 @@ public class EntityZombie extends EntityMonster {
              if (CraftEventFactory.callEntityTransformEvent(this, entityzombievillager, EntityTransformEvent.TransformReason.INFECTION).isCancelled()) {
                  return;
              }
@@ -49,10 +49,10 @@ index a3af14630..832375f27 100644
              this.world.addEntity(entityzombievillager, CreatureSpawnEvent.SpawnReason.INFECTION); // CraftBukkit - add SpawnReason
              // CraftBukkit end
 diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java
-index edb0aa220..d2bd3bb31 100644
+index 91cac5d53..8082fa617 100644
 --- a/src/main/java/net/minecraft/server/EntityZombieVillager.java
 +++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java
-@@ -172,6 +172,7 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo
+@@ -197,6 +197,7 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo
              ((ZombieVillager) getBukkitEntity()).setConversionTime(-1); // SPIGOT-5208: End conversion to stop event spam
              return;
          }
@@ -61,5 +61,5 @@ index edb0aa220..d2bd3bb31 100644
          worldserver.addEntity(entityvillager, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CURED); // CraftBukkit - add SpawnReason
          // CraftBukkit end
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0265-SkeletonHorse-Additions.patch b/Spigot-Server-Patches/0260-SkeletonHorse-Additions.patch
similarity index 82%
rename from Spigot-Server-Patches/0265-SkeletonHorse-Additions.patch
rename to Spigot-Server-Patches/0260-SkeletonHorse-Additions.patch
index 01865031de..7e0f326e09 100644
--- a/Spigot-Server-Patches/0265-SkeletonHorse-Additions.patch
+++ b/Spigot-Server-Patches/0260-SkeletonHorse-Additions.patch
@@ -1,19 +1,19 @@
-From b1dcd3fe0f0a7fb39c46b90ee97048a337b8e7ec Mon Sep 17 00:00:00 2001
+From 2614673448fe2d3757e44f87d549f4b458195591 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Fri, 27 Jul 2018 22:36:31 -0500
 Subject: [PATCH] SkeletonHorse Additions
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
-index ab6deaaa89..0aa77914ca 100644
+index 621f2afee..290cb9337 100644
 --- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
 +++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
 @@ -6,7 +6,7 @@ public class EntityHorseSkeleton extends EntityHorseAbstract {
  
-     private final PathfinderGoalHorseTrap bI = new PathfinderGoalHorseTrap(this);
-     private boolean bJ;
--    private int bK;
-+    private int bK;public int getTrapTime() { return this.bK; } // Paper - OBFHELPER
+     private final PathfinderGoalHorseTrap bF = new PathfinderGoalHorseTrap(this);
+     private boolean bG;
+-    private int bH;
++    private int bH; public int getTrapTime() { return this.bH; } // Paper - OBFHELPER
  
      public EntityHorseSkeleton(EntityTypes<? extends EntityHorseSkeleton> entitytypes, World world) {
          super(entitytypes, world);
@@ -21,17 +21,17 @@ index ab6deaaa89..0aa77914ca 100644
          return 0.96F;
      }
  
-+    public boolean isTrap() { return this.dV(); } // Paper - OBFHELPER
-     public boolean dV() {
-         return this.bJ;
++    public boolean isTrap() { return this.eq(); } // Paper - OBFHELPER
+     public boolean eq() {
+         return this.bG;
      }
  
 +    public void setTrap(boolean trap) { this.r(trap); } // Paper - OBFHELPER
      public void r(boolean flag) {
-         if (flag != this.bJ) {
-             this.bJ = flag;
+         if (flag != this.bG) {
+             this.bG = flag;
 diff --git a/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java b/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java
-index 7b0a6f82fb..f093744136 100644
+index dfe5a6358..37626f925 100644
 --- a/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java
 +++ b/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java
 @@ -15,6 +15,7 @@ public class PathfinderGoalHorseTrap extends PathfinderGoal {
@@ -43,7 +43,7 @@ index 7b0a6f82fb..f093744136 100644
  
          this.a.r(false);
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java
-index e822c2200d..2a7d1d4ec2 100644
+index e822c2200..2a7d1d4ec 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSkeletonHorse.java
 @@ -26,4 +26,26 @@ public class CraftSkeletonHorse extends CraftAbstractHorse implements SkeletonHo
@@ -74,5 +74,5 @@ index e822c2200d..2a7d1d4ec2 100644
 +    // Paper end
  }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0266-Prevent-Saving-Bad-entities-to-chunks.patch b/Spigot-Server-Patches/0261-Prevent-Saving-Bad-entities-to-chunks.patch
similarity index 80%
rename from Spigot-Server-Patches/0266-Prevent-Saving-Bad-entities-to-chunks.patch
rename to Spigot-Server-Patches/0261-Prevent-Saving-Bad-entities-to-chunks.patch
index 70f4394b3a..dd2e8d86a3 100644
--- a/Spigot-Server-Patches/0266-Prevent-Saving-Bad-entities-to-chunks.patch
+++ b/Spigot-Server-Patches/0261-Prevent-Saving-Bad-entities-to-chunks.patch
@@ -1,4 +1,4 @@
-From 91043567437b4d6e6a453fd63b75599c3140146f Mon Sep 17 00:00:00 2001
+From 67ed4f8755937acbbb51582709bf1621185783c4 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Thu, 26 Jul 2018 00:11:12 -0400
 Subject: [PATCH] Prevent Saving Bad entities to chunks
@@ -18,10 +18,10 @@ an invalid entity.
 This should reduce log occurrences of dupe uuid messages.
 
 diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
-index 03be77299b..e778c2e857 100644
+index 4af5a230b..6371f2f5b 100644
 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
 +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
-@@ -319,6 +319,7 @@ public class ChunkRegionLoader {
+@@ -300,6 +300,7 @@ public class ChunkRegionLoader {
          nbttagcompound1.set("TileEntities", nbttaglist1);
          NBTTagList nbttaglist2 = new NBTTagList();
  
@@ -29,13 +29,13 @@ index 03be77299b..e778c2e857 100644
          if (ichunkaccess.getChunkStatus().getType() == ChunkStatus.Type.LEVELCHUNK) {
              Chunk chunk = (Chunk) ichunkaccess;
  
-@@ -330,13 +331,29 @@ public class ChunkRegionLoader {
+@@ -311,13 +312,29 @@ public class ChunkRegionLoader {
                  while (iterator1.hasNext()) {
                      Entity entity = (Entity) iterator1.next();
-                     NBTTagCompound nbttagcompound3 = new NBTTagCompound();
+                     NBTTagCompound nbttagcompound4 = new NBTTagCompound();
 -
 +                    // Paper start
-+                    if ((int)Math.floor(entity.locX) >> 4 != chunk.getPos().x || (int)Math.floor(entity.locZ) >> 4 != chunk.getPos().z) {
++                    if ((int) Math.floor(entity.locX()) >> 4 != chunk.getPos().x || (int) Math.floor(entity.locZ()) >> 4 != chunk.getPos().z) {
 +                        LogManager.getLogger().warn(entity + " is not in this chunk, skipping save. This a bug fix to a vanilla bug. Do not report this to PaperMC please.");
 +                        toUpdate.add(entity);
 +                        continue;
@@ -44,9 +44,9 @@ index 03be77299b..e778c2e857 100644
 +                        continue;
 +                    }
 +                    // Paper end
-                     if (entity.d(nbttagcompound3)) {
+                     if (entity.d(nbttagcompound4)) {
                          chunk.d(true);
-                         nbttaglist2.add(nbttagcompound3);
+                         nbttaglist2.add(nbttagcompound4);
                      }
                  }
              }
@@ -61,5 +61,5 @@ index 03be77299b..e778c2e857 100644
              ProtoChunk protochunk = (ProtoChunk) ichunkaccess;
  
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0267-Don-t-call-getItemMeta-on-hasItemMeta.patch b/Spigot-Server-Patches/0262-Don-t-call-getItemMeta-on-hasItemMeta.patch
similarity index 65%
rename from Spigot-Server-Patches/0267-Don-t-call-getItemMeta-on-hasItemMeta.patch
rename to Spigot-Server-Patches/0262-Don-t-call-getItemMeta-on-hasItemMeta.patch
index 8eea99fca7..ec7bfd6774 100644
--- a/Spigot-Server-Patches/0267-Don-t-call-getItemMeta-on-hasItemMeta.patch
+++ b/Spigot-Server-Patches/0262-Don-t-call-getItemMeta-on-hasItemMeta.patch
@@ -1,4 +1,4 @@
-From 244d4a3b61d4250cd14c16f475900a0a31e588bf Mon Sep 17 00:00:00 2001
+From 5899397fadd311c18af6469e0aaad56e968f03d2 Mon Sep 17 00:00:00 2001
 From: Hugo Manrique <hugmanrique@gmail.com>
 Date: Thu, 26 Jul 2018 14:10:23 +0200
 Subject: [PATCH] Don't call getItemMeta on hasItemMeta
@@ -11,10 +11,10 @@ Returns true if getDamage() == 0 or has damage tag or other tag is set.
 Check the `ItemMetaTest#testTaggedButNotMeta` method to see how this method behaves.
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
-index d273f24da..b1ea5b93d 100644
+index 553f60987..ba8fbef85 100644
 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
 +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
-@@ -545,7 +545,7 @@ public final class CraftItemStack extends ItemStack {
+@@ -552,7 +552,7 @@ public final class CraftItemStack extends ItemStack {
  
      @Override
      public boolean hasItemMeta() {
@@ -24,36 +24,28 @@ index d273f24da..b1ea5b93d 100644
  
      static boolean hasItemMeta(net.minecraft.server.ItemStack item) {
 diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
-index 919f2ffa9..4726386ef 100644
+index 3a82bede7..d73141839 100644
 --- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
 +++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
-@@ -4,6 +4,7 @@ import static org.hamcrest.Matchers.*;
- import static org.junit.Assert.*;
- import java.util.ArrayList;
- import java.util.Arrays;
-+import java.util.Collections; // Paper
- import java.util.List;
- import java.util.UUID;
- import com.destroystokyo.paper.inventory.meta.ArmorStandMeta; // Paper
-@@ -181,7 +182,47 @@ public class ItemMetaTest extends AbstractTestingBase {
+@@ -2,10 +2,9 @@ package org.bukkit.craftbukkit.inventory;
  
-         assertThat("noTag and enchanted stacks should not be similar", noTag.isSimilar(enchanted), is(false));
-         assertThat("noTag and enchanted stacks should not be equal", noTag.equals(enchanted), is(false));
+ import static org.hamcrest.Matchers.*;
+ import static org.junit.Assert.*;
+-import java.util.ArrayList;
+-import java.util.Arrays;
+-import java.util.List;
+-import java.util.UUID;
 +
-+        // Paper start - test additional ItemMeta damage cases
-+        ItemStack clone = CraftItemStack.asBukkitCopy(CraftItemStack.asNMSCopy(noDamage));
-+        assertThat("Bukkit and craft stacks should be similar", noDamage.isSimilar(clone), is(true));
-+        assertThat("Bukkit and craft stacks should be equal", noDamage.equals(clone), is(true));
-+
-+        ItemStack pureBukkit = new ItemStack(Material.DIAMOND_SWORD);
-+        pureBukkit.setDurability((short) 2);
-+        net.minecraft.server.ItemStack nms = CraftItemStack.asNMSCopy(pureBukkit);
-+        ItemStack other = CraftItemStack.asBukkitCopy(nms);
-+
-+        assertThat("Bukkit and NMS ItemStack copies should be similar", pureBukkit.isSimilar(other), is(true));
-+        assertThat("Bukkit and NMS ItemStack copies should be equal", pureBukkit.equals(other), is(true));
-+    }
++import java.util.*;
 +
+ import com.destroystokyo.paper.inventory.meta.ArmorStandMeta; // Paper
+ import net.minecraft.server.Block;
+ import net.minecraft.server.IRegistry;
+@@ -97,6 +96,34 @@ public class ItemMetaTest extends AbstractTestingBase {
+         assertThat(itemMeta.hasConflictingEnchant(null), is(false));
+     }
+ 
++    // Paper start
 +    private void testItemMeta(ItemStack stack) {
 +        assertThat("Should not have ItemMeta", stack.hasItemMeta(), is(false));
 +
@@ -78,11 +70,12 @@ index 919f2ffa9..4726386ef 100644
 +
 +        testItemMeta(itemStack);
 +        testItemMeta(CraftItemStack.asCraftCopy(itemStack));
-     }
++    }
 +    // Paper end
- 
++
      @Test
-     public void testBlockStateMeta() {
+     public void testConflictingStoredEnchantment() {
+         EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0268-Ignore-Dead-Entities-in-entityList-iteration.patch b/Spigot-Server-Patches/0263-Ignore-Dead-Entities-in-entityList-iteration.patch
similarity index 82%
rename from Spigot-Server-Patches/0268-Ignore-Dead-Entities-in-entityList-iteration.patch
rename to Spigot-Server-Patches/0263-Ignore-Dead-Entities-in-entityList-iteration.patch
index 82c19f9985..358c1ccbf5 100644
--- a/Spigot-Server-Patches/0268-Ignore-Dead-Entities-in-entityList-iteration.patch
+++ b/Spigot-Server-Patches/0263-Ignore-Dead-Entities-in-entityList-iteration.patch
@@ -1,4 +1,4 @@
-From a3d4cf323907ffaa92c7a1880fec59bbf2e7482a Mon Sep 17 00:00:00 2001
+From 1f69d5e3135d8797208b362e5b66fada181deb92 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Sat, 28 Jul 2018 12:18:27 -0400
 Subject: [PATCH] Ignore Dead Entities in entityList iteration
@@ -11,7 +11,7 @@ This will ensure that dead entities are skipped from iteration since
 they shouldn't of been in the list in the first place.
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java
-index eecf27370b..d704fc79c0 100644
+index eecf27370..d704fc79c 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
 @@ -179,6 +179,7 @@ public class PaperCommand extends Command {
@@ -23,10 +23,10 @@ index eecf27370b..d704fc79c0 100644
                      MutablePair<Integer, Map<ChunkCoordIntPair, Integer>> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap()));
                      ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.getChunkX(), e.getChunkZ());
 diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
-index a74e389d14..09e010e670 100644
+index b156f5428..c7c600b80 100644
 --- a/src/main/java/net/minecraft/server/Chunk.java
 +++ b/src/main/java/net/minecraft/server/Chunk.java
-@@ -678,6 +678,7 @@ public class Chunk implements IChunkAccess {
+@@ -671,6 +671,7 @@ public class Chunk implements IChunkAccess {
  
                  while (iterator.hasNext()) {
                      Entity entity1 = (Entity) iterator.next();
@@ -34,15 +34,15 @@ index a74e389d14..09e010e670 100644
  
                      if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) {
                          if (predicate == null || predicate.test(entity1)) {
-@@ -715,6 +716,7 @@ public class Chunk implements IChunkAccess {
+@@ -708,6 +709,7 @@ public class Chunk implements IChunkAccess {
  
              while (iterator.hasNext()) {
-                 Entity entity = (Entity) iterator.next();
+                 T entity = (T) iterator.next(); // CraftBukkit - decompile error
 +                if (entity.shouldBeRemoved) continue; // Paper
  
                  if ((entitytypes == null || entity.getEntityType() == entitytypes) && entity.getBoundingBox().c(axisalignedbb) && predicate.test(entity)) {
                      list.add(entity);
-@@ -736,6 +738,7 @@ public class Chunk implements IChunkAccess {
+@@ -729,6 +731,7 @@ public class Chunk implements IChunkAccess {
  
              while (iterator.hasNext()) {
                  T t0 = (T) iterator.next(); // CraftBukkit - decompile error
@@ -51,22 +51,22 @@ index a74e389d14..09e010e670 100644
                  if (oclass.isInstance(t0) && t0.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(t0))) { // Spigot - instance check
                      list.add(t0);
 diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 701090c11e..7d579c119b 100644
+index be8f6ac99..4a931aaf4 100644
 --- a/src/main/java/net/minecraft/server/Entity.java
 +++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -126,6 +126,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
-     public float D;
-     public float E;
-     public float F;
+@@ -196,6 +196,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+     protected int numCollisions = 0; // Paper
+     public void inactiveTick() { }
+     // Spigot end
 +    public boolean shouldBeRemoved; // Paper
-     public float fallDistance;
-     private float av;
-     private float aw;
+ 
+     public float getBukkitYaw() {
+         return this.yaw;
 diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index a5ba64a4c9..6c55ae1a9f 100644
+index 110d6e571..afae55973 100644
 --- a/src/main/java/net/minecraft/server/WorldServer.java
 +++ b/src/main/java/net/minecraft/server/WorldServer.java
-@@ -886,7 +886,7 @@ public class WorldServer extends World {
+@@ -894,7 +894,7 @@ public class WorldServer extends World {
  
          while (objectiterator.hasNext()) {
              Entity entity = (Entity) objectiterator.next();
@@ -75,7 +75,7 @@ index a5ba64a4c9..6c55ae1a9f 100644
              if (entity instanceof EntityInsentient) {
                  EntityInsentient entityinsentient = (EntityInsentient) entity;
  
-@@ -1205,6 +1205,7 @@ public class WorldServer extends World {
+@@ -1213,6 +1213,7 @@ public class WorldServer extends World {
                  entity.origin = entity.getBukkitEntity().getLocation();
              }
              // Paper end
@@ -83,7 +83,7 @@ index a5ba64a4c9..6c55ae1a9f 100644
              new com.destroystokyo.paper.event.entity.EntityAddToWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
          }
  
-@@ -1217,6 +1218,7 @@ public class WorldServer extends World {
+@@ -1225,6 +1226,7 @@ public class WorldServer extends World {
              this.removeEntityFromChunk(entity);
              this.entitiesById.remove(entity.getId());
              this.unregisterEntity(entity);
@@ -92,10 +92,10 @@ index a5ba64a4c9..6c55ae1a9f 100644
      }
  
 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 67137d69c1..01b869a06f 100644
+index 96ff39e13..cc4788c96 100644
 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -965,6 +965,7 @@ public class CraftWorld implements World {
+@@ -979,6 +979,7 @@ public class CraftWorld implements World {
          for (Object o : world.entitiesById.values()) {
              if (o instanceof net.minecraft.server.Entity) {
                  net.minecraft.server.Entity mcEnt = (net.minecraft.server.Entity) o;
@@ -103,7 +103,7 @@ index 67137d69c1..01b869a06f 100644
                  Entity bukkitEntity = mcEnt.getBukkitEntity();
  
                  // Assuming that bukkitEntity isn't null
-@@ -984,6 +985,7 @@ public class CraftWorld implements World {
+@@ -998,6 +999,7 @@ public class CraftWorld implements World {
          for (Object o : world.entitiesById.values()) {
              if (o instanceof net.minecraft.server.Entity) {
                  net.minecraft.server.Entity mcEnt = (net.minecraft.server.Entity) o;
@@ -111,7 +111,7 @@ index 67137d69c1..01b869a06f 100644
                  Entity bukkitEntity = mcEnt.getBukkitEntity();
  
                  // Assuming that bukkitEntity isn't null
-@@ -1010,6 +1012,7 @@ public class CraftWorld implements World {
+@@ -1024,6 +1026,7 @@ public class CraftWorld implements World {
  
          for (Object entity: world.entitiesById.values()) {
              if (entity instanceof net.minecraft.server.Entity) {
@@ -119,7 +119,7 @@ index 67137d69c1..01b869a06f 100644
                  Entity bukkitEntity = ((net.minecraft.server.Entity) entity).getBukkitEntity();
  
                  if (bukkitEntity == null) {
-@@ -1033,6 +1036,7 @@ public class CraftWorld implements World {
+@@ -1047,6 +1050,7 @@ public class CraftWorld implements World {
  
          for (Object entity: world.entitiesById.values()) {
              if (entity instanceof net.minecraft.server.Entity) {
@@ -128,5 +128,5 @@ index 67137d69c1..01b869a06f 100644
  
                  if (bukkitEntity == null) {
 -- 
-2.22.1
+2.24.0
 
diff --git a/Spigot-Server-Patches/0270-MC-111480-Start-Entity-ID-s-at-1.patch b/Spigot-Server-Patches/0264-MC-111480-Start-Entity-ID-s-at-1.patch
similarity index 85%
rename from Spigot-Server-Patches/0270-MC-111480-Start-Entity-ID-s-at-1.patch
rename to Spigot-Server-Patches/0264-MC-111480-Start-Entity-ID-s-at-1.patch
index f6dbf38264..5dd010089e 100644
--- a/Spigot-Server-Patches/0270-MC-111480-Start-Entity-ID-s-at-1.patch
+++ b/Spigot-Server-Patches/0264-MC-111480-Start-Entity-ID-s-at-1.patch
@@ -1,4 +1,4 @@
-From b4a6f6b957e5228dc76fcaadc7ceda6fff224bf2 Mon Sep 17 00:00:00 2001
+From 292b1b3faeb3bf5eca86e49d192a0d9dd5e42870 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Sun, 29 Jul 2018 22:58:47 -0400
 Subject: [PATCH] MC-111480: Start Entity ID's at 1
@@ -7,10 +7,10 @@ DataWatchers that store Entity ID's treat 0 as special,
 and can break things such as Elytra Fireworks.
 
 diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 7d579c119b..7811beb807 100644
+index 4a931aaf4..75343a438 100644
 --- a/src/main/java/net/minecraft/server/Entity.java
 +++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -92,7 +92,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -93,7 +93,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
      // CraftBukkit end
  
      protected static final Logger LOGGER = LogManager.getLogger();
@@ -20,5 +20,5 @@ index 7d579c119b..7811beb807 100644
      private static final AxisAlignedBB d = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D);
      private static double e = 1.0D;
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0271-Implement-Expanded-ArmorStand-API.patch b/Spigot-Server-Patches/0265-Implement-Expanded-ArmorStand-API.patch
similarity index 90%
rename from Spigot-Server-Patches/0271-Implement-Expanded-ArmorStand-API.patch
rename to Spigot-Server-Patches/0265-Implement-Expanded-ArmorStand-API.patch
index 5e02e86f72..28d5e0f5d6 100644
--- a/Spigot-Server-Patches/0271-Implement-Expanded-ArmorStand-API.patch
+++ b/Spigot-Server-Patches/0265-Implement-Expanded-ArmorStand-API.patch
@@ -1,4 +1,4 @@
-From 570ab48d26bb36dee4b7cc7c474e9cb8d7982787 Mon Sep 17 00:00:00 2001
+From da3fb44719e20f155c6d71c1390728c30c57f0f4 Mon Sep 17 00:00:00 2001
 From: willies952002 <admin@domnian.com>
 Date: Thu, 26 Jul 2018 02:25:46 -0400
 Subject: [PATCH] Implement Expanded ArmorStand API
@@ -8,25 +8,25 @@ Add the following:
 - Enable/Disable slot interactions
 
 diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
-index b337fb812..d8497fa5e 100644
+index 80bf58b05..eb6cf3a86 100644
 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java
 +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
 @@ -36,7 +36,7 @@ public class EntityArmorStand extends EntityLiving {
      private final NonNullList<ItemStack> armorItems;
-     private boolean bD;
-     public long bt;
--    private int bE;
-+    private int bE; public void setDisabledSlots(int i) { bE = i;} public int getDisabledSlots() { return bE ;} // Paper - OBFHELPER
+     private boolean armorStandInvisible;
+     public long bq;
+-    private int bB;
++    private int bB; public void setDisabledSlots(int i) { bB = i; } public int getDisabledSlots() { return bB; } // Paper - OBFHELPER
      public Vector3f headPose;
      public Vector3f bodyPose;
      public Vector3f leftArmPose;
-@@ -381,6 +381,7 @@ public class EntityArmorStand extends EntityLiving {
+@@ -390,6 +390,7 @@ public class EntityArmorStand extends EntityLiving {
          return enumitemslot;
      }
  
 +    public boolean isSlotDisabled(EnumItemSlot slot) { return this.d(slot); } // Paper - OBFHELPER
-     public boolean d(EnumItemSlot enumitemslot) {
-         return (this.bE & 1 << enumitemslot.c()) != 0 || enumitemslot.a() == EnumItemSlot.Function.HAND && !this.hasArms();
+     private boolean d(EnumItemSlot enumitemslot) {
+         return (this.bB & 1 << enumitemslot.c()) != 0 || enumitemslot.a() == EnumItemSlot.Function.HAND && !this.hasArms();
      }
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
 index 124c3185b..d1d689e5d 100644
diff --git a/Spigot-Server-Patches/0272-AnvilDamageEvent.patch b/Spigot-Server-Patches/0266-AnvilDamageEvent.patch
similarity index 89%
rename from Spigot-Server-Patches/0272-AnvilDamageEvent.patch
rename to Spigot-Server-Patches/0266-AnvilDamageEvent.patch
index 6ca471b2d2..2858a13674 100644
--- a/Spigot-Server-Patches/0272-AnvilDamageEvent.patch
+++ b/Spigot-Server-Patches/0266-AnvilDamageEvent.patch
@@ -1,17 +1,17 @@
-From 8c824a76d1e77103bde43f1e18598392f4e0e0f3 Mon Sep 17 00:00:00 2001
+From 26bc456a8ad1e2b824b7928557e116a4d9cfa296 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Fri, 20 Jul 2018 23:37:03 -0500
 Subject: [PATCH] AnvilDamageEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/ContainerAnvil.java b/src/main/java/net/minecraft/server/ContainerAnvil.java
-index 59f4798520..7718c5a3b7 100644
+index 1d9ce5ef1..286b930dd 100644
 --- a/src/main/java/net/minecraft/server/ContainerAnvil.java
 +++ b/src/main/java/net/minecraft/server/ContainerAnvil.java
 @@ -85,6 +85,16 @@ public class ContainerAnvil extends Container {
  
                      if (!entityhuman.abilities.canInstantlyBuild && iblockdata.a(TagsBlock.ANVIL) && entityhuman.getRandom().nextFloat() < 0.12F) {
-                         IBlockData iblockdata1 = BlockAnvil.a_(iblockdata);
+                         IBlockData iblockdata1 = BlockAnvil.e(iblockdata);
 +                        // Paper start
 +                        com.destroystokyo.paper.event.block.AnvilDamagedEvent event = new com.destroystokyo.paper.event.block.AnvilDamagedEvent(getBukkitView(), iblockdata1 != null ? org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(iblockdata1) : null);
 +                        if (!event.callEvent()) {
@@ -26,5 +26,5 @@ index 59f4798520..7718c5a3b7 100644
                          if (iblockdata1 == null) {
                              world.a(blockposition, false);
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0273-Add-TNTPrimeEvent.patch b/Spigot-Server-Patches/0267-Add-TNTPrimeEvent.patch
similarity index 93%
rename from Spigot-Server-Patches/0273-Add-TNTPrimeEvent.patch
rename to Spigot-Server-Patches/0267-Add-TNTPrimeEvent.patch
index 0ef6e18dc1..d7563a5647 100644
--- a/Spigot-Server-Patches/0273-Add-TNTPrimeEvent.patch
+++ b/Spigot-Server-Patches/0267-Add-TNTPrimeEvent.patch
@@ -1,11 +1,11 @@
-From e866f25ed159540cac7277d5ccd1a3785f7263a0 Mon Sep 17 00:00:00 2001
+From d256ecba29766e5be9e171883aafef26faa42509 Mon Sep 17 00:00:00 2001
 From: Mark Vainomaa <mikroskeem@mikroskeem.eu>
 Date: Mon, 16 Jul 2018 00:05:05 +0300
 Subject: [PATCH] Add TNTPrimeEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/BlockFire.java b/src/main/java/net/minecraft/server/BlockFire.java
-index 37e6a91520..135c6ae47e 100644
+index 9cf7d0b9e..15d44cd98 100644
 --- a/src/main/java/net/minecraft/server/BlockFire.java
 +++ b/src/main/java/net/minecraft/server/BlockFire.java
 @@ -2,6 +2,7 @@ package net.minecraft.server;
@@ -39,7 +39,7 @@ index 37e6a91520..135c6ae47e 100644
              }
          }
 diff --git a/src/main/java/net/minecraft/server/BlockTNT.java b/src/main/java/net/minecraft/server/BlockTNT.java
-index 462c77a000..b2689ee8bf 100644
+index 44d26e096..199276f3a 100644
 --- a/src/main/java/net/minecraft/server/BlockTNT.java
 +++ b/src/main/java/net/minecraft/server/BlockTNT.java
 @@ -1,6 +1,7 @@
@@ -98,8 +98,8 @@ index 462c77a000..b2689ee8bf 100644
 +            // Paper end
              a(world, blockposition, (EntityLiving) entityhuman);
              world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 11);
-             if (item == Items.FLINT_AND_STEEL) {
-@@ -99,6 +121,13 @@ public class BlockTNT extends Block {
+             if (!entityhuman.isCreative()) {
+@@ -101,6 +123,13 @@ public class BlockTNT extends Block {
                  }
                  // CraftBukkit end
  
@@ -114,7 +114,7 @@ index 462c77a000..b2689ee8bf 100644
                  world.a(blockposition, false);
              }
 diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
-index 5fae347db2..c2f35f89d3 100644
+index 07abcc1e2..3df8e30ec 100644
 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
 +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
 @@ -11,6 +11,7 @@ import org.bukkit.craftbukkit.block.CraftBlock;
@@ -125,9 +125,9 @@ index 5fae347db2..c2f35f89d3 100644
  
  // PAIL: Fixme
  public class EntityEnderDragon extends EntityInsentient implements IMonster {
-@@ -463,6 +464,11 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
- 
-                     Block.b(craftBlock.getNMS(), loottableinfo_builder);
+@@ -468,6 +469,11 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
+                     });
+                     craftBlock.getNMS().dropNaturally(world, blockposition, ItemStack.a);
                  }
 +                // Paper start - TNTPrimeEvent
 +                org.bukkit.block.Block tntBlock = world.getWorld().getBlockAt(blockposition.x, blockposition.y, blockposition.z);
@@ -138,5 +138,5 @@ index 5fae347db2..c2f35f89d3 100644
  
                  this.world.a(blockposition, false);
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0274-Break-up-and-make-tab-spam-limits-configurable.patch b/Spigot-Server-Patches/0268-Break-up-and-make-tab-spam-limits-configurable.patch
similarity index 89%
rename from Spigot-Server-Patches/0274-Break-up-and-make-tab-spam-limits-configurable.patch
rename to Spigot-Server-Patches/0268-Break-up-and-make-tab-spam-limits-configurable.patch
index ae80a67416..141849a4d8 100644
--- a/Spigot-Server-Patches/0274-Break-up-and-make-tab-spam-limits-configurable.patch
+++ b/Spigot-Server-Patches/0268-Break-up-and-make-tab-spam-limits-configurable.patch
@@ -1,4 +1,4 @@
-From 010e85370e2742e11f9cc6e0d0b261768317362e Mon Sep 17 00:00:00 2001
+From 946cd85fec1e93728dd02008796b6fa1298b543e Mon Sep 17 00:00:00 2001
 From: Shane Freeder <theboyetronic@gmail.com>
 Date: Sun, 29 Jul 2018 05:02:15 +0100
 Subject: [PATCH] Break up and make tab spam limits configurable
@@ -22,11 +22,11 @@ to take the burden of this into their own hand without having to rely on
 plugins doing unsafe things.
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
-index dfdc7c384d..207e5d3e23 100644
+index 26ab855dc..adef07d4d 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
-@@ -311,4 +311,18 @@ public class PaperConfig {
-             logger.log(Level.INFO, "******************************************************");
+@@ -287,4 +287,18 @@ public class PaperConfig {
+             Bukkit.getLogger().log(Level.INFO, "Using Aikar's Alternative Luck Formula to apply Luck attribute to all loot pool calculations. See https://luckformula.emc.gs");
          }
      }
 +
@@ -45,7 +45,7 @@ index dfdc7c384d..207e5d3e23 100644
 +    }
  }
 diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index f2de19b9b4..a814d8cae9 100644
+index 3a7e197e3..77c375f71 100644
 --- a/src/main/java/net/minecraft/server/PlayerConnection.java
 +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
 @@ -76,6 +76,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -56,7 +56,7 @@ index f2de19b9b4..a814d8cae9 100644
      // CraftBukkit end
      private int j;
      private final Int2ShortMap k = new Int2ShortOpenHashMap();
-@@ -204,6 +205,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
+@@ -207,6 +208,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
          this.minecraftServer.getMethodProfiler().exit();
          // CraftBukkit start
          for (int spam; (spam = this.chatThrottle) > 0 && !chatSpamField.compareAndSet(this, spam, spam - 1); ) ;
@@ -64,7 +64,7 @@ index f2de19b9b4..a814d8cae9 100644
          /* Use thread-safe field access instead
          if (this.chatThrottle > 0) {
              --this.chatThrottle;
-@@ -523,7 +525,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
+@@ -526,7 +528,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
      public void a(PacketPlayInTabComplete packetplayintabcomplete) {
          // PlayerConnectionUtils.ensureMainThread(packetplayintabcomplete, this, this.player.getWorldServer()); // Paper - run this async
          // CraftBukkit start
@@ -74,5 +74,5 @@ index f2de19b9b4..a814d8cae9 100644
              return;
          }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0275-Add-hand-to-bucket-events.patch b/Spigot-Server-Patches/0269-Add-hand-to-bucket-events.patch
similarity index 81%
rename from Spigot-Server-Patches/0275-Add-hand-to-bucket-events.patch
rename to Spigot-Server-Patches/0269-Add-hand-to-bucket-events.patch
index 328f08c10e..fa54cd3a52 100644
--- a/Spigot-Server-Patches/0275-Add-hand-to-bucket-events.patch
+++ b/Spigot-Server-Patches/0269-Add-hand-to-bucket-events.patch
@@ -1,4 +1,4 @@
-From f182bbf69fb73125d9db3e0c098654b2946e1d8c Mon Sep 17 00:00:00 2001
+From abd00ec4f5c1c3a61e1304d17adb390fd741220a Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Thu, 2 Aug 2018 08:44:35 -0500
 Subject: [PATCH] Add hand to bucket events
@@ -18,63 +18,65 @@ index 6e385b530..2c8bbf20a 100644
              if (event.isCancelled()) {
                  return false;
 diff --git a/src/main/java/net/minecraft/server/ItemBucket.java b/src/main/java/net/minecraft/server/ItemBucket.java
-index 59e239e9d..91ff811d8 100644
+index aaed8c0ae..0ff92aea5 100644
 --- a/src/main/java/net/minecraft/server/ItemBucket.java
 +++ b/src/main/java/net/minecraft/server/ItemBucket.java
-@@ -39,7 +39,7 @@ public class ItemBucket extends Item {
+@@ -41,7 +41,7 @@ public class ItemBucket extends Item {
                      if (iblockdata.getBlock() instanceof IFluidSource) {
                          // CraftBukkit start
                          FluidType dummyFluid = ((IFluidSource) iblockdata.getBlock()).removeFluid(DummyGeneratorAccess.INSTANCE, blockposition, iblockdata);
--                        PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(world, entityhuman, blockposition, blockposition, movingobjectpositionblock.getDirection(), itemstack, dummyFluid.b());
-+                        PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(world, entityhuman, blockposition, blockposition, movingobjectpositionblock.getDirection(), itemstack, dummyFluid.b(), enumhand); // Paper - add enumHand
+-                        PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(world, entityhuman, blockposition, blockposition, movingobjectpositionblock.getDirection(), itemstack, dummyFluid.a());
++                        PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(world, entityhuman, blockposition, blockposition, movingobjectpositionblock.getDirection(), itemstack, dummyFluid.a(), enumhand);
  
                          if (event.isCancelled()) {
                              ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutBlockChange(world, blockposition)); // SPIGOT-5163 (see PlayerInteractManager)
-@@ -67,7 +67,7 @@ public class ItemBucket extends Item {
+@@ -69,7 +69,7 @@ public class ItemBucket extends Item {
                      iblockdata = world.getType(blockposition);
-                     BlockPosition blockposition1 = iblockdata.getBlock() instanceof IFluidContainer && this.fluidType == FluidTypes.WATER ? blockposition : movingobjectpositionblock.getBlockPosition().shift(movingobjectpositionblock.getDirection());
+                     BlockPosition blockposition2 = iblockdata.getBlock() instanceof IFluidContainer && this.fluidType == FluidTypes.WATER ? blockposition : blockposition1;
  
--                    if (this.a(entityhuman, world, blockposition1, movingobjectpositionblock, movingobjectpositionblock.getDirection(), blockposition, itemstack)) { // CraftBukkit
-+                    if (this.a(entityhuman, world, blockposition1, movingobjectpositionblock, movingobjectpositionblock.getDirection(), blockposition, itemstack, enumhand)) { // CraftBukkit // Paper - add enumHand
-                         this.a(world, itemstack, blockposition1);
+-                    if (this.a(entityhuman, world, blockposition2, movingobjectpositionblock, movingobjectpositionblock.getDirection(), blockposition, itemstack)) { // CraftBukkit
++                    if (this.a(entityhuman, world, blockposition2, movingobjectpositionblock, movingobjectpositionblock.getDirection(), blockposition, itemstack, enumhand)) { // CraftBukkit // Paper - add enumhand
+                         this.a(world, itemstack, blockposition2);
                          if (entityhuman instanceof EntityPlayer) {
-                             CriterionTriggers.y.a((EntityPlayer) entityhuman, blockposition1, itemstack);
-@@ -117,6 +117,12 @@ public class ItemBucket extends Item {
+                             CriterionTriggers.y.a((EntityPlayer) entityhuman, blockposition2, itemstack);
+@@ -115,10 +115,12 @@ public class ItemBucket extends Item {
+ 
+     // CraftBukkit start
+     public boolean a(@Nullable EntityHuman entityhuman, World world, BlockPosition blockposition, @Nullable MovingObjectPositionBlock movingobjectpositionblock) {
+-        return a(entityhuman, world, blockposition, movingobjectpositionblock, null, null, null);
++        // Paper start - add enumHand
++        return a(entityhuman, world, blockposition, movingobjectpositionblock, null, null, null, null);
      }
  
-     public boolean a(EntityHuman entityhuman, World world, BlockPosition blockposition, @Nullable MovingObjectPositionBlock movingobjectpositionblock, EnumDirection enumdirection, BlockPosition clicked, ItemStack itemstack) {
-+        // Paper start - add enumHand
-+        return a(entityhuman, world, blockposition, movingobjectpositionblock, enumdirection, clicked, itemstack, null);
-+    }
-+
+-    public boolean a(EntityHuman entityhuman, World world, BlockPosition blockposition, @Nullable MovingObjectPositionBlock movingobjectpositionblock, EnumDirection enumdirection, BlockPosition clicked, ItemStack itemstack) {
 +    public boolean a(EntityHuman entityhuman, World world, BlockPosition blockposition, @Nullable MovingObjectPositionBlock movingobjectpositionblock, EnumDirection enumdirection, BlockPosition clicked, ItemStack itemstack, EnumHand enumhand) {
 +        // Paper end
          // CraftBukkit end
          if (!(this.fluidType instanceof FluidTypeFlowing)) {
              return false;
-@@ -127,11 +133,11 @@ public class ItemBucket extends Item {
-             boolean flag1 = material.isReplaceable();
+@@ -128,11 +130,11 @@ public class ItemBucket extends Item {
+             boolean flag = iblockdata.a(this.fluidType);
  
-             if (!world.isEmpty(blockposition) && !flag && !flag1 && (!(iblockdata.getBlock() instanceof IFluidContainer) || !((IFluidContainer) iblockdata.getBlock()).canPlace(world, blockposition, iblockdata, this.fluidType))) {
+             if (!iblockdata.isAir() && !flag && (!(iblockdata.getBlock() instanceof IFluidContainer) || !((IFluidContainer) iblockdata.getBlock()).canPlace(world, blockposition, iblockdata, this.fluidType))) {
 -                return movingobjectpositionblock == null ? false : this.a(entityhuman, world, movingobjectpositionblock.getBlockPosition().shift(movingobjectpositionblock.getDirection()), (MovingObjectPositionBlock) null, enumdirection, clicked, itemstack); // CraftBukkit
-+                return movingobjectpositionblock == null ? false : this.a(entityhuman, world, movingobjectpositionblock.getBlockPosition().shift(movingobjectpositionblock.getDirection()), (MovingObjectPositionBlock) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit  // Paper - add enumhand
++                return movingobjectpositionblock == null ? false : this.a(entityhuman, world, movingobjectpositionblock.getBlockPosition().shift(movingobjectpositionblock.getDirection()), (MovingObjectPositionBlock) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit
              } else {
                  // CraftBukkit start
                  if (entityhuman != null) {
 -                    PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(world, entityhuman, blockposition, clicked, enumdirection, itemstack);
-+                    PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(world, entityhuman, blockposition, clicked, enumdirection, itemstack, enumhand); // Paper - add enumHand
++                    PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(world, entityhuman, blockposition, clicked, enumdirection, itemstack, enumhand);
                      if (event.isCancelled()) {
                          ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutBlockChange(world, blockposition)); // SPIGOT-4238: needed when looking through entity
                          ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory(); // SPIGOT-4541
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index f4db17759..e22389457 100644
+index e954c59d5..844781f4e 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-@@ -369,6 +369,21 @@ public class CraftEventFactory {
+@@ -368,6 +368,20 @@ public class CraftEventFactory {
+     }
  
      private static PlayerEvent getPlayerBucketEvent(boolean isFilling, World world, EntityHuman who, BlockPosition changed, BlockPosition clicked, EnumDirection clickedFace, ItemStack itemstack, net.minecraft.server.Item item) {
-         Player player = (Player) who.getBukkitEntity();
-+        // Paper start - add EnumHand
++        // Paper start - add enumHand
 +        return getPlayerBucketEvent(isFilling, world, who, changed, clicked, clickedFace, itemstack, item, null);
 +    }
 +
@@ -88,11 +90,10 @@ index f4db17759..e22389457 100644
 +
 +    private static PlayerEvent getPlayerBucketEvent(boolean isFilling, World world, EntityHuman who, BlockPosition changed, BlockPosition clicked, EnumDirection clickedFace, ItemStack itemstack, net.minecraft.server.Item item, EnumHand enumHand) {
 +        // Paper end
-+        Player player = (who == null) ? null : (Player) who.getBukkitEntity();
+         Player player = (Player) who.getBukkitEntity();
          CraftItemStack itemInHand = CraftItemStack.asNewCraftStack(item);
          Material bucket = CraftMagicNumbers.getMaterial(itemstack.getItem());
- 
-@@ -380,10 +395,10 @@ public class CraftEventFactory {
+@@ -380,10 +394,10 @@ public class CraftEventFactory {
  
          PlayerEvent event;
          if (isFilling) {
@@ -106,5 +107,5 @@ index f4db17759..e22389457 100644
          }
  
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0276-MC-135506-Experience-should-save-as-Integers.patch b/Spigot-Server-Patches/0270-MC-135506-Experience-should-save-as-Integers.patch
similarity index 92%
rename from Spigot-Server-Patches/0276-MC-135506-Experience-should-save-as-Integers.patch
rename to Spigot-Server-Patches/0270-MC-135506-Experience-should-save-as-Integers.patch
index 76fdcab029..fafcebc897 100644
--- a/Spigot-Server-Patches/0276-MC-135506-Experience-should-save-as-Integers.patch
+++ b/Spigot-Server-Patches/0270-MC-135506-Experience-should-save-as-Integers.patch
@@ -1,11 +1,11 @@
-From e4803aa2bf42cc66ff99b28bf62e87b77e08046b Mon Sep 17 00:00:00 2001
+From 2c17ec220f207cfbc2efcce031acf1b635006e79 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Fri, 3 Aug 2018 00:04:54 -0400
 Subject: [PATCH] MC-135506: Experience should save as Integers
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java
-index ba3e66f9e..d8f23ff02 100644
+index 87c6b77ce..53c6c3389 100644
 --- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java
 +++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java
 @@ -207,7 +207,7 @@ public class EntityExperienceOrb extends Entity {
@@ -27,5 +27,5 @@ index ba3e66f9e..d8f23ff02 100644
      }
  
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0277-Fix-client-rendering-skulls-from-same-user.patch b/Spigot-Server-Patches/0271-Fix-client-rendering-skulls-from-same-user.patch
similarity index 94%
rename from Spigot-Server-Patches/0277-Fix-client-rendering-skulls-from-same-user.patch
rename to Spigot-Server-Patches/0271-Fix-client-rendering-skulls-from-same-user.patch
index a94b9b2951..e6aa12c0f0 100644
--- a/Spigot-Server-Patches/0277-Fix-client-rendering-skulls-from-same-user.patch
+++ b/Spigot-Server-Patches/0271-Fix-client-rendering-skulls-from-same-user.patch
@@ -1,4 +1,4 @@
-From ee3e5585032f57eda55905990cc126bc607f6b21 Mon Sep 17 00:00:00 2001
+From 4594f92c898a543516bb905ce833f797e2991b0b Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Tue, 22 Nov 2016 00:40:42 -0500
 Subject: [PATCH] Fix client rendering skulls from same user
@@ -12,7 +12,7 @@ This allows the client to render multiple skull textures from the same user,
 for when different skins were used when skull was made.
 
 diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
-index f849a29e2a..c69a067ef1 100644
+index 5fc7124dd..33d9cac4d 100644
 --- a/src/main/java/net/minecraft/server/ItemStack.java
 +++ b/src/main/java/net/minecraft/server/ItemStack.java
 @@ -54,7 +54,7 @@ public final class ItemStack {
@@ -25,7 +25,7 @@ index f849a29e2a..c69a067ef1 100644
      private EntityItemFrame i;
      private ShapeDetectorBlock j;
 diff --git a/src/main/java/net/minecraft/server/PacketDataSerializer.java b/src/main/java/net/minecraft/server/PacketDataSerializer.java
-index 0d67676f7d..fa2d3ce8cb 100644
+index d9574a9ac..93ae6dcd7 100644
 --- a/src/main/java/net/minecraft/server/PacketDataSerializer.java
 +++ b/src/main/java/net/minecraft/server/PacketDataSerializer.java
 @@ -253,6 +253,15 @@ public class PacketDataSerializer extends ByteBuf {
@@ -62,19 +62,19 @@ index 0d67676f7d..fa2d3ce8cb 100644
              }
              // CraftBukkit end
 diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
-index 363ab5da12..d19a30ad87 100644
+index 3a1d0deb0..1fcbbd698 100644
 --- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
 +++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
-@@ -51,6 +51,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
+@@ -58,6 +58,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
  
              if (this.f() || (i & 1 << j) != 0) {
                  NBTTagCompound nbttagcompound = tileentity.b();
 +                if (tileentity instanceof TileEntitySkull) { TileEntitySkull.sanitizeTileEntityUUID(nbttagcompound); } // Paper
  
-                 this.f.add(nbttagcompound);
+                 this.g.add(nbttagcompound);
              }
 diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
-index 177cceb77f..0882d82cef 100644
+index 177cceb77..0882d82ce 100644
 --- a/src/main/java/net/minecraft/server/TileEntitySkull.java
 +++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
 @@ -142,9 +142,37 @@ public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Pa
@@ -117,5 +117,5 @@ index 177cceb77f..0882d82cef 100644
      public NBTTagCompound b() {
          return this.save(new NBTTagCompound());
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0278-Add-Early-Warning-Feature-to-WatchDog.patch b/Spigot-Server-Patches/0272-Add-Early-Warning-Feature-to-WatchDog.patch
similarity index 94%
rename from Spigot-Server-Patches/0278-Add-Early-Warning-Feature-to-WatchDog.patch
rename to Spigot-Server-Patches/0272-Add-Early-Warning-Feature-to-WatchDog.patch
index 1a39fb55b2..f1754c6bf1 100644
--- a/Spigot-Server-Patches/0278-Add-Early-Warning-Feature-to-WatchDog.patch
+++ b/Spigot-Server-Patches/0272-Add-Early-Warning-Feature-to-WatchDog.patch
@@ -1,4 +1,4 @@
-From 01e7f97e767e1390bd6c0b7d18e8c8d430029d0b Mon Sep 17 00:00:00 2001
+From bf10a9d58ea091d50c7486c6c5f2ee6df35d1635 Mon Sep 17 00:00:00 2001
 From: miclebrick <miclebrick@outlook.com>
 Date: Wed, 8 Aug 2018 15:30:52 -0400
 Subject: [PATCH] Add Early Warning Feature to WatchDog
@@ -9,10 +9,10 @@ thread dumps at an interval until the point of crash.
 This will help diagnose what was going on in that time before the crash.
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
-index 207e5d3e23..a13c8c68b6 100644
+index adef07d4d..214b577b3 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
-@@ -25,6 +25,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
+@@ -24,6 +24,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
  import co.aikar.timings.Timings;
  import co.aikar.timings.TimingsManager;
  import org.spigotmc.SpigotConfig;
@@ -20,7 +20,7 @@ index 207e5d3e23..a13c8c68b6 100644
  
  public class PaperConfig {
  
-@@ -312,6 +313,14 @@ public class PaperConfig {
+@@ -288,6 +289,14 @@ public class PaperConfig {
          }
      }
  
@@ -36,10 +36,10 @@ index 207e5d3e23..a13c8c68b6 100644
      public static int tabSpamLimit = 500;
      private static void tabSpamLimiters() {
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 37353b29da..2acb71fa8a 100644
+index 97a0a6924..dd2d8712e 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -861,6 +861,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -869,6 +869,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
                  this.a(this.serverPing);
  
                  // Spigot start
@@ -48,10 +48,10 @@ index 37353b29da..2acb71fa8a 100644
                  long start = System.nanoTime(), curTime, tickSection = start; // Paper - Further improve server tick loop
                  lastTick = start - TICK_TIME; // Paper
 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 8b5765e619..1ca2c2204c 100644
+index 296a11f14..8636283fd 100644
 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -757,6 +757,7 @@ public final class CraftServer implements Server {
+@@ -758,6 +758,7 @@ public final class CraftServer implements Server {
  
      @Override
      public void reload() {
@@ -59,7 +59,7 @@ index 8b5765e619..1ca2c2204c 100644
          reloadCount++;
          configuration = YamlConfiguration.loadConfiguration(getConfigFile());
          commandsConfiguration = YamlConfiguration.loadConfiguration(getCommandsConfigFile());
-@@ -857,6 +858,7 @@ public final class CraftServer implements Server {
+@@ -858,6 +859,7 @@ public final class CraftServer implements Server {
          enablePlugins(PluginLoadOrder.STARTUP);
          enablePlugins(PluginLoadOrder.POSTWORLD);
          getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.RELOAD));
@@ -68,7 +68,7 @@ index 8b5765e619..1ca2c2204c 100644
  
      @Override
 diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
-index 33767c85ca..359a0c8afc 100644
+index 33767c85c..359a0c8af 100644
 --- a/src/main/java/org/spigotmc/SpigotConfig.java
 +++ b/src/main/java/org/spigotmc/SpigotConfig.java
 @@ -225,7 +225,7 @@ public class SpigotConfig
@@ -81,7 +81,7 @@ index 33767c85ca..359a0c8afc 100644
  
      public static boolean bungee;
 diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
-index 9532aada82..a1d93200e6 100644
+index 9532aada8..a1d93200e 100644
 --- a/src/main/java/org/spigotmc/WatchdogThread.java
 +++ b/src/main/java/org/spigotmc/WatchdogThread.java
 @@ -5,6 +5,7 @@ import java.lang.management.MonitorInfo;
@@ -182,5 +182,5 @@ index 9532aada82..a1d93200e6 100644
              {
                  interrupt();
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0279-Make-EnderDragon-implement-Mob.patch b/Spigot-Server-Patches/0273-Make-EnderDragon-implement-Mob.patch
similarity index 92%
rename from Spigot-Server-Patches/0279-Make-EnderDragon-implement-Mob.patch
rename to Spigot-Server-Patches/0273-Make-EnderDragon-implement-Mob.patch
index 62f656a407..b5a35ef39c 100644
--- a/Spigot-Server-Patches/0279-Make-EnderDragon-implement-Mob.patch
+++ b/Spigot-Server-Patches/0273-Make-EnderDragon-implement-Mob.patch
@@ -1,11 +1,11 @@
-From 508b4b6d07332426e937c60de4a5e14982845f17 Mon Sep 17 00:00:00 2001
+From 6d874ac6c3a4e873cd2647efdd332060790ddbeb Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Fri, 10 Aug 2018 22:11:49 -0400
 Subject: [PATCH] Make EnderDragon implement Mob
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java
-index cc115cc368..4947249da2 100644
+index cc115cc36..4947249da 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java
 @@ -1,17 +1,18 @@
@@ -32,5 +32,5 @@ index cc115cc368..4947249da2 100644
  
      @Override
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0281-Use-ConcurrentHashMap-in-JsonList.patch b/Spigot-Server-Patches/0274-Use-ConcurrentHashMap-in-JsonList.patch
similarity index 97%
rename from Spigot-Server-Patches/0281-Use-ConcurrentHashMap-in-JsonList.patch
rename to Spigot-Server-Patches/0274-Use-ConcurrentHashMap-in-JsonList.patch
index ec34613476..eb1770e591 100644
--- a/Spigot-Server-Patches/0281-Use-ConcurrentHashMap-in-JsonList.patch
+++ b/Spigot-Server-Patches/0274-Use-ConcurrentHashMap-in-JsonList.patch
@@ -1,4 +1,4 @@
-From 258ff67bf071e96e6876c5e0c79f1824c5d3c306 Mon Sep 17 00:00:00 2001
+From 8466229716ac8c3296927ca150e524ab8a407f8b Mon Sep 17 00:00:00 2001
 From: egg82 <phantom_zero@ymail.com>
 Date: Tue, 7 Aug 2018 01:24:23 -0600
 Subject: [PATCH] Use ConcurrentHashMap in JsonList
@@ -25,7 +25,7 @@ The point of this is readability, but does have a side-benefit of a small microp
 Finally, added a couple obfhelpers for the modified code
 
 diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java
-index 734e7ecf63..8570e38f42 100644
+index 734e7ecf6..8570e38f4 100644
 --- a/src/main/java/net/minecraft/server/JsonList.java
 +++ b/src/main/java/net/minecraft/server/JsonList.java
 @@ -35,7 +35,8 @@ public class JsonList<K, V extends JsonListEntry<K>> {
@@ -99,5 +99,5 @@ index 734e7ecf63..8570e38f42 100644
          String s = this.b.toJson(collection);
          BufferedWriter bufferedwriter = null;
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0282-Use-a-Queue-for-Queueing-Commands.patch b/Spigot-Server-Patches/0275-Use-a-Queue-for-Queueing-Commands.patch
similarity index 94%
rename from Spigot-Server-Patches/0282-Use-a-Queue-for-Queueing-Commands.patch
rename to Spigot-Server-Patches/0275-Use-a-Queue-for-Queueing-Commands.patch
index c759c27b2f..a35f0c7d6d 100644
--- a/Spigot-Server-Patches/0282-Use-a-Queue-for-Queueing-Commands.patch
+++ b/Spigot-Server-Patches/0275-Use-a-Queue-for-Queueing-Commands.patch
@@ -1,4 +1,4 @@
-From be7d2af254d189bf2a6e546950db79d49781de94 Mon Sep 17 00:00:00 2001
+From 3ff0d47c3608aa6de884773fcefe9fb564218b1a Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Sun, 12 Aug 2018 02:33:39 -0400
 Subject: [PATCH] Use a Queue for Queueing Commands
@@ -6,7 +6,7 @@ Subject: [PATCH] Use a Queue for Queueing Commands
 Lists are bad as Queues mmmkay.
 
 diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
-index c6eb88c34b..5bc19cd081 100644
+index 6e95a0452..3ed74ae0e 100644
 --- a/src/main/java/net/minecraft/server/DedicatedServer.java
 +++ b/src/main/java/net/minecraft/server/DedicatedServer.java
 @@ -43,7 +43,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -32,5 +32,5 @@ index c6eb88c34b..5bc19cd081 100644
              // CraftBukkit start - ServerCommand for preprocessing
              ServerCommandEvent event = new ServerCommandEvent(console, servercommand.command);
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0283-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch b/Spigot-Server-Patches/0276-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
similarity index 92%
rename from Spigot-Server-Patches/0283-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
rename to Spigot-Server-Patches/0276-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
index 3f66ccf4c0..3d68febb7f 100644
--- a/Spigot-Server-Patches/0283-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
+++ b/Spigot-Server-Patches/0276-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
@@ -1,11 +1,11 @@
-From 9fd4bae1935edac9e3d787e83ee6df8e73b5259b Mon Sep 17 00:00:00 2001
+From bbcf2acacb7383d14529049f4107e319b5276e11 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Wed, 15 Aug 2018 01:16:34 -0400
 Subject: [PATCH] Ability to get Tile Entities from a chunk without snapshots
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
-index bc9a65de2..b45516140 100644
+index 3a21d2cdd..9dcba4d15 100644
 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
 @@ -125,9 +125,16 @@ public class CraftChunk implements Chunk {
@@ -35,5 +35,5 @@ index bc9a65de2..b45516140 100644
  
          return entities;
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch b/Spigot-Server-Patches/0277-Allow-disabling-armour-stand-ticking.patch
similarity index 82%
rename from Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch
rename to Spigot-Server-Patches/0277-Allow-disabling-armour-stand-ticking.patch
index cc42edec29..571c62346f 100644
--- a/Spigot-Server-Patches/0284-Allow-disabling-armour-stand-ticking.patch
+++ b/Spigot-Server-Patches/0277-Allow-disabling-armour-stand-ticking.patch
@@ -1,16 +1,16 @@
-From 2a3338308eecbeca3e916817a22e9abb19452f88 Mon Sep 17 00:00:00 2001
+From fd83a25dc850b5af4f206395331c5cf7ce3c5b8d Mon Sep 17 00:00:00 2001
 From: kashike <kashike@vq.lc>
 Date: Wed, 15 Aug 2018 01:26:09 -0700
 Subject: [PATCH] Allow disabling armour stand ticking
 
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 721685704..9ee27f638 100644
+index 0a99b8fe9..42d14fac2 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 @@ -391,4 +391,10 @@ public class PaperWorldConfig {
-             log("Bed Search Radius: " + bedSearchRadius);
-         }
+     private void armorStandEntityLookups() {
+         armorStandEntityLookups = getBoolean("armor-stands-do-collision-entity-lookups", true);
      }
 +
 +    public boolean armorStandTick = true;
@@ -20,7 +20,7 @@ index 721685704..9ee27f638 100644
 +    }
  }
 diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
-index d8497fa5e..85fc48371 100644
+index eb6cf3a86..b51662ee9 100644
 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java
 +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
 @@ -44,6 +44,12 @@ public class EntityArmorStand extends EntityLiving {
@@ -37,14 +37,14 @@ index d8497fa5e..85fc48371 100644
      public EntityArmorStand(EntityTypes<? extends EntityArmorStand> entitytypes, World world) {
          super(entitytypes, world);
 @@ -55,6 +61,7 @@ public class EntityArmorStand extends EntityLiving {
-         this.rightArmPose = EntityArmorStand.bx;
-         this.leftLegPose = EntityArmorStand.by;
-         this.rightLegPose = EntityArmorStand.bz;
+         this.rightArmPose = EntityArmorStand.bu;
+         this.leftLegPose = EntityArmorStand.bv;
+         this.rightLegPose = EntityArmorStand.bw;
 +        if (world != null) this.canTick = world.paperConfig.armorStandTick; // Paper - armour stand ticking
-         this.K = 0.0F;
+         this.H = 0.0F;
      }
  
-@@ -135,6 +142,7 @@ public class EntityArmorStand extends EntityLiving {
+@@ -140,6 +147,7 @@ public class EntityArmorStand extends EntityLiving {
                  this.armorItems.set(enumitemslot.b(), itemstack);
          }
  
@@ -52,7 +52,7 @@ index d8497fa5e..85fc48371 100644
      }
  
      @Override
-@@ -215,6 +223,7 @@ public class EntityArmorStand extends EntityLiving {
+@@ -220,6 +228,7 @@ public class EntityArmorStand extends EntityLiving {
          }
  
          nbttagcompound.set("Pose", this.B());
@@ -60,7 +60,7 @@ index d8497fa5e..85fc48371 100644
      }
  
      @Override
-@@ -246,6 +255,12 @@ public class EntityArmorStand extends EntityLiving {
+@@ -251,6 +260,12 @@ public class EntityArmorStand extends EntityLiving {
          this.setBasePlate(nbttagcompound.getBoolean("NoBasePlate"));
          this.setMarker(nbttagcompound.getBoolean("Marker"));
          this.noclip = !this.A();
@@ -73,7 +73,7 @@ index d8497fa5e..85fc48371 100644
          NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Pose");
  
          this.g(nbttagcompound1);
-@@ -589,7 +604,29 @@ public class EntityArmorStand extends EntityLiving {
+@@ -605,7 +620,29 @@ public class EntityArmorStand extends EntityLiving {
  
      @Override
      public void tick() {
@@ -103,7 +103,7 @@ index d8497fa5e..85fc48371 100644
          Vector3f vector3f = (Vector3f) this.datawatcher.get(EntityArmorStand.c);
  
          if (!this.headPose.equals(vector3f)) {
-@@ -712,31 +749,37 @@ public class EntityArmorStand extends EntityLiving {
+@@ -728,31 +765,37 @@ public class EntityArmorStand extends EntityLiving {
      public void setHeadPose(Vector3f vector3f) {
          this.headPose = vector3f;
          this.datawatcher.set(EntityArmorStand.c, vector3f);
@@ -136,32 +136,32 @@ index d8497fa5e..85fc48371 100644
  
      public void setRightLegPose(Vector3f vector3f) {
          this.rightLegPose = vector3f;
-         this.datawatcher.set(EntityArmorStand.bs, vector3f);
+         this.datawatcher.set(EntityArmorStand.bp, vector3f);
 +        this.noTickPoseDirty = true; // Paper - Allow updates when not ticking
      }
  
      public Vector3f r() {
 diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index e1972f793..dbf42f882 100644
+index 470cbddeb..91b6d6878 100644
 --- a/src/main/java/net/minecraft/server/EntityLiving.java
 +++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2266,52 +2266,7 @@ public abstract class EntityLiving extends Entity {
+@@ -2324,52 +2324,7 @@ public abstract class EntityLiving extends Entity {
                  }
              }
  
 -            EnumItemSlot[] aenumitemslot = EnumItemSlot.values();
--            int j = aenumitemslot.length;
+-            int k = aenumitemslot.length;
 -
--            for (int k = 0; k < j; ++k) {
--                EnumItemSlot enumitemslot = aenumitemslot[k];
+-            for (int l = 0; l < k; ++l) {
+-                EnumItemSlot enumitemslot = aenumitemslot[l];
 -                ItemStack itemstack;
 -
 -                switch (enumitemslot.a()) {
 -                    case HAND:
--                        itemstack = (ItemStack) this.bw.get(enumitemslot.b());
+-                        itemstack = (ItemStack) this.bu.get(enumitemslot.b());
 -                        break;
 -                    case ARMOR:
--                        itemstack = (ItemStack) this.bx.get(enumitemslot.b());
+-                        itemstack = (ItemStack) this.bv.get(enumitemslot.b());
 -                        break;
 -                    default:
 -                        continue;
@@ -188,10 +188,10 @@ index e1972f793..dbf42f882 100644
 -
 -                    switch (enumitemslot.a()) {
 -                        case HAND:
--                            this.bw.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
+-                            this.bu.set(enumitemslot.b(), itemstack1.cloneItemStack());
 -                            break;
 -                        case ARMOR:
--                            this.bx.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
+-                            this.bv.set(enumitemslot.b(), itemstack1.cloneItemStack());
 -                    }
 -                }
 -            }
@@ -199,25 +199,24 @@ index e1972f793..dbf42f882 100644
  
              if (this.ticksLived % 20 == 0) {
                  this.getCombatTracker().g();
-@@ -2412,6 +2367,57 @@ public abstract class EntityLiving extends Entity {
+@@ -2470,6 +2425,55 @@ public abstract class EntityLiving extends Entity {
          }
      }
  
 +    // Paper start - split into own method from above
 +    public void updateEntityEquipment() {
 +        EnumItemSlot[] aenumitemslot = EnumItemSlot.values();
-+        int j = aenumitemslot.length;
-+
-+        for (int k = 0; k < j; ++k) {
-+            EnumItemSlot enumitemslot = aenumitemslot[k];
++        int k = aenumitemslot.length;
++        for (int l = 0; l < k; ++l) {
++            EnumItemSlot enumitemslot = aenumitemslot[l];
 +            ItemStack itemstack;
 +
 +            switch (enumitemslot.a()) {
 +                case HAND:
-+                    itemstack = (ItemStack) this.bw.get(enumitemslot.b());
++                    itemstack = (ItemStack) this.bu.get(enumitemslot.b());
 +                    break;
 +                case ARMOR:
-+                    itemstack = (ItemStack) this.bx.get(enumitemslot.b());
++                    itemstack = (ItemStack) this.bv.get(enumitemslot.b());
 +                    break;
 +                default:
 +                    continue;
@@ -244,21 +243,20 @@ index e1972f793..dbf42f882 100644
 +
 +                switch (enumitemslot.a()) {
 +                    case HAND:
-+                        this.bw.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
++                        this.bu.set(enumitemslot.b(), itemstack1.cloneItemStack());
 +                        break;
 +                    case ARMOR:
-+                        this.bx.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack());
++                        this.bv.set(enumitemslot.b(), itemstack1.cloneItemStack());
 +                }
 +            }
 +        }
 +    }
-+    // Paper end
 +
-     protected float e(float f, float f1) {
-         float f2 = MathHelper.g(f - this.aK);
+     protected float f(float f, float f1) {
+         float f2 = MathHelper.g(f - this.aI);
  
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
-index 9f5c3b92e..73714d71a 100644
+index d1d689e5d..ac105270d 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
 @@ -297,5 +297,16 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
@@ -279,5 +277,5 @@ index 9f5c3b92e..73714d71a 100644
      // Paper end
  }
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0285-Optimize-BlockPosition-helper-methods.patch b/Spigot-Server-Patches/0278-Optimize-BlockPosition-helper-methods.patch
similarity index 85%
rename from Spigot-Server-Patches/0285-Optimize-BlockPosition-helper-methods.patch
rename to Spigot-Server-Patches/0278-Optimize-BlockPosition-helper-methods.patch
index 0863abcd78..796f0196e1 100644
--- a/Spigot-Server-Patches/0285-Optimize-BlockPosition-helper-methods.patch
+++ b/Spigot-Server-Patches/0278-Optimize-BlockPosition-helper-methods.patch
@@ -1,4 +1,4 @@
-From bc08ff9417570d7df849e53f35df454caab58231 Mon Sep 17 00:00:00 2001
+From 358d0fc1ce9cb5ce91e52c5dcaa89c7ebae35ac8 Mon Sep 17 00:00:00 2001
 From: Spottedleaf <Spottedleaf@users.noreply.github.com>
 Date: Wed, 15 Aug 2018 12:05:12 -0700
 Subject: [PATCH] Optimize BlockPosition helper methods
@@ -6,14 +6,14 @@ Subject: [PATCH] Optimize BlockPosition helper methods
 Resolves #1338
 
 diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
-index 04f754d2c1..16f0930404 100644
+index 5a505b753..142476395 100644
 --- a/src/main/java/net/minecraft/server/BlockPosition.java
 +++ b/src/main/java/net/minecraft/server/BlockPosition.java
-@@ -134,55 +134,72 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
+@@ -134,57 +134,74 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali
      }
  
      public BlockPosition up() {
--        return this.up(1);
+-        return this.shift(EnumDirection.UP);
 +        return new BlockPosition(this.getX(), this.getY() + 1, this.getZ()); // Paper - Optimize BlockPosition
      }
  
@@ -22,18 +22,20 @@ index 04f754d2c1..16f0930404 100644
 +        return i == 0 ? this : new BlockPosition(this.getX(), this.getY() + i, this.getZ()); // Paper - Optimize BlockPosition
      }
  
+     @Override
      public BlockPosition down() {
--        return this.down(1);
+-        return this.shift(EnumDirection.DOWN);
 +        return new BlockPosition(this.getX(), this.getY() - 1, this.getZ()); // Paper - Optimize BlockPosition
      }
  
+     @Override
      public BlockPosition down(int i) {
 -        return this.shift(EnumDirection.DOWN, i);
 +        return i == 0 ? this : new BlockPosition(this.getX(), this.getY() - i, this.getZ()); // Paper - Optimize BlockPosition
      }
  
      public BlockPosition north() {
--        return this.north(1);
+-        return this.shift(EnumDirection.NORTH);
 +        return new BlockPosition(this.getX(), this.getY(), this.getZ() - 1); // Paper - Optimize BlockPosition
      }
  
@@ -43,7 +45,7 @@ index 04f754d2c1..16f0930404 100644
      }
  
      public BlockPosition south() {
--        return this.south(1);
+-        return this.shift(EnumDirection.SOUTH);
 +        return new BlockPosition(this.getX(), this.getY(), this.getZ() + 1); // Paper - Optimize BlockPosition
      }
  
@@ -53,7 +55,7 @@ index 04f754d2c1..16f0930404 100644
      }
  
      public BlockPosition west() {
--        return this.west(1);
+-        return this.shift(EnumDirection.WEST);
 +        return new BlockPosition(this.getX() - 1, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
      }
  
@@ -63,7 +65,7 @@ index 04f754d2c1..16f0930404 100644
      }
  
      public BlockPosition east() {
--        return this.east(1);
+-        return this.shift(EnumDirection.EAST);
 +        return new BlockPosition(this.getX() + 1, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
      }
  
@@ -73,7 +75,7 @@ index 04f754d2c1..16f0930404 100644
      }
  
      public BlockPosition shift(EnumDirection enumdirection) {
--        return this.shift(enumdirection, 1);
+-        return new BlockPosition(this.getX() + enumdirection.getAdjacentX(), this.getY() + enumdirection.getAdjacentY(), this.getZ() + enumdirection.getAdjacentZ());
 +        // Paper Start - Optimize BlockPosition
 +        switch(enumdirection) {
 +            case UP:
@@ -94,7 +96,7 @@ index 04f754d2c1..16f0930404 100644
 +        // Paper End
      }
  
-     public BlockPosition shift(EnumDirection enumdirection, int i) {
+     @Override
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0286-Send-nearby-packets-from-world-player-list-not-serve.patch b/Spigot-Server-Patches/0279-Send-nearby-packets-from-world-player-list-not-serve.patch
similarity index 82%
rename from Spigot-Server-Patches/0286-Send-nearby-packets-from-world-player-list-not-serve.patch
rename to Spigot-Server-Patches/0279-Send-nearby-packets-from-world-player-list-not-serve.patch
index db937b53dd..89e9f55c91 100644
--- a/Spigot-Server-Patches/0286-Send-nearby-packets-from-world-player-list-not-serve.patch
+++ b/Spigot-Server-Patches/0279-Send-nearby-packets-from-world-player-list-not-serve.patch
@@ -1,14 +1,14 @@
-From ca03c7262701704ccf28cc21a909c752ca1b9c19 Mon Sep 17 00:00:00 2001
+From 8994b45d4f74697c2e8d62bae6ff636740fef2ea Mon Sep 17 00:00:00 2001
 From: Mystiflow <mystiflow@gmail.com>
 Date: Fri, 6 Jul 2018 13:21:30 +0100
 Subject: [PATCH] Send nearby packets from world player list not server list
 
 
 diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index 9e5cd22d7d..049d702cb9 100644
+index fd0f5c6f2..e46436623 100644
 --- a/src/main/java/net/minecraft/server/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/PlayerList.java
-@@ -922,8 +922,25 @@ public abstract class PlayerList {
+@@ -923,8 +923,25 @@ public abstract class PlayerList {
      }
  
      public void sendPacketNearby(@Nullable EntityHuman entityhuman, double d0, double d1, double d2, double d3, DimensionManager dimensionmanager, Packet<?> packet) {
@@ -36,29 +36,29 @@ index 9e5cd22d7d..049d702cb9 100644
  
              // CraftBukkit start - Test if player receiving packet can see the source of the packet
              if (entityhuman != null && entityhuman instanceof EntityPlayer && !entityplayer.getBukkitEntity().canSee(((EntityPlayer) entityhuman).getBukkitEntity())) {
-@@ -931,7 +948,7 @@ public abstract class PlayerList {
+@@ -932,7 +949,7 @@ public abstract class PlayerList {
              }
              // CraftBukkit end
  
 -            if (entityplayer != entityhuman && entityplayer.dimension == dimensionmanager) {
 +            if (entityplayer != entityhuman && (world != null || entityplayer.dimension == dimensionmanager)) { // Paper
-                 double d4 = d0 - entityplayer.locX;
-                 double d5 = d1 - entityplayer.locY;
-                 double d6 = d2 - entityplayer.locZ;
+                 double d4 = d0 - entityplayer.locX();
+                 double d5 = d1 - entityplayer.locY();
+                 double d6 = d2 - entityplayer.locZ();
 diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index 6c55ae1a9f..8b55879c64 100644
+index afae55973..640e40ef8 100644
 --- a/src/main/java/net/minecraft/server/WorldServer.java
 +++ b/src/main/java/net/minecraft/server/WorldServer.java
-@@ -1251,7 +1251,7 @@ public class WorldServer extends World {
+@@ -1259,7 +1259,7 @@ public class WorldServer extends World {
          }
          // CraftBukkit end
          this.globalEntityList.add(entitylightning);
--        this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX, entitylightning.locY, entitylightning.locZ, 512.0D, this.worldProvider.getDimensionManager(), new PacketPlayOutSpawnEntityWeather(entitylightning));
-+        this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX, entitylightning.locY, entitylightning.locZ, 512.0D, this, new PacketPlayOutSpawnEntityWeather(entitylightning)); // Paper - use world instead of dimension
+-        this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX(), entitylightning.locY(), entitylightning.locZ(), 512.0D, this.worldProvider.getDimensionManager(), new PacketPlayOutSpawnEntityWeather(entitylightning));
++        this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX(), entitylightning.locY(), entitylightning.locZ(), 512.0D, this, new PacketPlayOutSpawnEntityWeather(entitylightning)); // Paper - use world instead of dimension
      }
  
      @Override
-@@ -1383,7 +1383,7 @@ public class WorldServer extends World {
+@@ -1391,7 +1391,7 @@ public class WorldServer extends World {
              BlockActionData blockactiondata = (BlockActionData) this.I.removeFirst();
  
              if (this.a(blockactiondata)) {
@@ -68,10 +68,10 @@ index 6c55ae1a9f..8b55879c64 100644
          }
  
 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 01b869a06f..f57023529d 100644
+index cc4788c96..a2739b887 100644
 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -2034,7 +2034,7 @@ public class CraftWorld implements World {
+@@ -2044,7 +2044,7 @@ public class CraftWorld implements World {
          double z = loc.getZ();
  
          PacketPlayOutCustomSoundEffect packet = new PacketPlayOutCustomSoundEffect(new MinecraftKey(sound), SoundCategory.valueOf(category.name()), new Vec3D(x, y, z), volume, pitch);
@@ -81,5 +81,5 @@ index 01b869a06f..f57023529d 100644
  
      private static Map<String, GameRules.GameRuleKey<?>> gamerules;
 -- 
-2.22.1
+2.24.0
 
diff --git a/Spigot-Server-Patches/0287-Restore-vanlla-default-mob-spawn-range.patch b/Spigot-Server-Patches/0280-Restore-vanlla-default-mob-spawn-range.patch
similarity index 86%
rename from Spigot-Server-Patches/0287-Restore-vanlla-default-mob-spawn-range.patch
rename to Spigot-Server-Patches/0280-Restore-vanlla-default-mob-spawn-range.patch
index 05d7f7ea52..c72209fd51 100644
--- a/Spigot-Server-Patches/0287-Restore-vanlla-default-mob-spawn-range.patch
+++ b/Spigot-Server-Patches/0280-Restore-vanlla-default-mob-spawn-range.patch
@@ -1,11 +1,11 @@
-From a72924bfa010ce50f8a5a40414decbe42c15d22e Mon Sep 17 00:00:00 2001
+From fe176073abc6d42b34160371c9766ed78ebcf57e Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Sat, 18 Aug 2018 12:43:16 -0400
 Subject: [PATCH] Restore vanlla default mob-spawn-range
 
 
 diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index 8c7dd013..4feea10d 100644
+index 8c7dd0133..4feea10de 100644
 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
 +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
 @@ -165,7 +165,7 @@ public class SpigotWorldConfig
@@ -18,5 +18,5 @@ index 8c7dd013..4feea10d 100644
      }
  
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0288-Optimize-Hoppers.patch b/Spigot-Server-Patches/0281-Optimize-Hoppers.patch
similarity index 89%
rename from Spigot-Server-Patches/0288-Optimize-Hoppers.patch
rename to Spigot-Server-Patches/0281-Optimize-Hoppers.patch
index 8bb48ce192..1c4865dc90 100644
--- a/Spigot-Server-Patches/0288-Optimize-Hoppers.patch
+++ b/Spigot-Server-Patches/0281-Optimize-Hoppers.patch
@@ -1,4 +1,4 @@
-From aedcb2249752ae04d77f953d837e2af692ef756f Mon Sep 17 00:00:00 2001
+From 41595f03900fb5abaeedd14a6da858d95f423937 Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Wed, 27 Apr 2016 22:09:52 -0400
 Subject: [PATCH] Optimize Hoppers
@@ -11,13 +11,14 @@ Subject: [PATCH] Optimize Hoppers
 * Skip subsequent InventoryMoveItemEvents if a plugin does not use the item after first event fire for an iteration
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 9ee27f638..269c1ace4 100644
+index 42d14fac2..80d66c647 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-@@ -360,6 +360,15 @@ public class PaperWorldConfig {
-         squidMaxSpawnHeight = getDouble("squid-spawn-height.maximum", 0.0D);
+@@ -397,4 +397,13 @@ public class PaperWorldConfig {
+         this.armorStandTick = this.getBoolean("armor-stands-tick", this.armorStandTick);
+         log("ArmorStand ticking is " + (this.armorStandTick ? "enabled" : "disabled") + " by default");
      }
- 
++
 +    public boolean cooldownHopperWhenFull = true;
 +    public boolean disableHopperMoveEvents = false;
 +    private void hopperOptimizations() {
@@ -26,31 +27,31 @@ index 9ee27f638..269c1ace4 100644
 +        disableHopperMoveEvents = getBoolean("hopper.disable-move-event", disableHopperMoveEvents);
 +        log("Hopper Move Item Events: " + (disableHopperMoveEvents ? "disabled" : "enabled"));
 +    }
-+
-     public boolean disableSprintInterruptionOnAttack;
-     private void disableSprintInterruptionOnAttack() {
-         disableSprintInterruptionOnAttack = getBoolean("game-mechanics.disable-sprint-interruption-on-attack", false);
+ }
 diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
-index c69a067ef..1e23d77e7 100644
+index 33d9cac4d..627fa465c 100644
 --- a/src/main/java/net/minecraft/server/ItemStack.java
 +++ b/src/main/java/net/minecraft/server/ItemStack.java
-@@ -482,8 +482,9 @@ public final class ItemStack {
+@@ -481,11 +481,12 @@ public final class ItemStack {
          return this.getItem().a(this, entityhuman, entityliving, enumhand);
      }
  
 -    public ItemStack cloneItemStack() {
--        ItemStack itemstack = new ItemStack(this.getItem(), this.count);
 +    public ItemStack cloneItemStack() { return cloneItemStack(false); } // Paper
 +    public ItemStack cloneItemStack(boolean origItem) { // Paper
-+        ItemStack itemstack = new ItemStack(origItem ? this.item : this.getItem(), this.count); // Paper
+         if (this.isEmpty()) {
+             return ItemStack.a;
+         } else {
+-            ItemStack itemstack = new ItemStack(this.getItem(), this.count);
++            ItemStack itemstack = new ItemStack(origItem ? this.item : this.getItem(), this.count); // Paper
  
-         itemstack.d(this.C());
-         if (this.tag != null) {
+             itemstack.d(this.C());
+             if (this.tag != null) {
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 6f410ca92..c07578067 100644
+index dd2d8712e..206a4ad64 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1160,6 +1160,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
+@@ -1168,6 +1168,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
              WorldServer worldserver = (WorldServer) iterator.next();
  
              worldserver.hasPhysicsEvent =  org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
@@ -59,7 +60,7 @@ index 6f410ca92..c07578067 100644
                  this.methodProfiler.a(() -> {
                      return worldserver.getWorldData().getName() + " " + IRegistry.DIMENSION_TYPE.getKey(worldserver.worldProvider.getDimensionManager());
 diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
-index c72b01386..b8ddb99fa 100644
+index 958279249..a8e64dfda 100644
 --- a/src/main/java/net/minecraft/server/TileEntity.java
 +++ b/src/main/java/net/minecraft/server/TileEntity.java
 @@ -62,6 +62,7 @@ public abstract class TileEntity implements KeyedObject { // Paper
@@ -70,7 +71,7 @@ index c72b01386..b8ddb99fa 100644
      // Paper end
  
      @Nullable
-@@ -139,6 +140,7 @@ public abstract class TileEntity implements KeyedObject { // Paper
+@@ -140,6 +141,7 @@ public abstract class TileEntity implements KeyedObject { // Paper
  
      public void update() {
          if (this.world != null) {
@@ -79,10 +80,10 @@ index c72b01386..b8ddb99fa 100644
              this.world.b(this.position, this);
              if (!this.c.isAir()) {
 diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
-index 1ba98bf73..6f6519f6c 100644
+index e08faf538..15588103b 100644
 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java
 +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
-@@ -189,6 +189,154 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -168,6 +168,154 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
          return false;
      }
  
@@ -234,10 +235,10 @@ index 1ba98bf73..6f6519f6c 100644
 +    }
 +    // Paper end
 +
-     private boolean t() {
-         IInventory iinventory = this.u();
+     private boolean j() {
+         IInventory iinventory = this.k();
  
-@@ -200,6 +348,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -179,6 +327,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
              if (this.b(iinventory, enumdirection)) {
                  return false;
              } else {
@@ -245,7 +246,7 @@ index 1ba98bf73..6f6519f6c 100644
                  for (int i = 0; i < this.getSize(); ++i) {
                      if (!this.getItem(i).isEmpty()) {
                          ItemStack itemstack = this.getItem(i).cloneItemStack();
-@@ -237,7 +386,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -216,7 +365,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
                      }
                  }
  
@@ -254,7 +255,7 @@ index 1ba98bf73..6f6519f6c 100644
              }
          }
      }
-@@ -267,6 +416,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -246,6 +395,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
              EnumDirection enumdirection = EnumDirection.DOWN;
  
              return c(iinventory, enumdirection) ? false : a(iinventory, enumdirection).anyMatch((i) -> {
@@ -262,7 +263,7 @@ index 1ba98bf73..6f6519f6c 100644
                  return a(ihopper, iinventory, i, enumdirection);
              });
          } else {
-@@ -290,6 +440,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -269,6 +419,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
          ItemStack itemstack = iinventory.getItem(i);
  
          if (!itemstack.isEmpty() && b(iinventory, itemstack, i, enumdirection)) {
@@ -270,7 +271,7 @@ index 1ba98bf73..6f6519f6c 100644
              ItemStack itemstack1 = itemstack.cloneItemStack();
              // ItemStack itemstack2 = addItem(iinventory, ihopper, iinventory.splitStack(i, 1), (EnumDirection) null);
              // CraftBukkit start - Call event on collection of items from inventories into the hopper
-@@ -326,7 +477,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -305,7 +456,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
              }
  
              itemstack1.subtract(origCount - itemstack2.getCount()); // Spigot
@@ -279,7 +280,7 @@ index 1ba98bf73..6f6519f6c 100644
          }
  
          return false;
-@@ -335,7 +486,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -314,7 +465,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
      public static boolean a(IInventory iinventory, EntityItem entityitem) {
          boolean flag = false;
          // CraftBukkit start
@@ -288,7 +289,7 @@ index 1ba98bf73..6f6519f6c 100644
          entityitem.world.getServer().getPluginManager().callEvent(event);
          if (event.isCancelled()) {
              return false;
-@@ -389,7 +540,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
+@@ -368,7 +519,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
              boolean flag1 = iinventory1.isNotEmpty();
  
              if (itemstack1.isEmpty()) {
@@ -299,5 +300,5 @@ index 1ba98bf73..6f6519f6c 100644
                  flag = true;
              } else if (a(itemstack1, itemstack)) {
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0289-Optimize-CraftBlockData-Creation.patch b/Spigot-Server-Patches/0282-Optimize-CraftBlockData-Creation.patch
similarity index 90%
rename from Spigot-Server-Patches/0289-Optimize-CraftBlockData-Creation.patch
rename to Spigot-Server-Patches/0282-Optimize-CraftBlockData-Creation.patch
index 69714ec245..2a7c9c106d 100644
--- a/Spigot-Server-Patches/0289-Optimize-CraftBlockData-Creation.patch
+++ b/Spigot-Server-Patches/0282-Optimize-CraftBlockData-Creation.patch
@@ -1,4 +1,4 @@
-From 0dc7fe61b11f27da089ec80669932ea398a42d97 Mon Sep 17 00:00:00 2001
+From 3fc1c76a17b253d86af5396c7df7bad5a945abad Mon Sep 17 00:00:00 2001
 From: miclebrick <miclebrick@outlook.com>
 Date: Thu, 23 Aug 2018 11:45:32 -0400
 Subject: [PATCH] Optimize CraftBlockData Creation
@@ -7,7 +7,7 @@ Avoids a hashmap lookup by cacheing a reference to the CraftBlockData
 and cloning it when one is needed.
 
 diff --git a/src/main/java/net/minecraft/server/IBlockData.java b/src/main/java/net/minecraft/server/IBlockData.java
-index 367b02800a..9fd1b4915f 100644
+index 08d884649..8fb0b5af0 100644
 --- a/src/main/java/net/minecraft/server/IBlockData.java
 +++ b/src/main/java/net/minecraft/server/IBlockData.java
 @@ -4,6 +4,8 @@ import com.google.common.collect.ImmutableMap;
@@ -33,13 +33,13 @@ index 367b02800a..9fd1b4915f 100644
 +    // Paper end
 +
      public Material getMaterial() {
-         return this.getBlock().l(this);
+         return this.getBlock().k(this);
      }
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-index 99c361dc69..839e645b69 100644
+index e371e7f6d..32e1e7e20 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
-@@ -548,7 +548,17 @@ public class CraftBlockData implements BlockData {
+@@ -549,7 +549,17 @@ public class CraftBlockData implements BlockData {
          return craft;
      }
  
@@ -58,5 +58,5 @@ index 99c361dc69..839e645b69 100644
      }
  }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0290-Fix-MC-124320.patch b/Spigot-Server-Patches/0283-Fix-MC-124320.patch
similarity index 87%
rename from Spigot-Server-Patches/0290-Fix-MC-124320.patch
rename to Spigot-Server-Patches/0283-Fix-MC-124320.patch
index 740081064c..334f28bbd6 100644
--- a/Spigot-Server-Patches/0290-Fix-MC-124320.patch
+++ b/Spigot-Server-Patches/0283-Fix-MC-124320.patch
@@ -1,14 +1,14 @@
-From 655ce6a322e71a7650745e2f2af7ff76300e2e31 Mon Sep 17 00:00:00 2001
+From c9add3dc1b55a0e314d5666f92048780391543e4 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Thu, 23 Aug 2018 09:25:30 -0500
 Subject: [PATCH] Fix MC-124320
 
 
 diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
-index 2c0e59c60d..3aa4cb6401 100644
+index 3e4fc4ee5..2262a8253 100644
 --- a/src/main/java/net/minecraft/server/Block.java
 +++ b/src/main/java/net/minecraft/server/Block.java
-@@ -167,6 +167,7 @@ public class Block implements IMaterial {
+@@ -170,6 +170,7 @@ public class Block implements IMaterial {
          return tag.isTagged(this);
      }
  
@@ -17,10 +17,10 @@ index 2c0e59c60d..3aa4cb6401 100644
          IBlockData iblockdata1 = iblockdata;
          BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
 diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
-index 639f55ed98..2d29da8560 100644
+index 607d6da6a..9783576e3 100644
 --- a/src/main/java/net/minecraft/server/EntityEnderman.java
 +++ b/src/main/java/net/minecraft/server/EntityEnderman.java
-@@ -335,8 +335,9 @@ public class EntityEnderman extends EntityMonster {
+@@ -354,8 +354,9 @@ public class EntityEnderman extends EntityMonster {
              if (block.a(TagsBlock.ENDERMAN_HOLDABLE) && flag) {
                  // CraftBukkit start - Pickup event
                  if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.enderman, blockposition, Blocks.AIR.getBlockData()).isCancelled()) {
@@ -31,7 +31,7 @@ index 639f55ed98..2d29da8560 100644
                  }
                  // CraftBukkit end
              }
-@@ -346,6 +347,7 @@ public class EntityEnderman extends EntityMonster {
+@@ -365,6 +366,7 @@ public class EntityEnderman extends EntityMonster {
  
      static class PathfinderGoalEndermanPlaceBlock extends PathfinderGoal {
  
@@ -39,7 +39,7 @@ index 639f55ed98..2d29da8560 100644
          private final EntityEnderman a;
  
          public PathfinderGoalEndermanPlaceBlock(EntityEnderman entityenderman) {
-@@ -368,7 +370,7 @@ public class EntityEnderman extends EntityMonster {
+@@ -387,7 +389,7 @@ public class EntityEnderman extends EntityMonster {
              IBlockData iblockdata = world.getType(blockposition);
              BlockPosition blockposition1 = blockposition.down();
              IBlockData iblockdata1 = world.getType(blockposition1);
@@ -49,5 +49,5 @@ index 639f55ed98..2d29da8560 100644
              if (iblockdata2 != null && this.a(world, blockposition, iblockdata2, iblockdata, iblockdata1, blockposition1)) {
                  // CraftBukkit start - Place event
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0291-Slime-Pathfinder-Events.patch b/Spigot-Server-Patches/0284-Slime-Pathfinder-Events.patch
similarity index 84%
rename from Spigot-Server-Patches/0291-Slime-Pathfinder-Events.patch
rename to Spigot-Server-Patches/0284-Slime-Pathfinder-Events.patch
index f431316b75..9c74f9dbeb 100644
--- a/Spigot-Server-Patches/0291-Slime-Pathfinder-Events.patch
+++ b/Spigot-Server-Patches/0284-Slime-Pathfinder-Events.patch
@@ -1,11 +1,11 @@
-From c1aebef600be981587f5720b073036ed868e11ff Mon Sep 17 00:00:00 2001
+From 38d41c92cdf00860969c77be56035d6ca584ff2c Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Fri, 24 Aug 2018 08:18:42 -0500
 Subject: [PATCH] Slime Pathfinder Events
 
 
 diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java
-index a5238c6734..253ff9594c 100644
+index 3ecf73219..2efc18df9 100644
 --- a/src/main/java/net/minecraft/server/EntitySlime.java
 +++ b/src/main/java/net/minecraft/server/EntitySlime.java
 @@ -3,6 +3,14 @@ package net.minecraft.server;
@@ -23,18 +23,18 @@ index a5238c6734..253ff9594c 100644
  // CraftBukkit start
  import java.util.ArrayList;
  import java.util.List;
-@@ -64,6 +72,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -71,6 +79,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
          super.b(nbttagcompound);
          nbttagcompound.setInt("Size", this.getSize() - 1);
-         nbttagcompound.setBoolean("wasOnGround", this.bA);
+         nbttagcompound.setBoolean("wasOnGround", this.bx);
 +        nbttagcompound.setBoolean("Paper.canWander", this.canWander); // Paper
      }
  
      @Override
-@@ -77,6 +86,11 @@ public class EntitySlime extends EntityInsentient implements IMonster {
- 
+@@ -84,6 +93,11 @@ public class EntitySlime extends EntityInsentient implements IMonster {
          this.setSize(i + 1, false);
-         this.bA = nbttagcompound.getBoolean("wasOnGround");
+         super.a(nbttagcompound);
+         this.bx = nbttagcompound.getBoolean("wasOnGround");
 +        // Paper start - check exists before loading or this will be loaded as false
 +        if (nbttagcompound.hasKey("Paper.canWander")) {
 +            this.canWander = nbttagcompound.getBoolean("Paper.canWander");
@@ -42,8 +42,8 @@ index a5238c6734..253ff9594c 100644
 +        // Paper end
      }
  
-     public boolean ea() {
-@@ -342,7 +356,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+     public boolean ev() {
+@@ -357,7 +371,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
  
          @Override
          public boolean a() {
@@ -52,21 +52,21 @@ index a5238c6734..253ff9594c 100644
          }
  
          @Override
-@@ -363,7 +377,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -378,7 +392,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
  
          @Override
          public boolean a() {
--            return (this.a.isInWater() || this.a.aD()) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime;
-+            return (this.a.isInWater() || this.a.aD()) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime && this.a.canWander && new SlimeSwimEvent((Slime) this.a.getBukkitEntity()).callEvent(); // Paper
+-            return (this.a.isInWater() || this.a.aH()) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime;
++            return (this.a.isInWater() || this.a.aH()) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime && this.a.canWander && new SlimeSwimEvent((Slime) this.a.getBukkitEntity()).callEvent(); // Paper
          }
  
          @Override
-@@ -389,14 +403,18 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -404,14 +418,18 @@ public class EntitySlime extends EntityInsentient implements IMonster {
  
          @Override
          public boolean a() {
--            return this.a.getGoalTarget() == null && (this.a.onGround || this.a.isInWater() || this.a.aD() || this.a.hasEffect(MobEffects.LEVITATION)) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime;
-+            return this.a.canWander && this.a.getGoalTarget() == null && (this.a.onGround || this.a.isInWater() || this.a.aD() || this.a.hasEffect(MobEffects.LEVITATION)) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime;
+-            return this.a.getGoalTarget() == null && (this.a.onGround || this.a.isInWater() || this.a.aH() || this.a.hasEffect(MobEffects.LEVITATION)) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime;
++            return this.a.canWander && this.a.getGoalTarget() == null && (this.a.onGround || this.a.isInWater() || this.a.aH() || this.a.hasEffect(MobEffects.LEVITATION)) && this.a.getControllerMove() instanceof EntitySlime.ControllerMoveSlime;
          }
  
          @Override
@@ -82,7 +82,7 @@ index a5238c6734..253ff9594c 100644
              }
  
              ((EntitySlime.ControllerMoveSlime) this.a.getControllerMove()).a(this.b, false);
-@@ -417,7 +435,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -432,7 +450,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
          public boolean a() {
              EntityLiving entityliving = this.a.getGoalTarget();
  
@@ -99,7 +99,7 @@ index a5238c6734..253ff9594c 100644
          }
  
          @Override
-@@ -430,7 +456,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -445,7 +471,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
          public boolean b() {
              EntityLiving entityliving = this.a.getGoalTarget();
  
@@ -116,9 +116,9 @@ index a5238c6734..253ff9594c 100644
          }
  
          @Override
-@@ -438,6 +472,13 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -453,6 +487,13 @@ public class EntitySlime extends EntityInsentient implements IMonster {
              this.a.a((Entity) this.a.getGoalTarget(), 10.0F, 10.0F);
-             ((EntitySlime.ControllerMoveSlime) this.a.getControllerMove()).a(this.a.yaw, this.a.dV());
+             ((EntitySlime.ControllerMoveSlime) this.a.getControllerMove()).a(this.a.yaw, this.a.eq());
          }
 +
 +        // Paper start - clear timer and target when goal resets
@@ -130,7 +130,7 @@ index a5238c6734..253ff9594c 100644
      }
  
      static class ControllerMoveSlime extends ControllerMove {
-@@ -496,4 +537,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
+@@ -511,4 +552,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
              }
          }
      }
@@ -147,7 +147,7 @@ index a5238c6734..253ff9594c 100644
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java
-index ce6ed6e890..6e9f1b66df 100644
+index ce6ed6e89..6e9f1b66d 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java
 @@ -35,4 +35,14 @@ public class CraftSlime extends CraftMob implements Slime {
@@ -166,5 +166,5 @@ index ce6ed6e890..6e9f1b66df 100644
 +    // Paper end
  }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0292-Configurable-speed-for-water-flowing-over-lava.patch b/Spigot-Server-Patches/0285-Configurable-speed-for-water-flowing-over-lava.patch
similarity index 75%
rename from Spigot-Server-Patches/0292-Configurable-speed-for-water-flowing-over-lava.patch
rename to Spigot-Server-Patches/0285-Configurable-speed-for-water-flowing-over-lava.patch
index bab795849b..a2ded722f4 100644
--- a/Spigot-Server-Patches/0292-Configurable-speed-for-water-flowing-over-lava.patch
+++ b/Spigot-Server-Patches/0285-Configurable-speed-for-water-flowing-over-lava.patch
@@ -1,36 +1,34 @@
-From d9f6102addc1d6c4361c79f61a40d7edba63ce4b Mon Sep 17 00:00:00 2001
+From 2dbf414e34fd7e66b41f5a61ba339066334b96bc Mon Sep 17 00:00:00 2001
 From: Byteflux <byte@byteflux.net>
 Date: Wed, 8 Aug 2018 16:33:21 -0600
 Subject: [PATCH] Configurable speed for water flowing over lava
 
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 269c1ace4..4a4e9d715 100644
+index 80d66c647..e49318a19 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-@@ -401,6 +401,12 @@ public class PaperWorldConfig {
-         }
+@@ -406,4 +406,10 @@ public class PaperWorldConfig {
+         disableHopperMoveEvents = getBoolean("hopper.disable-move-event", disableHopperMoveEvents);
+         log("Hopper Move Item Events: " + (disableHopperMoveEvents ? "disabled" : "enabled"));
      }
- 
++
 +    public int waterOverLavaFlowSpeed;
 +    private void waterOverLavaFlowSpeed() {
 +        waterOverLavaFlowSpeed = getInt("water-over-lava-flow-speed", 5);
 +        log("Water over lava flow speed: " + waterOverLavaFlowSpeed);
 +    }
-+
-     public boolean armorStandTick = true;
-     private void armorStandTick() {
-         this.armorStandTick = this.getBoolean("armor-stands-tick", this.armorStandTick);
+ }
 diff --git a/src/main/java/net/minecraft/server/BlockFluids.java b/src/main/java/net/minecraft/server/BlockFluids.java
-index cccdd1398..56bf0b1d8 100644
+index f56e14e1e..6d351f097 100644
 --- a/src/main/java/net/minecraft/server/BlockFluids.java
 +++ b/src/main/java/net/minecraft/server/BlockFluids.java
-@@ -70,11 +70,27 @@ public class BlockFluids extends Block implements IFluidSource {
+@@ -70,11 +70,28 @@ public class BlockFluids extends Block implements IFluidSource {
      @Override
      public void onPlace(IBlockData iblockdata, World world, BlockPosition blockposition, IBlockData iblockdata1, boolean flag) {
          if (this.a(world, blockposition, iblockdata)) {
--            world.getFluidTickList().a(blockposition, iblockdata.p().getType(), this.a((IWorldReader) world));
-+            world.getFluidTickList().a(blockposition, iblockdata.p().getType(), this.getFlowSpeed(world, blockposition)); // Paper
+-            world.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.a((IWorldReader) world));
++            world.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.getFlowSpeed(world, blockposition)); // Paper
          }
  
      }
@@ -50,19 +48,20 @@ index cccdd1398..56bf0b1d8 100644
 +        return this.a(world);
 +    }
 +    // Paper end
++
 +
      @Override
      public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) {
-         if (iblockdata.p().isSource() || iblockdata1.p().isSource()) {
-@@ -87,7 +103,7 @@ public class BlockFluids extends Block implements IFluidSource {
+         if (iblockdata.getFluid().isSource() || iblockdata1.getFluid().isSource()) {
+@@ -87,7 +104,7 @@ public class BlockFluids extends Block implements IFluidSource {
      @Override
      public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) {
          if (this.a(world, blockposition, iblockdata)) {
--            world.getFluidTickList().a(blockposition, iblockdata.p().getType(), this.a((IWorldReader) world));
-+            world.getFluidTickList().a(blockposition, iblockdata.p().getType(), this.getFlowSpeed(world, blockposition)); // Paper
+-            world.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.a((IWorldReader) world));
++            world.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.getFlowSpeed(world, blockposition)); // Paper
          }
  
      }
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0293-Optimize-RegistryMaterials.patch b/Spigot-Server-Patches/0286-Optimize-RegistryMaterials.patch
similarity index 61%
rename from Spigot-Server-Patches/0293-Optimize-RegistryMaterials.patch
rename to Spigot-Server-Patches/0286-Optimize-RegistryMaterials.patch
index b0b2967885..dc1b9ec139 100644
--- a/Spigot-Server-Patches/0293-Optimize-RegistryMaterials.patch
+++ b/Spigot-Server-Patches/0286-Optimize-RegistryMaterials.patch
@@ -1,4 +1,4 @@
-From 291b4375927c5222ac23894c0a96013055bce0bc Mon Sep 17 00:00:00 2001
+From 968d20619e07b3799919f9e99e7cc45ea49648df Mon Sep 17 00:00:00 2001
 From: Aikar <aikar@aikar.co>
 Date: Sun, 26 Aug 2018 20:49:50 -0400
 Subject: [PATCH] Optimize RegistryMaterials
@@ -8,31 +8,28 @@ Use larger initial sizes to increase bucket capacity on the BiMap
 BiMap.get was seen to be using a good bit of CPU time.
 
 diff --git a/src/main/java/net/minecraft/server/RegistryMaterials.java b/src/main/java/net/minecraft/server/RegistryMaterials.java
-index f291e05b26..fed38e6ef0 100644
+index 2d6a7b3a4..8477febca 100644
 --- a/src/main/java/net/minecraft/server/RegistryMaterials.java
 +++ b/src/main/java/net/minecraft/server/RegistryMaterials.java
-@@ -16,9 +16,9 @@ import org.apache.logging.log4j.Logger;
+@@ -16,8 +16,8 @@ import org.apache.logging.log4j.Logger;
  public class RegistryMaterials<T> extends IRegistryWritable<T> {
  
      protected static final Logger LOGGER = LogManager.getLogger();
 -    protected final RegistryID<T> b = new RegistryID<>(256);
 -    protected final BiMap<MinecraftKey, T> c = HashBiMap.create();
--    protected Object[] d;
 +    protected final RegistryID<T> b = new RegistryID<>(2048); // Paper - use bigger expected size to reduce collisions
 +    protected final BiMap<MinecraftKey, T> c = HashBiMap.create(2048); // Paper - use bigger expected size to reduce collisions
-+    protected T[] d; // Paper - Decompile fix
-     private int R;
+     protected Object[] d;
+     private int V;
  
-     public RegistryMaterials() {}
-@@ -98,7 +98,7 @@ public class RegistryMaterials<T> extends IRegistryWritable<T> {
-                 return null;
-             }
- 
--            this.d = collection.toArray(new Object[collection.size()]);
-+            this.d = (T[]) collection.toArray(new Object[collection.size()]); // Paper - Decompile fix
+@@ -101,6 +101,6 @@ public class RegistryMaterials<T> extends IRegistryWritable<T> {
+             this.d = collection.toArray(new Object[collection.size()]);
          }
  
-         return this.d[random.nextInt(this.d.length)];
+-        return this.d[random.nextInt(this.d.length)];
++        return (T) this.d[random.nextInt(this.d.length)]; // Paper - Decompile fix
+     }
+ }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0294-Add-PhantomPreSpawnEvent.patch b/Spigot-Server-Patches/0287-Add-PhantomPreSpawnEvent.patch
similarity index 90%
rename from Spigot-Server-Patches/0294-Add-PhantomPreSpawnEvent.patch
rename to Spigot-Server-Patches/0287-Add-PhantomPreSpawnEvent.patch
index 565b1bb246..aa7aa11fb7 100644
--- a/Spigot-Server-Patches/0294-Add-PhantomPreSpawnEvent.patch
+++ b/Spigot-Server-Patches/0287-Add-PhantomPreSpawnEvent.patch
@@ -1,14 +1,14 @@
-From 2fc3d48ca08142a405b1d5f0e9ecfc0b257a7a3d Mon Sep 17 00:00:00 2001
+From 77e9c04db07f462dcd19bc601c80389a3f560a90 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Sat, 25 Aug 2018 19:56:51 -0500
 Subject: [PATCH] Add PhantomPreSpawnEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
-index e5ed5a3dcc..e5d032d02b 100644
+index b62a8227b..82323bf4a 100644
 --- a/src/main/java/net/minecraft/server/EntityPhantom.java
 +++ b/src/main/java/net/minecraft/server/EntityPhantom.java
-@@ -129,6 +129,11 @@ public class EntityPhantom extends EntityFlying implements IMonster {
+@@ -130,6 +130,11 @@ public class EntityPhantom extends EntityFlying implements IMonster {
          }
  
          this.setSize(nbttagcompound.getInt("Size"));
@@ -20,7 +20,7 @@ index e5ed5a3dcc..e5d032d02b 100644
      }
  
      @Override
-@@ -138,6 +143,11 @@ public class EntityPhantom extends EntityFlying implements IMonster {
+@@ -139,6 +144,11 @@ public class EntityPhantom extends EntityFlying implements IMonster {
          nbttagcompound.setInt("AY", this.d.getY());
          nbttagcompound.setInt("AZ", this.d.getZ());
          nbttagcompound.setInt("Size", this.getSize());
@@ -32,7 +32,7 @@ index e5ed5a3dcc..e5d032d02b 100644
      }
  
      @Override
-@@ -184,6 +194,14 @@ public class EntityPhantom extends EntityFlying implements IMonster {
+@@ -185,6 +195,14 @@ public class EntityPhantom extends EntityFlying implements IMonster {
          return entitysize.a(f);
      }
  
@@ -48,10 +48,10 @@ index e5ed5a3dcc..e5d032d02b 100644
  
          private final PathfinderTargetCondition b;
 diff --git a/src/main/java/net/minecraft/server/MobSpawnerPhantom.java b/src/main/java/net/minecraft/server/MobSpawnerPhantom.java
-index 9f64d81c64..1818e7c384 100644
+index add566ea4..f488c22ed 100644
 --- a/src/main/java/net/minecraft/server/MobSpawnerPhantom.java
 +++ b/src/main/java/net/minecraft/server/MobSpawnerPhantom.java
-@@ -50,8 +50,17 @@ public class MobSpawnerPhantom {
+@@ -52,8 +52,17 @@ public class MobSpawnerPhantom {
                                              int k = 1 + random.nextInt(difficultydamagescaler.a().a() + 1);
  
                                              for (int l = 0; l < k; ++l) {
@@ -71,7 +71,7 @@ index 9f64d81c64..1818e7c384 100644
                                                  groupdataentity = entityphantom.prepare(worldserver, difficultydamagescaler, EnumMobSpawn.NATURAL, groupdataentity, (NBTTagCompound) null);
                                                  worldserver.addEntity(entityphantom, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL); // CraftBukkit
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
-index 9f9ee92390..2b97313694 100644
+index 9f9ee9239..2b9731369 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
 @@ -35,4 +35,10 @@ public class CraftPhantom extends CraftFlying implements Phantom {
@@ -86,5 +86,5 @@ index 9f9ee92390..2b97313694 100644
 +    // Paper end
  }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0295-Add-More-Creeper-API.patch b/Spigot-Server-Patches/0288-Add-More-Creeper-API.patch
similarity index 90%
rename from Spigot-Server-Patches/0295-Add-More-Creeper-API.patch
rename to Spigot-Server-Patches/0288-Add-More-Creeper-API.patch
index 2c3aa6ad63..e5d4f03d8f 100644
--- a/Spigot-Server-Patches/0295-Add-More-Creeper-API.patch
+++ b/Spigot-Server-Patches/0288-Add-More-Creeper-API.patch
@@ -1,23 +1,23 @@
-From 57b5375c57af7f8abc4f1071d3a284a8a0f07e5f Mon Sep 17 00:00:00 2001
+From f350506afab5cb76e7871cd45098cc006fac77a1 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Fri, 24 Aug 2018 11:50:26 -0500
 Subject: [PATCH] Add More Creeper API
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java
-index ae4dd98ee1..bcb7276308 100644
+index 317c1998e..77ba92333 100644
 --- a/src/main/java/net/minecraft/server/EntityCreeper.java
 +++ b/src/main/java/net/minecraft/server/EntityCreeper.java
 @@ -14,7 +14,7 @@ public class EntityCreeper extends EntityMonster {
      private static final DataWatcherObject<Boolean> POWERED = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i);
      private static final DataWatcherObject<Boolean> d = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i); private static final DataWatcherObject<Boolean> isIgnitedDW = d; // Paper OBFHELPER
-     private int bz;
+     private int bw;
 -    private int fuseTicks;
 +    public int fuseTicks; // Paper - public
      public int maxFuseTicks = 30;
      public int explosionRadius = 3;
-     private int bD;
-@@ -254,7 +254,18 @@ public class EntityCreeper extends EntityMonster {
+     private int bA;
+@@ -256,7 +256,18 @@ public class EntityCreeper extends EntityMonster {
      }
  
      public void ignite() {
@@ -38,7 +38,7 @@ index ae4dd98ee1..bcb7276308 100644
  
      public boolean canCauseHeadDrop() {
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java
-index 896405148c..075a5e77e2 100644
+index 896405148..075a5e77e 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java
 @@ -88,4 +88,18 @@ public class CraftCreeper extends CraftMonster implements Creeper {
@@ -61,5 +61,5 @@ index 896405148c..075a5e77e2 100644
 +    // Paper end
  }
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0296-Inventory-removeItemAnySlot.patch b/Spigot-Server-Patches/0289-Inventory-removeItemAnySlot.patch
similarity index 95%
rename from Spigot-Server-Patches/0296-Inventory-removeItemAnySlot.patch
rename to Spigot-Server-Patches/0289-Inventory-removeItemAnySlot.patch
index b5615e70d6..5159dd042f 100644
--- a/Spigot-Server-Patches/0296-Inventory-removeItemAnySlot.patch
+++ b/Spigot-Server-Patches/0289-Inventory-removeItemAnySlot.patch
@@ -1,11 +1,11 @@
-From 4aeb1c452c1fe8329a31d85d903d476da96af48a Mon Sep 17 00:00:00 2001
+From 0718f5b18ce70b42ab6d89c685e9b8e3e8fc12fb Mon Sep 17 00:00:00 2001
 From: Zach Brown <zach.brown@destroystokyo.com>
 Date: Tue, 28 Aug 2018 23:04:15 -0400
 Subject: [PATCH] Inventory#removeItemAnySlot
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
-index 0d637e207e..026a0c3995 100644
+index 0d637e207..026a0c399 100644
 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
 @@ -223,10 +223,16 @@ public class CraftInventory implements Inventory {
@@ -57,5 +57,5 @@ index 0d637e207e..026a0c3995 100644
                  // Drat! we don't have this type in the inventory
                  if (first == -1) {
 -- 
-2.22.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0297-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch b/Spigot-Server-Patches/0290-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
similarity index 85%
rename from Spigot-Server-Patches/0297-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
rename to Spigot-Server-Patches/0290-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
index d5a37fc382..b756c2243c 100644
--- a/Spigot-Server-Patches/0297-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
+++ b/Spigot-Server-Patches/0290-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch
@@ -1,4 +1,4 @@
-From 07d2c1580badd47e46be14fd4d9f1cad5704b3fd Mon Sep 17 00:00:00 2001
+From d22280bd39cada40b9408cb5ec86efad549829f0 Mon Sep 17 00:00:00 2001
 From: Spottedleaf <Spottedleaf@users.noreply.github.com>
 Date: Sun, 2 Sep 2018 19:34:33 -0700
 Subject: [PATCH] Make CraftWorld#loadChunk(int, int, false) load unconverted
@@ -6,10 +6,10 @@ Subject: [PATCH] Make CraftWorld#loadChunk(int, int, false) load unconverted
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index f57023529d..dc0a07c7cd 100644
+index a2739b887..182322752 100644
 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -499,7 +499,7 @@ public class CraftWorld implements World {
+@@ -500,7 +500,7 @@ public class CraftWorld implements World {
      @Override
      public boolean loadChunk(int x, int z, boolean generate) {
          org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot
@@ -19,5 +19,5 @@ index f57023529d..dc0a07c7cd 100644
          // If generate = false, but the chunk already exists, we will get this back.
          if (chunk instanceof ProtoChunkExtension) {
 -- 
-2.23.0
+2.24.0
 
diff --git a/Spigot-Server-Patches/0298-Add-ray-tracing-methods-to-LivingEntity.patch b/Spigot-Server-Patches/0291-Add-ray-tracing-methods-to-LivingEntity.patch
similarity index 96%
rename from Spigot-Server-Patches/0298-Add-ray-tracing-methods-to-LivingEntity.patch
rename to Spigot-Server-Patches/0291-Add-ray-tracing-methods-to-LivingEntity.patch
index ef1a1daf1c..28c8f4db77 100644
--- a/Spigot-Server-Patches/0298-Add-ray-tracing-methods-to-LivingEntity.patch
+++ b/Spigot-Server-Patches/0291-Add-ray-tracing-methods-to-LivingEntity.patch
@@ -1,14 +1,14 @@
-From 80d0aefd27b4ddcde79903d48826b3366fa64d4a Mon Sep 17 00:00:00 2001
+From 1cff7748d9053fd2e109b2ec39eeecc5bb0bc371 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Mon, 3 Sep 2018 18:20:03 -0500
 Subject: [PATCH] Add ray tracing methods to LivingEntity
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index dbf42f882..b09712ca9 100644
+index 91b6d6878..ac85a5d23 100644
 --- a/src/main/java/net/minecraft/server/EntityLiving.java
 +++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -3177,6 +3177,23 @@ public abstract class EntityLiving extends Entity {
+@@ -3252,6 +3252,23 @@ public abstract class EntityLiving extends Entity {
          this.c(enumhand == EnumHand.MAIN_HAND ? EnumItemSlot.MAINHAND : EnumItemSlot.OFFHAND);
      }
      // Paper start
@@ -66,5 +66,5 @@ index 379239567..6f4c6c589 100644
      public List<Block> getLastTwoTargetBlocks(Set<Material> transparent, int maxDistance) {
          return getLineOfSight(transparent, maxDistance, 2);
 -- 
-2.22.1
+2.24.0
 
diff --git a/Spigot-Server-Patches/0299-Expose-attack-cooldown-methods-for-Player.patch b/Spigot-Server-Patches/0292-Expose-attack-cooldown-methods-for-Player.patch
similarity index 70%
rename from Spigot-Server-Patches/0299-Expose-attack-cooldown-methods-for-Player.patch
rename to Spigot-Server-Patches/0292-Expose-attack-cooldown-methods-for-Player.patch
index 6d61fe5e39..4e9594c321 100644
--- a/Spigot-Server-Patches/0299-Expose-attack-cooldown-methods-for-Player.patch
+++ b/Spigot-Server-Patches/0292-Expose-attack-cooldown-methods-for-Player.patch
@@ -1,40 +1,40 @@
-From fbeb62a3e4fe1b9a23b2181e90e611fdbc767dfc Mon Sep 17 00:00:00 2001
+From 20af10901efba6851ec582004bb968ff7405c197 Mon Sep 17 00:00:00 2001
 From: BillyGalbreath <Blake.Galbreath@GMail.com>
 Date: Tue, 4 Sep 2018 15:02:00 -0500
 Subject: [PATCH] Expose attack cooldown methods for Player
 
 
 diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
-index 9544039ab..2342ea481 100644
+index 007934d8c..78e48f478 100644
 --- a/src/main/java/net/minecraft/server/EntityHuman.java
 +++ b/src/main/java/net/minecraft/server/EntityHuman.java
-@@ -2023,14 +2023,17 @@ public abstract class EntityHuman extends EntityLiving {
-         this.datawatcher.set(EntityHuman.bw, nbttagcompound);
+@@ -2115,14 +2115,17 @@ public abstract class EntityHuman extends EntityLiving {
+         this.datawatcher.set(EntityHuman.bt, nbttagcompound);
      }
  
-+    public float getCooldownPeriod() { return this.dY(); } // Paper - OBFHELPER
-     public float dY() {
++    public float getCooldownPeriod() { return this.ex(); } // Paper - OBFHELPER
+     public float ex() {
          return (float) (1.0D / this.getAttributeInstance(GenericAttributes.ATTACK_SPEED).getValue() * 20.0D);
      }
  
 +    public float getCooledAttackStrength(float adjustTicks) { return s(adjustTicks); } // Paper - OBFHELPER
      public float s(float f) {
-         return MathHelper.a(((float) this.aD + f) / this.dY(), 0.0F, 1.0F);
+         return MathHelper.a(((float) this.aB + f) / this.ex(), 0.0F, 1.0F);
      }
  
-+    public void resetCooldown() { this.dZ(); } // Paper - OBFHELPER
-     public void dZ() {
-         this.aD = 0;
++    public void resetCooldown() { this.ey(); } // Paper - OBFHELPER
+     public void ey() {
+         this.aB = 0;
      }
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index ce35e6bbc..2c99a1e9d 100644
+index e45dd6cd4..9e0be10d7 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1929,6 +1929,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1913,6 +1913,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
          getInventory().setItemInMainHand(hand);
      }
  
-+    //Paper start
++    // Paper start
 +    public float getCooldownPeriod() {
 +        return getHandle().getCooldownPeriod();
 +    }
@@ -46,11 +46,11 @@ index ce35e6bbc..2c99a1e9d 100644
 +    public void resetCooldown() {
 +        getHandle().resetCooldown();
 +    }
-+    //Paper end
++    // Paper end
 +
      // Spigot start
      private final Player.Spigot spigot = new Player.Spigot()
      {
 -- 
-2.23.0
+2.24.0
 
diff --git a/removed/0078-Reduce-IO-ops-opening-a-new-region-file.patch b/removed/1.15/0078-Reduce-IO-ops-opening-a-new-region-file.patch
similarity index 100%
rename from removed/0078-Reduce-IO-ops-opening-a-new-region-file.patch
rename to removed/1.15/0078-Reduce-IO-ops-opening-a-new-region-file.patch
diff --git a/removed/0081-Do-not-load-chunks-for-light-checks.patch b/removed/1.15/0081-Do-not-load-chunks-for-light-checks.patch
similarity index 100%
rename from removed/0081-Do-not-load-chunks-for-light-checks.patch
rename to removed/1.15/0081-Do-not-load-chunks-for-light-checks.patch
diff --git a/Spigot-Server-Patches/0269-Provide-option-to-use-a-versioned-world-folder-for-t.patch b/removed/1.15/0269-Provide-option-to-use-a-versioned-world-folder-for-t.patch
similarity index 100%
rename from Spigot-Server-Patches/0269-Provide-option-to-use-a-versioned-world-folder-for-t.patch
rename to removed/1.15/0269-Provide-option-to-use-a-versioned-world-folder-for-t.patch
diff --git a/Spigot-Server-Patches/0280-Detect-and-repair-corrupt-Region-Files.patch b/removed/1.15/0280-Detect-and-repair-corrupt-Region-Files.patch
similarity index 100%
rename from Spigot-Server-Patches/0280-Detect-and-repair-corrupt-Region-Files.patch
rename to removed/1.15/0280-Detect-and-repair-corrupt-Region-Files.patch