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 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 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