diff --git a/Spigot-Server-Patches/Remove-specific-entities-that-fly-through-an-unloade.patch b/Spigot-Server-Patches/Remove-specific-entities-that-fly-through-an-unloade.patch
new file mode 100644
index 0000000000..7e1eba292a
--- /dev/null
+++ b/Spigot-Server-Patches/Remove-specific-entities-that-fly-through-an-unloade.patch
@@ -0,0 +1,113 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Iceee <andrew@opticgaming.tv>
+Date: Fri, 29 Aug 2014 20:33:52 -0500
+Subject: [PATCH] Remove specific entities that fly through an unloaded chunk
+
+
+diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/server/Entity.java
++++ b/src/main/java/net/minecraft/server/Entity.java
+@@ -0,0 +0,0 @@ public abstract class Entity {
+     public EnumEntitySize as;
+     public boolean valid; // CraftBukkit
+     public org.bukkit.projectiles.ProjectileSource projectileSource; // CraftBukkit - For projectiles only
++    public boolean inUnloadedChunk = false; // PaperSpigot - Remove entities in unloaded chunks
+ 
+     // Spigot start
+     public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot
+diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/server/EntityEnderPearl.java
++++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java
+@@ -0,0 +0,0 @@ public class EntityEnderPearl extends EntityProjectile {
+             movingobjectposition.entity.damageEntity(DamageSource.projectile(this, this.getShooter()), 0.0F);
+         }
+ 
++        // PaperSpigot start - Remove entities in unloaded chunks
++        if (inUnloadedChunk && world.paperSpigotConfig.removeUnloadedEnderPearls) {
++            die();
++        }
++        // PaperSpigot end
++
+         for (int i = 0; i < 32; ++i) {
+             this.world.addParticle("portal", this.locX, this.locY + this.random.nextDouble() * 2.0D, this.locZ, this.random.nextGaussian(), 0.0D, this.random.nextGaussian());
+         }
+diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
++++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
+@@ -0,0 +0,0 @@ public class EntityFallingBlock extends Entity {
+             ++this.ticksLived;
+             this.motY -= 0.03999999910593033D;
+             this.move(this.motX, this.motY, this.motZ);
++            // PaperSpigot start - Remove entities in unloaded chunks
++            if (this.inUnloadedChunk && world.paperSpigotConfig.removeUnloadedFallingBlocks) {
++                this.die();
++            }
++            // PaperSpigot end
+ 
+             // PaperSpigot start - Drop falling blocks above the specified height
+             if (this.world.paperSpigotConfig.fallingBlockHeightNerf != 0 && this.locY > this.world.paperSpigotConfig.fallingBlockHeightNerf) {
+diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java
++++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
+@@ -0,0 +0,0 @@ public class EntityTNTPrimed extends Entity {
+         this.lastZ = this.locZ;
+         this.motY -= 0.03999999910593033D;
+         this.move(this.motX, this.motY, this.motZ);
++        // PaperSpigot start - Remove entities in unloaded chunks
++        if (this.inUnloadedChunk && world.paperSpigotConfig.removeUnloadedTNTEntities) {
++            this.die();
++            this.fuseTicks = 2;
++        }
++        // PaperSpigot end
+         this.motX *= 0.9800000190734863D;
+         this.motY *= 0.9800000190734863D;
+         this.motZ *= 0.9800000190734863D;
+diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/server/World.java
++++ b/src/main/java/net/minecraft/server/World.java
+@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
+             {
+                 if ( !this.isChunkLoaded( chunkx, chunkz ) )
+                 {
++                    entity.inUnloadedChunk = true; // PaperSpigot - Remove entities in unloaded chunks
+                     continue;
+                 }
+                 int cz = chunkz << 4;
+@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
+         if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
+             entity.ticksLived++;
+             entity.inactiveTick();
++            // PaperSpigot start - Remove entities in unloaded chunks
++            if (entity instanceof EntityEnderPearl) {
++                entity.inUnloadedChunk = true;
++                entity.die();
++            }
++            // PaperSpigot end
+         } else {
+             entity.tickTimer.startTiming(); // Spigot
+             // CraftBukkit end
+diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
++++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
+@@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig
+         removeInvalidMobSpawnerTEs = getBoolean( "remove-invalid-mob-spawner-tile-entities", true);
+         log( "Remove invalid mob spawner tile entities: " + removeInvalidMobSpawnerTEs );
+     }
++
++    public boolean removeUnloadedEnderPearls;
++    public boolean removeUnloadedTNTEntities;
++    public boolean removeUnloadedFallingBlocks;
++    private void removeUnloaded()
++    {
++        removeUnloadedEnderPearls = getBoolean("remove-unloaded.enderpearls", true);
++        removeUnloadedTNTEntities = getBoolean("remove-unloaded.tnt-entities", true);
++        removeUnloadedFallingBlocks = getBoolean("remove-unloaded.falling-blocks", true);
++    }
+ }
+--
\ No newline at end of file