diff --git a/gradle.properties b/gradle.properties index 42372ddb4..380bc4590 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19.2-R0.1-SNAPSHOT -paperCommit = f7da209586b12d169719e38b3dfa2664b6474a67 +paperCommit = 1c1aeb20e27d4be5134f0abeec45916cfc6952b0 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index f8a940ef1..606f20cdd 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1417,7 +1417,7 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 4a8286c78a9a5e305b19cc5d316bc73a78e49b4d..54bca103347e89f116fb7fbf37449a32ac094286 100644 +index 63ec2ebb71aa0e0dbb64bbce7cd3c9494e9ce2e7..d03551e81e3ef37935cb1d963aba3df316f48ef5 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -7,6 +7,7 @@ import net.kyori.adventure.text.Component; @@ -1460,7 +1460,7 @@ index 4a8286c78a9a5e305b19cc5d316bc73a78e49b4d..54bca103347e89f116fb7fbf37449a32 } } diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java -index 99f56658c70f99592fb40c9df0ce3e47053d1bd5..07b0b0993c01763b39d1c9a387447ec76b5de190 100644 +index 13082cd8de1a79a3b2fac6055bdaa163dbc7897b..0d995a13114e718016518f41d7fcff3042674847 100644 --- a/src/main/java/net/minecraft/server/MCUtil.java +++ b/src/main/java/net/minecraft/server/MCUtil.java @@ -208,7 +208,7 @@ public final class MCUtil { @@ -1524,7 +1524,7 @@ index 2932d2bb797a49e904cebec4285d24d69b429cd9..d4efadbc87ee0b6cb8564c57fc9dcbb4 } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 73daa8368066e20d251b8b6eb69c916919b48838..ae68af5f3498325e5686eb311faad559647bb348 100644 +index 971405224418fee037030a4c465b5f4bb9cd2c3b..9ce60dd72dee4d3ceef38f425b13aed18fd5e002 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -334,7 +334,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -1536,7 +1536,7 @@ index 73daa8368066e20d251b8b6eb69c916919b48838..ae68af5f3498325e5686eb311faad559 // Paper start - use distance map to optimise entity tracker this.playerEntityTrackerTrackMaps = new com.destroystokyo.paper.util.misc.PlayerAreaMap[TRACKING_RANGE_TYPES.length]; this.entityTrackerTrackRanges = new int[TRACKING_RANGE_TYPES.length]; -@@ -1590,8 +1590,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1589,8 +1589,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } @@ -1565,7 +1565,7 @@ index 73daa8368066e20d251b8b6eb69c916919b48838..ae68af5f3498325e5686eb311faad559 Iterator iterator = this.entity.getIndirectPassengers().iterator(); while (iterator.hasNext()) { -@@ -1603,6 +1623,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1602,6 +1622,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider i = j; } } @@ -1692,10 +1692,10 @@ index 3b144c820531122eb37d41be06c182b5f5dc0724..1eb912ad97f9663bf6bd336ad739f255 this.wasOnGround = this.entity.isOnGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f1a27e0ea0569438032ff6c5a777a35be4e501ef..917cf327f3f9d824ec0da70fd9204624e7cf96fb 100644 +index f1a1c58fd70610c7fe29d5890cdf161346f34cb9..e802ee2b2dc458f52dbce9746fc9891eebb6dcc1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -725,7 +725,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -727,7 +727,20 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("tick"); @@ -1717,7 +1717,7 @@ index f1a27e0ea0569438032ff6c5a777a35be4e501ef..917cf327f3f9d824ec0da70fd9204624 gameprofilerfiller.pop(); } } -@@ -792,9 +805,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -794,9 +807,11 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -1730,7 +1730,7 @@ index f1a27e0ea0569438032ff6c5a777a35be4e501ef..917cf327f3f9d824ec0da70fd9204624 public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -805,7 +820,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -807,7 +822,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -1739,7 +1739,7 @@ index f1a27e0ea0569438032ff6c5a777a35be4e501ef..917cf327f3f9d824ec0da70fd9204624 blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); -@@ -829,7 +844,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -831,7 +846,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.popPush("iceandsnow"); @@ -1749,7 +1749,7 @@ index f1a27e0ea0569438032ff6c5a777a35be4e501ef..917cf327f3f9d824ec0da70fd9204624 this.getRandomBlockPosition(j, 0, k, 15, blockposition); int normalY = chunk.getHeight(Heightmap.Types.MOTION_BLOCKING, blockposition.getX() & 15, blockposition.getZ() & 15) + 1; diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 63c9040ed2349eec500ba6e9090440347c514a3b..59608a53bbf0eccf118b4d65557444f6532fedb4 100644 +index 9ad36447e82a3504576f6c10cb297514a2f69289..4e615e5d5b8d79f6eaac2136be03961415fd093e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1216,6 +1216,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -2345,7 +2345,7 @@ index def01d221f36d71640bf4ef982a984909aacc6da..bfea05018d9515fa7a9a8c04d4e2a63e @Override protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 2d87b740e84435ef9bd3eee3d3e2af9f707a0826..d38d1e3692e093d6707b6bd80cd56ec4afcf093b 100644 +index 1dcd0c494681b7665b6b86dbe20375afd8d2fad8..f889b352d5618c1955e21273da79604a33e30c06 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -228,9 +228,11 @@ public class Allay extends PathfinderMob implements InventoryCarrier { @@ -3234,7 +3234,7 @@ index d559f93a9a09bac414dd5d58afccad42c127f09b..13e749a3c40f0b2cc002f13675a9a56e @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 05499ae9fc331471db6e763a2adb46b5da8522d3..34334c139176e0aa9f6d93a87821508d17567cfc 100644 +index 258d00692fa50e0932747a7a2f0ddae5ab659040..f5adadb2e29ed8b52a502489ba06df4551cd06dc 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -88,6 +88,18 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0002-Fix-pufferfish-issues.patch b/patches/server/0002-Fix-pufferfish-issues.patch index c77bffe33..a098c7de8 100644 --- a/patches/server/0002-Fix-pufferfish-issues.patch +++ b/patches/server/0002-Fix-pufferfish-issues.patch @@ -27,10 +27,10 @@ index ed9c8e882739c02d0d04129d251e4c726b422c07..5426e57ed67b0d144818a7e3b917c90d "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 917cf327f3f9d824ec0da70fd9204624e7cf96fb..253f2e64f7d287057170ed50180e92d644a11f76 100644 +index e802ee2b2dc458f52dbce9746fc9891eebb6dcc1..0e7dd081befe76e8c589f58e44f1aed76be312e6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -805,7 +805,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -807,7 +807,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -53,7 +53,7 @@ index 0277633fd328ef9993fea4ac29df83b5b00c0f42..35d6a8fe168caa5b68b471bd78cc95b9 // Pufferfish start - ensure these get inlined private final int minBuildHeight, minSection, height, maxBuildHeight, maxSection; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 34334c139176e0aa9f6d93a87821508d17567cfc..df2786516fe641edff7bbe9fe0665bf07502d830 100644 +index f5adadb2e29ed8b52a502489ba06df4551cd06dc..b89dad36bf09fdab340efc83d09992b707cd321a 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -130,7 +130,7 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 64fc94029..c4ade892e 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index 957587f5c3f9c26794c80146b4deb282af3469e8..7f0551e70c545f8e77d18b11e836233f this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 253f2e64f7d287057170ed50180e92d644a11f76..6d1c1c7647006ca2ee72262c9f76fc18aa0b4506 100644 +index 0e7dd081befe76e8c589f58e44f1aed76be312e6..a774e9a2ee85a8356fd9d39a8fbe98ff893f8f1f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -220,6 +220,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -43,8 +43,8 @@ index 253f2e64f7d287057170ed50180e92d644a11f76..6d1c1c7647006ca2ee72262c9f76fc18 private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) + public boolean hasRidableMoveEvent = false; // Purpur public static Throwable getAddToWorldStackTrace(Entity entity) { - return new Throwable(entity + " Added to world at " + new java.util.Date()); - } + final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); + io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java index bcf056513eae366e47f6db3738a109eed97b320d..ba86728b28b4c1b6fdca7e8734e5967c3873416d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1123,7 +1123,7 @@ index 3f100d847fbce6db5b625e99c4f3694576237372..7343f6fa6c29d4029cc35e173e5d701e this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 6a66b5d1a3d8615dcc15057f03476e9ccbf4b4f2..6a1c2a43aa00a2e651ca19d2acfa54ae3f020c5f 100644 +index 06b11bdbccd76f166561bcaff444066cc46b4663..6b3413593fd68d5e4f97bd7fe9454496ace94287 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -140,6 +140,44 @@ public class Fox extends Animal { @@ -1187,7 +1187,7 @@ index 6a66b5d1a3d8615dcc15057f03476e9ccbf4b4f2..6a1c2a43aa00a2e651ca19d2acfa54ae this.targetSelector.addGoal(3, new Fox.DefendTrustedTargetGoal(LivingEntity.class, false, false, (entityliving) -> { return Fox.TRUSTED_TARGET_SELECTOR.test(entityliving) && !this.trusts(entityliving.getUUID()); })); -@@ -746,16 +786,16 @@ public class Fox extends Animal { +@@ -752,16 +792,16 @@ public class Fox extends Animal { return new Vec3(0.0D, (double) (0.55F * this.getEyeHeight()), (double) (this.getBbWidth() * 0.4F)); } @@ -1207,7 +1207,7 @@ index 6a66b5d1a3d8615dcc15057f03476e9ccbf4b4f2..6a1c2a43aa00a2e651ca19d2acfa54ae } } -@@ -766,16 +806,16 @@ public class Fox extends Animal { +@@ -772,16 +812,16 @@ public class Fox extends Animal { } } @@ -1373,7 +1373,7 @@ index 6a459435493295ee5bb44fe2ba79cba6acea2e35..041c2d330a245826fc2fa4c1327aeadd this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2004c9814 100644 +index 1494a3d5256f663b17617356d57d2e09aeec6189..46b3f0d26ef95eee43c68fb2829cc99a622d5852 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -107,6 +107,32 @@ public class Panda extends Animal { @@ -1409,7 +1409,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 @Override public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); -@@ -262,6 +288,7 @@ public class Panda extends Animal { +@@ -263,6 +289,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1417,7 +1417,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true)); -@@ -277,6 +304,7 @@ public class Panda extends Animal { +@@ -278,6 +305,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); @@ -1425,7 +1425,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } -@@ -623,7 +651,7 @@ public class Panda extends Animal { +@@ -624,7 +652,7 @@ public class Panda extends Animal { ItemStack itemstack = player.getItemInHand(hand); if (this.isScared()) { @@ -1434,7 +1434,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level.isClientSide); -@@ -640,7 +668,7 @@ public class Panda extends Animal { +@@ -641,7 +669,7 @@ public class Panda extends Animal { this.setInLove(player); } else { if (this.level.isClientSide || this.isSitting() || this.isInWater()) { @@ -1443,7 +1443,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 } this.tryToSit(); -@@ -657,7 +685,7 @@ public class Panda extends Animal { +@@ -658,7 +686,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1452,7 +1452,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 } } -@@ -697,7 +725,7 @@ public class Panda extends Animal { +@@ -698,7 +726,7 @@ public class Panda extends Animal { return !this.isOnBack() && !this.isScared() && !this.isEating() && !this.isRolling() && !this.isSitting(); } @@ -1461,7 +1461,7 @@ index 39c26f486d6392eb0a9b623cdb2161846357174b..129358e127227efb6adbcf4c436f59f2 private final Panda panda; -@@ -707,9 +735,9 @@ public class Panda extends Animal { +@@ -708,9 +736,9 @@ public class Panda extends Animal { } @Override @@ -2194,7 +2194,7 @@ index 45c3cec839a7c23903dedf6e3e004305da2adceb..248531727dcafb71d7d2d2767205e09a this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index d38d1e3692e093d6707b6bd80cd56ec4afcf093b..c960aac9e1dbffe5e765f9adcfacc1966dc29148 100644 +index f889b352d5618c1955e21273da79604a33e30c06..28633838cb314ba59b4ff3bbdb99343d98ee66ae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -101,10 +101,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier { @@ -2770,7 +2770,7 @@ index 305a891e4b51d1031d9e9238ff00e2ea7de8d954..84625d09df800fcfd477fc493fb5f824 protected void defineSynchedData() { } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index ac3d4d90407288526a8c787e365ff41234a58543..f892b25c45c7b84fa37f4ddfe2c1068cfa1be483 100644 +index b786bd5178a605a5dfb7682b7cb809646895aea3..e84acc78df13c8277d53f43915d4f58922bce41a 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -103,6 +103,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -2919,7 +2919,7 @@ index ac3d4d90407288526a8c787e365ff41234a58543..f892b25c45c7b84fa37f4ddfe2c1068c this.dragonFight.updateDragon(this); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index a6d30f3213d30ba925926437ed4535319061213d..11f6465cbf26f4a632f597f2158c6c91d5056c41 100644 +index b9d42e59a9f9e9ee4e6a06e2245a00dcc34f9002..b0fb4db03a2392c324caf5b8b1b074534397b538 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index decf2b803..dcb9492f8 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -174,7 +174,7 @@ index 7343f6fa6c29d4029cc35e173e5d701efd7f57c6..1ca3ffe212da2c3914c290172e729ba8 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 6a1c2a43aa00a2e651ca19d2acfa54ae3f020c5f..0d1e8ad0edcbe53d203b9fa6748f76f783afae5c 100644 +index 6b3413593fd68d5e4f97bd7fe9454496ace94287..1f714f980bad7dcdeb361366a2d65c5a9f831a2c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -176,6 +176,11 @@ public class Fox extends Animal { @@ -238,7 +238,7 @@ index 041c2d330a245826fc2fa4c1327aeadd24a44254..3697238a818aac364d62f779fe6b6224 public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 129358e127227efb6adbcf4c436f59f2004c9814..47b03fd6a45b03f438fc9e4025dd2d7e70c273b6 100644 +index 46b3f0d26ef95eee43c68fb2829cc99a622d5852..c308558a94a7f7f6fbfeb64a5aa0a2af9d0f3f81 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -131,6 +131,12 @@ public class Panda extends Animal { @@ -254,7 +254,7 @@ index 129358e127227efb6adbcf4c436f59f2004c9814..47b03fd6a45b03f438fc9e4025dd2d7e // Purpur end @Override -@@ -628,7 +634,10 @@ public class Panda extends Animal { +@@ -629,7 +635,10 @@ public class Panda extends Animal { public void setAttributes() { if (this.isWeak()) { @@ -719,7 +719,7 @@ index 0f8ce0c6ddbb37a61c6b15bb769b627bcd8105fa..6ed9e4e98c46b51cf398641ffb66abf3 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f892b25c45c7b84fa37f4ddfe2c1068cfa1be483..1e3afa3d98e755b7a06dc6b90f90e2d41843a482 100644 +index e84acc78df13c8277d53f43915d4f58922bce41a..10294ba0f6fac4d0afebe22496d4020b975f1469 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -160,6 +160,11 @@ public class EnderDragon extends Mob implements Enemy { @@ -735,7 +735,7 @@ index f892b25c45c7b84fa37f4ddfe2c1068cfa1be483..1e3afa3d98e755b7a06dc6b90f90e2d4 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 11f6465cbf26f4a632f597f2158c6c91d5056c41..cdaefabf24c59338a0406072ce01029c194700fd 100644 +index b0fb4db03a2392c324caf5b8b1b074534397b538..c8f917354676eb26059efb521e09780db32c68b7 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -224,6 +224,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob diff --git a/patches/server/0029-Zombie-horse-naturally-spawn.patch b/patches/server/0029-Zombie-horse-naturally-spawn.patch index ccace2275..748ae6dc3 100644 --- a/patches/server/0029-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0029-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index eab96c9b53cd608ff99cdad06721cd19e490ad14..6e6559b7edbabc000ac47617ab064e438a95720d 100644 +index a774e9a2ee85a8356fd9d39a8fbe98ff893f8f1f..558cd427e0b08a6b59b9851242386e89ca87b996 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -828,9 +828,15 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -830,9 +830,15 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0033-Tulips-change-fox-type.patch b/patches/server/0033-Tulips-change-fox-type.patch index 426deb3e6..f30218580 100644 --- a/patches/server/0033-Tulips-change-fox-type.patch +++ b/patches/server/0033-Tulips-change-fox-type.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 0d1e8ad0edcbe53d203b9fa6748f76f783afae5c..a708a9d855fd32c0eb659b44d91a5a1a33312cc7 100644 +index 1f714f980bad7dcdeb361366a2d65c5a9f831a2c..64a564bf1a5133971050882835749807154c3a72 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -35,6 +35,7 @@ import net.minecraft.util.Mth; @@ -44,7 +44,7 @@ index 0d1e8ad0edcbe53d203b9fa6748f76f783afae5c..a708a9d855fd32c0eb659b44d91a5a1a } List getTrustedUUIDs() { -@@ -744,6 +752,29 @@ public class Fox extends Animal { +@@ -750,6 +758,29 @@ public class Fox extends Animal { return this.getTrustedUUIDs().contains(uuid); } diff --git a/patches/server/0046-Minecart-settings-and-WASD-controls.patch b/patches/server/0046-Minecart-settings-and-WASD-controls.patch index bc22fa686..9573a880c 100644 --- a/patches/server/0046-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0046-Minecart-settings-and-WASD-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 671ef13c7abdd77ad49fc490c2117a224b701311..80598d109eba14f719c4c8190d93d4a9febb9248 100644 +index a907475add800f1f47e647b169d6b709acefc785..4ff8022c0787575b215f03b142c908a8076618eb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1035,6 +1035,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index 671ef13c7abdd77ad49fc490c2117a224b701311..80598d109eba14f719c4c8190d93d4a9 if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 3f31a3c17ecca6e93b794478129b95ecff4e1a9c..d2d1e554b1c24df982ff28fbe118229c8e9ecd13 100644 +index c71120fe57a76c4638be5dcbda5a756cc2d62ffc..997776ac62d2de1f076a5bc38fcf78a1999748cf 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -107,11 +107,13 @@ public abstract class AbstractMinecart extends Entity { @@ -34,7 +34,7 @@ index 3f31a3c17ecca6e93b794478129b95ecff4e1a9c..d2d1e554b1c24df982ff28fbe118229c } protected AbstractMinecart(EntityType type, Level world, double x, double y, double z) { -@@ -326,6 +328,12 @@ public abstract class AbstractMinecart extends Entity { +@@ -334,6 +336,12 @@ public abstract class AbstractMinecart extends Entity { @Override public void tick() { @@ -47,7 +47,7 @@ index 3f31a3c17ecca6e93b794478129b95ecff4e1a9c..d2d1e554b1c24df982ff28fbe118229c // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -489,16 +497,63 @@ public abstract class AbstractMinecart extends Entity { +@@ -497,16 +505,63 @@ public abstract class AbstractMinecart extends Entity { public void activateMinecart(int x, int y, int z, boolean powered) {} diff --git a/patches/server/0096-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0096-Allow-toggling-special-MobSpawners-per-world.patch index be9f42bf4..d47dfb58f 100644 --- a/patches/server/0096-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0096-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6e6559b7edbabc000ac47617ab064e438a95720d..30fab9ee2e549ddf85ce71a74c70199801af5815 100644 +index 558cd427e0b08a6b59b9851242386e89ca87b996..540c45189331a4af97c9dfe86524583a9e64d53c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -540,7 +540,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -542,7 +542,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -67,7 +67,7 @@ index daa7c4bd8a3f6c28f02b7117b061f0def29e3743..d4699d7eefafffd2d4e0a03d62d5094f if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3261f6ca362b199b472570ab7a089215a30960b7..23899c81d555a78ef153fdf4dde2889d0fe2646b 100644 +index f5f2bf775390ac019c811e4c26d817749a2f6645..04604557a57a09127e88a2119aa9a63c764de94a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -72,6 +72,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0103-Configurable-daylight-cycle.patch b/patches/server/0103-Configurable-daylight-cycle.patch index 26aa2949d..ed9afc928 100644 --- a/patches/server/0103-Configurable-daylight-cycle.patch +++ b/patches/server/0103-Configurable-daylight-cycle.patch @@ -31,7 +31,7 @@ index bc8152edd32238025321512cb72bbb62dd2175bc..68db8421f5e80301423c2f1d4394ef1f } ServerPlayer entityplayer = (ServerPlayer) entityhuman; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 30fab9ee2e549ddf85ce71a74c70199801af5815..284fb0308ccd458804f9dfe9eb10529e32ba0207 100644 +index 540c45189331a4af97c9dfe86524583a9e64d53c..95df1d7ff03a5e7c490b48fc14c1518e7f4cc3a0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -212,6 +212,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -43,7 +43,7 @@ index 30fab9ee2e549ddf85ce71a74c70199801af5815..284fb0308ccd458804f9dfe9eb10529e public long lastMidTickExecuteFailure; // Paper - execute chunk tasks mid tick // CraftBukkit start -@@ -620,6 +622,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -622,6 +624,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.chunkTaskScheduler = new io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler(this, io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.workerThreads); // Paper - rewrite chunk system this.entityLookup = new io.papermc.paper.chunk.system.entity.EntityLookup(this, new EntityCallbacks()); // Paper - rewrite chunk system @@ -51,7 +51,7 @@ index 30fab9ee2e549ddf85ce71a74c70199801af5815..284fb0308ccd458804f9dfe9eb10529e } public void setWeatherParameters(int clearDuration, int rainDuration, boolean raining, boolean thundering) { -@@ -790,6 +793,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -792,6 +795,13 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setGameTime(i); this.serverLevelData.getScheduledEvents().tick(this.server, i); if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -65,7 +65,7 @@ index 30fab9ee2e549ddf85ce71a74c70199801af5815..284fb0308ccd458804f9dfe9eb10529e this.setDayTime(this.levelData.getDayTime() + 1L); } -@@ -798,7 +808,21 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -800,7 +810,21 @@ public class ServerLevel extends Level implements WorldGenLevel { public void setDayTime(long timeOfDay) { this.serverLevelData.setDayTime(timeOfDay); @@ -88,7 +88,7 @@ index 30fab9ee2e549ddf85ce71a74c70199801af5815..284fb0308ccd458804f9dfe9eb10529e public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6f67bc6c6cc81c4d867ab6aaa23e263ef14ecf6..e95c39c76f71d1434f874c56e22b2470c3f543c1 100644 +index 9a160cfffeb3049f256f56e9df8aab42ebe9ec2f..0a8f9082470b3b70fb21ea620d6dce23120cb65b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -125,6 +125,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0109-Make-entity-breeding-times-configurable.patch b/patches/server/0109-Make-entity-breeding-times-configurable.patch index 5d619bc57..37482bab3 100644 --- a/patches/server/0109-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0109-Make-entity-breeding-times-configurable.patch @@ -47,7 +47,7 @@ index 34e82b97c5b294f0a6423581220403a10264da8b..a0c3a27a90e0788b573f0776c25cfc6e other.resetLove(); world.addFreshEntityWithPassengers(entityageable, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 33f2100a9cb7616339c18d9b41293eab8c0e4a65..f2345d7ce5ba8b4bd3e44819fcf82cd46501e6e3 100644 +index 7f57a591172708d5cebbd88335ca60d8972bfb0e..8eef2c50ae38ab7ea0942d338d0918c8edbd42b0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -219,6 +219,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -95,7 +95,7 @@ index 96dceb9943c4320e0edfba47cc211d60aa92323b..fe266b94d08b8977451f75ec87c19497 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 732c560383da3b8a270139758f29734d73b775be..b063a74327e51b3cd27427426b92ef687c59c94b 100644 +index 123aae4d17bc06317c872270e229f6e9c13953e1..0da192e78865b50f87de0d61ce1b39b1899cc954 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -62,6 +62,11 @@ public class Cow extends Animal { @@ -111,7 +111,7 @@ index 732c560383da3b8a270139758f29734d73b775be..b063a74327e51b3cd27427426b92ef68 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index a708a9d855fd32c0eb659b44d91a5a1a33312cc7..b2c901ed90fbf0ab79848d11f50d6f7a0b24bd6f 100644 +index 64a564bf1a5133971050882835749807154c3a72..ae02191f9cd8969a938655e4fba1bbe260d1dd88 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -183,6 +183,11 @@ public class Fox extends Animal { @@ -126,7 +126,7 @@ index a708a9d855fd32c0eb659b44d91a5a1a33312cc7..b2c901ed90fbf0ab79848d11f50d6f7a // Purpur end @Override -@@ -969,8 +974,10 @@ public class Fox extends Animal { +@@ -975,8 +980,10 @@ public class Fox extends Animal { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,7 +140,7 @@ index a708a9d855fd32c0eb659b44d91a5a1a33312cc7..b2c901ed90fbf0ab79848d11f50d6f7a this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 1bf3f1cf537c75aa32d1531ee77a4d08ad4b69bf..6cd1a173857b9815073d4bb5020ebe6582844418 100644 +index bdfca8501edb9209463b70db2d134b488a08e143..74fa3278f39b2e55b7ee9b0c3088d02f44e71259 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -84,6 +84,11 @@ public class MushroomCow extends Cow implements Shearable { @@ -172,7 +172,7 @@ index 3697238a818aac364d62f779fe6b622494a9f658..25f01fe6bda429a13188e62aee68d242 public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 47b03fd6a45b03f438fc9e4025dd2d7e70c273b6..260fb72d48e2e2c6d27ab21b8a5049235d51555c 100644 +index c308558a94a7f7f6fbfeb64a5aa0a2af9d0f3f81..d44314d9c5b77c12a09ea2271b938580bb369abc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -137,6 +137,11 @@ public class Panda extends Animal { @@ -331,7 +331,7 @@ index 6a6613f70f9c4cc950882191b00048d4c47bd84f..e739416fa58b182d7bd311be094d6aab @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index c1cdef2eaa2bb969ddecc8c3bbdb0fdd33fa9c82..af6bc24065f0db7b12962b5b718b5fb82cf5fa22 100644 +index 1528728bb66b63f3d4080fe10d3ba9abc309a63b..9b7fce44c097b26b995aa2a0bc93915e77be8b96 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -109,6 +109,11 @@ public class Goat extends Animal { @@ -379,7 +379,7 @@ index 390f630462c907cd6e961c6ca432804e2f19f07c..6a7d8ff804b184005fda17f3d7a4b975 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 8beacf4afc8168d930ec2fb7926a19283ee31065..91ec5c71c90496f79c80e42cfdd86e4eb5befddf 100644 +index f9da2e58b8df88ad103f2549b27fbedee8520bb1..7f47cc2caa22f31eb956ec4b7da69a62fa4e5899 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -131,6 +131,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { diff --git a/patches/server/0130-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0130-Add-mobGriefing-bypass-to-everything-affected.patch index 3375f4061..45dd5df85 100644 --- a/patches/server/0130-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0130-Add-mobGriefing-bypass-to-everything-affected.patch @@ -92,10 +92,10 @@ index bd0cbf4390fc7d00b4bd5008cdf8f6f49df4f69b..27e96c4c1377c49f03df032683aac32d } else if (this.nextStartTick > 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index b2c901ed90fbf0ab79848d11f50d6f7a0b24bd6f..d64deacacb64dc0572fc0b5d559ddd833397ed47 100644 +index ae02191f9cd8969a938655e4fba1bbe260d1dd88..18cc92406057b3c47ba00ddfe7cebeb99f8a106d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1365,7 +1365,7 @@ public class Fox extends Animal { +@@ -1371,7 +1371,7 @@ public class Fox extends Animal { } protected void onReachedTarget() { @@ -131,7 +131,7 @@ index b9025929fcc89e72aa820953b91a65423878ba0f..edf4537f08a54e1a5b043927678bbddf } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a2d7d2e1ea6596d0a3188169cf8d7295e888c20f..7cc0d8c9dbfe24de4fa2937db9fe6ef8e78bbef7 100644 +index 84b783862630a001db4a19fd2eceee4db5c51756..5b60abfb44640149e92ead0cda8c426484574fe2 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -578,7 +578,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -144,7 +144,7 @@ index a2d7d2e1ea6596d0a3188169cf8d7295e888c20f..7cc0d8c9dbfe24de4fa2937db9fe6ef8 // flag1 = this.level.removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 9cf7cd70492c8769cd3dad1ed57eeff1150bc4e8..ab3c741aa0894a9383833b3aa4a8d45ad46dd013 100644 +index abf4490d8366ec6587178688228375093563b9b5..8278cb7b57a1910c822fa85cebec033b95725c03 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -402,7 +402,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -230,7 +230,7 @@ index 1641d5083cad8b7cd62fc1168834ff99b5239c5a..281e8e6232c30cf5c20e9e2de4ac2ab4 } else { List list = Evoker.this.level.getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 6d1d682d193b630706731ba6d4a44955e8a0a2e7..570b3cbfc66f762999eaec57109ec11c995707b2 100644 +index 94859efec34e6edfd31ff22277e3084218e38b3c..f8867270a5eb705b60236abf3351c050f2e27c60 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -191,7 +191,7 @@ public class Ravager extends Raider { @@ -306,7 +306,7 @@ index 5237b699e000b4fed99be39b0a7e2daab9c8bf42..efa9424f8e2716f073e89b03f3d85e1b // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 85fb907fb149961611310c355d0911d81f1b735c..c37832b3fee9d7d8577f8b1701c1c2c27cfdbf09 100644 +index bf828b9a36fc70bcf4c4d87d5db2d37aa384499c..466313e17fca9ff6993406b71da62218811e1641 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java @@ -302,6 +302,6 @@ public abstract class Projectile extends Entity { @@ -357,7 +357,7 @@ index 8877423a99e387c18d1d994518bf15d8d9ba64af..8074bcac1f6f83080c94d1c3dec690f0 if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index 275e5334b1206a2dcafc3772c7e2ad0ebe3693f9..a68bf10353e5c19adfa86c2dd6290f2386af9a9d 100644 +index 7d8394d09ec11c96b9329857a0d347565dd07b32..36ad7f33eacc63d84db04225fbffcc32abf24fdc 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -164,7 +164,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { diff --git a/patches/server/0152-Config-for-skipping-night.patch b/patches/server/0152-Config-for-skipping-night.patch index 7431f43bb..ed846cd93 100644 --- a/patches/server/0152-Config-for-skipping-night.patch +++ b/patches/server/0152-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 284fb0308ccd458804f9dfe9eb10529e32ba0207..9dc317d471ce6eab24e0ebec729cea1dbed8b2ec 100644 +index 95df1d7ff03a5e7c490b48fc14c1518e7f4cc3a0..2e8b8874106bb96f6a3ff9ff50e1c3ef41560615 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -661,7 +661,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -663,7 +663,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index 284fb0308ccd458804f9dfe9eb10529e32ba0207..9dc317d471ce6eab24e0ebec729cea1d j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d101f9fe489122e2c3a83f901bc19b2232a5d72..f36e00c716532b0ab12565ca0076c94b7d73e5b3 100644 +index 9649618c5d5721e1ce2fb4f59d22e352b4b614dd..7eb68d2f6a56a1110bba275fbeb91cb8605c0e0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -357,6 +357,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Configurable-powered-rail-boost-modifier.patch b/patches/server/0176-Configurable-powered-rail-boost-modifier.patch index 8335ae548..9e1a3efba 100644 --- a/patches/server/0176-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0176-Configurable-powered-rail-boost-modifier.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable powered rail boost modifier diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index d2d1e554b1c24df982ff28fbe118229c8e9ecd13..b16ad4d5f3cdf8e0e44f74ae481b04d38e7a6c9e 100644 +index 997776ac62d2de1f076a5bc38fcf78a1999748cf..2cf873bffe06bc6905eebf8be243609cf43d7dd4 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -715,7 +715,7 @@ public abstract class AbstractMinecart extends Entity { +@@ -723,7 +723,7 @@ public abstract class AbstractMinecart extends Entity { if (d18 > 0.01D) { double d20 = 0.06D; @@ -18,7 +18,7 @@ index d2d1e554b1c24df982ff28fbe118229c8e9ecd13..b16ad4d5f3cdf8e0e44f74ae481b04d3 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd64916a3e47760b2046a34c3b9ec97d491d65a2..d6b680924535ff43b6a6e078efedceda45131a53 100644 +index 8d4dc7d526cf9f4ec05e845ec9b10a47ff422d1e..9973dbee6ea493d7a4f70ac6627abd69123ab622 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -274,6 +274,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0189-Make-lightning-rod-range-configurable.patch b/patches/server/0189-Make-lightning-rod-range-configurable.patch index 0fdbe7211..eca456898 100644 --- a/patches/server/0189-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0189-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9dc317d471ce6eab24e0ebec729cea1dbed8b2ec..a7820becea1e46154975f4cd7b8e8d24f9f0e4ad 100644 +index 2e8b8874106bb96f6a3ff9ff50e1c3ef41560615..becb357d64a4dc5783ff6b06eee1a4cb59e7688c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -971,7 +971,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -973,7 +973,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0204-Customizable-sleeping-actionbar-messages.patch b/patches/server/0204-Customizable-sleeping-actionbar-messages.patch index b858fd025..b646158ee 100644 --- a/patches/server/0204-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0204-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a7820becea1e46154975f4cd7b8e8d24f9f0e4ad..66ab18b0654b1408fae1a5948290d44dd888b4b4 100644 +index becb357d64a4dc5783ff6b06eee1a4cb59e7688c..e2881584437c49e58f84236c372ef4c72f653ee0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1020,11 +1020,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1022,11 +1022,27 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); diff --git a/patches/server/0217-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0217-Cactus-breaks-from-solid-neighbors-config.patch index 0dd81182e..3471db27d 100644 --- a/patches/server/0217-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0217-Cactus-breaks-from-solid-neighbors-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cactus breaks from solid neighbors config diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index 0fbabb84ef13e68b12212d9bfeb885c78893c116..56fa0e377b20ed063e47358be9e6bba8cf2c7955 100644 +index 1ec242205b82a5a1f10deb2312795cc5dc157a76..2fd7e33a161bc89c91deca1f245d6dac0dcf1b46 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -@@ -109,7 +109,7 @@ public class CactusBlock extends Block { +@@ -110,7 +110,7 @@ public class CactusBlock extends Block { BlockState iblockdata2 = world.getBlockState(pos.relative(enumdirection)); material = iblockdata2.getMaterial(); diff --git a/patches/server/0225-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0225-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 53c9c3450..13a9493f4 100644 --- a/patches/server/0225-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0225-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 66ab18b0654b1408fae1a5948290d44dd888b4b4..0c23de7ed20ac3be4a2462a246b5f746706226c6 100644 +index e2881584437c49e58f84236c372ef4c72f653ee0..31c802a2a7ebebbfb57af5ecb35ba91df58b12ea 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1179,6 +1179,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1181,6 +1181,7 @@ public class ServerLevel extends Level implements WorldGenLevel { private void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 66ab18b0654b1408fae1a5948290d44dd888b4b4..0c23de7ed20ac3be4a2462a246b5f746 this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1186,6 +1187,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1188,6 +1189,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index 66ab18b0654b1408fae1a5948290d44dd888b4b4..0c23de7ed20ac3be4a2462a246b5f746 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82318edeecb92a59514942aa346019f79e290115..18fd455f1317f613db213f19d5aac768eda8b8cf 100644 +index 87edcfdfafb0acc20e314c4d43fc0fd43c8490b2..38b1d1f16097676528ef93cdf7f4ab62807dc4c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0239-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0239-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index 20234f898..72fa97fa8 100644 --- a/patches/server/0239-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0239-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -22,7 +22,7 @@ index 4940e101250874111e9c55aeb5b87b28602246f0..45eeb8523b9923585d7738f5ad8f5e8c + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -index 4d1e1cf4c541793492a02681087a6242e7977acd..2d6fe648f5a1c0dd146d1649384bc9f47b0ccde4 100644 +index b7517d1e8a5d5eb719de5eda424b7dd2449f1182..5af3e3e68b2e686609a5469036d0d3dfe57997b4 100644 --- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java @@ -30,12 +30,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @@ -40,16 +40,16 @@ index 4d1e1cf4c541793492a02681087a6242e7977acd..2d6fe648f5a1c0dd146d1649384bc9f4 } @Override -@@ -53,7 +53,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -51,7 +51,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } else { - modifier = 100; // Above cases are exhaustive as of 1.18 + modifier = world.spigotConfig.caveVinesModifier; } -- if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (modifier / 100.0D) * this.growPerTickProbability) { // Spigot // Paper - fix growth modifier having the reverse effect -+ if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < getMaxGrowthAge() && random.nextDouble() < (modifier / 100.0D) * this.growPerTickProbability) { // Spigot // Paper - fix growth modifier having the reverse effect // Purpur - // Paper end +- if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < ((modifier / 100.0D) * this.growPerTickProbability)) { // Spigot - SPIGOT-7159: Better modifier resolution ++ if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < getMaxGrowthAge() && random.nextDouble() < ((modifier / 100.0D) * this.growPerTickProbability)) { // Spigot - SPIGOT-7159: Better modifier resolution // Purpur + // Spigot end BlockPos blockposition1 = pos.relative(this.growthDirection); -@@ -75,11 +75,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -73,11 +73,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } public BlockState getMaxAgeState(BlockState state) { @@ -63,7 +63,7 @@ index 4d1e1cf4c541793492a02681087a6242e7977acd..2d6fe648f5a1c0dd146d1649384bc9f4 } protected BlockState updateBodyAfterConvertedFromHead(BlockState from, BlockState to) { -@@ -121,13 +121,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -119,13 +119,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockposition1 = pos.relative(this.growthDirection); @@ -79,7 +79,7 @@ index 4d1e1cf4c541793492a02681087a6242e7977acd..2d6fe648f5a1c0dd146d1649384bc9f4 } } -@@ -140,4 +140,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -138,4 +138,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements protected GrowingPlantHeadBlock getHeadBlock() { return this; } diff --git a/patches/server/0254-Allow-void-trading.patch b/patches/server/0254-Allow-void-trading.patch index 4526fb2fc..942b2dd4e 100644 --- a/patches/server/0254-Allow-void-trading.patch +++ b/patches/server/0254-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 74f221c74d478e7c24e101903398219be46ddea6..55fe8b0f21f00b02e78257a64fd8d63980d50995 100644 +index 31c802a2a7ebebbfb57af5ecb35ba91df58b12ea..a1af2d00d03e3326f6acd46dfaa6cdafac841727 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2698,7 +2698,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2700,7 +2700,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start diff --git a/patches/server/0288-Remove-Timings.patch b/patches/server/0288-Remove-Timings.patch index 3fb23c1cb..0c8e0a824 100644 --- a/patches/server/0288-Remove-Timings.patch +++ b/patches/server/0288-Remove-Timings.patch @@ -21,7 +21,7 @@ index 8dc1d2d15d571d1603a41dee13681a87841f5e23..54ec7955ba394e82663b08972dd89f69 private static final ThreadLocal> CURRENT_TICKET_UPDATE_SCHEDULING = new ThreadLocal<>(); diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java -index f20faaec3f1fe311b3ac989be5a9148e2e3c59ad..e3fcbdbbf1972c382cbfe69a86eddff3dee4fba2 100644 +index 4ce6df7082d4f7ed3651e3d57e379f95dd05715e..cfc355829df3e5b51c2ff524bb3730360fee15a2 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java @@ -1748,7 +1748,7 @@ public final class NewChunkHolder { @@ -43,7 +43,7 @@ index f20faaec3f1fe311b3ac989be5a9148e2e3c59ad..e3fcbdbbf1972c382cbfe69a86eddff3 return executedUnloadTask | canSaveChunk | canSaveEntities | canSavePOI; } diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 54bca103347e89f116fb7fbf37449a32ac094286..a7f4b791894c5d8b7af4b0c067cf167b29272a27 100644 +index d03551e81e3ef37935cb1d963aba3df316f48ef5..04ca6d27a13706fbddc708df0fcca42b4098bcba 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -67,14 +67,14 @@ public class GlobalConfiguration extends ConfigurationPart { @@ -271,7 +271,7 @@ index 96c51b1f5103567c29d7da93f654cc5ddfea6a4d..c8b068ab73c8997fbd07e27ccd2dff77 @Override diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index a2a4965aec45f3ff83703b636e46f5c545cfb48e..f702b5777938324e9f10015d8e145225689a37d0 100644 +index 9976630fad886392057f642e84f919f0b95cc040..91640a6f9770eeb300e0d56d8fe93264c087f0be 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -608,15 +608,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -294,7 +294,7 @@ index a2a4965aec45f3ff83703b636e46f5c545cfb48e..f702b5777938324e9f10015d8e145225 } gameprofilerfiller.pop(); -@@ -1239,24 +1239,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1238,24 +1238,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start - optimised tracker private final void processTrackQueue() { @@ -323,7 +323,7 @@ index a2a4965aec45f3ff83703b636e46f5c545cfb48e..f702b5777938324e9f10015d8e145225 } } // Paper end - optimised tracker -@@ -1271,7 +1271,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1270,7 +1270,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider List list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -332,7 +332,7 @@ index a2a4965aec45f3ff83703b636e46f5c545cfb48e..f702b5777938324e9f10015d8e145225 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1296,17 +1296,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1295,17 +1295,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -477,10 +477,10 @@ index 7266e6703d5cd0fea90ec88c74a7d4567f2420ae..157efbbc57f1b5d92f296a70823c75b6 // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded // Paper start - controlled flush for entity tracker packets diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d1238644726ac3a2f 100644 +index a1af2d00d03e3326f6acd46dfaa6cdafac841727..4ced6723e65b84f7357acb54e9851e7af3347f11 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -684,7 +684,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -686,7 +686,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); gameprofilerfiller.popPush("tickPending"); @@ -489,7 +489,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 if (!this.isDebug()) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -693,20 +693,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -695,20 +695,20 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -517,7 +517,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 this.handlingTick = false; gameprofilerfiller.pop(); boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -717,7 +717,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -719,7 +719,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -526,7 +526,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 if (this.dragonFight != null) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -725,7 +725,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -727,7 +727,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -535,7 +535,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 this.entityTickList.forEach((entity) -> { if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed -@@ -765,8 +765,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -767,8 +767,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -546,7 +546,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -928,7 +928,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -930,7 +930,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper start - optimise random block ticking gameprofilerfiller.popPush("randomTick"); @@ -555,7 +555,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -962,7 +962,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -964,7 +964,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise random block ticking @@ -564,7 +564,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 gameprofilerfiller.pop(); } -@@ -1255,8 +1255,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1257,8 +1257,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -575,7 +575,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1272,7 +1272,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1274,7 +1274,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -584,7 +584,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1295,8 +1295,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1297,8 +1297,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -595,7 +595,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1326,7 +1326,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1328,7 +1328,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -604,7 +604,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 } } else { passenger.stopRiding(); -@@ -1346,14 +1346,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1348,14 +1348,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -622,7 +622,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1365,7 +1365,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1367,7 +1367,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryHolder, this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -631,7 +631,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 } // Paper end -@@ -1379,7 +1379,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1381,7 +1381,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit @@ -640,7 +640,7 @@ index 55fe8b0f21f00b02e78257a64fd8d63980d50995..725621bce1b82f44cea1247d12386447 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1389,11 +1389,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1391,11 +1391,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -812,7 +812,7 @@ index 386ed2c102aaa3ec68e828e20fff6bfe0d8f7877..c1541119630315521e75c1ba70ac99cd } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 636c98d04eb4e14eab1fa208d9cb097e2ab7eef7..86e0539e04e4fe6239c1cb4c4055927303655251 100644 +index b89dad36bf09fdab340efc83d09992b707cd321a..994ef28e4ad685405a2b045e29550563b0914ccc 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -930,7 +930,7 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0289-Remove-Mojang-Profiler.patch b/patches/server/0289-Remove-Mojang-Profiler.patch index c9e23ff07..45bdf3e8d 100644 --- a/patches/server/0289-Remove-Mojang-Profiler.patch +++ b/patches/server/0289-Remove-Mojang-Profiler.patch @@ -371,7 +371,7 @@ index 30093cd8bd35f0bbc8f26eca370622ee12a046b6..2986f110348b376bcdc64fa39b688855 ++j; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index f702b5777938324e9f10015d8e145225689a37d0..3203b953709ca7cb9172f5912a922131ad7ec9eb 100644 +index 91640a6f9770eeb300e0d56d8fe93264c087f0be..5258688cf1c980b95308b6d105dbf104b0276932 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -606,20 +606,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -538,10 +538,10 @@ index 157efbbc57f1b5d92f296a70823c75b6d01ac065..cd5533c3c53215c9cc4be0b9097d76ef } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199a3ad3197 100644 +index 4ced6723e65b84f7357acb54e9851e7af3347f11..d418144bc7471b2c00ad272652b035d79974ef75 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -651,12 +651,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -653,12 +653,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise checkDespawn @@ -557,7 +557,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 this.advanceWeatherCycle(); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; -@@ -683,32 +683,32 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -685,32 +685,32 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); @@ -598,7 +598,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag) { -@@ -716,12 +716,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -718,12 +718,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag || this.emptyTime++ < 300) { @@ -614,7 +614,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -731,9 +731,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -733,9 +733,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else { @@ -626,7 +626,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -745,7 +745,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -747,7 +747,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -635,7 +635,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 // Pufferfish start - copied from this.guardEntityTick try { this.tickNonPassenger(entity); // Pufferfish - changed -@@ -760,22 +760,22 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -762,22 +762,22 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end } // Pufferfish end @@ -663,7 +663,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 } @Override -@@ -857,9 +857,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -859,9 +859,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -675,7 +675,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -891,7 +891,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -893,7 +893,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -684,7 +684,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking // Paper start - optimise chunk ticking this.getRandomBlockPosition(j, 0, k, 15, blockposition); -@@ -927,7 +927,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -929,7 +929,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking @@ -693,7 +693,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); -@@ -963,7 +963,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -965,7 +965,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -702,7 +702,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 } public Optional findLightningRod(BlockPos pos) { -@@ -1259,19 +1259,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1261,19 +1261,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -727,7 +727,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1300,12 +1300,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1302,12 +1302,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -744,7 +744,7 @@ index 725621bce1b82f44cea1247d1238644726ac3a2f..571a1cbee376032b6b9f36c9fe3f9199 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1317,7 +1317,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1319,7 +1319,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -1443,7 +1443,7 @@ index 288c6627906d07c0d223eacd84ae4eb31a349998..9babe636176da3c40598eb5bdac0919a this.seen.add(i); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index c960aac9e1dbffe5e765f9adcfacc1966dc29148..c233533fdacb4f5e635267b5fc9fe21bc8b3c51a 100644 +index 28633838cb314ba59b4ff3bbdb99343d98ee66ae..499a6b84f0db4a7ad881224f445558feae4f893f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -266,13 +266,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier { @@ -1768,7 +1768,7 @@ index c1541119630315521e75c1ba70ac99cd866afd71..b82541194979094f90b929cfdfb2b4c1 // Paper start diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 86e0539e04e4fe6239c1cb4c4055927303655251..620173eef4c2f30a97a4c2f8049ea01fcc60d0b2 100644 +index 994ef28e4ad685405a2b045e29550563b0914ccc..4672b4dad9a7bfeda4ddf6c5938afd52d0310884 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -1292,9 +1292,9 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0311-Allow-grindstone-overstacking-items.patch b/patches/server/0311-Allow-grindstone-overstacking-items.patch deleted file mode 100644 index 298e4bef1..000000000 --- a/patches/server/0311-Allow-grindstone-overstacking-items.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Sat, 15 Oct 2022 13:19:07 -0500 -Subject: [PATCH] Allow grindstone overstacking items - - -diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 43d7ca6ceb89d65149314e56a846081d6c3a048a..1344c2bc08743088c56862469949dcb148a99a8b 100644 ---- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -200,7 +200,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { - i = Math.max(item.getMaxDamage() - l, 0); - itemstack2 = this.mergeEnchants(itemstack, itemstack1); - if (!itemstack2.isDamageableItem()) { -- if (!ItemStack.matches(itemstack, itemstack1) || itemstack2.getMaxStackSize() == 1) { // Paper - add max stack size check -+ if (!ItemStack.matches(itemstack, itemstack1) || ((org.bukkit.craftbukkit.entity.CraftPlayer)this.player).getHandle().getLevel().purpurConfig.grindstoneAllowOversizedStacking || itemstack2.getMaxStackSize() == 1) { // Paper - add max stack size check // Purpur - this.resultSlots.setItem(0, ItemStack.EMPTY); - this.broadcastChanges(); - return; -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 33d7c132b19095598eb681da8487a072f1dccab6..daa437f3aaebed4d917fde65d75a8a941755a764 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -905,6 +905,11 @@ public class PurpurWorldConfig { - endPortalSafeTeleporting = getBoolean("blocks.end_portal.safe-teleporting", endPortalSafeTeleporting); - } - -+ public boolean grindstoneAllowOversizedStacking = false; -+ private void grindstoneSettings() { -+ grindstoneAllowOversizedStacking = getBoolean("blocks.grindstone.allow-oversized-stacking", grindstoneAllowOversizedStacking); -+ } -+ - public boolean mobsSpawnOnPackedIce = true; - public boolean mobsSpawnOnBlueIce = true; - public boolean snowOnBlueIce = true;