diff --git a/patches/api/0112-Expand-Explosions-API.patch b/patches/api/0112-Expand-Explosions-API.patch
index 081f96fab3b3d..486abe4237d1c 100644
--- a/patches/api/0112-Expand-Explosions-API.patch
+++ b/patches/api/0112-Expand-Explosions-API.patch
@@ -108,7 +108,7 @@ index 3161eae2fa5f03b7d3a5e9945ab659c15cf568c6..af737017ee397f80c44ee02c6cc60cef
/**
* Returns a list of entities within a bounding box centered around a Location.
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 44a74f15bea60ecd8380520e8faaea41a6c261c5..50c1e4957f66826feb0a2eb04293dbd6b5595700 100644
+index 44a74f15bea60ecd8380520e8faaea41a6c261c5..8b35c3d7384103881b6c218de81f2ef015c448c1 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -1424,6 +1424,88 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@@ -200,3 +200,32 @@ index 44a74f15bea60ecd8380520e8faaea41a6c261c5..50c1e4957f66826feb0a2eb04293dbd6
/**
* Creates explosion at given coordinates with given power and optionally
* setting blocks on fire or breaking blocks.
+@@ -1455,6 +1537,28 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+ */
+ public boolean createExplosion(@NotNull Location loc, float power, boolean setFire, boolean breakBlocks, @Nullable Entity source);
+
++ // Paper start - Add the option for explosions to damage the explosion cause
++ /**
++ * Creates explosion at given coordinates with given power and optionally
++ * setting blocks on fire, breaking blocks, or damaging the {@code source} entity.
++ *
++ * Note that if a non-null {@code source} Entity is provided and {@code
++ * breakBlocks} is {@code true}, the value of {@code breakBlocks} will be
++ * ignored if {@link GameRule#MOB_GRIEFING} is {@code false} in the world
++ * in which the explosion occurs. In other words, the mob griefing gamerule
++ * will take priority over {@code breakBlocks} if explosions are not allowed.
++ *
++ * @param loc Location to blow up
++ * @param power The power of explosion, where 4F is TNT
++ * @param setFire Whether or not to set blocks on fire
++ * @param breakBlocks Whether or not to have blocks be destroyed
++ * @param source the source entity, used for tracking damage
++ * @param shouldDamageSource Whether or not the explosion should damage the {@code source} entity
++ * @return false if explosion was canceled, otherwise true
++ */
++ public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, boolean shouldDamageSource);
++ // Paper end - Add the option for explosions to damage the explosion cause
++
+ /**
+ * Gets the current PVP setting for this world.
+ *
diff --git a/patches/api/0166-Fix-Spigot-annotation-mistakes.patch b/patches/api/0166-Fix-Spigot-annotation-mistakes.patch
index e7952ac8d4281..8ee499ac4302b 100644
--- a/patches/api/0166-Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/0166-Fix-Spigot-annotation-mistakes.patch
@@ -618,7 +618,7 @@ index e455eb21abf121dc6ff10ff8a13dd06f67096a8f..bbc01e7c192ae6689c301670047ff114
return origin;
}
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index fcdc5d83621acff5f9210585455be1ea50abb77c..216995288f6b8b407ef8240411b5ed4713379a7a 100644
+index 6bd436a07b1ab0eefea9117fec5b98dbc9cbe0fa..ff95f65c2f58a333fad23383f29418185122c3d2 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -418,9 +418,8 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@@ -632,7 +632,7 @@ index fcdc5d83621acff5f9210585455be1ea50abb77c..216995288f6b8b407ef8240411b5ed47
public boolean refreshChunk(int x, int z);
/**
-@@ -3797,6 +3796,7 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -3819,6 +3818,7 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
StructureSearchResult locateNearestStructure(@NotNull Location origin, @NotNull Structure structure, int radius, boolean findUnexplored);
// Spigot start
@@ -640,7 +640,7 @@ index fcdc5d83621acff5f9210585455be1ea50abb77c..216995288f6b8b407ef8240411b5ed47
public class Spigot {
/**
-@@ -3830,7 +3830,11 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -3852,7 +3852,11 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
}
}
@@ -652,7 +652,7 @@ index fcdc5d83621acff5f9210585455be1ea50abb77c..216995288f6b8b407ef8240411b5ed47
Spigot spigot();
// Spigot end
-@@ -4048,9 +4052,9 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -4070,9 +4074,9 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
* Gets the dimension ID of this environment
*
* @return dimension ID
@@ -664,7 +664,7 @@ index fcdc5d83621acff5f9210585455be1ea50abb77c..216995288f6b8b407ef8240411b5ed47
public int getId() {
return id;
}
-@@ -4060,9 +4064,9 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -4082,9 +4086,9 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
*
* @param id The ID of the environment
* @return The environment
@@ -890,7 +890,7 @@ index bafef53c1d449135f1300c8c8fbb06f482ba67e1..f50aaddf8582be55fd4860ad374d8f22
+@Deprecated(forRemoval = true) // Paper
public interface LingeringPotion extends ThrownPotion { }
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
-index b5ea7b60b47f056553a1cec766c57e0f75735633..ec35111df4b38fd55cc34f4baedebcf39c7fc92b 100644
+index 3f1b74af137868e502792c65ccd7ca74f3c3cb8c..c89ffb0f98dccd015e80e299142252fed3ece4a8 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -716,7 +716,9 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
diff --git a/patches/api/0260-More-World-API.patch b/patches/api/0260-More-World-API.patch
index cd64788d2f8a9..4cbe12c005610 100644
--- a/patches/api/0260-More-World-API.patch
+++ b/patches/api/0260-More-World-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] More World API
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 216995288f6b8b407ef8240411b5ed4713379a7a..d3fc033aba36c5fd99846e9200ed0071fddd6045 100644
+index ff95f65c2f58a333fad23383f29418185122c3d2..4800cf82ce51840d3dc9572e4f33c66b04f9546c 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
-@@ -3795,6 +3795,72 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -3817,6 +3817,72 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@Nullable
StructureSearchResult locateNearestStructure(@NotNull Location origin, @NotNull Structure structure, int radius, boolean findUnexplored);
diff --git a/patches/api/0348-Expand-FallingBlock-API.patch b/patches/api/0348-Expand-FallingBlock-API.patch
index 8c86249a453b8..34bf3c0568bb9 100644
--- a/patches/api/0348-Expand-FallingBlock-API.patch
+++ b/patches/api/0348-Expand-FallingBlock-API.patch
@@ -10,10 +10,10 @@ Subject: [PATCH] Expand FallingBlock API
Co-authored-by: Lukas Planz
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 8e9ab00503167799c6c929d00e48c07cb328848c..907906e15c9250fea385e49f10d3c248236fd004 100644
+index 778933623213f2929fdba2565d9d43113ea317df..061ed4ca85242a694a3c56411d7e1dc76b5716c8 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
-@@ -2228,8 +2228,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -2250,8 +2250,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
* @return The spawned {@link FallingBlock} instance
* @throws IllegalArgumentException if {@link Location} or {@link
* MaterialData} are null or {@link Material} of the {@link MaterialData} is not a block
@@ -24,7 +24,7 @@ index 8e9ab00503167799c6c929d00e48c07cb328848c..907906e15c9250fea385e49f10d3c248
public FallingBlock spawnFallingBlock(@NotNull Location location, @NotNull MaterialData data) throws IllegalArgumentException;
/**
-@@ -2242,8 +2244,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -2264,8 +2266,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
* @return The spawned {@link FallingBlock} instance
* @throws IllegalArgumentException if {@link Location} or {@link
* BlockData} are null
@@ -35,7 +35,7 @@ index 8e9ab00503167799c6c929d00e48c07cb328848c..907906e15c9250fea385e49f10d3c248
public FallingBlock spawnFallingBlock(@NotNull Location location, @NotNull BlockData data) throws IllegalArgumentException;
/**
-@@ -2260,7 +2264,7 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -2282,7 +2286,7 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
* @return The spawned {@link FallingBlock} instance
* @throws IllegalArgumentException if {@link Location} or {@link
* Material} are null or {@link Material} is not a block
diff --git a/patches/api/0458-More-Raid-API.patch b/patches/api/0458-More-Raid-API.patch
index b365913e82b33..bcd188ed7fea0 100644
--- a/patches/api/0458-More-Raid-API.patch
+++ b/patches/api/0458-More-Raid-API.patch
@@ -39,10 +39,10 @@ index 983a8c20a06d2b509602b27f49c090598b8ecc42..fa98599e3eee37bf68f0e9813497c718
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index ecc2d486cfec79cce27a947dfeed4853575a594d..d8a23aa0d898ca3360757721e38ddb97387f7d21 100644
+index 94c73439f0a0489187ccc12193ba1f4ef13a4687..7d0ea31ee8eadee0b321729dbfc424e07a81647f 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
-@@ -4111,6 +4111,17 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+@@ -4133,6 +4133,17 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@Nullable
public Raid locateNearestRaid(@NotNull Location location, int radius);
diff --git a/patches/server/0203-Expand-Explosions-API.patch b/patches/server/0203-Expand-Explosions-API.patch
index eb56a951248d2..39abf1a97b8b7 100644
--- a/patches/server/0203-Expand-Explosions-API.patch
+++ b/patches/server/0203-Expand-Explosions-API.patch
@@ -5,13 +5,86 @@ Subject: [PATCH] Expand Explosions API
Add Entity as a Source capability, and add more API choices, and on Location.
+diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
+index b216140a8be65e210250358af8daf49344850f20..a92a2288836385e1821cbdda751e896136b1c49c 100644
+--- a/src/main/java/net/minecraft/world/level/Explosion.java
++++ b/src/main/java/net/minecraft/world/level/Explosion.java
+@@ -160,7 +160,13 @@ public class Explosion {
+ return new Vec3(this.x, this.y, this.z);
+ }
+
++ // Paper start - Add the option for explosions to damage the explosion cause
+ public void explode() {
++ this.explode(false);
++ }
++ // Paper end - Add the option for explosions to damage the explosion cause
++
++ public void explode(boolean shouldDamageSource) { // Paper - Add the option for explosions to damage the explosion cause
+ // CraftBukkit start
+ if (this.radius < 0.1F) {
+ return;
+@@ -227,7 +233,7 @@ public class Explosion {
+ int i1 = Mth.floor(this.y + (double) f2 + 1.0D);
+ int j1 = Mth.floor(this.z - (double) f2 - 1.0D);
+ int k1 = Mth.floor(this.z + (double) f2 + 1.0D);
+- List list = this.level.getEntities(this.source, new AABB((double) i, (double) l, (double) j1, (double) j, (double) i1, (double) k1), (com.google.common.base.Predicate) entity -> entity.isAlive() && !entity.isSpectator()); // Paper - Fix lag from explosions processing dead entities
++ List list = this.level.getEntities(shouldDamageSource ? null : this.source, new AABB((double) i, (double) l, (double) j1, (double) j, (double) i1, (double) k1), (com.google.common.base.Predicate) entity -> entity.isAlive() && !entity.isSpectator()); // Paper - Fix lag from explosions processing dead entities // Paper - Add the option for explosions to damage the explosion
+ Vec3 vec3d = new Vec3(this.x, this.y, this.z);
+ Iterator iterator = list.iterator();
+
+diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
+index 6944c0b0cfcde9fa4dd78742aee3e3b87d679abf..84124c43a496a7ff77f8e10cb8ef096e172eb69b 100644
+--- a/src/main/java/net/minecraft/world/level/Level.java
++++ b/src/main/java/net/minecraft/world/level/Level.java
+@@ -797,7 +797,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+ return this.explode(entity, damageSource, behavior, x, y, z, power, createFire, explosionSourceType, true, particle, emitterParticle, soundEvent);
+ }
+
++ // Paper start - Add the ability for explosions to damage the explosion cause
+ public Explosion explode(@Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Level.ExplosionInteraction explosionSourceType, boolean particles, ParticleOptions particle, ParticleOptions emitterParticle, Holder soundEvent) {
++ return this.explode(entity, damageSource, behavior, x, y, z, power, createFire, explosionSourceType, particles, particle, emitterParticle, soundEvent, false);
++ }
++ // Paper end - Add the ability for explosions to damage the explosion cause
++
++ public Explosion explode(@Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Level.ExplosionInteraction explosionSourceType, boolean particles, ParticleOptions particle, ParticleOptions emitterParticle, Holder soundEvent, boolean shouldDamageSource) {
+ Explosion.BlockInteraction explosion_effect;
+
+ switch (explosionSourceType.ordinal()) {
+@@ -828,7 +834,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+ Explosion.BlockInteraction explosion_effect1 = explosion_effect;
+ Explosion explosion = new Explosion(this, entity, damageSource, behavior, x, y, z, power, createFire, explosion_effect1, particle, emitterParticle, soundEvent);
+
+- explosion.explode();
++ explosion.explode(shouldDamageSource); // Paper - Add the ability for explosions to damage the explosion cause
+ explosion.finalizeExplosion(particles);
+ return explosion;
+ }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 3c00eaf52ab04d1396f226cc074d9dd013c57027..b2a1f7e6576757d02a0369c42d4526ca3ac3d775 100644
+index 3c00eaf52ab04d1396f226cc074d9dd013c57027..46b68d31bbc9dde0f1ff2620fa968d3f02132c2f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -789,6 +789,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -776,8 +776,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+ return this.createExplosion(x, y, z, power, setFire, breakBlocks, null);
+ }
+
++ // Paper start - Add the option for explosions to damage the explosion cause
+ @Override
+ public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) {
++ return this.createExplosion(x, y, z, power, setFire, breakBlocks, source, false);
++ }
++ // Paper end - Add the option for explosions to damage the explosion cause
++
++ @Override
++ public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, boolean shouldDamageSource) { // Paper - Add the option for explosions to damage the explosion cause
+ net.minecraft.world.level.Level.ExplosionInteraction explosionType;
+ if (!breakBlocks) {
+ explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks
+@@ -787,8 +794,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+ explosionType = net.minecraft.world.level.Level.ExplosionInteraction.MOB; // Respect mobGriefing gamerule
+ }
- return !this.world.explode(source == null ? null : ((CraftEntity) source).getHandle(), x, y, z, power, setFire, explosionType).wasCanceled;
+- return !this.world.explode(source == null ? null : ((CraftEntity) source).getHandle(), x, y, z, power, setFire, explosionType).wasCanceled;
++ return !this.world.explode(source == null ? null : ((CraftEntity) source).getHandle(), net.minecraft.world.level.Explosion.getDefaultDamageSource(this.getHandle(), source == null ? null : ((CraftEntity) source).getHandle()), (net.minecraft.world.level.ExplosionDamageCalculator) null, x, y, z, power, setFire, explosionType, true, net.minecraft.core.particles.ParticleTypes.EXPLOSION, net.minecraft.core.particles.ParticleTypes.EXPLOSION_EMITTER, net.minecraft.sounds.SoundEvents.GENERIC_EXPLODE, shouldDamageSource).wasCanceled; // Paper - Add the option for explosions to damage the explosion cause
}
+ // Paper start
+ @Override
diff --git a/patches/server/0207-Implement-World.getEntity-UUID-API.patch b/patches/server/0207-Implement-World.getEntity-UUID-API.patch
index 315b2e7ac4385..79dbbfeaf9903 100644
--- a/patches/server/0207-Implement-World.getEntity-UUID-API.patch
+++ b/patches/server/0207-Implement-World.getEntity-UUID-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement World.getEntity(UUID) API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index b2a1f7e6576757d02a0369c42d4526ca3ac3d775..281fa67cb5c95e6016c7220c0ef912bbfd28cd9f 100644
+index 46b68d31bbc9dde0f1ff2620fa968d3f02132c2f..a286cf12496c59c7d9b4170eea995c7a0008bab7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1125,6 +1125,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1132,6 +1132,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return list;
}
diff --git a/patches/server/0287-Optimize-Captured-BlockEntity-Lookup.patch b/patches/server/0287-Optimize-Captured-BlockEntity-Lookup.patch
index 24aead6840412..6ec84a3ba5ad8 100644
--- a/patches/server/0287-Optimize-Captured-BlockEntity-Lookup.patch
+++ b/patches/server/0287-Optimize-Captured-BlockEntity-Lookup.patch
@@ -10,10 +10,10 @@ Optimize to check if the captured list even has values in it, and also to
just do a get call since the value can never be null.
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 8e2acb3c6f815b5b1d3237a2f4e0b5f3683d2c60..5a3a89c568d42a2adbc2b6e2631fd4b70e54f0bf 100644
+index f3530398466ada594f15c71478386e152e50453c..b1ff6f34bcc0842d055a8c8162349a2a95d6e1fe 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -912,9 +912,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -918,9 +918,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@Nullable
public BlockEntity getBlockEntity(BlockPos blockposition, boolean validate) {
diff --git a/patches/server/0308-Optimize-call-to-getFluid-for-explosions.patch b/patches/server/0308-Optimize-call-to-getFluid-for-explosions.patch
index 7c2fe736a65aa..c0b8c21989595 100644
--- a/patches/server/0308-Optimize-call-to-getFluid-for-explosions.patch
+++ b/patches/server/0308-Optimize-call-to-getFluid-for-explosions.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Optimize call to getFluid for explosions
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
-index 512d79b66fed3d1bef645c3ecb59bda032c81d15..1350c8df69b4ffcf9daa73549e496627db8bc6f7 100644
+index a92a2288836385e1821cbdda751e896136b1c49c..12a348c2ec5968f22bc77c038af63eb199bfe776 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
-@@ -193,7 +193,7 @@ public class Explosion {
+@@ -199,7 +199,7 @@ public class Explosion {
for (float f1 = 0.3F; f > 0.0F; f -= 0.22500001F) {
BlockPos blockposition = BlockPos.containing(d4, d5, d6);
BlockState iblockdata = this.level.getBlockState(blockposition);
diff --git a/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch b/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
index 661ddc7971dc3..144034d3fc345 100644
--- a/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
+++ b/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch
@@ -104,10 +104,10 @@ index 1b3f1b06155e114cd5ab76a406c1b4e745ef58c6..52e8664f8d0368daed43e349aa67e3b2
for (SpawnCategory spawnCategory : SpawnCategory.values()) {
if (CraftSpawnCategory.isValidForLimits(spawnCategory)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 20bb365b188c7081123db87186f0e1a999758817..a381688de78f5a78980b660f9765f839413a6c65 100644
+index 53d1f62db2a966c8dcebe1b5e087b013a72932a4..82c26b57a7464d3489cc1f3a7c5f5ddd6536d4bb 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1165,7 +1165,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1172,7 +1172,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setDifficulty(Difficulty difficulty) {
diff --git a/patches/server/0378-Add-Plugin-Tickets-to-API-Chunk-Methods.patch b/patches/server/0378-Add-Plugin-Tickets-to-API-Chunk-Methods.patch
index 13fc9119a307a..910e4bd961d66 100644
--- a/patches/server/0378-Add-Plugin-Tickets-to-API-Chunk-Methods.patch
+++ b/patches/server/0378-Add-Plugin-Tickets-to-API-Chunk-Methods.patch
@@ -22,7 +22,7 @@ wants it to collect even faster, they can restore that setting back to 1 instead
Not adding it to .getType() though to keep behavior consistent with vanilla for performance reasons.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index ebe69ce183b8bba43ed4d6fdbac09fdc1eaaa988..8efa537503ec52de17918e2e99d01015df8bf62a 100644
+index 52e8664f8d0368daed43e349aa67e3b295697f26..9c022b16d143cff10015936af8f4b157b5173079 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -380,7 +380,7 @@ public final class CraftServer implements Server {
@@ -44,7 +44,7 @@ index ebe69ce183b8bba43ed4d6fdbac09fdc1eaaa988..8efa537503ec52de17918e2e99d01015
this.printSaveWarning = false;
this.console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index a381688de78f5a78980b660f9765f839413a6c65..6e01013228798f9682624e912618500f0d4fa485 100644
+index 82c26b57a7464d3489cc1f3a7c5f5ddd6536d4bb..0601b713e67d4c1e2c1b4a9c261925345d4ce845 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -266,7 +266,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -93,7 +93,7 @@ index a381688de78f5a78980b660f9765f839413a6c65..6e01013228798f9682624e912618500f
return true;
}
-@@ -2241,6 +2253,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2248,6 +2260,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
ca.spottedleaf.moonrise.common.util.ChunkSystem.scheduleChunkLoad(this.getHandle(), x, z, gen, ChunkStatus.FULL, true, priority, (c) -> {
net.minecraft.server.MinecraftServer.getServer().scheduleOnMain(() -> {
net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk)c;
diff --git a/patches/server/0400-Prevent-headless-pistons-from-being-created.patch b/patches/server/0400-Prevent-headless-pistons-from-being-created.patch
index e375acc68af1f..aa73f15bff25c 100644
--- a/patches/server/0400-Prevent-headless-pistons-from-being-created.patch
+++ b/patches/server/0400-Prevent-headless-pistons-from-being-created.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Prevent headless pistons from being created
Prevent headless pistons from being created by explosions or tree/mushroom growth.
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
-index 1350c8df69b4ffcf9daa73549e496627db8bc6f7..69914a048987c21ee2ed2c489aab269862fda8f2 100644
+index 12a348c2ec5968f22bc77c038af63eb199bfe776..3c4e075db02fd4401f36b6dd0a0129394bd77a28 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
-@@ -207,6 +207,15 @@ public class Explosion {
+@@ -213,6 +213,15 @@ public class Explosion {
if (f > 0.0F && this.damageCalculator.shouldBlockExplode(this, this.level, blockposition, iblockdata, f)) {
set.add(blockposition);
diff --git a/patches/server/0462-Add-WorldGameRuleChangeEvent.patch b/patches/server/0462-Add-WorldGameRuleChangeEvent.patch
index 737b50a1b8049..ca861b6132d2f 100644
--- a/patches/server/0462-Add-WorldGameRuleChangeEvent.patch
+++ b/patches/server/0462-Add-WorldGameRuleChangeEvent.patch
@@ -64,10 +64,10 @@ index 0b46ad360be919e4aeb0ffc0eebae9fe712fb861..51e560d7856f230c5aa2dc32706c3a49
public int get() {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 5ae307f9343ffea39c286992459a6c8069d9fb86..08124dd65d1f950bdec8fcb55d2553c601b30a66 100644
+index 7054a487573772d19c1894603d978d91fd8a62e6..bd552ae5014d9c0ce91f7858c6b629eb0f967e09 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1885,8 +1885,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1892,8 +1892,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!this.isGameRule(rule)) return false;
@@ -82,7 +82,7 @@ index 5ae307f9343ffea39c286992459a6c8069d9fb86..08124dd65d1f950bdec8fcb55d2553c6
handle.onChanged(this.getHandle());
return true;
}
-@@ -1922,8 +1927,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1929,8 +1934,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!this.isGameRule(rule.getName())) return false;
diff --git a/patches/server/0519-More-World-API.patch b/patches/server/0519-More-World-API.patch
index acbb18e7df6f2..312b97e721b1b 100644
--- a/patches/server/0519-More-World-API.patch
+++ b/patches/server/0519-More-World-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] More World API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 08124dd65d1f950bdec8fcb55d2553c601b30a66..c3581aa9a2d708e410c7eae1b7abe6c6f3427ad6 100644
+index bd552ae5014d9c0ce91f7858c6b629eb0f967e09..a8e5d377c5128f26b5674d2295f3e928501fb343 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -2130,6 +2130,28 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2137,6 +2137,28 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return new CraftStructureSearchResult(CraftStructure.minecraftToBukkit(found.getSecond().value()), CraftLocation.toBukkit(found.getFirst(), this));
}
diff --git a/patches/server/0543-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/server/0543-Add-cause-to-Weather-ThunderChangeEvents.patch
index 2807ad861fcc7..ddffc9cd5cc74 100644
--- a/patches/server/0543-Add-cause-to-Weather-ThunderChangeEvents.patch
+++ b/patches/server/0543-Add-cause-to-Weather-ThunderChangeEvents.patch
@@ -95,10 +95,10 @@ index e50ad48658193f889d65d37c57b1e30ce46758b7..efd0bcfebb3b4f63018d4e20a6a89f79
if (weather.isCancelled()) {
return;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index c3581aa9a2d708e410c7eae1b7abe6c6f3427ad6..dc16ed952719a5203b1b9a61e0ad2bd39021e8f1 100644
+index a8e5d377c5128f26b5674d2295f3e928501fb343..8c6a6552b317049949f7feb712baf3b8f7608ff1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1208,7 +1208,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1215,7 +1215,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setStorm(boolean hasStorm) {
@@ -107,7 +107,7 @@ index c3581aa9a2d708e410c7eae1b7abe6c6f3427ad6..dc16ed952719a5203b1b9a61e0ad2bd3
this.setWeatherDuration(0); // Reset weather duration (legacy behaviour)
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
}
-@@ -1230,7 +1230,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1237,7 +1237,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setThundering(boolean thundering) {
diff --git a/patches/server/0600-Improve-and-expand-AsyncCatcher.patch b/patches/server/0600-Improve-and-expand-AsyncCatcher.patch
index c61b62c6216cc..d09a554cc6ef0 100644
--- a/patches/server/0600-Improve-and-expand-AsyncCatcher.patch
+++ b/patches/server/0600-Improve-and-expand-AsyncCatcher.patch
@@ -166,10 +166,10 @@ index 1cfc906317f07a44f06a4adf021c44e34a2f1d07..6baa313b8201ed23193d7885c85606b0
PersistentEntitySectionManager.LOGGER.warn("Entity {} wasn't found in section {} (destroying due to {})", new Object[]{this.entity, SectionPos.of(this.currentSectionKey), reason});
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 390cacc7916d1322a7e1e8bff004d415e9fa5622..786a3722f3a50d828e5abe2ff9d415b0e10995ce 100644
+index 452cdd9c61a132d4eac9b810e32f8b44bb5a6530..375ec2b2845fd8799fe95f2d6aa81093f3b05412 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1758,6 +1758,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1765,6 +1765,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void playSound(Location loc, Sound sound, org.bukkit.SoundCategory category, float volume, float pitch, long seed) {
@@ -177,7 +177,7 @@ index 390cacc7916d1322a7e1e8bff004d415e9fa5622..786a3722f3a50d828e5abe2ff9d415b0
if (loc == null || sound == null || category == null) return;
double x = loc.getX();
-@@ -1769,6 +1770,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1776,6 +1777,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void playSound(Location loc, String sound, org.bukkit.SoundCategory category, float volume, float pitch, long seed) {
@@ -185,7 +185,7 @@ index 390cacc7916d1322a7e1e8bff004d415e9fa5622..786a3722f3a50d828e5abe2ff9d415b0
if (loc == null || sound == null || category == null) return;
double x = loc.getX();
-@@ -1801,6 +1803,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1808,6 +1810,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void playSound(Entity entity, Sound sound, org.bukkit.SoundCategory category, float volume, float pitch, long seed) {
@@ -193,7 +193,7 @@ index 390cacc7916d1322a7e1e8bff004d415e9fa5622..786a3722f3a50d828e5abe2ff9d415b0
if (!(entity instanceof CraftEntity craftEntity) || entity.getWorld() != this || sound == null || category == null) return;
ClientboundSoundEntityPacket packet = new ClientboundSoundEntityPacket(CraftSound.bukkitToMinecraftHolder(sound), net.minecraft.sounds.SoundSource.valueOf(category.name()), craftEntity.getHandle(), volume, pitch, seed);
-@@ -1812,6 +1815,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1819,6 +1822,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void playSound(Entity entity, String sound, org.bukkit.SoundCategory category, float volume, float pitch, long seed) {
diff --git a/patches/server/0601-Add-paper-mobcaps-and-paper-playermobcaps.patch b/patches/server/0601-Add-paper-mobcaps-and-paper-playermobcaps.patch
index 14b8095c8b733..760e339ec7d23 100644
--- a/patches/server/0601-Add-paper-mobcaps-and-paper-playermobcaps.patch
+++ b/patches/server/0601-Add-paper-mobcaps-and-paper-playermobcaps.patch
@@ -278,7 +278,7 @@ index 58ea6a1f95a09c22125a8262b1b221004ebce0e4..ea6533c1ac218aa075da3401807a06fc
BlockPos blockposition = NaturalSpawner.getRandomPosWithin(world, chunk);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index c57428b235f7bc0444ba0024d05c7c15b5e74fc4..9707b24da58fdc56732d6372038055e8676e9e0d 100644
+index 1fd9a651e469fcf46752e97bc42d68961b0f2df0..d6ff15c56fe72ec8a04471cca6146bb90b371ece 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2329,6 +2329,11 @@ public final class CraftServer implements Server {
@@ -294,10 +294,10 @@ index c57428b235f7bc0444ba0024d05c7c15b5e74fc4..9707b24da58fdc56732d6372038055e8
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 786a3722f3a50d828e5abe2ff9d415b0e10995ce..0c2734c1d06b6c5dff383f9c6139c0389f220a76 100644
+index 375ec2b2845fd8799fe95f2d6aa81093f3b05412..e2b0a1b4f4aa68ee43ef9850458c09b6ac994ceb 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1716,9 +1716,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1723,9 +1723,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Preconditions.checkArgument(spawnCategory != null, "SpawnCategory cannot be null");
Preconditions.checkArgument(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory.%s are not supported", spawnCategory);
diff --git a/patches/server/0674-Fix-falling-block-spawn-methods.patch b/patches/server/0674-Fix-falling-block-spawn-methods.patch
index 730e95b54095b..8c72922c88cca 100644
--- a/patches/server/0674-Fix-falling-block-spawn-methods.patch
+++ b/patches/server/0674-Fix-falling-block-spawn-methods.patch
@@ -11,10 +11,10 @@ Restores the API behavior from previous versions of the server
public net.minecraft.world.entity.item.FallingBlockEntity (Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index da556cdbd7eecfd0743924d9ab79142c41f08d0a..c0c26825865404231f57883447328c84cdf32d82 100644
+index cd469d88b8a6e3d32e4aaacda0ceabd9e74577d6..8b03bb946645191913f090fea8fb963b7794be68 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1383,7 +1383,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1390,7 +1390,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Preconditions.checkArgument(material != null, "Material cannot be null");
Preconditions.checkArgument(material.isBlock(), "Material.%s must be a block", material);
@@ -28,7 +28,7 @@ index da556cdbd7eecfd0743924d9ab79142c41f08d0a..c0c26825865404231f57883447328c84
return (FallingBlock) entity.getBukkitEntity();
}
-@@ -1392,7 +1397,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1399,7 +1404,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Preconditions.checkArgument(location != null, "Location cannot be null");
Preconditions.checkArgument(data != null, "BlockData cannot be null");
diff --git a/patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch b/patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch
index 5030feaf0075e..7dcb454d2942f 100644
--- a/patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch
+++ b/patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Warn on plugins accessing faraway chunks
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index b4111bcc6a676dc42b233761aa667708669c2ab8..cc92d2e8b77c75da1d8b850c3bc251e8ac221c24 100644
+index 550b3d7faa57dd552055ee06c024835c88edcf59..1ba1e46d99a4e43e7fc06896046d2404defd9997 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -339,7 +339,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -18,7 +18,7 @@ index b4111bcc6a676dc42b233761aa667708669c2ab8..cc92d2e8b77c75da1d8b850c3bc251e8
private static boolean isOutsideSpawnableHeight(int y) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index c0c26825865404231f57883447328c84cdf32d82..0c5a583f2ced1ae5e1e92a045ef2ef1cd5b35496 100644
+index 8b03bb946645191913f090fea8fb963b7794be68..927f5b265f4024a41c0fbf325dc2f4ba6d4301f9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -295,9 +295,24 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -78,7 +78,7 @@ index c0c26825865404231f57883447328c84cdf32d82..0c5a583f2ced1ae5e1e92a045ef2ef1c
this.getHandle().setChunkForced(x, z, forced);
}
-@@ -936,6 +955,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -943,6 +962,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
@@ -86,7 +86,7 @@ index c0c26825865404231f57883447328c84cdf32d82..0c5a583f2ced1ae5e1e92a045ef2ef1c
// Transient load for this tick
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
}
-@@ -2333,6 +2353,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2340,6 +2360,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Spigot end
// Paper start
public java.util.concurrent.CompletableFuture getChunkAtAsync(int x, int z, boolean gen, boolean urgent) {
diff --git a/patches/server/0852-Only-capture-actual-tree-growth.patch b/patches/server/0852-Only-capture-actual-tree-growth.patch
index c8bdd0bb61273..b688b830734ec 100644
--- a/patches/server/0852-Only-capture-actual-tree-growth.patch
+++ b/patches/server/0852-Only-capture-actual-tree-growth.patch
@@ -17,7 +17,7 @@ index 78951f50188528718cdb3dbbaabe3f9f2760ffe3..7826e2a52da47914aca39fef958b8f39
}
}
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 1016541b8f01cdb45ae96fbb777c6c38598fcc35..11c507b399f97c4c0bbe220e8a3c1cdb851c8a0a 100644
+index 0a6db77afa392e6ab47f970d5665804c8f6cbf7b..7cc9ded0e53bc1c6313ab720c852b1b0163ba951 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -466,6 +466,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -29,10 +29,10 @@ index 1016541b8f01cdb45ae96fbb777c6c38598fcc35..11c507b399f97c4c0bbe220e8a3c1cdb
entityhuman.awardStat(Stats.ITEM_USED.get(item)); // SPIGOT-7236 - award stat
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 0a3e56302470f239d4840e4e32d2a0ce4611ff65..3f87e60c0d43703a8450b5920dac59a970809397 100644
+index 59ecbeba80ac53ed22b27e8ce94be84542199c82..c9d69eec5486fa58e67ba5f0ab672aefbcff2310 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1378,4 +1378,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1384,4 +1384,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
return range <= 0 ? 64.0 * 64.0 : range * range; // 64 is taken from default in ServerLevel#levelEvent
}
// Paper end - respect global sound events gamerule
diff --git a/patches/server/0859-Bandaid-fix-for-Effect.patch b/patches/server/0859-Bandaid-fix-for-Effect.patch
index 9dd780536887e..1d131f1ee83b3 100644
--- a/patches/server/0859-Bandaid-fix-for-Effect.patch
+++ b/patches/server/0859-Bandaid-fix-for-Effect.patch
@@ -68,10 +68,10 @@ index 71733f918ed84b9879ac1b142ef6205c5e768a9c..c856384019eff2f2d0bb831ebe1ccb0f
break;
case BONE_MEAL_USE:
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 0c5a583f2ced1ae5e1e92a045ef2ef1cd5b35496..5c83ca573ccaa75a1d4e8129c96a24e3cf0f3266 100644
+index 927f5b265f4024a41c0fbf325dc2f4ba6d4301f9..7ea82abe18c808689a6c8d85afac91ad7f745b3c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1360,7 +1360,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1367,7 +1367,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public void playEffect(Location loc, Effect effect, T data, int radius) {
if (data != null) {
Preconditions.checkArgument(effect.getData() != null, "Effect.%s does not have a valid Data", effect);
@@ -81,7 +81,7 @@ index 0c5a583f2ced1ae5e1e92a045ef2ef1cd5b35496..5c83ca573ccaa75a1d4e8129c96a24e3
// Special case: the axis is optional for ELECTRIC_SPARK
Preconditions.checkArgument(effect.getData() == null || effect == Effect.ELECTRIC_SPARK, "Wrong kind of data for the %s effect", effect);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 32e1830464395cb1f462777f3fb14e766c5e3217..9cf67deacf9d01e3835705260a358513987fc3ba 100644
+index eb8c3b1c55e7ab9c1304d30a3da911b5051b259c..e14522b159d36c3f4cb18f285d16d262e6ca1035 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -917,7 +917,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/server/0903-Add-predicate-for-blocks-when-raytracing.patch b/patches/server/0903-Add-predicate-for-blocks-when-raytracing.patch
index 3d4d267627bb8..5aa8a3982f004 100644
--- a/patches/server/0903-Add-predicate-for-blocks-when-raytracing.patch
+++ b/patches/server/0903-Add-predicate-for-blocks-when-raytracing.patch
@@ -47,10 +47,10 @@ index c978f3b2d42f512e982f289e76c2422e41b7eec6..bb8e962e63c7a2d931f9bd7f7c002aa3
Vec3 vec3d = raytrace1.getFrom().subtract(raytrace1.getTo());
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 5c83ca573ccaa75a1d4e8129c96a24e3cf0f3266..29fa82c15411fbdae09e45e334209dcc93aa1789 100644
+index 7ea82abe18c808689a6c8d85afac91ad7f745b3c..805f51a5db31aaffe0e67e1a77d40225f53952a7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1094,9 +1094,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1101,9 +1101,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize, Predicate super Entity> filter) {
@@ -68,7 +68,7 @@ index 5c83ca573ccaa75a1d4e8129c96a24e3cf0f3266..29fa82c15411fbdae09e45e334209dcc
Preconditions.checkArgument(direction != null, "Vector direction cannot be null");
direction.checkFinite();
-@@ -1146,9 +1152,16 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1153,9 +1159,16 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks) {
@@ -87,7 +87,7 @@ index 5c83ca573ccaa75a1d4e8129c96a24e3cf0f3266..29fa82c15411fbdae09e45e334209dcc
Preconditions.checkArgument(direction != null, "Vector direction cannot be null");
direction.checkFinite();
-@@ -1161,16 +1174,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1168,16 +1181,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
}
Vector dir = direction.clone().normalize().multiply(maxDistance);
diff --git a/patches/server/0941-More-Raid-API.patch b/patches/server/0941-More-Raid-API.patch
index c01c87283bbeb..c372a0ee1860a 100644
--- a/patches/server/0941-More-Raid-API.patch
+++ b/patches/server/0941-More-Raid-API.patch
@@ -86,10 +86,10 @@ index b8ce1c1c2447f9cff1717bfcfd6eb911ade0d4b3..51f21af9d75769abdcba713b9aa33392
+ // Paper end - more Raid API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index c664e8ca115c0a0f64e6b54478a0a2e88e8a58b7..1beb22285857778f7b0f33daa265046f657be854 100644
+index aa25ab61a0ca18be39b4a8d2aca05fd2989a99f4..a1de89745a881f182b94bb882b7cec84782b0ed7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -2301,6 +2301,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2308,6 +2308,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return (raid == null) ? null : new CraftRaid(raid);
}
diff --git a/patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch b/patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch
index 12dc4db2ff0ba..b77dbe2506482 100644
--- a/patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch
+++ b/patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch
@@ -13,10 +13,10 @@ A config is provided if you rather let players use these exploits, and let
them destroy the worlds End Portals and get on top of the nether easy.
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
-index 6a1e2614453bc3d6fe082c1fd43228c4a182442e..b70ac21d8dc70fb1513ea7ce5270fb381552c29a 100644
+index 3c4e075db02fd4401f36b6dd0a0129394bd77a28..8608008e53eaacc701403f77d836275ec9885e07 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
-@@ -193,6 +193,7 @@ public class Explosion {
+@@ -199,6 +199,7 @@ public class Explosion {
for (float f1 = 0.3F; f > 0.0F; f -= 0.22500001F) {
BlockPos blockposition = BlockPos.containing(d4, d5, d6);
BlockState iblockdata = this.level.getBlockState(blockposition);
@@ -25,7 +25,7 @@ index 6a1e2614453bc3d6fe082c1fd43228c4a182442e..b70ac21d8dc70fb1513ea7ce5270fb38
if (!this.level.isInWorldBounds(blockposition)) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index b7bf7b3b91046c81467aeb483087e12b6d9191bf..a2877f3eb206ab9ccb93e3606f1c9b3401def5d6 100644
+index b3c15b478f6cb68bf718516bb0b0a5f22576853b..0ca719d53aca54c231f925484a242cce05626558 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -447,6 +447,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
diff --git a/patches/server/0987-Moonrise-optimisation-patches.patch b/patches/server/0987-Moonrise-optimisation-patches.patch
index 8e119c8548581..92d3d76943d1e 100644
--- a/patches/server/0987-Moonrise-optimisation-patches.patch
+++ b/patches/server/0987-Moonrise-optimisation-patches.patch
@@ -27715,7 +27715,7 @@ index bd20bea7f76a7307f1698fb2dfef37125032d166..141b748abe80402731cdaf14a3d36aa7
// Paper start - Affects Spawning API
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
-index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f11e142e1b 100644
+index 8608008e53eaacc701403f77d836275ec9885e07..516081f77f6937881288096e7f63937b91c106a4 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -75,6 +75,247 @@ public class Explosion {
@@ -27966,7 +27966,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
public static DamageSource getDefaultDamageSource(Level world, @Nullable Entity source) {
return world.damageSources().explosion(source, Explosion.getIndirectSourceEntityInternal(source));
}
-@@ -167,68 +408,107 @@ public class Explosion {
+@@ -173,68 +414,107 @@ public class Explosion {
}
// CraftBukkit end
this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, new Vec3(this.x, this.y, this.z));
@@ -28122,7 +28122,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
float f2 = this.radius * 2.0F;
i = Mth.floor(this.x - (double) f2 - 1.0D);
-@@ -241,6 +521,10 @@ public class Explosion {
+@@ -247,6 +527,10 @@ public class Explosion {
Vec3 vec3d = new Vec3(this.x, this.y, this.z);
Iterator iterator = list.iterator();
@@ -28133,7 +28133,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next();
-@@ -257,6 +541,7 @@ public class Explosion {
+@@ -263,6 +547,7 @@ public class Explosion {
d8 /= d11;
d9 /= d11;
d10 /= d11;
@@ -28141,7 +28141,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
if (this.damageCalculator.shouldDamageEntity(this, entity)) {
// CraftBukkit start
-@@ -272,6 +557,8 @@ public class Explosion {
+@@ -278,6 +563,8 @@ public class Explosion {
entity.lastDamageCancelled = false;
@@ -28150,7 +28150,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
if (entity instanceof EnderDragon) {
for (EnderDragonPart entityComplexPart : ((EnderDragon) entity).subEntities) {
// Calculate damage separately for each EntityComplexPart
-@@ -280,16 +567,21 @@ public class Explosion {
+@@ -286,16 +573,21 @@ public class Explosion {
}
}
} else {
@@ -28175,7 +28175,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
double d13;
if (entity instanceof LivingEntity) {
-@@ -327,7 +619,11 @@ public class Explosion {
+@@ -333,7 +625,11 @@ public class Explosion {
}
}
}
@@ -28188,7 +28188,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
}
public void finalizeExplosion(boolean particles) {
-@@ -544,14 +840,14 @@ public class Explosion {
+@@ -550,14 +846,14 @@ public class Explosion {
private BlockInteraction() {}
}
// Paper start - Optimize explosions
@@ -28207,7 +28207,7 @@ index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f1
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index e5abde76c354c3dd9940dd4e5ae3fe8b6a2b4680..347334130e99dbf938d570bd36440a96f92d475a 100644
+index c683a0c44dc5a5aa83a11ff6391a1f88f346f364..ff23975758ac1e8464d50d1793dc88ed1f776f9b 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -81,6 +81,7 @@ import net.minecraft.world.level.storage.LevelData;
@@ -28775,7 +28775,7 @@ index e5abde76c354c3dd9940dd4e5ae3fe8b6a2b4680..347334130e99dbf938d570bd36440a96
}
// Paper end - Option to prevent armor stands from doing entity lookups
-@@ -949,7 +1447,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -955,7 +1453,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
// Paper end - Perf: Optimize capturedTileEntities lookup
// CraftBukkit end
@@ -28784,7 +28784,7 @@ index e5abde76c354c3dd9940dd4e5ae3fe8b6a2b4680..347334130e99dbf938d570bd36440a96
}
public void setBlockEntity(BlockEntity blockEntity) {
-@@ -1039,28 +1537,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1045,28 +1543,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@Override
public List getEntities(@Nullable Entity except, AABB box, Predicate super Entity> predicate) {
this.getProfiler().incrementCounter("getEntities");
@@ -28818,7 +28818,7 @@ index e5abde76c354c3dd9940dd4e5ae3fe8b6a2b4680..347334130e99dbf938d570bd36440a96
}
@Override
-@@ -1075,36 +1558,77 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1081,36 +1564,77 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
this.getEntities(filter, box, predicate, result, Integer.MAX_VALUE);
}
@@ -32762,7 +32762,7 @@ index d8b842bfd1507ace84943ff1f9ddc6ea153e54db..266b720ffe2a684dcf54456e3a198f90
// Paper start - Adventure
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 1beb22285857778f7b0f33daa265046f657be854..f8d9446acd34d8f1d2e58288d742dbb4da2691ce 100644
+index a1de89745a881f182b94bb882b7cec84782b0ed7..b65220e07f52b1eb15e37483b75d3cfe3750517d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -451,10 +451,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -32824,7 +32824,7 @@ index 1beb22285857778f7b0f33daa265046f657be854..f8d9446acd34d8f1d2e58288d742dbb4
long chunkKey = chunkTickets.getLongKey();
SortedArraySet> tickets = chunkTickets.getValue();
-@@ -1285,12 +1276,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1292,12 +1283,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public int getViewDistance() {
@@ -32839,7 +32839,7 @@ index 1beb22285857778f7b0f33daa265046f657be854..f8d9446acd34d8f1d2e58288d742dbb4
}
public BlockMetadataStore getBlockMetadata() {
-@@ -2428,17 +2419,20 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -2435,17 +2426,20 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setSimulationDistance(final int simulationDistance) {
diff --git a/patches/server/1000-Add-Alternate-Current-redstone-implementation.patch b/patches/server/1000-Add-Alternate-Current-redstone-implementation.patch
index d3dea51359d2f..76efae9b6fb87 100644
--- a/patches/server/1000-Add-Alternate-Current-redstone-implementation.patch
+++ b/patches/server/1000-Add-Alternate-Current-redstone-implementation.patch
@@ -2035,10 +2035,10 @@ index 4fea1670cb7b731145c0769cf9c2e2485bdd1d6b..3f1428b282987e1c4cd2fb5b035df517
EntityCallbacks() {}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 87cde688976a45aa8848586b5371b3ab493813ea..5c4eaa6bcf20b0fcec14bd5ef76ea6f29a8613a2 100644
+index db6abf9a3e865a6979b25c862f5694221b941990..9e3114f61ab3697455ecec695e9f830b5f57a439 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -2013,4 +2013,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
+@@ -2019,4 +2019,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
}
}
// Paper end - notify observers even if grow failed