diff --git a/gradle.properties b/gradle.properties index 67d7c7edc..0b35ddaf4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = 20889d04d8c7a11ff76061d99abcb58acd470fe7 +paperCommit = 70ff1ec0793d2176915e8da3e3ef100093d5bedf org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 7af915bfe..13c4aa9f0 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -214,10 +214,10 @@ index b24265573fdef5d9a964bcd76146f34542c420cf..710477ae27ebc5afdf0012ef0867d05e public SystemReport getSystemReport() { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 330bee331335454a61cf8350a6654217c8124445..646d1947351eb9dea1e301698ed4a03a96e03f8a 100644 +index 54e581db732c3a104142a2bbc228ecbe16aec0fc..f5b725dcd132bdc5bba73211d3891599eddc119b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1028,7 +1028,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config & Anti-Xray this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -159,7 +159,7 @@ index caf6ff33b42472d30f28629470e12889f50490cc..2047354b757cb239b5bbf8dfd8cce284 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 6e1f92b45504cef0c4dcbbebf3df339ef4cad0a1..48e8b7405270632130721e87579ee2438a0f0b75 100644 +index 1acc0a579804dee7bb3d0f755c24240413ed7540..e3d078a9675c78381f17ccb3d255d9adacbfb45e 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -176,6 +176,14 @@ public class Main { diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index 5d030002c..4867ee0df 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -81,10 +81,10 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..d88b56c7ceb4c46c00126beebf78a00ea173e2ba 100644 +index be9976a994dd04cf53048567576dd3484facf625..ad4b0c257267beed2554385ca0a3e0f82845ccc8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4016,6 +4016,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4176,6 +4176,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 236446e88..16e1aab69 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -22,19 +22,19 @@ index 2767d6f97e8b314d23a8e62f22dfd396f5660d31..a64e5997b94cc8173f0512d1e282355f super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 646d1947351eb9dea1e301698ed4a03a96e03f8a..c6aea5dde7fe84800996be05bc44167e13374b1e 100644 +index f5b725dcd132bdc5bba73211d3891599eddc119b..a56d7c5993e33456908c7cc876988fee71b3e17a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1775,6 +1775,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent +@@ -1777,6 +1777,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + worldserver.updateLagCompensationTick(); // Paper - lag compensation + worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e079f4db4e4738f60a6fdbdbf5e4d1baf593a62f..0d07bc9b57336191ba788fb1eed24010af33ff3d 100644 +index 9456047974db6de9ed38265d5d1ab822225c484f..1d349c11a98977c84808c60124e58dfe5ea233e6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -79,7 +79,7 @@ index 7796e191747be545e744564a2b0b65790f69114d..82f60de72bc0f9b01eb97dbc0e296e80 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d88b56c7ceb4c46c00126beebf78a00ea173e2ba..2312c0c55c9e6a3555934e3bf9bb08142f30ba20 100644 +index ad4b0c257267beed2554385ca0a3e0f82845ccc8..9fd500a438a96feadd51f35751061f7eec28d45c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -384,7 +384,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -91,7 +91,7 @@ index d88b56c7ceb4c46c00126beebf78a00ea173e2ba..2312c0c55c9e6a3555934e3bf9bb0814 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2964,6 +2964,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3124,6 +3124,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index d88b56c7ceb4c46c00126beebf78a00ea173e2ba..2312c0c55c9e6a3555934e3bf9bb0814 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3003,6 +3010,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3163,6 +3170,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index d88b56c7ceb4c46c00126beebf78a00ea173e2ba..2312c0c55c9e6a3555934e3bf9bb0814 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4835,4 +4850,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5002,4 +5017,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 909accac7538e1c0c0c51deb2ee0605697c059d0..e9a932358aea57495573fa3923e9ed4a7c93d053 100644 +index fe435d4a387bb28be6831cec0c8bb0a7c8b603a4..a387268659a17a4508359f2a69d50593cefd4629 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -237,9 +237,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1895,7 +1895,7 @@ index 3d03ffe2e12eca82dfa2f414471d12bb362d4552..18dcb67d246b63637d8c948b6c3f48c5 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index caf4120721be8f2f7e2d737abbf73296cbe170b5..7357680b4fdf9250e086ba01531ade2bad7eb07b 100644 +index 4bfa947531c4a67989e18032754dabf4c69e989c..960eaebcb12d32bc51026c48e4b5e09effb66dda 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -87,6 +87,23 @@ public class Turtle extends Animal { @@ -1920,7 +1920,7 @@ index caf4120721be8f2f7e2d737abbf73296cbe170b5..7357680b4fdf9250e086ba01531ade2b + // Purpur end + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... + this.entityData.set(Turtle.HOME_POS, pos); } @@ -189,6 +206,7 @@ public class Turtle extends Animal { diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index 23b4447c9..10c092692 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2312c0c55c9e6a3555934e3bf9bb08142f30ba20..d2831ea1480607af84beb7ff7796975d876712a5 100644 +index 9fd500a438a96feadd51f35751061f7eec28d45c..fcd12b28408343dcacab8e2d93656dc384935c1b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -168,7 +168,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end - public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity { // Paper - rewrite chunk system + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker - + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur // CraftBukkit start @@ -34,7 +34,7 @@ index aa76a24421cdb3908a3544d92eb3d1e3c2ebedc4..8211c152e6f4232e82e452b08047e457 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d42e07a1317248784f5358626bc7ef5649ff0abe..d6adbad99a6d5b94ce0c62bb2438332a0eaffa80 100644 +index a387268659a17a4508359f2a69d50593cefd4629..13f8289aa23fd4554235e22e4be924abe7517e27 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -314,6 +314,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -446,7 +446,7 @@ index 18dcb67d246b63637d8c948b6c3f48c58d71c339..327b1805d9d4069212a8772ff189c9ab return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 7357680b4fdf9250e086ba01531ade2bad7eb07b..60736df3b726c6a408c8b6aae6f0bd3e3efd32b0 100644 +index 960eaebcb12d32bc51026c48e4b5e09effb66dda..41d47141bfd77b17cbf163bffdfeb002135035ca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -104,6 +104,12 @@ public class Turtle extends Animal { @@ -460,7 +460,7 @@ index 7357680b4fdf9250e086ba01531ade2bad7eb07b..60736df3b726c6a408c8b6aae6f0bd3e + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... + this.entityData.set(Turtle.HOME_POS, pos); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index a643c9043c9685c01ff858bc6002686fa527bbfa..133aa48278ca51c74b5eb8900202e7076119e445 100644 diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index dc61b2ff5..036e98b03 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -210,10 +210,10 @@ index 72e99a9d1058e65af2553ac1f3a62f92595e4c8f..5e404e470a28f04f5659503bcc6b66ca public CraftHumanEntity getBukkitEntity() { return (CraftHumanEntity) super.getBukkitEntity(); diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java -index 70c2017400168d4fef3c14462798edcfed58d4bf..3c84722c1075290b5301aa5122936d5e4dac3c43 100644 +index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4fb37ca467 100644 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java +++ b/src/main/java/net/minecraft/world/level/EntityGetter.java -@@ -153,7 +153,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst +@@ -187,7 +187,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst default boolean hasNearbyAlivePlayer(double x, double y, double z, double range) { for (Player player : this.players()) { diff --git a/patches/server/0012-Configurable-server-mod-name.patch b/patches/server/0012-Configurable-server-mod-name.patch index 827ae3b3f..942452047 100644 --- a/patches/server/0012-Configurable-server-mod-name.patch +++ b/patches/server/0012-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c6aea5dde7fe84800996be05bc44167e13374b1e..325efea1b8d55be22da7828fd5e88e4744d2e4d4 100644 +index a56d7c5993e33456908c7cc876988fee71b3e17a..05a508c8bba7edd98a81a68cdee94ff5fc1aa6b6 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1933,7 +1933,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entity instanceof Player); +@@ -551,6 +551,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + } } - // Paper end - rewrite chunk system + // Paper end - optimise entity tracker + // Purpur start + public boolean canSaveToDisk() { + return true; diff --git a/patches/server/0053-Dispenser-curse-of-binding-protection.patch b/patches/server/0053-Dispenser-curse-of-binding-protection.patch index bc09356fb..879226058 100644 --- a/patches/server/0053-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0053-Dispenser-curse-of-binding-protection.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 62555037076fe19d80fb0df09c3aa085bfb6a555..e34fa184655fd42f76ca08a7c289c7cbcfa81122 100644 +index 56d9d54aad607eadbba1e2115494b4b492217d5e..c1fa2cbf7eb052fc6c3299ead1c5fe12e03a2071 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -4552,6 +4552,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4570,6 +4570,12 @@ public abstract class LivingEntity extends Entity implements Attackable { return EquipmentSlot.MAINHAND; } diff --git a/patches/server/0056-Add-5-second-tps-average-in-tps.patch b/patches/server/0056-Add-5-second-tps-average-in-tps.patch index 85d94b052..2a976cc63 100644 --- a/patches/server/0056-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0056-Add-5-second-tps-average-in-tps.patch @@ -18,7 +18,7 @@ index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..308f67d0616e2d6bb135258f1fda53cc } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 57ca70b66115d1ca8ebcf262510e56ed88b63459..dc57e5c5b35da05269c2a05da58814956174cd99 100644 +index 6d44db61479c83099643d558e23f7a46c0a3b2d2..4c29cebd0738956790d8a12cbf3337a090b359c3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -314,7 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions public java.util.ArrayDeque redstoneUpdateInfos; // Paper - Faster redstone torch rapid clock removal; Move from Map in BlockRedstoneTorch to here @@ -95,7 +95,7 @@ index b06d7ac5bb109bf88cf526d3bf5ac1416927a03b..cf9525f94058e9c3e84d71b08b49c21c public CraftWorld getWorld() { return this.world; } -@@ -268,6 +311,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -645,6 +688,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur diff --git a/patches/server/0096-Make-entity-breeding-times-configurable.patch b/patches/server/0096-Make-entity-breeding-times-configurable.patch index c25ad7af6..e56b9bdab 100644 --- a/patches/server/0096-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0096-Make-entity-breeding-times-configurable.patch @@ -268,7 +268,7 @@ index a14db0ec9ebcde24d5b7340a08002eddc8ebd421..fb429dce94bfad6aba3c63a4694e7c8d protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 60736df3b726c6a408c8b6aae6f0bd3e3efd32b0..751fe2afdea34a6776d428675c3924112668d530 100644 +index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048bfd7b3e04 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -110,6 +110,11 @@ public class Turtle extends Animal { @@ -281,7 +281,7 @@ index 60736df3b726c6a408c8b6aae6f0bd3e3efd32b0..751fe2afdea34a6776d428675c392411 + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... + this.entityData.set(Turtle.HOME_POS, pos); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index 133aa48278ca51c74b5eb8900202e7076119e445..0e862d4f044683ec46c32929310641af5c1cc2d0 100644 diff --git a/patches/server/0111-Implement-TPSBar.patch b/patches/server/0111-Implement-TPSBar.patch index adc1ce693..3b0d607cc 100644 --- a/patches/server/0111-Implement-TPSBar.patch +++ b/patches/server/0111-Implement-TPSBar.patch @@ -17,10 +17,10 @@ index 38a345901a743f5ddac18ba876d5245c5c11f111..c7b7cc0d9ce589b5a0600e9b8c46b2e5 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7d5b029eb87192ea372f940bdb18edca7aefe8fd..e1cc431ff0b082115408f9fa88939bd5957cbc64 100644 +index 28a7e0bd03921f4d885865c9eb01d5a203fc697a..850322fad6ba8ecb49f8acb61c34a120b5cbed5f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1141,6 +1141,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 963482bc8eeaa421453950cb831b2365a57b8b58..401ecc34f385e1be22440e8988bb7cfaff10f6e2 100644 +index 38e3c3051b971f7f0350012bb6d46d2e9bc06da2..2380f061033fb5bae99effe44f519570c60bd36b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1823,7 +1823,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1926,7 +1926,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -30,7 +30,7 @@ index 963482bc8eeaa421453950cb831b2365a57b8b58..401ecc34f385e1be22440e8988bb7cfa if (entity instanceof Boat entityboat) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index a37054d39ee142e5f3ca3c5e1e3a15c150a3ba32..ea3cad6c9cc561b225cd41f04bd204c99ecd66ec 100644 +index 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64b9b6c22d 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -102,10 +102,12 @@ public class ArmorStand extends LivingEntity { diff --git a/patches/server/0120-Fix-stuck-in-portals.patch b/patches/server/0120-Fix-stuck-in-portals.patch index d012f4c27..0fdf56862 100644 --- a/patches/server/0120-Fix-stuck-in-portals.patch +++ b/patches/server/0120-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index 1a8b28415c6f1f1c8f19c003d0f4c3a3e2d04479..83fe89b418947d2d9753006897c7d5be this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 401ecc34f385e1be22440e8988bb7cfaff10f6e2..a96985384f7b44470f5d3961371ba7764a8078ab 100644 +index 2380f061033fb5bae99effe44f519570c60bd36b..c773613e5c19c1f141e0c4eef7fc96019508e04a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3103,13 +3103,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3263,13 +3263,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch index bb34feca4..7ffe60b76 100644 --- a/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch @@ -379,7 +379,7 @@ index 327b1805d9d4069212a8772ff189c9ab24ae1183..4ac998e9d96aed3b0ea0ec3f9dcd5fdd return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 751fe2afdea34a6776d428675c3924112668d530..099fd99cf3d455329487fbbf572bb0b27b662e72 100644 +index 8f02a1b39db0581efb8ccd2c889f048bfd7b3e04..49e6479d7aece02c4fedc86aa83e5e0a982381cc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -115,6 +115,11 @@ public class Turtle extends Animal { @@ -392,7 +392,7 @@ index 751fe2afdea34a6776d428675c3924112668d530..099fd99cf3d455329487fbbf572bb0b2 + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... + this.entityData.set(Turtle.HOME_POS, pos); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index 3f182227b84736273c14474cccfea8e9c7441c74..ac35bb9fc72ffc217b006c652b336e57bce62e8f 100644 diff --git a/patches/server/0126-One-Punch-Man.patch b/patches/server/0126-One-Punch-Man.patch index ad7f0b35b..ce14a1592 100644 --- a/patches/server/0126-One-Punch-Man.patch +++ b/patches/server/0126-One-Punch-Man.patch @@ -6,7 +6,7 @@ Subject: [PATCH] One Punch Man! inspired by https://modrinth.com/mod/creative-one-punch diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9537d98a63d631259e476f7f817fa94bc074c79a..a40d7a785bab8f4709890e349775150adcd38da8 100644 +index b07d0fc6cbcf209f5c69f4b43011d3f7182aa16c..fd50a55934d4bb98ad4a1b0d0f6339cdd98b4e03 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1429,6 +1429,24 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,7 +32,7 @@ index 9537d98a63d631259e476f7f817fa94bc074c79a..a40d7a785bab8f4709890e349775150a + // Purpur end + this.noActionTime = 0; - float f1 = amount; + float f1 = amount; final float originalAmount = f1; // Paper - revert to vanilla #hurt - OBFHELPER boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 9f5fd26c46daa685cca8382c5f1d410493c0cac6..d866d35196055ff4581ee77c6996818ec1e5f977 100644 diff --git a/patches/server/0137-Config-for-skipping-night.patch b/patches/server/0137-Config-for-skipping-night.patch index bed76ad6b..6873985f0 100644 --- a/patches/server/0137-Config-for-skipping-night.patch +++ b/patches/server/0137-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 43d2ae53584b0894286c1ae8ca5409a368fa253c..f2362ebe16440fd611ed80f056294c28611cf944 100644 +index a92212495e364faa4b4eb62737b201ccb6c1c28d..5a02c0699673781ecff2c3774f36fa135b107d4b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -677,7 +677,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -694,7 +694,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; diff --git a/patches/server/0139-Drowning-Settings.patch b/patches/server/0139-Drowning-Settings.patch index 431ae101f..8bb23aa06 100644 --- a/patches/server/0139-Drowning-Settings.patch +++ b/patches/server/0139-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a96985384f7b44470f5d3961371ba7764a8078ab..13afec25f9d08401d9c5adee211e422159f2ba02 100644 +index c773613e5c19c1f141e0c4eef7fc96019508e04a..40d8611ecffd2a293192ecacf2e72ba83ae22318 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3322,7 +3322,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3482,7 +3482,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index a96985384f7b44470f5d3961371ba7764a8078ab..13afec25f9d08401d9c5adee211e4221 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6e00e7a1cd6916a482dca9d55ca70c8baf6df6a9..b1e50b7617e06a58ae0b381ce2b32bee0afc139e 100644 +index fd50a55934d4bb98ad4a1b0d0f6339cdd98b4e03..d076f7f42e98ca240c169e1c165097bf4c3f46e8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -474,7 +474,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0165-API-for-any-mob-to-burn-daylight.patch b/patches/server/0165-API-for-any-mob-to-burn-daylight.patch index 6e846194b..3f5ad2800 100644 --- a/patches/server/0165-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0165-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 13afec25f9d08401d9c5adee211e422159f2ba02..0d4eb7fb3a62db8691d49d6963aec7ca5a5240c9 100644 +index 40d8611ecffd2a293192ecacf2e72ba83ae22318..0bbba33736c9fc95759fa9807ad8e42eee176ff8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -537,6 +537,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -557,6 +557,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end @@ -33,7 +33,7 @@ index 13afec25f9d08401d9c5adee211e422159f2ba02..0d4eb7fb3a62db8691d49d6963aec7ca this.id = Entity.ENTITY_COUNTER.incrementAndGet(); this.passengers = ImmutableList.of(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c42fa1b5758fee518edb72aefd683d646b2dff3e..e2e0570e1b866ecb2080013df32071fc4d46290f 100644 +index d213e299d7bdba4161bd1a2fee9b1042a561abc0..936491872bc1d0c260daff8c62223a21d8ab254d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0168-Make-lightning-rod-range-configurable.patch b/patches/server/0168-Make-lightning-rod-range-configurable.patch index de520d68e..cc0e43e47 100644 --- a/patches/server/0168-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0168-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 a1dcda6339f29bf361c62440669a7443e0a5959d..ddb2e8d5a692cd76d67f867fc8bcca3c9b24bab3 100644 +index 5a02c0699673781ecff2c3774f36fa135b107d4b..9bf94975fb6fda3c4079015def602247a70f4390 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1013,7 +1013,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1011,7 +1011,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. 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/0179-Store-placer-on-Block-when-placed.patch b/patches/server/0179-Store-placer-on-Block-when-placed.patch index 1346a1922..73690f14c 100644 --- a/patches/server/0179-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0179-Store-placer-on-Block-when-placed.patch @@ -25,10 +25,10 @@ index 293771fd6e86447b219d0936b67cdcdf2bc5f0ee..11f4711f149f56adaa67774d1d259548 world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 45704653310efe9cb755a644674b54b8722c2c84..1ef3b68d71c33ffb248a4b88fcfdc98a0360c4aa 100644 +index a7108b2be0746aa1f0e574d8c6f5ffad6d369835..57595a781a3cbdd8575c4af36328684ce7fc28d9 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -437,7 +437,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -438,7 +438,17 @@ public class Block extends BlockBehaviour implements ItemLike { } // Paper - fix drops not preventing stats/food exhaustion } diff --git a/patches/server/0181-Customizable-sleeping-actionbar-messages.patch b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch index db62c3b2f..e00382b0a 100644 --- a/patches/server/0181-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0181-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 ddb2e8d5a692cd76d67f867fc8bcca3c9b24bab3..be87e350b0d808305a389baf447c0ed00b1cbfc0 100644 +index 9bf94975fb6fda3c4079015def602247a70f4390..404d6708fbf9bb5ef67b24b13230309b8330bf29 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1062,11 +1062,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1060,11 +1060,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. 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/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index cb766b1f9..866ae9ac6 100644 --- a/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0200-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 be87e350b0d808305a389baf447c0ed00b1cbfc0..ebcf9afd13940922f288d651afff32fdbcf36317 100644 +index 404d6708fbf9bb5ef67b24b13230309b8330bf29..dad0994ae305a9ae83e1e458d2cd2f536c0b496c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1222,6 +1222,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1220,6 +1220,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index be87e350b0d808305a389baf447c0ed00b1cbfc0..ebcf9afd13940922f288d651afff32fd this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // 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.... -@@ -1229,6 +1230,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1227,6 +1228,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/server/0208-UPnP-Port-Forwarding.patch b/patches/server/0208-UPnP-Port-Forwarding.patch index a4a2b2735..012ea7638 100644 --- a/patches/server/0208-UPnP-Port-Forwarding.patch +++ b/patches/server/0208-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1eedf6b371834e307fd6010721c1f6eb94a5dbd2..4dd18ac6fd51cf0db7bb3a3290db7d5461984b7a 100644 +index a1e490b644e0e5f1b7723d5fd76430368373c1fa..e4ce331d93111b60063b287d9b748eb6990f0cb4 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -321,6 +321,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -41,7 +41,7 @@ index 1ef3b68d71c33ffb248a4b88fcfdc98a0360c4aa..73f2103b77795740690032084ecddc9c }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -330,7 +330,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -331,7 +331,7 @@ public class Block extends BlockBehaviour implements ItemLike { event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.callEvent(); for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { @@ -50,7 +50,7 @@ index 1ef3b68d71c33ffb248a4b88fcfdc98a0360c4aa..73f2103b77795740690032084ecddc9c } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -347,13 +347,32 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -348,13 +348,32 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { diff --git a/patches/server/0215-Mobs-always-drop-experience.patch b/patches/server/0215-Mobs-always-drop-experience.patch index 2921670e8..3a6d56103 100644 --- a/patches/server/0215-Mobs-always-drop-experience.patch +++ b/patches/server/0215-Mobs-always-drop-experience.patch @@ -373,7 +373,7 @@ index 4ac998e9d96aed3b0ea0ec3f9dcd5fdd74c45d24..2d04addd17d2c358fff598012b323cd7 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 099fd99cf3d455329487fbbf572bb0b27b662e72..15a8c4e2772e1529204e3892914e49f9a17852aa 100644 +index 49e6479d7aece02c4fedc86aa83e5e0a982381cc..55d83c57d76e73d73dca1400f4c0c18661d49a94 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -120,6 +120,11 @@ public class Turtle extends Animal { @@ -386,7 +386,7 @@ index 099fd99cf3d455329487fbbf572bb0b27b662e72..15a8c4e2772e1529204e3892914e49f9 + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... + this.entityData.set(Turtle.HOME_POS, pos); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index bd9d07665d113c2b15d499a49533436405ed7a4e..3d032d3f53cc3281bad173f7f9d139101ef6beaa 100644 diff --git a/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 24980a522..5e196d827 100644 --- a/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 4dd18ac6fd51cf0db7bb3a3290db7d5461984b7a..3318f2f5858b453ad7a9e4eee908dc128e08faa7 100644 +index e4ce331d93111b60063b287d9b748eb6990f0cb4..a83088548733c6475828301fe45c63bb840cc085 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1152,6 +1152,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -97,7 +97,7 @@ index 3318f2f5858b453ad7a9e4eee908dc128e08faa7..5702660ef5769ab44278f30eafb517ac // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1757,21 +1757,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -211,7 +211,7 @@ index c96740a82eac9101f74edeb44edf4b64d1d633e0..1b6c5a36e96a3845d55b0b798a8cffdc ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -982,17 +982,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1017,17 +1017,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -336,10 +336,10 @@ index 64ed296cfbe7e5d27286b8cee70454fd1d99ebb0..be22cbe607876fdf39120d6957db5411 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff0159517dbe 100644 +index 19ca4094148cacedd878212adcf81766aff3171e..4a748149d1cbf4e99be76e1d9eca410d65f86e8f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -703,7 +703,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -720,7 +720,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } gameprofilerfiller.popPush("tickPending"); @@ -348,7 +348,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 if (!this.isDebug() && flag) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -712,24 +712,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -729,24 +729,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks gameprofilerfiller.pop(); } @@ -380,7 +380,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 } this.handlingTick = false; -@@ -742,7 +742,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -759,7 +759,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (flag1 || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -389,7 +389,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 if (this.dragonFight != null && flag) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -750,7 +750,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -767,7 +767,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -398,7 +398,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 this.entityTickList.forEach((entity) -> { if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed -@@ -777,8 +777,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -794,8 +794,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } }); @@ -409,25 +409,25 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -920,7 +920,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -928,7 +928,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } // Paper - Option to disable ice and snow gameprofilerfiller.popPush("tickBlocks"); - timings.chunkTicksBlocks.startTiming(); // Paper + //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { - // Paper start - optimize random block ticking - LevelChunkSection[] sections = chunk.getSections(); -@@ -954,7 +954,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + LevelChunkSection[] achunksection = chunk.getSections(); + +@@ -961,7 +961,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + } } - // Paper end - optimise random block ticking - timings.chunkTicksBlocks.stopTiming(); // Paper + //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur gameprofilerfiller.pop(); } -@@ -1287,8 +1287,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1304,8 +1304,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -438,7 +438,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1304,7 +1304,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1321,7 +1321,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -447,7 +447,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1321,8 +1321,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1344,8 +1344,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -458,7 +458,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1352,7 +1352,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1375,7 +1375,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickPassenger(passenger, entity2); } @@ -467,7 +467,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 } } else { passenger.stopRiding(); -@@ -1374,7 +1374,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1397,7 +1397,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -476,7 +476,7 @@ index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff01 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1384,10 +1384,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1407,10 +1407,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -558,10 +558,10 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index cf9525f94058e9c3e84d71b08b49c21c960f6e99..ff97d43ca93dfd204d42be45233885312b9a6b93 100644 +index e88e450dfcccfc8f9447289ba23f8d6eb61b5d66..56f25ccd82d53c1f7e260819b660b02c7f5e133f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -990,15 +990,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1371,15 +1371,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -580,7 +580,7 @@ index cf9525f94058e9c3e84d71b08b49c21c960f6e99..ff97d43ca93dfd204d42be4523388531 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1029,7 +1029,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1410,7 +1410,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 @@ -612,10 +612,10 @@ index ed8032495af9ce9c23419224814b8d27e4a97c17..2812505185df691e8f08932aa0bba162 } 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 d388fbcbff63928f0e9140c02400a63ba8f19d9c..191a6bedcd31ec070dd4ad245722d0f016319d7a 100644 +index db55e9cc3d42ba01f75f6697924baaeccb564b90..8d48dbd43f29c6ccf268ae2f52f2b75a559c108d 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -628,7 +628,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -650,7 +650,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -624,7 +624,7 @@ index d388fbcbff63928f0e9140c02400a63ba8f19d9c..191a6bedcd31ec070dd4ad245722d0f0 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -648,7 +648,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -670,7 +670,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -633,7 +633,7 @@ index d388fbcbff63928f0e9140c02400a63ba8f19d9c..191a6bedcd31ec070dd4ad245722d0f0 } } } -@@ -988,7 +988,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1010,7 +1010,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -642,7 +642,7 @@ index d388fbcbff63928f0e9140c02400a63ba8f19d9c..191a6bedcd31ec070dd4ad245722d0f0 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1015,7 +1015,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1037,7 +1037,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Prevent block entity and entity crashes // Spigot start } finally { diff --git a/patches/server/0251-Remove-Mojang-Profiler.patch b/patches/server/0251-Remove-Mojang-Profiler.patch index 910628235..a422c6f74 100644 --- a/patches/server/0251-Remove-Mojang-Profiler.patch +++ b/patches/server/0251-Remove-Mojang-Profiler.patch @@ -83,10 +83,10 @@ index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5702660ef5769ab44278f30eafb517acdd358be9..6791cdae222c0156df8defbec78a221ff90945e4 100644 +index 22ed622f081a39bb4695e49b350e920848f288e7..67f4d022628029d777e0d8185d1e75b9fd2eaf27 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -421,13 +421,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return false; } : this::haveTime); -@@ -1334,7 +1334,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur - this.profiler.push(() -> { @@ -240,7 +240,7 @@ index 5702660ef5769ab44278f30eafb517acdd358be9..6791cdae222c0156df8defbec78a221f try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1828,17 +1828,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2849,40 +2850,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder -@@ -906,7 +906,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); + +@@ -917,7 +917,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -732,7 +732,7 @@ index c4dfa08163f563218eac34941abaff0159517dbe..099be5d1b510866fb7294b304ce294e0 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { -@@ -919,7 +919,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -927,7 +927,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } // Paper - Option to disable ice and snow @@ -740,9 +740,26 @@ index c4dfa08163f563218eac34941abaff0159517dbe..099be5d1b510866fb7294b304ce294e0 + //gameprofilerfiller.popPush("tickBlocks"); // Purpur //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { - // Paper start - optimize random block ticking -@@ -955,7 +955,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - // Paper end - optimise random block ticking + LevelChunkSection[] achunksection = chunk.getSections(); +@@ -942,7 +942,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + for (int l1 = 0; l1 < randomTickSpeed; ++l1) { + BlockPos blockposition1 = this.getBlockRandomPos(j, k1, k, 15); + +- gameprofilerfiller.push("randomTick"); ++ //gameprofilerfiller.push("randomTick"); // Purpur + BlockState iblockdata = chunksection.getBlockState(blockposition1.getX() - j, blockposition1.getY() - k1, blockposition1.getZ() - k); + + if (iblockdata.isRandomlyTicking()) { +@@ -955,14 +955,14 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + fluid.randomTick(this, blockposition1, this.random); + } + +- gameprofilerfiller.pop(); ++ //gameprofilerfiller.pop(); // Purpur + } + } + } + } //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur - gameprofilerfiller.pop(); @@ -750,7 +767,7 @@ index c4dfa08163f563218eac34941abaff0159517dbe..099be5d1b510866fb7294b304ce294e0 } @VisibleForTesting -@@ -1291,19 +1291,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1308,19 +1308,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -775,7 +792,7 @@ index c4dfa08163f563218eac34941abaff0159517dbe..099be5d1b510866fb7294b304ce294e0 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1326,12 +1326,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1349,12 +1349,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -792,7 +809,7 @@ index c4dfa08163f563218eac34941abaff0159517dbe..099be5d1b510866fb7294b304ce294e0 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1343,7 +1343,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1366,7 +1366,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -1061,10 +1078,10 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7ada6c371 100644 +index 9c294bb8ae3cb9ec18ed633821c64c38bad50e95..42ff02305e9eedb0a7c4a3b25106eb98776696a4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -860,7 +860,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -880,7 +880,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public void baseTick() { @@ -1073,7 +1090,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups this.inBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -925,7 +925,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -945,7 +945,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Leashable.tickLeash((Entity & Leashable) this); // CraftBukkit - decompile error } @@ -1082,7 +1099,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 } public void setSharedFlagOnFire(boolean onFire) { -@@ -1103,7 +1103,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1158,7 +1158,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1091,7 +1108,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1112,7 +1112,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1167,7 +1167,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1100,7 +1117,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 return; } // Paper end -@@ -1133,8 +1133,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1188,8 +1188,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1111,7 +1128,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1153,7 +1153,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1208,7 +1208,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1120,7 +1137,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1256,7 +1256,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1311,7 +1311,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1128,8 +1145,8 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 + //this.level().getProfiler().pop(); // Purpur } } - } -@@ -3143,7 +3143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + // Paper start - detailed watchdog information +@@ -3303,7 +3303,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.processPortalCooldown(); if (this.portalProcess != null) { if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) { @@ -1138,7 +1155,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 this.setPortalCooldown(); DimensionTransition dimensiontransition = this.portalProcess.getPortalDestination(worldserver, this); -@@ -3155,7 +3155,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3315,7 +3315,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1147,7 +1164,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 } else if (this.portalProcess.hasExpired()) { this.portalProcess = null; } -@@ -3656,7 +3656,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3816,7 +3816,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1156,7 +1173,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 Entity entity2 = worldserver1.dimension() == worldserver.dimension() ? this : this.getType().create(worldserver1); if (entity2 != null) { -@@ -3692,7 +3692,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3852,7 +3852,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess teleportTarget.postDimensionTransition().onTransition(entity2); } @@ -1166,7 +1183,7 @@ index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7 } } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 30149ed40d34818bdbd9098298e8f4cf82116c4c..b4c325979107e0a731d1c955c53b1e76471871ad 100644 +index 9582498c5cbcc859b942384e8e0e492cb2cdea03..94a1874576ed07bacdd399785666f69d4b4086c8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -445,7 +445,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1767,10 +1784,10 @@ index d4f64414a0351999a04308a3d26d15c9ddf266c7..88972d9f07eb9088c139d9dbc974b2e6 this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index bff83fe413c7baef4ba56a3270ea4463a58c792f..3ee7bf7e10f8120258baaae8f77cdcbb6a781f78 100644 +index a248d859cbce48f4a34c4771a7acffc17d7edc84..4ce32603dcd691e018a3e1962311d2ac707439aa 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -350,7 +350,7 @@ public class Explosion { +@@ -646,7 +646,7 @@ public class Explosion { } if (flag1) { @@ -1779,7 +1796,7 @@ index bff83fe413c7baef4ba56a3270ea4463a58c792f..3ee7bf7e10f8120258baaae8f77cdcbb List> list = new ArrayList(); Util.shuffle(this.toBlow, this.level.random); -@@ -428,7 +428,7 @@ public class Explosion { +@@ -724,7 +724,7 @@ public class Explosion { Block.popResource(this.level, (BlockPos) pair.getSecond(), (ItemStack) pair.getFirst()); } @@ -1789,10 +1806,10 @@ index bff83fe413c7baef4ba56a3270ea4463a58c792f..3ee7bf7e10f8120258baaae8f77cdcbb if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a1cbf21f5 100644 +index 56f25ccd82d53c1f7e260819b660b02c7f5e133f..9571f6fc685fff5f4be469099ce8e6c85292a53a 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -268,7 +268,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -269,7 +269,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public final List getEntitiesOfClass(final Class entityClass, final AABB boundingBox, final Predicate predicate) { @@ -1801,7 +1818,7 @@ index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a final List ret = new java.util.ArrayList<>(); ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(entityClass, null, boundingBox, ret, predicate); -@@ -278,7 +278,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -279,7 +279,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public final List moonrise$getHardCollidingEntities(final Entity entity, final AABB box, final Predicate predicate) { @@ -1810,7 +1827,7 @@ index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a final List ret = new java.util.ArrayList<>(); ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getHardCollidingEntities(entity, box, ret, predicate); -@@ -987,9 +987,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1368,9 +1368,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } protected void tickBlockEntities() { @@ -1822,7 +1839,7 @@ index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1032,7 +1032,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1413,7 +1413,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1831,7 +1848,7 @@ index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1237,7 +1237,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1625,7 +1625,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1840,7 +1857,7 @@ index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a // Paper start - rewrite chunk system final List ret = new java.util.ArrayList<>(); -@@ -1263,7 +1263,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1651,7 +1651,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl public void getEntities(final EntityTypeTest entityTypeTest, final AABB boundingBox, final Predicate predicate, final List into, final int maxCount) { @@ -1849,7 +1866,7 @@ index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a if (entityTypeTest instanceof net.minecraft.world.entity.EntityType byType) { if (maxCount != Integer.MAX_VALUE) { -@@ -1566,6 +1566,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1946,6 +1946,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } public ProfilerFiller getProfiler() { @@ -1880,10 +1897,10 @@ index 2812505185df691e8f08932aa0bba162a7d9db86..35e94c06361795d032f995e8282f8b35 // Paper start - Add mobcaps commands 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 191a6bedcd31ec070dd4ad245722d0f016319d7a..7238f28b7d4b40359a28970a7a53018c242af6e2 100644 +index 8d48dbd43f29c6ccf268ae2f52f2b75a559c108d..7411e3d132dddde4599c182384f317679de1f2bf 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -350,11 +350,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -372,11 +372,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1898,7 +1915,7 @@ index 191a6bedcd31ec070dd4ad245722d0f016319d7a..7238f28b7d4b40359a28970a7a53018c } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -985,9 +985,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1007,9 +1007,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1910,7 +1927,7 @@ index 191a6bedcd31ec070dd4ad245722d0f016319d7a..7238f28b7d4b40359a28970a7a53018c //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1004,7 +1004,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1026,7 +1026,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Remove the Block Entity if it's invalid } diff --git a/patches/server/0260-Configurable-block-fall-damage-modifiers.patch b/patches/server/0260-Configurable-block-fall-damage-modifiers.patch index 72adbc615..8ebc8ba41 100644 --- a/patches/server/0260-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0260-Configurable-block-fall-damage-modifiers.patch @@ -18,7 +18,7 @@ index b59dd6b512021c335f3c21999958e2ea081daf69..17c994a39a1b99cc7727e328ce7493d5 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 73f2103b77795740690032084ecddc9c2a5b119e..6d012ca724f1373bcf9e8d86d22194143f56d52b 100644 +index 0f677573083ac806cfc105321b39edabb11e5d22..58c6002bc9d326477ebacfece4bb2bc50389fe87 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -88,6 +88,10 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -32,7 +32,7 @@ index 73f2103b77795740690032084ecddc9c2a5b119e..6d012ca724f1373bcf9e8d86d2219414 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -485,7 +489,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -486,7 +490,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,7 +54,7 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f3bd0ee46effea1cd8aec953107565bfe95cbf7b..eac4ad715b8b5c97802763aee0ff2941cf0afb8d 100644 +index f07429836c7cdd6016b919740c2926e395641623..8d1b86a5591f7032c39010e7a61942eceb4f5f49 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -507,4 +507,50 @@ public class PurpurConfig { diff --git a/patches/server/0267-Fire-Immunity-API.patch b/patches/server/0267-Fire-Immunity-API.patch index 7630989ec..e2ebeb56b 100644 --- a/patches/server/0267-Fire-Immunity-API.patch +++ b/patches/server/0267-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index badf612b7ef717996037b7eacecd74a7ada6c371..53bc3cde4075dc01f2449de413563c7f5f3ab8c9 100644 +index 42ff02305e9eedb0a7c4a3b25106eb98776696a4..74e12d2f451f7ac482994bac4daa6841716e5a7c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -431,6 +431,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index badf612b7ef717996037b7eacecd74a7ada6c371..53bc3cde4075dc01f2449de413563c7f public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1766,7 +1767,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1869,7 +1870,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index badf612b7ef717996037b7eacecd74a7ada6c371..53bc3cde4075dc01f2449de413563c7f } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2475,6 +2476,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2578,6 +2579,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index badf612b7ef717996037b7eacecd74a7ada6c371..53bc3cde4075dc01f2449de413563c7f return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2622,6 +2628,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2725,6 +2731,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end diff --git a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index f2059edfa..2dbe699ce 100644 --- a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53bc3cde4075dc01f2449de413563c7f5f3ab8c9..2b93f9b006ec01a77354d6571563fe3bf3d774c8 100644 +index 74e12d2f451f7ac482994bac4daa6841716e5a7c..a8124403002b88f1bdd3bf09d7858b3ea8e7106f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -939,6 +939,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -959,6 +959,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch index 705333d5c..1e5ee2266 100644 --- a/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 3ee7bf7e10f8120258baaae8f77cdcbb6a781f78..754373da9a5246c11f3c33a8907d387e2113ee4d 100644 +index 4ce32603dcd691e018a3e1962311d2ac707439aa..d7cd063240a2799996cf7efa3f766ee748702db1 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -99,7 +99,7 @@ public class Explosion { +@@ -340,7 +340,7 @@ public class Explosion { this.hitPlayers = Maps.newHashMap(); this.level = world; this.source = entity; @@ -17,7 +17,7 @@ index 3ee7bf7e10f8120258baaae8f77cdcbb6a781f78..754373da9a5246c11f3c33a8907d387e this.x = x; this.y = y; this.z = z; -@@ -162,7 +162,7 @@ public class Explosion { +@@ -403,7 +403,7 @@ public class Explosion { public void explode() { // CraftBukkit start diff --git a/patches/server/0276-Add-PreExplodeEvents.patch b/patches/server/0276-Add-PreExplodeEvents.patch index 9a2214d5b..0c82ef421 100644 --- a/patches/server/0276-Add-PreExplodeEvents.patch +++ b/patches/server/0276-Add-PreExplodeEvents.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 754373da9a5246c11f3c33a8907d387e2113ee4d..4c94fff162db3546434e502f39e90f42364e5092 100644 +index d7cd063240a2799996cf7efa3f766ee748702db1..5248e32e2109494904bc16839b2f202dab3d96c9 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -166,6 +166,25 @@ public class Explosion { +@@ -407,6 +407,25 @@ public class Explosion { return; } // CraftBukkit end @@ -32,5 +32,5 @@ index 754373da9a5246c11f3c33a8907d387e2113ee4d..4c94fff162db3546434e502f39e90f42 + //Purpur end + this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, new Vec3(this.x, this.y, this.z)); - Set set = Sets.newHashSet(); - boolean flag = true; + + // Paper start - collision optimisations diff --git a/patches/server/0290-config-for-startup-commands.patch b/patches/server/0290-config-for-startup-commands.patch index 6eccf3224..38dabe898 100644 --- a/patches/server/0290-config-for-startup-commands.patch +++ b/patches/server/0290-config-for-startup-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] config for startup commands diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 6791cdae222c0156df8defbec78a221ff90945e4..e6a23507b69a128aabf4f811d6099281b24583fd 100644 +index 67f4d022628029d777e0d8185d1e75b9fd2eaf27..7115c04cacfd373b2d9ce0e34460aa695bb65bcd 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1267,6 +1267,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop