diff --git a/Spigot-Server-Patches/0406-Entity-Activation-Range-2.0.patch b/Spigot-Server-Patches/0406-Entity-Activation-Range-2.0.patch index 7b4ba2f7d..5ad15115b 100644 --- a/Spigot-Server-Patches/0406-Entity-Activation-Range-2.0.patch +++ b/Spigot-Server-Patches/0406-Entity-Activation-Range-2.0.patch @@ -14,10 +14,10 @@ Adds flying monsters to control ghast and phantoms Adds villagers as separate config diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index fa67a0308d9fc89652a66af35919685fab06553d..884049750af9887cd15d4af9bbcb57265dcd319d 100644 +index ca24d27cbc3100e989bf26c0f3f57cad3f97c11f..5263e219ab6c334e55fa4188e7f71594ec764e91 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -165,7 +165,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -163,7 +163,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public boolean Y; public boolean impulse; public int portalCooldown; @@ -26,7 +26,7 @@ index fa67a0308d9fc89652a66af35919685fab06553d..884049750af9887cd15d4af9bbcb5726 protected int portalTicks; protected BlockPosition ac; private boolean invulnerable; -@@ -189,6 +189,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -186,6 +186,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this); public final boolean defaultActivationState; public long activatedTick = Integer.MIN_VALUE; @@ -34,7 +34,7 @@ index fa67a0308d9fc89652a66af35919685fab06553d..884049750af9887cd15d4af9bbcb5726 public boolean spawnedViaMobSpawner; // Paper - Yes this name is similar to above, upstream took the better one protected int numCollisions = 0; // Paper public void inactiveTick() { } -@@ -578,6 +579,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -575,6 +576,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.recalcPosition(); } else { if (enummovetype == EnumMoveType.PISTON) { @@ -42,7 +42,7 @@ index fa67a0308d9fc89652a66af35919685fab06553d..884049750af9887cd15d4af9bbcb5726 vec3d = this.b(vec3d); if (vec3d.equals(Vec3D.a)) { return; -@@ -590,6 +592,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -587,6 +589,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.x = Vec3D.a; this.setMot(Vec3D.a); } @@ -56,7 +56,15 @@ index fa67a0308d9fc89652a66af35919685fab06553d..884049750af9887cd15d4af9bbcb5726 vec3d = this.a(vec3d, enummovetype); Vec3D vec3d1 = this.g(vec3d); -@@ -2712,6 +2721,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1909,6 +1918,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + } + } + ++ public void syncPositionOf(Entity entity) { k(entity); } // Paper - OBFHELPER + public void k(Entity entity) { + this.a(entity, Entity::setPosition); + } +@@ -2709,6 +2719,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.ae; } @@ -342,8 +350,98 @@ index 930e41935e0ef1af37eafca005d4e492c3b72a6f..8afacfb8d5f4efd2ad6f95fbb7b0d62e public boolean populating; public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot +diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java +index a16e64735b7d4c9b65c9d4cb2cdf56cf3e478f5f..49409f15b35f5f42f1f34824b80e0828fd655b56 100644 +--- a/src/main/java/net/minecraft/server/WorldServer.java ++++ b/src/main/java/net/minecraft/server/WorldServer.java +@@ -743,17 +743,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { + ++TimingHistory.entityTicks; // Paper - timings + // Spigot start + co.aikar.timings.Timing timer; // Paper +- if (!org.spigotmc.ActivationRange.checkIfActive(entity)) { ++ /*if (!org.spigotmc.ActivationRange.checkIfActive(entity)) { // Paper - comment out - EAR 2, reimplement below + entity.ticksLived++; + timer = entity.getEntityType().inactiveTickTimer.startTiming(); try { // Paper - timings + entity.inactiveTick(); + } finally { timer.stopTiming(); } // Paper + return; +- } ++ }*/ // Paper - comment out EAR 2 + // Spigot end + // Paper start- timings +- TimingHistory.activatedEntityTicks++; +- timer = entity.getVehicle() != null ? entity.getEntityType().passengerTickTimer.startTiming() : entity.getEntityType().tickTimer.startTiming(); ++ final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); ++ timer = isActive ? entity.getEntityType().tickTimer.startTiming() : entity.getEntityType().inactiveTickTimer.startTiming(); // Paper + try { + // Paper end - timings + entity.g(entity.locX(), entity.locY(), entity.locZ()); +@@ -767,12 +767,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { + return IRegistry.ENTITY_TYPE.getKey(entity.getEntityType()).toString(); + }); + gameprofilerfiller.c("tickNonPassenger"); ++ if (isActive) { // Paper - EAR 2 ++ TimingHistory.activatedEntityTicks++; // Paper + entity.tick(); + entity.postTick(); // CraftBukkit ++ } else { entity.inactiveTick(); } // Paper - EAR 2 + gameprofilerfiller.exit(); + } + + this.chunkCheck(entity); ++ } finally { timer.stopTiming(); } // Paper - timings + if (entity.inChunk) { + Iterator iterator = entity.getPassengers().iterator(); + +@@ -782,7 +786,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { + this.a(entity, entity1); + } + } +- } finally { timer.stopTiming(); } // Paper - timings ++ //} finally { timer.stopTiming(); } // Paper - timings - move up + + } + } +@@ -790,6 +794,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { + public void a(Entity entity, Entity entity1) { + if (!entity1.dead && entity1.getVehicle() == entity) { + if (entity1 instanceof EntityHuman || this.getChunkProvider().a(entity1)) { ++ // Paper - EAR 2 ++ final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity1); ++ co.aikar.timings.Timing timer = isActive ? entity1.getEntityType().passengerTickTimer.startTiming() : entity1.getEntityType().passengerInactiveTickTimer.startTiming(); // Paper ++ try { ++ // Paper end + entity1.g(entity1.locX(), entity1.locY(), entity1.locZ()); + entity1.lastYaw = entity1.yaw; + entity1.lastPitch = entity1.pitch; +@@ -801,7 +810,16 @@ public class WorldServer extends World implements GeneratorAccessSeed { + return IRegistry.ENTITY_TYPE.getKey(entity1.getEntityType()).toString(); + }); + gameprofilerfiller.c("tickPassenger"); ++ // Paper start - EAR 2 ++ if (isActive) { + entity1.passengerTick(); ++ } else { ++ entity1.setMot(Vec3D.a); ++ entity1.inactiveTick(); ++ // copied from inside of if (isPassenger()) of passengerTick, but that ifPassenger is unnecessary ++ entity.syncPositionOf(entity1); ++ } ++ // Paper end - EAR 2 + gameprofilerfiller.exit(); + } + +@@ -814,7 +832,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { + + this.a(entity1, entity2); + } +- } ++ } } finally { timer.stopTiming(); } // Paper - EAR2 timings + + } + } else { diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index b73af0a5fb2d08c2f3a52c699ef0d8ed34c83f77..119a9c1e400ada270d0d97bea4170a8238d9c17d 100644 +index b73af0a5fb2d08c2f3a52c699ef0d8ed34c83f77..9030284ba06dfdcc17c2710f428e84d70afea8d5 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -2,24 +2,34 @@ package org.spigotmc; @@ -589,7 +687,7 @@ index b73af0a5fb2d08c2f3a52c699ef0d8ed34c83f77..119a9c1e400ada270d0d97bea4170a82 if ( !( entity instanceof EntityArrow ) ) { - if ( !entity.isOnGround() || !entity.passengers.isEmpty() || entity.isPassenger() ) -+ if ( (!entity.isOnGround() && !(entity instanceof EntityFlying)) || !entity.passengers.isEmpty() || entity.isPassenger() ) ++ if ( (!entity.isOnGround() && !(entity instanceof EntityFlying)) ) // Paper - remove passengers logic { - return true; + return 10; // Paper diff --git a/Spigot-Server-Patches/0407-Fix-items-vanishing-through-end-portal.patch b/Spigot-Server-Patches/0407-Fix-items-vanishing-through-end-portal.patch index 963da9009..f1eb94143 100644 --- a/Spigot-Server-Patches/0407-Fix-items-vanishing-through-end-portal.patch +++ b/Spigot-Server-Patches/0407-Fix-items-vanishing-through-end-portal.patch @@ -13,10 +13,10 @@ Quickly loading the exact world spawn chunk before searching the heightmap resolves the issue without having to load all spawn chunks. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 884049750af9887cd15d4af9bbcb57265dcd319d..260e87eaec644c5b18c22a6638ef7e5d7f7b786b 100644 +index 5263e219ab6c334e55fa4188e7f71594ec764e91..8691592c64dc0a93e6de7fbd12ad53402919e6b5 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -2623,6 +2623,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2621,6 +2621,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke BlockPosition blockposition1; if (flag1) { diff --git a/Spigot-Server-Patches/0414-Add-option-to-nerf-pigmen-from-nether-portals.patch b/Spigot-Server-Patches/0414-Add-option-to-nerf-pigmen-from-nether-portals.patch index 2e1caf81f..cd6696307 100644 --- a/Spigot-Server-Patches/0414-Add-option-to-nerf-pigmen-from-nether-portals.patch +++ b/Spigot-Server-Patches/0414-Add-option-to-nerf-pigmen-from-nether-portals.patch @@ -32,10 +32,10 @@ index a224a04ee1bb9705166913ef1c66aa031d87c270..4132cd4c6f13cfa1c0cda43daaa908ff } } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 260e87eaec644c5b18c22a6638ef7e5d7f7b786b..14b860e6ba4cde37aa0a6d854187be5765acfa91 100644 +index dc36365eccdee169a3077f643fc2a11e6f4958cc..116bb4e3a1386516c375a72429d464da1c9a553b 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -191,6 +191,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -188,6 +188,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive = false; // Paper public boolean spawnedViaMobSpawner; // Paper - Yes this name is similar to above, upstream took the better one @@ -43,7 +43,7 @@ index 260e87eaec644c5b18c22a6638ef7e5d7f7b786b..14b860e6ba4cde37aa0a6d854187be57 protected int numCollisions = 0; // Paper public void inactiveTick() { } // Spigot end -@@ -1602,6 +1603,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1599,6 +1600,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke if (spawnedViaMobSpawner) { nbttagcompound.setBoolean("Paper.FromMobSpawner", true); } @@ -53,7 +53,7 @@ index 260e87eaec644c5b18c22a6638ef7e5d7f7b786b..14b860e6ba4cde37aa0a6d854187be57 // Paper end return nbttagcompound; } catch (Throwable throwable) { -@@ -1727,6 +1731,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1724,6 +1728,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } spawnedViaMobSpawner = nbttagcompound.getBoolean("Paper.FromMobSpawner"); // Restore entity's from mob spawner status diff --git a/Spigot-Server-Patches/0424-Ensure-Entity-is-never-double-registered.patch b/Spigot-Server-Patches/0424-Ensure-Entity-is-never-double-registered.patch index e2ae81fe2..0c13befc9 100644 --- a/Spigot-Server-Patches/0424-Ensure-Entity-is-never-double-registered.patch +++ b/Spigot-Server-Patches/0424-Ensure-Entity-is-never-double-registered.patch @@ -11,10 +11,10 @@ Vs behavior of non ticking of just overwriting state. We will now simply log a warning when this happens instead of crashing the server. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 14b860e6ba4cde37aa0a6d854187be5765acfa91..6eebc30671f419f337b9c872cca7b75d10943c2c 100644 +index bb13cf725eaa3eeae63f38576681862382422481..90ffcf8ffedcaa6d67c857b814b582fdb9924a8f 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -61,6 +61,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -59,6 +59,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } // Paper start @@ -23,7 +23,7 @@ index 14b860e6ba4cde37aa0a6d854187be5765acfa91..6eebc30671f419f337b9c872cca7b75d private boolean locked = false; @Override diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 4e9bfa66f2ed110c71c865c05d4573d2df84489c..62b2a4d38102b1ffbda4d2fc031350a51fcf180c 100644 +index b37fe3fbd4ec15c05701db1f07add903af967be4..1046a6aebfd7a76af4319bc325a9f55be850dd06 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -531,6 +531,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -34,7 +34,7 @@ index 4e9bfa66f2ed110c71c865c05d4573d2df84489c..62b2a4d38102b1ffbda4d2fc031350a5 this.registerEntity(entity2); } -@@ -1265,6 +1266,19 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1286,6 +1287,19 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void unregisterEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot @@ -54,7 +54,7 @@ index 4e9bfa66f2ed110c71c865c05d4573d2df84489c..62b2a4d38102b1ffbda4d2fc031350a5 // Spigot start if ( entity instanceof EntityHuman ) { -@@ -1331,9 +1345,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1352,9 +1366,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { private void registerEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot diff --git a/Spigot-Server-Patches/0425-Fix-unregistering-entities-from-unloading-chunks.patch b/Spigot-Server-Patches/0425-Fix-unregistering-entities-from-unloading-chunks.patch index 7cd3329b3..ef5cd3a24 100644 --- a/Spigot-Server-Patches/0425-Fix-unregistering-entities-from-unloading-chunks.patch +++ b/Spigot-Server-Patches/0425-Fix-unregistering-entities-from-unloading-chunks.patch @@ -15,10 +15,10 @@ Combine that with a buggy detail of the previous implementation of the Dupe UUID patch, then this was the likely source of the "Ghost entities" diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 62b2a4d38102b1ffbda4d2fc031350a51fcf180c..ab955f3eaada8017116b99840e2519fd3429cf23 100644 +index 1046a6aebfd7a76af4319bc325a9f55be850dd06..8909fa8e17f4fab7d212804b0c393181441726d9 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1424,9 +1424,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1445,9 +1445,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } private void removeEntityFromChunk(Entity entity) { diff --git a/Spigot-Server-Patches/0428-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch b/Spigot-Server-Patches/0428-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch index a9fd70d33..cc69eed98 100644 --- a/Spigot-Server-Patches/0428-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch +++ b/Spigot-Server-Patches/0428-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch @@ -26,10 +26,10 @@ index 512940ef8608d28c83a4a8d0777a99ebf25b4e8b..f839091ae4385e763a19d680585a9363 EntityTypes entitytypes = entity.getEntityType(); int i = entitytypes.getChunkRange() * 16; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index ab955f3eaada8017116b99840e2519fd3429cf23..c479d9ebeb6e98d091b4e68d59bc5fa6980947ca 100644 +index 8909fa8e17f4fab7d212804b0c393181441726d9..7dce9eef4075c3e4bdbf9e2eca77ae8752a76461 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1390,7 +1390,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1411,7 +1411,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } @@ -38,7 +38,7 @@ index ab955f3eaada8017116b99840e2519fd3429cf23..c479d9ebeb6e98d091b4e68d59bc5fa6 // CraftBukkit start - SPIGOT-5278 if (entity instanceof EntityDrowned) { this.navigators.add(((EntityDrowned) entity).navigationWater); -@@ -1401,6 +1401,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1422,6 +1422,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.navigators.add(((EntityInsentient) entity).getNavigation()); } entity.valid = true; // CraftBukkit diff --git a/Spigot-Server-Patches/0429-Optimize-Collision-to-not-load-chunks.patch b/Spigot-Server-Patches/0429-Optimize-Collision-to-not-load-chunks.patch index ad445880a..cfcf7dac7 100644 --- a/Spigot-Server-Patches/0429-Optimize-Collision-to-not-load-chunks.patch +++ b/Spigot-Server-Patches/0429-Optimize-Collision-to-not-load-chunks.patch @@ -14,10 +14,10 @@ movement will load only the chunk the player enters anyways and avoids loading massive amounts of surrounding chunks due to large AABB lookups. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 6eebc30671f419f337b9c872cca7b75d10943c2c..017e8ba5abbb5463357902cc66e46caf639f048e 100644 +index da1019d40b6b1dcfdae24be24980ea2b4f2a1aee..19749ae61a3b71f92e64f472bc1575bdcbd1c086 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -82,6 +82,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -80,6 +80,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke private CraftEntity bukkitEntity; PlayerChunkMap.EntityTracker tracker; // Paper diff --git a/Spigot-Server-Patches/0457-Load-Chunks-for-Login-Asynchronously.patch b/Spigot-Server-Patches/0457-Load-Chunks-for-Login-Asynchronously.patch index 752efc712..26de7fede 100644 --- a/Spigot-Server-Patches/0457-Load-Chunks-for-Login-Asynchronously.patch +++ b/Spigot-Server-Patches/0457-Load-Chunks-for-Login-Asynchronously.patch @@ -18,10 +18,10 @@ index 4c4e6e154e0db23662484d6aa03f1d762a48badb..893a835593af2ea95a50607c8c2f2cdb boolean flag1 = this.playerChunkMap.b(); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 017e8ba5abbb5463357902cc66e46caf639f048e..26c2adb04d995bf5c5ba4c5eee471be067bf8ac4 100644 +index 19749ae61a3b71f92e64f472bc1575bdcbd1c086..a1da42cb757cec0114e1c4f435e342291c9143d8 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1284,7 +1284,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1281,7 +1281,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.lastY = d1; this.lastZ = d4; this.setPosition(d3, d1, d4); @@ -31,7 +31,7 @@ index 017e8ba5abbb5463357902cc66e46caf639f048e..26c2adb04d995bf5c5ba4c5eee471be0 public void d(Vec3D vec3d) { diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 7f9bd9a35e5164294a0cfedaf540544c70d0df09..824f074740ad063815ca80dce679ceb532c8edc2 100644 +index 8b0037594df8d76c98c2285f5a63662aef4e3202..6db4d587c69af406d949c3d1ed73724a5bd2889d 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -44,6 +44,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -73,7 +73,7 @@ index 0cb8f5a4a5cc5e302815af4c1ed325dfbc75235b..456cb9feebc8afef50cefb85b4d4c1da if (entityplayer != null) { this.g = LoginListener.EnumProtocolState.DELAY_ACCEPT; diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 71920337361847f677533703229afa97d7067319..dbe1d5f2fa43715e658377a6765e0a53093ede76 100644 +index 0a08705bebce75888806ecd35b53de4397ae0bac..c7d88d9c190f0604189e6bfabc0250453b1a68c9 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -70,6 +70,7 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/Spigot-Server-Patches/0458-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch b/Spigot-Server-Patches/0458-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch index 91f2f9de9..d61191f0b 100644 --- a/Spigot-Server-Patches/0458-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch +++ b/Spigot-Server-Patches/0458-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch @@ -7,10 +7,10 @@ The code following this has better support for null worlds to move them back to the world spawn. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 26c2adb04d995bf5c5ba4c5eee471be067bf8ac4..b21770e8549ed02ff68656584ecec1cf023542c5 100644 +index a1da42cb757cec0114e1c4f435e342291c9143d8..24f8252bf449e27ab7d816288a43e9ad6b282e9a 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1717,9 +1717,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1714,9 +1714,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke bworld = server.getWorld(worldName); } diff --git a/Spigot-Server-Patches/0463-Fix-numerous-item-duplication-issues-and-teleport-is.patch b/Spigot-Server-Patches/0463-Fix-numerous-item-duplication-issues-and-teleport-is.patch index f058da737..324dbe2ac 100644 --- a/Spigot-Server-Patches/0463-Fix-numerous-item-duplication-issues-and-teleport-is.patch +++ b/Spigot-Server-Patches/0463-Fix-numerous-item-duplication-issues-and-teleport-is.patch @@ -16,10 +16,10 @@ So even if something NEW comes up, it would be impossible to drop the same item twice because the source was destroyed. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index b21770e8549ed02ff68656584ecec1cf023542c5..112eb6e2568e535ae83cfb832d3b0fc1e46bef65 100644 +index b1e064342aba168c3eb324e97b4b4239a50f19c3..e68102fe55ce6826cd66f8bf7ca42b65ec6932d8 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1873,11 +1873,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1870,11 +1870,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } else { // CraftBukkit start - Capture drops for death event if (this instanceof EntityLiving && !((EntityLiving) this).forceDrops) { @@ -34,7 +34,7 @@ index b21770e8549ed02ff68656584ecec1cf023542c5..112eb6e2568e535ae83cfb832d3b0fc1 entityitem.defaultPickupDelay(); // CraftBukkit start -@@ -2520,6 +2521,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2518,6 +2519,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @Nullable public Entity teleportTo(WorldServer worldserver, BlockPosition location) { // CraftBukkit end @@ -47,7 +47,7 @@ index b21770e8549ed02ff68656584ecec1cf023542c5..112eb6e2568e535ae83cfb832d3b0fc1 if (this.world instanceof WorldServer && !this.dead) { this.world.getMethodProfiler().enter("changeDimension"); // CraftBukkit start -@@ -2555,7 +2562,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2553,7 +2560,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke entity.bukkitEntity = this.getBukkitEntity(); if (this instanceof EntityInsentient) { @@ -56,7 +56,7 @@ index b21770e8549ed02ff68656584ecec1cf023542c5..112eb6e2568e535ae83cfb832d3b0fc1 } // CraftBukkit end } -@@ -2675,7 +2682,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2673,7 +2680,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } public boolean canPortal() { diff --git a/Spigot-Server-Patches/0471-Use-distance-map-to-optimise-entity-tracker.patch b/Spigot-Server-Patches/0471-Use-distance-map-to-optimise-entity-tracker.patch index 7427f1920..c86c3e4b2 100644 --- a/Spigot-Server-Patches/0471-Use-distance-map-to-optimise-entity-tracker.patch +++ b/Spigot-Server-Patches/0471-Use-distance-map-to-optimise-entity-tracker.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Use distance map to optimise entity tracker Use the distance map to find candidate players for tracking. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 112eb6e2568e535ae83cfb832d3b0fc1e46bef65..105fe1f32270bda3343a75b46b6eb89102174ca6 100644 +index aabca4c8480c3960c123d6aee5ab50a2e9af551f..b7f4821476c184cebc6eeb91b5c6169314e3590a 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -208,6 +208,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -205,6 +205,21 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } // CraftBukkit end diff --git a/Spigot-Server-Patches/0513-Ensure-Entity-AABB-s-are-never-invalid.patch b/Spigot-Server-Patches/0513-Ensure-Entity-AABB-s-are-never-invalid.patch index 5dd890017..f50d76d02 100644 --- a/Spigot-Server-Patches/0513-Ensure-Entity-AABB-s-are-never-invalid.patch +++ b/Spigot-Server-Patches/0513-Ensure-Entity-AABB-s-are-never-invalid.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ensure Entity AABB's are never invalid diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 105fe1f32270bda3343a75b46b6eb89102174ca6..3190ed02f56587b565fe3f5b151ef44bd60401ff 100644 +index e36cb29de4ddc0d82e4b964042fed91cee0ad750..8f72b54d44fc92a8de801e7d83ad8734f08df5d4 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -391,7 +391,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -388,7 +388,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public void setPosition(double d0, double d1, double d2) { this.setPositionRaw(d0, d1, d2); @@ -17,7 +17,7 @@ index 105fe1f32270bda3343a75b46b6eb89102174ca6..3190ed02f56587b565fe3f5b151ef44b if (valid) ((WorldServer) world).chunkCheck(this); // CraftBukkit } -@@ -2885,6 +2885,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2883,6 +2883,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return new AxisAlignedBB(vec3d, vec3d1); } @@ -25,7 +25,7 @@ index 105fe1f32270bda3343a75b46b6eb89102174ca6..3190ed02f56587b565fe3f5b151ef44b public void a(AxisAlignedBB axisalignedbb) { // CraftBukkit start - block invalid bounding boxes double minX = axisalignedbb.minX, -@@ -3323,6 +3324,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -3321,6 +3322,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } public void setPositionRaw(double d0, double d1, double d2) { diff --git a/Spigot-Server-Patches/0514-Optimize-WorldBorder-collision-checks-and-air.patch b/Spigot-Server-Patches/0514-Optimize-WorldBorder-collision-checks-and-air.patch index 5cadf4fe9..a2c4d536c 100644 --- a/Spigot-Server-Patches/0514-Optimize-WorldBorder-collision-checks-and-air.patch +++ b/Spigot-Server-Patches/0514-Optimize-WorldBorder-collision-checks-and-air.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimize WorldBorder collision checks and air diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 3190ed02f56587b565fe3f5b151ef44bd60401ff..f3ba97f58b8953e3bafd9f2c9d6541a1b5b13700 100644 +index 75fcdc47a29691336c362683519f3cdd397d60c1..e064a1560c9d6438563858c468bf989a53131dab 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -819,7 +819,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -816,7 +816,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke AxisAlignedBB axisalignedbb = this.getBoundingBox(); VoxelShapeCollision voxelshapecollision = VoxelShapeCollision.a(this); VoxelShape voxelshape = this.world.getWorldBorder().c(); diff --git a/Spigot-Server-Patches/0526-Add-entity-liquid-API.patch b/Spigot-Server-Patches/0526-Add-entity-liquid-API.patch index f7d91e757..187c38210 100644 --- a/Spigot-Server-Patches/0526-Add-entity-liquid-API.patch +++ b/Spigot-Server-Patches/0526-Add-entity-liquid-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add entity liquid API diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index f3ba97f58b8953e3bafd9f2c9d6541a1b5b13700..45e7e30892d031df42ae72de28ba4bbe8e1a6cd5 100644 +index e064a1560c9d6438563858c468bf989a53131dab..013ae4264eae85eb967839e005acb0d3c343b7c8 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1076,12 +1076,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1073,12 +1073,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.inWater; } @@ -23,7 +23,7 @@ index f3ba97f58b8953e3bafd9f2c9d6541a1b5b13700..45e7e30892d031df42ae72de28ba4bbe private boolean k() { return this.world.getType(this.getChunkCoordinates()).a(Blocks.BUBBLE_COLUMN); } -@@ -1095,6 +1096,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1092,6 +1093,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.isInWater() || this.isInRain() || this.k(); } @@ -31,7 +31,7 @@ index f3ba97f58b8953e3bafd9f2c9d6541a1b5b13700..45e7e30892d031df42ae72de28ba4bbe public boolean aG() { return this.isInWater() || this.k(); } -@@ -1237,6 +1239,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1234,6 +1236,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.O == tag; } diff --git a/Spigot-Server-Patches/0550-Fix-incorrect-return-for-WorldServer-addAllEntitiesS.patch b/Spigot-Server-Patches/0550-Fix-incorrect-return-for-WorldServer-addAllEntitiesS.patch index b272d1421..19b0885ae 100644 --- a/Spigot-Server-Patches/0550-Fix-incorrect-return-for-WorldServer-addAllEntitiesS.patch +++ b/Spigot-Server-Patches/0550-Fix-incorrect-return-for-WorldServer-addAllEntitiesS.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix incorrect return for WorldServer#addAllEntitiesSafely diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index a21ce4855187b771b1c8a1ca3f914026d7b92e3a..923efc17beb57688c956026c90aa86299331c8f9 100644 +index 188e825bee60e441579bd0746246a6c353858991..3a9230577ffd31c4a91fca239684ec01ac2b3874 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1236,7 +1236,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1257,7 +1257,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { if (entity.co().anyMatch(this::isUUIDTaken)) { return false; } else { diff --git a/Spigot-Server-Patches/0560-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch b/Spigot-Server-Patches/0560-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch index 72ab8ba13..ca52207e5 100644 --- a/Spigot-Server-Patches/0560-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch +++ b/Spigot-Server-Patches/0560-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 923efc17beb57688c956026c90aa86299331c8f9..efe10b7f587810749038b67db14af0bf8b9b4374 100644 +index 3a9230577ffd31c4a91fca239684ec01ac2b3874..674e1a61c30257645400ceece1b0aac3816218f8 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1841,12 +1841,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1862,12 +1862,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end diff --git a/Spigot-Server-Patches/0573-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch b/Spigot-Server-Patches/0573-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch index d35ba9fe3..1254e6930 100644 --- a/Spigot-Server-Patches/0573-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch +++ b/Spigot-Server-Patches/0573-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch @@ -18,7 +18,7 @@ index a45ceff9ff970b996b2767379a2ecd4693f52d3a..4b4f14711d483089a5d5478b57539911 if (this.name == null) { this.name = SystemUtils.a("block", IRegistry.BLOCK.getKey(this)); diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java -index 2767de830bdb9051ae6a6b7c30342175b117e7ed..e23247e0a8b923ff7805f9ec894584818a447827 100644 +index 5c03fb3af34e13bc3b8bc1840c5a7e229cf9d1f7..a71ad8418e08dd506fa6b912eaed725567ac4648 100644 --- a/src/main/java/net/minecraft/server/EntityTypes.java +++ b/src/main/java/net/minecraft/server/EntityTypes.java @@ -147,6 +147,7 @@ public class EntityTypes { @@ -29,7 +29,7 @@ index 2767de830bdb9051ae6a6b7c30342175b117e7ed..e23247e0a8b923ff7805f9ec89458481 public static Optional> a(String s) { return IRegistry.ENTITY_TYPE.getOptional(MinecraftKey.a(s)); } -@@ -275,6 +276,7 @@ public class EntityTypes { +@@ -285,6 +286,7 @@ public class EntityTypes { return this.bg; } diff --git a/Spigot-Server-Patches/0576-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch b/Spigot-Server-Patches/0576-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch index 31718f7ab..e6610356f 100644 --- a/Spigot-Server-Patches/0576-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch +++ b/Spigot-Server-Patches/0576-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch @@ -9,10 +9,10 @@ as this is how Vanilla teleports entities. Cancel any pending motion when teleported. diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 45e7e30892d031df42ae72de28ba4bbe8e1a6cd5..1ee01486f880992c2694f1dd637e9828b1d40c2d 100644 +index 013ae4264eae85eb967839e005acb0d3c343b7c8..50f9df315d91446b78efaa9bb76719213427a563 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1318,6 +1318,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1315,6 +1315,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } public void setPositionRotation(double d0, double d1, double d2, float f, float f1) {