From 4b168c7792d8aa82a8fd2cc7fa4f9a9838ba2a58 Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Thu, 9 Jun 2022 07:12:26 -0400 Subject: [PATCH] merge upstream --- gradle.properties | 2 +- patches/server/0001-Rebrand.patch | 32 ++++++------- patches/server/0002-Purpur-config-files.patch | 42 ++++++++--------- .../server/0003-Purpur-client-support.patch | 8 ++-- patches/server/0005-Ridables.patch | 46 +++++++++---------- ...-Configurable-entity-base-attributes.patch | 28 +++++------ patches/server/0007-Timings-stuff.patch | 17 ------- patches/server/0010-AFK-API.patch | 10 ++-- .../server/0011-Bring-back-server-name.patch | 4 +- patches/server/0014-Lagging-threshold.patch | 8 ++-- .../0017-Player-invulnerabilities.patch | 10 ++-- .../0027-Zombie-horse-naturally-spawn.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 8 ++-- .../0060-Add-canSaveToDisk-to-Entity.patch | 8 ++-- ...0064-Add-5-second-tps-average-in-tps.patch | 10 ++-- .../server/0066-Item-entity-immunities.patch | 36 +++++++-------- .../0070-Configurable-jockey-options.patch | 8 ++-- .../0072-Add-phantom-spawning-options.patch | 4 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- ...e-config-options-per-projectile-type.patch | 12 ++--- ...sable-zombie-aggressiveness-towards-.patch | 6 +-- ...justable-breeding-cooldown-to-config.patch | 8 ++-- patches/server/0124-Implement-TPSBar.patch | 12 ++--- .../server/0126-PlayerBookTooLargeEvent.patch | 6 +-- ...33-Movement-options-for-armor-stands.patch | 6 +-- ...oggle-for-water-sensitive-mob-damage.patch | 40 ++++++++-------- patches/server/0146-Tick-fluids-config.patch | 8 ++-- ...nge-multiplier-critical-damage-value.patch | 4 +- ...nfig-for-unverified-username-message.patch | 4 +- ...182-API-for-any-mob-to-burn-daylight.patch | 24 +++++----- .../server/0187-Flying-Fall-Damage-API.patch | 6 +-- patches/server/0198-Add-uptime-command.patch | 6 +-- ...the-ability-to-add-combustible-items.patch | 4 +- ...-Halloween-options-and-optimizations.patch | 8 ++-- .../server/0232-UPnP-Port-Forwarding.patch | 8 ++-- .../0239-Mobs-always-drop-experience.patch | 40 ++++++++-------- ...rable-valid-characters-for-usernames.patch | 4 +- ...counts-in-beehives-to-Purpur-clients.patch | 6 +-- ...ont-eat-blocks-in-non-ticking-chunks.patch | 6 +-- .../server/0257-Max-joins-per-second.patch | 10 ++-- ...awner-not-spawning-water-animals-cor.patch | 6 +-- 41 files changed, 253 insertions(+), 270 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6ba9690f9..d773284ad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19-R0.1-SNAPSHOT -paperCommit = da8027352cd717878213b1a0bb0ef7fb8916e5cf +paperCommit = b26d590d0c0830f90ed4e1c5f76ead9de69a242e org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 12776dcbe..0259fba8a 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 50d35d6e60f398501af447319de9d6ccd4db8b00..c88e837d88309708c109561a2bdda1762332802f 100644 +index 91fa33c642547e84b7af9046938f30aed0e0c16a..2dac3fae601fc9d8ec68db8a47010d727f043b8c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,8 +9,8 @@ plugins { @@ -19,7 +19,7 @@ index 50d35d6e60f398501af447319de9d6ccd4db8b00..c88e837d88309708c109561a2bdda176 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -33,6 +33,9 @@ dependencies { +@@ -40,6 +40,9 @@ dependencies { runtimeOnly("mysql:mysql-connector-java:8.0.29") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper @@ -142,7 +142,7 @@ index bf42969859545a8a520923ef1836ffa4a5cc24a0..fba5dbdb7bcbb55400ef18342c9b5461 } } diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java -index e0b1f0671d16ddddcb6725acd25a1d1d69e42701..8c3c68465197fafc14849dc38a572e309931e2a2 100644 +index b0390eedb507d27426d1e1d73bd4ab63aec89ebe..005fdd2e2ebc0b6f7cb06b2efdb705b9ed23a1ea 100644 --- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java +++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java @@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole { @@ -170,7 +170,7 @@ index 1a859fef0848cf23a672012e9764965ae1c07ec5..14ed740609b14242c2a8d377a78b2f71 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a06b1fb0eaba5ed91db4cf34240c1544662b5e97..7c7d98d889fe799990b1bb5c416be50719c21194 100644 +index c3ca919ed60f027d6116a85cb79e3b6cd3bf1619..9df1401eb9361df0532b8f5fbfbb46e9923ae558 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -908,7 +908,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index e6c254cfa83b218ad2a0e957306d8019adf0aaa7..25b38ae65250a0b3c34dfbf2d853f65368fd916f 100644 +index 0148cadbeb41a882a05d982f0b34770b2829a04a..5213f132f826b47e2825644242aaece2bb48f594 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -272,6 +272,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy @@ -64,13 +64,13 @@ index e6c254cfa83b218ad2a0e957306d8019adf0aaa7..25b38ae65250a0b3c34dfbf2d853f653 if (this.source.acceptsSuccess() && !this.silent) { this.source.sendSystemMessage(message); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 23435bdcf53af99032b0d7ca683081d7e72d4d22..814f24d5d38062799e51cc7e07b3f55fe59579f5 100644 +index 6bcd1d35169c7bbe647cd7b829ca2785561750cb..d62a17afdc9dbf75dad91326d2d14d35f0b013b1 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -224,6 +224,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - } +@@ -222,6 +222,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + org.spigotmc.WatchdogThread.doStart(org.spigotmc.SpigotConfig.timeoutTime, org.spigotmc.SpigotConfig.restartOnCrash); thread.start(); // Paper - start console thread after MinecraftServer.console & PaperConfig are initialized - com.destroystokyo.paper.PaperConfig.registerCommands(); + io.papermc.paper.configuration.PaperConfigurations.registerCommands(this); + // Purpur start + try { + org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings")); @@ -81,14 +81,14 @@ index 23435bdcf53af99032b0d7ca683081d7e72d4d22..814f24d5d38062799e51cc7e07b3f55f + org.purpurmc.purpur.PurpurConfig.registerCommands(); + // Purpur end com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now - io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // load mappings for stacktrace deobf and etc. io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider + // Paper end diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e3052c32624538d5394bf098c3b5db84e4cdb9b4..1671cb165df030bf5a5a8f8fb0aabeaf6e7ac487 100644 +index 76aa5d1bcb2ccb554966dcb5916ae527d73f042e..cf719642e6fe7f041489c86560a431eebe839acf 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -170,6 +170,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper +@@ -175,6 +175,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray + public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur @@ -96,44 +96,44 @@ index e3052c32624538d5394bf098c3b5db84e4cdb9b4..1671cb165df030bf5a5a8f8fb0aabeaf public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -270,6 +272,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, 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.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor +@@ -275,6 +277,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, 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 - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper + this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper + this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index bf8ce41b89821d3a44d74ad09c561ac7d904a4ce..13f422993a585a6bcb69791b61001feefd9bcb18 100644 +index 24917a7d1a6792d5a4ae281200011ddb1bc5b931..aaa9060a4b61034ade81639fb3e8b7ef214eb05b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -950,6 +950,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot - com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper + this.console.paperConfigurations.reloadConfigs(this.console); + org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -966,6 +967,7 @@ public final class CraftServer implements Server { +@@ -965,6 +966,7 @@ public final class CraftServer implements Server { + } } world.spigotConfig.init(); // Spigot - world.paperConfig.init(); // Paper + world.purpurConfig.init(); // Purpur } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -981,6 +983,7 @@ public final class CraftServer implements Server { +@@ -980,6 +982,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot - com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper + io.papermc.paper.configuration.PaperConfigurations.registerCommands(this.console); + org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2695,6 +2698,18 @@ public final class CraftServer implements Server { - return com.destroystokyo.paper.PaperConfig.config; +@@ -2694,6 +2697,18 @@ public final class CraftServer implements Server { + return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } + // Purpur start diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index d77f64ecb..a6222faab 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 49a2a99bc0aaedb27524c64db5ce3907bf55cc28..062a06dbff672235acc87624f1b7c28f04ffce32 100644 +index c816bae0227d0a1d38d9d20343e727ef2f30a8c0..b4bfee6b20e030db74b697d0f47eecaf0261203f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -260,6 +260,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index 49a2a99bc0aaedb27524c64db5ce3907bf55cc28..062a06dbff672235acc87624f1b7c28f public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0c18cc24baf155aac072cfd0ea871d600e0550cb..0f41f7207ab38ed353800cb8cd621e9a93bbbea0 100644 +index 92defe9bcaff461c41fabf7db706141011c1141d..12b454e50f65b6bdbbec8b3d149881c2a27c7e34 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3371,6 +3371,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -43,10 +43,10 @@ index 0c18cc24baf155aac072cfd0ea871d600e0550cb..0f41f7207ab38ed353800cb8cd621e9a try { byte[] data = new byte[packet.data.readableBytes()]; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9bda669683a3062f99e798ea0a60d76373d46f4f..d87d521adbbc1c211f04bee0be15715948bde652 100644 +index 04b991ec6a808839df1d2b5037ad386bda5094fe..b81a747b3b247b5bfc65381c1497b9fd0a14cda3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2768,4 +2768,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2754,4 +2754,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0005-Ridables.patch b/patches/server/0005-Ridables.patch index e8d122125..9b71a5935 100644 --- a/patches/server/0005-Ridables.patch +++ b/patches/server/0005-Ridables.patch @@ -22,7 +22,7 @@ index 153451ecd5b3c8e8ecb2d5ec91ccd582d4300899..56536c39bccfe097f8227c74a0d16799 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 7c7d98d889fe799990b1bb5c416be50719c21194..50cbdd0e38b61a8290d6689d5fb9c7d13285ec34 100644 +index 9df1401eb9361df0532b8f5fbfbb46e9923ae558..0d024cf636e0a6fa430fc6f920375e9e353beda3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1531,6 +1531,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper + worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig.disableHopperMoveEvents || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper + net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper 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 960b7248228d97547bfc2410d234adab4a548a7b..45764686750f867b3b9dff3af2a6d600ff0a519a 100644 +index 50f0fa0ebfe5b34af6ce8162d18bd0f7b1a57fb1..3d209313c594f1f2f9beb5c47894b30f7e0b0fd7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -217,6 +217,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -46,7 +46,7 @@ index 960b7248228d97547bfc2410d234adab4a548a7b..45764686750f867b3b9dff3af2a6d600 return new Throwable(entity + " Added to world at " + new java.util.Date()); } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 54999c41a39e8c5baed67e01be3d28385d9f64b7..347c01f091144f82f6eed996d424400d82634cff 100644 +index cfc3645215b18f76514acfdab63718adcdc5d938..7a28ac8d31ed5712e6fb2fbd59c72be5855165fe 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -668,6 +668,15 @@ public class ServerPlayer extends Player { @@ -66,7 +66,7 @@ index 54999c41a39e8c5baed67e01be3d28385d9f64b7..347c01f091144f82f6eed996d424400d public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0f41f7207ab38ed353800cb8cd621e9a93bbbea0..3c237c300af4e6e4fc304ac389baca261af13736 100644 +index 12b454e50f65b6bdbbec8b3d149881c2a27c7e34..57e7c37aaa118e1fd4f933f66d10338ece4bb635 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2658,6 +2658,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -79,7 +79,7 @@ index 0f41f7207ab38ed353800cb8cd621e9a93bbbea0..3c237c300af4e6e4fc304ac389baca26 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)) { ServerGamePacketListenerImpl.this.send(new ClientboundAddEntityPacket(entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2c42e2c39a13372833a4ba9a027e0315b150ab6c..f3c2cec6cef8f372cb56c28f985bce090bca2be0 100644 +index 3f8bddf450f3b0382144bac750195c6390dd7495..a964f9a09b9b9d16c72691ee4d7924e0a25b7876 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -356,7 +356,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -194,7 +194,7 @@ index c1e9b40a4a0f9cdc650caa88b5ea132e06ee2496..882ab40c8cdea8c214cb8344b3ccecdd 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 32b0603063032677d734a1c173677f544ce7cc5c..52086efc539b854c159d5166e33b49d933128185 100644 +index e8dc99752d06ca40f17f3ad2c829b2447b703d7c..577e7737d234e89a8a0a16bd00b4f2757f8443f8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -221,9 +221,9 @@ public abstract class LivingEntity extends Entity { @@ -272,7 +272,7 @@ index 32b0603063032677d734a1c173677f544ce7cc5c..52086efc539b854c159d5166e33b49d9 // Paper end if (!this.level.isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index a55c30d86793bf224b536a7ceefce75c70b618c7..a6217bc88e3a9d302e2ce8d453170017c8cfaf54 100644 +index 3646b969fa51b9683ab4137e530c3a6f6fc6c465..c04de0abe8ff2eb9a8ca38912e60520f6b2af0f5 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -146,8 +146,8 @@ public abstract class Mob extends LivingEntity { @@ -1222,7 +1222,7 @@ index 8f294f10aca2df007830b12da0506f7614206a89..7bb7aaaff1e6e11db68b0f206bdf04fd } diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 0a239df9a43669047be3d6006597128860862060..467d3b4b750e816f1c9d03114e9514252039bad4 100644 +index e73acfa2f5a4066fa1beee1758082a2fe97a43b3..bdd7d46781598fd54e65d9df1efe790579f94c24 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -69,8 +69,27 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -2718,7 +2718,7 @@ index 69c6a0c64ef5371dc57da1fdb60a8ac295bf327a..314454b8c0197002c6c2529ffb75724d 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 d347ab0a638a972ea53a982f29af40423919870c..b09b8d79e837b613e20fdac2a419403f3e0d07d7 100644 +index b3e2e834f4f151497bf842796dd8e3a8b5143f1b..b271c8b1aa75df1b9e0d7b011aacacccfe5ea4bc 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,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -2885,7 +2885,7 @@ index d347ab0a638a972ea53a982f29af40423919870c..b09b8d79e837b613e20fdac2a419403f @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index e5bb1baa22db202a6d17ef639bc4940ed1605337..4188d8b564999ba3befa53e78f103a6d2777845f 100644 +index b8abee145fc92faddef98da913eca7715b6bfc03..8cc4f6a4e8ef66c4e799a0e5bdb4ddc5466007e6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -69,12 +69,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3016,7 +3016,7 @@ index d980b906d9206560741576fa4153c57212f307a0..790d4abbc8e0b288e20e72e63f8190e9 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index f9193f8cd3b0d0e689a523c7142a897c342c2931..1476372a78092b103c037028f08cb1eae9464706 100644 +index 8c328d72c42ccaa6891249cc700b70bb34c09545..a5250d7a85f11c58732d7e3d3ca3321efac42fc0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -60,21 +60,98 @@ public class Creeper extends Monster implements PowerableMob { @@ -3683,7 +3683,7 @@ index ea4fa9eba301e462c159cdb970079f6d87d25f4d..3a2261687ec8b3b1f69b89ceeb2cc8cc @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index b55640ed068becd40cbb7d7507b4e67ae9ee792a..79c2f0482a7adbd50e1063edf2839f4fb3ab0847 100644 +index cb81c5d37c72845133c4e59acaf8de56dcc9e62a..a8565816836e5ab55086a6024dc47df277cd7277 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy { @@ -4028,7 +4028,7 @@ index 3a3f3358c4bbd16bdcadc56c6a865ecfb942ad54..e73644f453bed8523bfad47764018362 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 0c5ca7fabb7dc95587bae72d714d4712bdf0cc40..14be612dbef97f26f7a0bb145452e44e9d50edb5 100644 +index ae95867efd21280d81180f2c4ac27fd6c94d868f..e84a23c52a53095a077ed21bf4d1ddbad303442d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -64,18 +64,55 @@ public class Slime extends Mob implements Enemy { @@ -4157,7 +4157,7 @@ index 0c5ca7fabb7dc95587bae72d714d4712bdf0cc40..14be612dbef97f26f7a0bb145452e44e } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 694643c8ee7447da01ae02ca242338dbdbb3412a..2a0821c288dd07d7a87f5df91d04d739030fa3c5 100644 +index c3085ad5410b41d9c7703b28ca835dbee3f49ee7..7e0e7d3247010c0008df355a5b44db9f55287fe6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -51,14 +51,33 @@ public class Spider extends Monster { @@ -4379,7 +4379,7 @@ index 78b1fb5e163cbe6b95ab39aa3b1b33da95c62cee..9bc60081a1d3f63f3b452ee5a8c8ae32 Vec3 vec3d1 = Vex.this.getDeltaMovement(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 8914a0e2aab28fe2198f8e117f206abffae8b7d0..5f550e683b61ef3312f4500e43d6723fcbdef214 100644 +index a9e75a16a7dc0ff5d4f0faa92ebc444559a39325..c0421de54b2d192d67c54cef359f6b12d2d013c1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -58,14 +58,33 @@ public class Vindicator extends AbstractIllager { @@ -4458,7 +4458,7 @@ index f9eb4a3a37454de78c65f895a82e67a854b6909b..7775f1428a455f0d52f43ed07102cb24 this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index c65319caa4bf95bd1d3bc41811b9cd401cc5c705..7259a56007ac0af079a4794952f69bf2706841c8 100644 +index 6449213d717271bcc516e393a78dfe1e5c762d68..3b272b5653c6e7672f16eb35314c689910c14250 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -35,6 +35,23 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -4545,10 +4545,10 @@ index 056e4c2f7f632dadc0015710c032a0b718d46ff9..a6aaffc41a39be4ae1da44d54a27d324 this.level.getProfiler().pop(); this.updateActivity(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 7b01bd1409dcb64c097badbbd73110d40e712751..87676587c71306f38e25d0f9548132526a7e481f 100644 +index 97b3082dc020043fa38d9e5e4591102f97519ed3..be664e96a63bf6042375654e8297e4d6a54c7c8b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -104,11 +104,30 @@ public class Zombie extends Monster { +@@ -105,11 +105,30 @@ public class Zombie extends Monster { this(EntityType.ZOMBIE, world); } @@ -4572,7 +4572,7 @@ index 7b01bd1409dcb64c097badbbd73110d40e712751..87676587c71306f38e25d0f954813252 @Override protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - if (level.paperConfig.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper + if (level.paperConfig().entities.behavior.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -4753,7 +4753,7 @@ index ac75c54e897565e340b66823caeed92ba1d1641a..ff149234a8f3e1c94961e41d5bc81174 this.level.getProfiler().pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 98debcec829ddaa9d37b7e9cc1f42dfd9123393c..75fbf7f29e1cb90f87a4ba074f4ce256c810a3f8 100644 +index 10b45ec24a5a0867106d1694312385ad1e267f43..850bfb8d08281c91ae8e17b4db38ffdaae2dbf96 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -153,6 +153,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -4853,7 +4853,7 @@ index 86e1ba898d6b92735258419fa74352e5116226dc..2ae9a5da91ad20f1b566a686dcc8d4f1 this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 2987d675af3b778d20be66e2ac2cddf6b4957d1d..4a04249441959340ad5f3a1879edd21208c7a9dc 100644 +index cd9cbfa5ef94994b3f7f2ecdde843620e7e6c071..02cf1fdc58c33431a070a970add325eb7a278974 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -197,6 +197,19 @@ public abstract class Player extends LivingEntity { @@ -4926,7 +4926,7 @@ index 5b92c2ca03baed38f7d41a73fae7dd23ce541d43..3cc9dab362141fdf61bdcd542ffa5e5c + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ceacb62aef0dd0f73f1542a1898ceb62c3f4c367..97108c2317a38e11d45fdbef448dca5cb3ddad1c 100644 +index 389bf0d695dccb1d2547d61d62be97376e2505f9..25ba267fb0bdfc2e74471593574f56d542178234 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -543,6 +543,15 @@ public class CraftEventFactory { diff --git a/patches/server/0006-Configurable-entity-base-attributes.patch b/patches/server/0006-Configurable-entity-base-attributes.patch index 7f20a6ef0..bc7773c3f 100644 --- a/patches/server/0006-Configurable-entity-base-attributes.patch +++ b/patches/server/0006-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ 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 4b01ef01efe128cdeac548c592f62d72c9e0169e..cbd0f1ef7b3dad972b2e1f4b1d35c1f66ca9854f 100644 +index a964f9a09b9b9d16c72691ee4d7924e0a25b7876..f58ad1b263af2ab9d829cd93056352e2ef9254e4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -155,7 +155,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index 882ab40c8cdea8c214cb8344b3ccecddb2967c1c..cb79d2c958fbd34f8c8818e7e1c0db88 @Override diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 52086efc539b854c159d5166e33b49d933128185..68bbd0c1facef4d3e21975ead5b7af19ac3c1254 100644 +index 577e7737d234e89a8a0a16bd00b4f2757f8443f8..402bd611231d4547a469a70429f006a84546a0eb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -289,6 +289,7 @@ public abstract class LivingEntity extends Entity { @@ -190,7 +190,7 @@ index 7bb7aaaff1e6e11db68b0f206bdf04fda0e88fc4..8d25d79be606b173a592647061725611 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 467d3b4b750e816f1c9d03114e9514252039bad4..9474324ace8ad2c9f54930cea4ee825275493075 100644 +index bdd7d46781598fd54e65d9df1efe790579f94c24..4003e4f4128f14e0dffa666ed8f4447aadd1dede 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -84,6 +84,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -735,7 +735,7 @@ index 314454b8c0197002c6c2529ffb75724de16cf7a6..49454ad2de73c0a50ac1e3b9cda35f6c 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 b09b8d79e837b613e20fdac2a419403f3e0d07d7..a7d06c64dea9872e96d7f0e7dbb3a409f222b63c 100644 +index b271c8b1aa75df1b9e0d7b011aacacccfe5ea4bc..ef528ad1571b7dcd180c70160fe6b17b2d7a18b8 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 @@ -212,6 +212,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -792,7 +792,7 @@ index 790d4abbc8e0b288e20e72e63f8190e938e2fecb..b9ee6fdaad09c92fdeea2e5be6068182 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 1476372a78092b103c037028f08cb1eae9464706..9921fd8278d14deeae9d61101f6800be58412948 100644 +index a5250d7a85f11c58732d7e3d3ca3321efac42fc0..0bf2355b7ac80227c06b3e85f1645559275a96e5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -138,6 +138,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -1013,7 +1013,7 @@ index 3a2261687ec8b3b1f69b89ceeb2cc8cc524ab57a..69375fdb63b9edde3d161bac7a1946a3 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 79c2f0482a7adbd50e1063edf2839f4fb3ab0847..6df40b92a7006c8ad6a8d89c7d81a0f4326cad42 100644 +index a8565816836e5ab55086a6024dc47df277cd7277..a3b871797c3e006f66978a73da01fede52fc8c49 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -116,6 +116,21 @@ public class Phantom extends FlyingMob implements Enemy { @@ -1131,7 +1131,7 @@ index e73644f453bed8523bfad47764018362a416b5ea..e239bcc4d4afe48e9fc204ad38d8bc76 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 14be612dbef97f26f7a0bb145452e44e9d50edb5..5c122ece695f61c58c90b853a0cb9a249f15b184 100644 +index e84a23c52a53095a077ed21bf4d1ddbad303442d..d1d58b8b109fb96ffe0561c8f8e3bb38a5a06e59 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -103,6 +103,37 @@ public class Slime extends Mob implements Enemy { @@ -1185,7 +1185,7 @@ index 14be612dbef97f26f7a0bb145452e44e9d50edb5..5c122ece695f61c58c90b853a0cb9a24 this.setHealth(this.getMaxHealth()); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 2a0821c288dd07d7a87f5df91d04d739030fa3c5..0314b3ac32595a22e89619a928a3c5b1b0135ed4 100644 +index 7e0e7d3247010c0008df355a5b44db9f55287fe6..9b35fe2b335ba1b835f41401162c8c55fd1cc31e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -66,6 +66,11 @@ public class Spider extends Monster { @@ -1249,7 +1249,7 @@ index 9bc60081a1d3f63f3b452ee5a8c8ae327f64b16e..cad3d3741460c21da2e163ed9ec6ba78 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 5f550e683b61ef3312f4500e43d6723fcbdef214..656dd2b01250c749db0acfa41992210709f5dcd3 100644 +index c0421de54b2d192d67c54cef359f6b12d2d013c1..c3b8bce2d8e1dccb619267923964e06abfed8762 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -73,6 +73,11 @@ public class Vindicator extends AbstractIllager { @@ -1281,7 +1281,7 @@ index 7775f1428a455f0d52f43ed07102cb242f6d23ad..0359db7ccca286df046066b4a2356a50 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index 7259a56007ac0af079a4794952f69bf2706841c8..59797dd2521d349cb1d7c2a3d5344e2b14a510ac 100644 +index 3b272b5653c6e7672f16eb35314c689910c14250..b374069a1e88db67a56d6d5f9e05318c0403d462 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -50,6 +50,11 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1313,10 +1313,10 @@ index a6aaffc41a39be4ae1da44d54a27d324927e47d0..a91ec2e385940b12bc41d9c09819c908 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 87676587c71306f38e25d0f9548132526a7e481f..e382b739392d884ba659423e8f50c81f59a8f3fa 100644 +index be664e96a63bf6042375654e8297e4d6a54c7c8b..60d2abecb21c767fe290ffc9b7dd3446c99d8609 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -119,6 +119,11 @@ public class Zombie extends Monster { +@@ -120,6 +120,11 @@ public class Zombie extends Monster { public boolean isControllable() { return level.purpurConfig.zombieControllable; } @@ -1328,7 +1328,7 @@ index 87676587c71306f38e25d0f9548132526a7e481f..e382b739392d884ba659423e8f50c81f // Purpur end @Override -@@ -606,7 +611,7 @@ public class Zombie extends Monster { +@@ -607,7 +612,7 @@ public class Zombie extends Monster { } protected void randomizeReinforcementsChance() { @@ -1432,7 +1432,7 @@ index ff149234a8f3e1c94961e41d5bc8117460b301d9..75db61c5aab66234b26f7899229ddca8 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 75fbf7f29e1cb90f87a4ba074f4ce256c810a3f8..1e56f842c0c76ae2c8ee79a31b319cb2c5c29765 100644 +index 850bfb8d08281c91ae8e17b4db38ffdaae2dbf96..8f220534aa2af1d85968f1fa138b1d21f05ee0b2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -173,6 +173,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0007-Timings-stuff.patch b/patches/server/0007-Timings-stuff.patch index 1f9f946e0..3be5570d5 100644 --- a/patches/server/0007-Timings-stuff.patch +++ b/patches/server/0007-Timings-stuff.patch @@ -44,20 +44,3 @@ index 78280fb3bcd8d792a58ece6d735e0824ea4be536..1789fdbd8b59f9d465ba0881481a578d private static JSONObject mapAsJSON(ConfigurationSection config, String parentKey) { JSONObject object = new JSONObject(); -diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 83121be2274a33d4188ff6fe37752432dd4e6b22..ed8b470e9d75f04d4c0277be11f81540a7f51d1c 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperConfig.java -+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java -@@ -239,6 +239,12 @@ public class PaperConfig { - boolean timings = getBoolean("timings.enabled", true); - boolean verboseTimings = getBoolean("timings.verbose", true); - TimingsManager.url = getString("timings.url", "https://timings.aikar.co/"); -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.version < 23 && TimingsManager.url.contains("timings.pl3x.net")) { -+ set("timings.url", "https://timings.aikar.co/"); -+ TimingsManager.url = "https://timings.aikar.co/"; -+ } -+ // Purpur end - if (!TimingsManager.url.endsWith("/")) { - TimingsManager.url += "/"; - } diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 43c9994c5..b6267887b 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 347c01f091144f82f6eed996d424400d82634cff..e657ba0638bf17353289586ca7303b59c1bc62b1 100644 +index 7a28ac8d31ed5712e6fb2fbd59c72be5855165fe..79c4da6fb1cad621454b08e64f5da79678d21dc5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2000,8 +2000,58 @@ public class ServerPlayer extends Player { @@ -68,7 +68,7 @@ index 347c01f091144f82f6eed996d424400d82634cff..e657ba0638bf17353289586ca7303b59 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 076c482e6844f6a188267556cd8fbcc592ad53f7..90b6b10ddba0224b8bc7e5f0f70edea809670e3c 100644 +index 57e7c37aaa118e1fd4f933f66d10338ece4bb635..602979d0d85cff155d50780ce2471de0806ae63a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -312,6 +312,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -182,7 +182,7 @@ index a7575b5ef56af6f53448d391abb4956e130148ca..0a9e4dc5d6d567605c587df9bcbb57d3 if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level.getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index e0a30fdeeb3402f9b34dc6b53594c85b10eab86f..597b75bb429ac5a36f912c0a1f9361356dcdb726 100644 +index f86fd6a5712d1a3b6e0a306421eaf833f6377e65..74f14215280005a4d6fb35a77e2f1c4858250f2f 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -201,6 +201,13 @@ public abstract class Player extends LivingEntity { @@ -213,7 +213,7 @@ index 3f458ddd4dc04ed28510a212be76bb19e7f6a61e..a36469186f72eccf8c4428d920d0583b if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d87d521adbbc1c211f04bee0be15715948bde652..f35f60b6fe470d9bc239ce9017f3a82ed984d342 100644 +index b81a747b3b247b5bfc65381c1497b9fd0a14cda3..d523a517ff0f4c8f0efaa38e64ecafef1ba6dc4d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -442,10 +442,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -233,7 +233,7 @@ index d87d521adbbc1c211f04bee0be15715948bde652..f35f60b6fe470d9bc239ce9017f3a82e for (ServerPlayer player : (List) server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -2774,5 +2779,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2760,5 +2765,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0011-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch index 350571e75..7a3416daf 100644 --- a/patches/server/0011-Bring-back-server-name.patch +++ b/patches/server/0011-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 26345494ce190b5cd2ab58dd7d4b046796767b20..20d579a20e186e59975df1b35112015e public final boolean spawnNpcs = this.get("spawn-npcs", true); public final boolean pvp = this.get("pvp", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 13f422993a585a6bcb69791b61001feefd9bcb18..bdbcd124c1491550331318824bf1df13ec183964 100644 +index aaa9060a4b61034ade81639fb3e8b7ef214eb05b..638f7cf222dce27b7e81eb3ade943094b72e538b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2882,4 +2882,11 @@ public final class CraftServer implements Server { +@@ -2879,4 +2879,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch index b0cb5d46a..539172ce7 100644 --- a/patches/server/0014-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d0fef308a6b8848a7473484956716e6c36c315c0..a653b79b3c81d5908d73e4f444d8c2baf62662de 100644 +index e2cd44e6f785265aba0e67770a684b5f58e3d4e6..fa8986c6502b58089b98500ba7e152e51ce8d30b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= this.level.paperConfig.netherVoidTopDamageHeight)) { + && level.paperConfig().environment.netherCeilingVoidDamageHeight > 0 + && this.getY() >= this.level.paperConfig().environment.netherCeilingVoidDamageHeight)) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 38067bee49ec2498d840ded86ceeae4518034ae1..7558c7fe7797cf6e100aeb5668fe8246de310d7b 100644 +index 8e2fbf9f356650be37099d4e72cd949ddcc52ec6..0a481fca2e115a48cf10fa6f664b1cbecd5763a7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2445,7 +2445,7 @@ public abstract class LivingEntity extends Entity { diff --git a/patches/server/0060-Add-canSaveToDisk-to-Entity.patch b/patches/server/0060-Add-canSaveToDisk-to-Entity.patch index 0add1153e..359d76ae9 100644 --- a/patches/server/0060-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0060-Add-canSaveToDisk-to-Entity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2f06de6afed296677b451e26a0079dc437a7c549..1c9e36b6b474e305695fa79af5544c45717bdb47 100644 +index e5097185d44062427e7fe21da89a552a4ff97277..50c79b36429e13a12dd7fac0afd1160528b01035 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4472,5 +4472,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -19,7 +19,7 @@ index 2f06de6afed296677b451e26a0079dc437a7c549..1c9e36b6b474e305695fa79af5544c45 // Purpur end } 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 a7d06c64dea9872e96d7f0e7dbb3a409f222b63c..a15fb55ae69fa7255086df336ed8daf016a46a87 100644 +index ef528ad1571b7dcd180c70160fe6b17b2d7a18b8..4f9b14e523019c87178304f250e3d10606145fad 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 @@ -208,6 +208,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -35,7 +35,7 @@ index a7d06c64dea9872e96d7f0e7dbb3a409f222b63c..a15fb55ae69fa7255086df336ed8daf0 skull.setPosRaw(headX, headY, headZ); level.addFreshEntity(skull); diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index 84152df1dadd7fe6927eaed96dc0998ab15f608d..10c0377e8302d2858af96b8ef734a585a5e27274 100644 +index 2bc0384728f89b7c64a8beec78a1b77dc063d37b..e4af49d85c8f6265b550c0a7cbea7d495f47150a 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java @@ -92,6 +92,7 @@ public class EntityStorage implements EntityPersistentStorage { @@ -45,7 +45,7 @@ index 84152df1dadd7fe6927eaed96dc0998ab15f608d..10c0377e8302d2858af96b8ef734a585 + if (!entity.canSaveToDisk()) return; // Purpur // Paper start final EntityType entityType = entity.getType(); - final int saveLimit = this.level.paperConfig.entityPerChunkSaveLimits.getOrDefault(entityType, -1); + final int saveLimit = this.level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1); diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java index d55f7611599b2a339293688861100cb8dae9f6c6..5e99789e5156e8ffbf125e77114c547e1f8e7925 100644 --- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java diff --git a/patches/server/0064-Add-5-second-tps-average-in-tps.patch b/patches/server/0064-Add-5-second-tps-average-in-tps.patch index d09f8e80b..c6e40ad1a 100644 --- a/patches/server/0064-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0064-Add-5-second-tps-average-in-tps.patch @@ -27,18 +27,18 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2603e73b86c87125cd3f1804463281324a75105a..2d179faa807ad78b8f7db0cf79cea0f3b94bb232 100644 +index 9dc2dd5bc5894ff33826613f2fae28d51085b751..5a51ec9a9cba605b2fc32e51dcd78f0cbb253628 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -288,7 +288,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 3b70e37140531884397696760dd9ef597c4655bc..86713a01e5e43f13f1aa0e0c53b299126f24b433 100644 +index 7e927dec3e4e4fb65bf89a87cfa555045c58bb3a..22591789a33e0b08e9ee2529bc7d6b548310afa4 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -55,6 +55,12 @@ public class ItemEntity extends Entity { @@ -47,7 +47,20 @@ index 3b70e37140531884397696760dd9ef597c4655bc..86713a01e5e43f13f1aa0e0c53b29912 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -332,6 +338,15 @@ public class ItemEntity extends Entity { +@@ -81,6 +87,12 @@ public class ItemEntity extends Entity { + this.copyPosition(entity); + this.age = entity.age; + this.bobOffs = entity.bobOffs; ++ // Purpur start ++ if (level.purpurConfig.itemImmuneToCactus.contains(stack.getItem())) immuneToCactus = true; ++ if (level.purpurConfig.itemImmuneToExplosion.contains(stack.getItem())) immuneToExplosion = true; ++ if (level.purpurConfig.itemImmuneToFire.contains(stack.getItem())) immuneToFire = true; ++ if (level.purpurConfig.itemImmuneToLightning.contains(stack.getItem())) immuneToLightning = true; ++ // level end + } + + @Override +@@ -332,6 +344,15 @@ public class ItemEntity extends Entity { return false; } else if (!this.getItem().getItem().canBeHurtBy(source)) { return false; @@ -63,19 +76,6 @@ index 3b70e37140531884397696760dd9ef597c4655bc..86713a01e5e43f13f1aa0e0c53b29912 } else if (this.level.isClientSide) { return true; } else { -@@ -518,6 +533,12 @@ public class ItemEntity extends Entity { - this.getEntityData().markDirty(ItemEntity.DATA_ITEM); // CraftBukkit - SPIGOT-4591, must mark dirty - net.minecraft.resources.ResourceLocation location = net.minecraft.core.Registry.ITEM.getKey(stack.getItem()); // Paper - this.despawnRate = level.paperConfig.altItemDespawnRateMap.getOrDefault(location, level.spigotConfig.itemDespawnRate); // Paper -+ // Purpur start -+ if (level.purpurConfig.itemImmuneToCactus.contains(stack.getItem())) immuneToCactus = true; -+ if (level.purpurConfig.itemImmuneToExplosion.contains(stack.getItem())) immuneToExplosion = true; -+ if (level.purpurConfig.itemImmuneToFire.contains(stack.getItem())) immuneToFire = true; -+ if (level.purpurConfig.itemImmuneToLightning.contains(stack.getItem())) immuneToLightning = true; -+ // level end - } - - @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java index fea44ba6a6584b4a510af6a58cab07eecec6b68b..f3bf5199bc7ddf8a3d0dc67a184e7690efa659eb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java diff --git a/patches/server/0070-Configurable-jockey-options.patch b/patches/server/0070-Configurable-jockey-options.patch index ffb575584..640b38042 100644 --- a/patches/server/0070-Configurable-jockey-options.patch +++ b/patches/server/0070-Configurable-jockey-options.patch @@ -57,10 +57,10 @@ index e41cc68649c79dd4ce7455f36112e8347e7c84e6..22daf7d11890a2e9276928ac9b242edf public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index e382b739392d884ba659423e8f50c81f59a8f3fa..226968c3bcc0d51d9025b3bb17e0051bf4c109e5 100644 +index 60d2abecb21c767fe290ffc9b7dd3446c99d8609..7be6cb6ad9a8b5f695b1a13564a37917a914b983 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -124,6 +124,18 @@ public class Zombie extends Monster { +@@ -125,6 +125,18 @@ public class Zombie extends Monster { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.drownedMaxHealth); } @@ -79,7 +79,7 @@ index e382b739392d884ba659423e8f50c81f59a8f3fa..226968c3bcc0d51d9025b3bb17e0051b // Purpur end @Override -@@ -545,19 +557,20 @@ public class Zombie extends Monster { +@@ -546,19 +558,20 @@ public class Zombie extends Monster { if (object instanceof Zombie.ZombieGroupData) { Zombie.ZombieGroupData entityzombie_groupdatazombie = (Zombie.ZombieGroupData) object; @@ -106,7 +106,7 @@ index e382b739392d884ba659423e8f50c81f59a8f3fa..226968c3bcc0d51d9025b3bb17e0051b Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level); entitychicken1.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F); -@@ -565,6 +578,7 @@ public class Zombie extends Monster { +@@ -566,6 +579,7 @@ public class Zombie extends Monster { entitychicken1.setChickenJockey(true); this.startRiding(entitychicken1); world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit diff --git a/patches/server/0072-Add-phantom-spawning-options.patch b/patches/server/0072-Add-phantom-spawning-options.patch index aabb21f40..efab0dec9 100644 --- a/patches/server/0072-Add-phantom-spawning-options.patch +++ b/patches/server/0072-Add-phantom-spawning-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add phantom spawning options diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java -index 9d96235c4697d9a0f045c692a742cdabbd6f8b8a..84bf3898b16040ae15acca66d07d0b5e52fc8bf2 100644 +index 6b5c31470499e25d01936106839c2fff21b113c8..cbf4a7ca1f09d156eed12030fafb724095d2bae4 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java @@ -41,8 +41,8 @@ public class PhantomSpawner implements CustomSpawner { @@ -20,7 +20,7 @@ index 9d96235c4697d9a0f045c692a742cdabbd6f8b8a..84bf3898b16040ae15acca66d07d0b5e } else { int i = 0; @@ -54,22 +54,22 @@ public class PhantomSpawner implements CustomSpawner { - if (!entityhuman.isSpectator() && (!world.paperConfig.phantomIgnoreCreative || !entityhuman.isCreative())) { // Paper + if (!entityhuman.isSpectator() && (!world.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !entityhuman.isCreative())) { // Paper BlockPos blockposition = entityhuman.blockPosition(); - if (!world.dimensionType().hasSkyLight() || blockposition.getY() >= world.getSeaLevel() && world.canSeeSky(blockposition)) { diff --git a/patches/server/0075-Add-allow-water-in-end-world-option.patch b/patches/server/0075-Add-allow-water-in-end-world-option.patch index 3d7dedad4..b867bc8fc 100644 --- a/patches/server/0075-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0075-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index 73f1211470d9626c82c8345037da19aed9db3f23..40c7bf266eccc43faa081ade9402bee5 return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 3d5067477f8abbcfece1915013576941a588d021..1f78c8e9cdffc0bb557719404f3834f90b76ff50 100644 +index cf719642e6fe7f041489c86560a431eebe839acf..063cde55ad7c4ef294994dc7d16f3f738d62049f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1457,4 +1457,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1462,4 +1462,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } // Paper end diff --git a/patches/server/0097-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0097-Despawn-rate-config-options-per-projectile-type.patch index 82816e507..3c0be7661 100644 --- a/patches/server/0097-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0097-Despawn-rate-config-options-per-projectile-type.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Despawn rate config options per projectile type Default values of -1 respect vanilla behaviour. diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 3a9ecb0b46d541a1dec551d6159414ad253e96ce..1d75abd1659b37deedff794dcf9ff83028d2b738 100644 +index bc01e5014e1355a225bdf5c47f2965290b45e2d2..63662eb3b3e4a79aea506df671721a83528340b9 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -63,7 +63,7 @@ public abstract class AbstractArrow extends Projectile { @@ -24,15 +24,15 @@ index 3a9ecb0b46d541a1dec551d6159414ad253e96ce..1d75abd1659b37deedff794dcf9ff830 - protected void tickDespawn() { - ++this.life; -- if (this.life >= (pickup == Pickup.CREATIVE_ONLY ? level.paperConfig.creativeArrowDespawnRate : (pickup == Pickup.DISALLOWED ? level.paperConfig.nonPlayerArrowDespawnRate : ((this instanceof ThrownTrident) ? level.spigotConfig.tridentDespawnRate : level.spigotConfig.arrowDespawnRate)))) { // Spigot // Paper - TODO: Extract this to init? +- if (this.life >= (pickup == Pickup.CREATIVE_ONLY ? level.paperConfig().entities.spawning.creativeArrowDespawnRate.value() : (pickup == Pickup.DISALLOWED ? level.paperConfig().entities.spawning.nonPlayerArrowDespawnRate.value() : ((this instanceof ThrownTrident) ? level.spigotConfig.tridentDespawnRate : level.spigotConfig.arrowDespawnRate)))) { // Spigot // Paper - TODO: Extract this to init? - this.discard(); + // Purpur start + protected int getPurpurDespawnRate() { + if (pickup == Pickup.CREATIVE_ONLY) { -+ return level.paperConfig.creativeArrowDespawnRate; ++ return level.paperConfig().entities.spawning.creativeArrowDespawnRate.value(); + } + if (pickup == Pickup.DISALLOWED) { -+ return level.paperConfig.nonPlayerArrowDespawnRate; ++ return level.paperConfig().entities.spawning.nonPlayerArrowDespawnRate.value(); } + if (this instanceof ThrownTrident) { + return level.spigotConfig.tridentDespawnRate; @@ -84,7 +84,7 @@ index 5406925cd66f46ab8744123c670d72cea7bfc3a1..2bd14d74fa2fed39dad27b4417794f00 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -index eb62756029ddda53c68d681f70b155df54a2c3ae..8542f21dd362eb002720219467a51e7686f499e8 100644 +index f5886a88fd98ede5e85a91eccccb05ac33eb40e2..f8378da592ecf22d8c7d5e07794a13992fd95f35 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java +++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java @@ -661,4 +661,11 @@ public class FishingHook extends Projectile { @@ -132,7 +132,7 @@ index 1a945a32c3d3705a318ebca72a365931a8c001b7..c7fdcfae1ba823046fdfe78aa97b4a7a + // Purpur end } 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 fcbc5a3aee2e23a0b30b1f774d608f85b85f7d71..877a568b74e9f12decfeb70459e0cc0737f176cf 100644 +index 66c3f374a779cd3a4548393ba23e9219f1caf6d3..a9b958b5630944f0512e113b65c223419abd47f3 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java @@ -33,6 +33,7 @@ public abstract class Projectile extends Entity { diff --git a/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 0b7df0ef5..245dc674a 100644 --- a/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index 181abe014baba9ac51064c003381281a8fa43fe4..cfd1dcec3efcd4caf2431cbda99bc9f15d39ed69 100644 +index c9901f8c7f3af57cb2e0bec315caa97adcb6f5ea..407377e8791400f73e2e2305cbd38f17c7a5c0f1 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -135,6 +135,10 @@ public class MobGoalHelper { @@ -46,10 +46,10 @@ index 968392e9dd124f997d5d5996893363ac7ef2c740..1d57ee963416e784a759f2ecee7b7c38 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 226968c3bcc0d51d9025b3bb17e0051bf4c109e5..72bd61193c3289d7228ab76805eb19c29a4a058d 100644 +index 7be6cb6ad9a8b5f695b1a13564a37917a914b983..efe74738b5a90f822901488aa99f981029416fb5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -154,7 +154,19 @@ public class Zombie extends Monster { +@@ -155,7 +155,19 @@ public class Zombie extends Monster { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); diff --git a/patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch index f551aad87..ceb1fb0d2 100644 --- a/patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0107-Add-adjustable-breeding-cooldown-to-config.patch @@ -33,10 +33,10 @@ index 6216513805add7c8f52e1ed6c77e2d26786b3ab5..34e82b97c5b294f0a6423581220403a1 entityageable.setBaby(true); entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 0990d2f68e2fec89295f127fef48c7e6f7cd24c0..07ae3e667ca22b6c0434c103c61016e3e67e3d65 100644 +index 063cde55ad7c4ef294994dc7d16f3f738d62049f..599dbf1cb7d3f658b88879402987613740dd3658 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -189,6 +189,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -194,6 +194,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -86,9 +86,9 @@ index 0990d2f68e2fec89295f127fef48c7e6f7cd24c0..07ae3e667ca22b6c0434c103c61016e3 public CraftWorld getWorld() { return this.world; } -@@ -273,6 +316,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -278,6 +321,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper + this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur + this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur this.generator = gen; diff --git a/patches/server/0124-Implement-TPSBar.patch b/patches/server/0124-Implement-TPSBar.patch index ed6a559de..d066ae82b 100644 --- a/patches/server/0124-Implement-TPSBar.patch +++ b/patches/server/0124-Implement-TPSBar.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 72ab7ba92d6f20c1711d9720c02c11ce0e4ede71..9db941587e870b2a9d0378652d62f4f2c2c385bd 100644 +index a26672fce303a2ad468014d88033c55789a95e87..c6a97b3fa04c683a92a8d838f98e73b59bb7558a 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -208,6 +208,7 @@ public class Commands { @@ -17,7 +17,7 @@ index 72ab7ba92d6f20c1711d9720c02c11ce0e4ede71..9db941587e870b2a9d0378652d62f4f2 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1a3f709c8aa455f1ce7e63751074044b85b14d19..8a6b839ce55bc352dd5a38883c2bf8240f7420bf 100644 +index 862825556b52bb65a003fa633f08ed42cd6ad1fa..90b192ea540c99df4d9ba8713f126cd7f1cdc81d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1043,6 +1043,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 3097e87cece6aad796be215d524d9cb30fcc21c9..d0b8fd430a76a55cd179b92b38eb61df7ac6f04a 100644 +index 3f0e8cc9376f2d7a5b97a57ac7f7504aa14f6c54..178168ec7e27f02ed455440f0c265ab536f509f5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1684,7 +1684,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -30,7 +30,7 @@ index 3097e87cece6aad796be215d524d9cb30fcc21c9..d0b8fd430a76a55cd179b92b38eb61df this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014D)) { 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 29939e851e38fcd494c7556760191e0100bc2e07..1865fa0173dbd9362ba8186f0726f14d149d7602 100644 +index 9dcb46959c723723a369cde50427cbee0349f5a1..6bd31ed84049bc36a060b5e01b0599bf5f47765c 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -98,10 +98,12 @@ public class ArmorStand extends LivingEntity { @@ -41,7 +41,7 @@ index 29939e851e38fcd494c7556760191e0100bc2e07..1865fa0173dbd9362ba8186f0726f14d public ArmorStand(EntityType type, Level world) { super(type, world); - if (world != null) this.canTick = world.paperConfig.armorStandTick; // Paper - armour stand ticking + if (world != null) this.canTick = world.paperConfig().entities.armorStands.tick; // Paper - armour stand ticking + if (world != null) this.canMovementTick = world.purpurConfig.armorstandMovement; // Purpur this.handItems = NonNullList.withSize(2, ItemStack.EMPTY); this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY); diff --git a/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch index 3f05139e8..64436ee3d 100644 --- a/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch @@ -158,7 +158,7 @@ index 364863d14e7c0ac6dffa1ac5df5f1af5d820c700..8e04d20c0f1038dbe1c8e7f05242f66e @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 9474324ace8ad2c9f54930cea4ee825275493075..1f87f6879b9c23526a2d1b490959d60606657e02 100644 +index 4003e4f4128f14e0dffa666ed8f4447aadd1dede..e3d725e656bc5ffc5fc92133794a80799fb21c48 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -89,6 +89,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -286,7 +286,7 @@ index 988093b46a4c386f8d47a4c530b8e9f6f49efd0d..2a9af6af653dc62c99baff01ebea8ad6 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 68579837bbe1f532b94de072bcb614d2baa3f74d..cc780b3e4649549c746fc6127fc85c387a6be370 100644 +index b8dd08ad346e90ddde14289441d6e52776c42538..8706b15afa5630c94a5568d6a0644edf2ba12ff5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -147,6 +147,11 @@ public class Rabbit extends Animal { @@ -443,7 +443,7 @@ index 6d3a39c0f65e19cff3c13355a53995df34ee136f..327a2161ba4b400952f104113015cbb6 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 113b6d80885717d59c8fefab07afe68779f0051d..c888516a1e4b7283fdb2cb15bc9a13900e901e53 100644 +index 782e9fae7cdd0b3bbf2e1fb408c18663771cc346..e64dec4560331d34f3c2885f50d716744e90f5df 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -40,6 +40,11 @@ public class Donkey extends AbstractChestedHorse { @@ -459,7 +459,7 @@ index 113b6d80885717d59c8fefab07afe68779f0051d..c888516a1e4b7283fdb2cb15bc9a1390 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 3144c7e7b018a1e8a907691b798e656500f57430..6ae27ba8e40c490e8ae58d8f78f071a9e18d980e 100644 +index 6a7d8ff804b184005fda17f3d7a4b9750a7c2fe5..704e08b1ad0601e9b7f3b355214a820858a421ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java @@ -65,6 +65,11 @@ public class Horse extends AbstractHorse { @@ -475,7 +475,7 @@ index 3144c7e7b018a1e8a907691b798e656500f57430..6ae27ba8e40c490e8ae58d8f78f071a9 @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 24b80622da9ddebb8544f25e8c01047c41a5fd86..57589a54362a4e0d23ba32957d5db47da2b9ec83 100644 +index 3c9ea07ded25ac8a479a03fecfdd7ddb9d5a046c..708f0bccffc05fac0d711df13dd1b5e173ff6109 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 @@ -136,6 +136,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -491,7 +491,7 @@ index 24b80622da9ddebb8544f25e8c01047c41a5fd86..57589a54362a4e0d23ba32957d5db47d public boolean isTraderLlama() { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java -index 88e61572f5dd8d05fadab131046f74bd8131f42b..610282c7be7355f0800c1265cc8b19dd557d065a 100644 +index 762cc54c1812e70aabd18baf2c72930dc72981a7..aa78c4512de01229bdc5fcdc30e7ac992c96ea07 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java @@ -39,6 +39,11 @@ public class Mule extends AbstractChestedHorse { @@ -507,7 +507,7 @@ index 88e61572f5dd8d05fadab131046f74bd8131f42b..610282c7be7355f0800c1265cc8b19dd @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 063602f2ccced778194b268d3d7dd00bdffd73ff..345cb3eca7663b34eb847b04491ad343d06c2eb8 100644 +index 57d98741d90e78c11f9ef8f00dbf75e9d452ef9a..dc8e892673b9ce137c2d4236c4ed4e843922438b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -55,6 +55,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -523,7 +523,7 @@ index 063602f2ccced778194b268d3d7dd00bdffd73ff..345cb3eca7663b34eb847b04491ad343 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java -index bdb71283d402656a3da6dd699d4cd6a5c935e541..b3d9ab9c40fff58cdcb64e1499ee70d5442d121d 100644 +index 53a327f4170ffad9ff1736fa34bc733ecf5ffa9a..44f7d38ae3de0210f62477474afdc314e5c7054a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -67,6 +67,11 @@ public class TraderLlama extends Llama { @@ -539,7 +539,7 @@ index bdb71283d402656a3da6dd699d4cd6a5c935e541..b3d9ab9c40fff58cdcb64e1499ee70d5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 5f6235ea148d11c9e875e0d6646ceb84d4fa8d5b..0f76bcb56c03bc2743f7f36217c2442adf07d2a3 100644 +index a2636f6e4767d408ef9d2cda4c346abdaa88da37..6d1938f1cbad394f218b36ec8958d5e7ba6623f7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -53,6 +53,11 @@ public class ZombieHorse extends AbstractHorse { @@ -571,7 +571,7 @@ index dc27fb79ee596c39a8ea4a422b9a069bfccb08e9..34e1ee5f67027cd7301e22e966f65c83 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 4da6fbb66350e4513dde28ba6f3c5d414ef92ad1..e0c960a07fcecec58fecdf88c190ab85b25a3658 100644 +index f2dad991a4a5fc43870a508f4c24f75f1b058f26..4283c4426dac5db7730b2c4c21e92732806d7e29 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 @@ -222,6 +222,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -625,7 +625,7 @@ index b9ee6fdaad09c92fdeea2e5be606818278a77c21..5347ba12f2a07601c9f044081e5e6ce6 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index f4aeaeef7d781a655e765993fb38a9d920c47109..614baf25654c770a6cdac02f8cd4301a3ccdfb23 100644 +index 6acdd443e1e9d59efab8966f5f3ddbfb7be72336..fa4d5579dcdaad04fa2e6cd9ae47af1154739121 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -151,6 +151,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -743,7 +743,7 @@ index 3cb9b399db596b90d7885e2003ba41f4f79a3588..8ab5dfd2f56d52b275bf160d8a28adce @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 0d26d2388cc1963df9bc361b31a572c12e2f8709..dd7ad09e8b154347290126fe8f7e195c1b348ec9 100644 +index ed032918fb33d60c2d60d4db9275dddf88dd72d9..148ad9bc34793e6ed2b4b02aff6f239321504268 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -107,6 +107,11 @@ public class Giant extends Monster { @@ -823,7 +823,7 @@ index 69375fdb63b9edde3d161bac7a1946a36306f0c5..5311b26e56eac2a854e615a3e694eadd public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 2be9ab670e93067fe23745cafa0655a1dfa2bc0f..e7e4d87fb8a5276fd617afc4e0b925100abf3f76 100644 +index f23ca987666fd23621d3d731fd1a4ab26ff04aa8..f7689ba01ec6d7f3483be831026e0c5f995459e9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -151,6 +151,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -919,7 +919,7 @@ index e239bcc4d4afe48e9fc204ad38d8bc76833994f4..8ce46cc00a01a678270e906078097aa7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 5c122ece695f61c58c90b853a0cb9a249f15b184..b069ec2f52956d1e2744fe3831567cdf85ff66c1 100644 +index d1d58b8b109fb96ffe0561c8f8e3bb38a5a06e59..8f8ac9e39ec046b86843099d2daefc4f67c62b72 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -134,6 +134,11 @@ public class Slime extends Mob implements Enemy { @@ -935,7 +935,7 @@ index 5c122ece695f61c58c90b853a0cb9a249f15b184..b069ec2f52956d1e2744fe3831567cdf @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 0314b3ac32595a22e89619a928a3c5b1b0135ed4..39b6c3ea2aa955b1005edfd80e1c4913315bd621 100644 +index 9b35fe2b335ba1b835f41401162c8c55fd1cc31e..12e25f1cf9daeecd46788959227910b328091a43 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -71,6 +71,11 @@ public class Spider extends Monster { @@ -1005,7 +1005,7 @@ index cad3d3741460c21da2e163ed9ec6ba7894ab2712..1e4f227ad895f2099d889c3b93171764 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 015d0f64e37003907a5ae4e9f5ca11dbe4d7b81a..9cb7983b911dd3ec260df9fc05651ed2de93205c 100644 +index 021550a0465dd1fd152b4c2e763014058730e8ca..b9b2e76535da32965615de563d4674cee4abd7f0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -78,6 +78,11 @@ public class Vindicator extends AbstractIllager { @@ -1037,7 +1037,7 @@ index 0359db7ccca286df046066b4a2356a50b8240a56..801355c7c3a4acfb3c45b0d5bc3218e9 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index 59797dd2521d349cb1d7c2a3d5344e2b14a510ac..81cc7a0707f8e4a8b7272543e0d9c45c5d58b897 100644 +index b374069a1e88db67a56d6d5f9e05318c0403d462..dd47abc25f71ad019025e11bdf9f5ca97c2c78f3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -55,6 +55,11 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1069,10 +1069,10 @@ index a91ec2e385940b12bc41d9c09819c9081edc5c44..9928af5318c1cc4676c5cf215840ce0f @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 72bd61193c3289d7228ab76805eb19c29a4a058d..a68bced3a278f082680994a13920f97d82cdbd42 100644 +index efe74738b5a90f822901488aa99f981029416fb5..f2900d76e9577c83be377500f7d7e7f438a56683 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -136,6 +136,11 @@ public class Zombie extends Monster { +@@ -137,6 +137,11 @@ public class Zombie extends Monster { public boolean jockeyTryExistingChickens() { return level.purpurConfig.zombieJockeyTryExistingChickens; } @@ -1165,7 +1165,7 @@ index 75db61c5aab66234b26f7899229ddca8896e2086..a44f9a59fbec146df95d89c26df12efb public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 18a184633362c43f59f9493c56b33ccfb09d2873..7962332c16f8cd83e5a05176b34674a3b3ff6a4b 100644 +index bbf1e5c900d293da044809bf1871125264ce89c9..d2463e17dabb592bf799a1d851141339cd962222 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -186,6 +186,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0146-Tick-fluids-config.patch b/patches/server/0146-Tick-fluids-config.patch index 8a328e882..87f6e2a52 100644 --- a/patches/server/0146-Tick-fluids-config.patch +++ b/patches/server/0146-Tick-fluids-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tick fluids config diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -index f0cbb9e44b9434a69ea0ee7a5b403373d3680908..859bd95ccaf41ef594948eaaaebb4a78329b2ee9 100644 +index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f71e9990b 100644 --- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java +++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -@@ -106,7 +106,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -105,7 +105,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { @@ -17,7 +17,7 @@ index f0cbb9e44b9434a69ea0ee7a5b403373d3680908..859bd95ccaf41ef594948eaaaebb4a78 world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper } -@@ -130,7 +130,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -129,7 +129,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { @@ -26,7 +26,7 @@ index f0cbb9e44b9434a69ea0ee7a5b403373d3680908..859bd95ccaf41ef594948eaaaebb4a78 world.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world)); } -@@ -139,7 +139,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -138,7 +138,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { diff --git a/patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch index 5c6581a8d..bc5118b77 100644 --- a/patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0176-Add-config-change-multiplier-critical-damage-value.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 120ac554b5ffd677731ed959f01da7478d37e2f3..fa3a2ef8ec1f2b7c22a27acfddda12cb5e666fe9 100644 +index b416c8606ef53aa49458bb6f36689068bc9b54cc..d9fe4f09e48f67fd4b79528a38fcaef9b94269d8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -1314,7 +1314,7 @@ public abstract class Player extends LivingEntity { - flag2 = flag2 && !level.paperConfig.disablePlayerCrits; // Paper + flag2 = flag2 && !level.paperConfig().entities.behavior.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { - f *= 1.5F; diff --git a/patches/server/0178-Config-for-unverified-username-message.patch b/patches/server/0178-Config-for-unverified-username-message.patch index e09b914d2..607b5e365 100644 --- a/patches/server/0178-Config-for-unverified-username-message.patch +++ b/patches/server/0178-Config-for-unverified-username-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 9311130b5401cda69c62b5b5c23718554b94ab84..6ee6a35006a3d479ce916b3be297e3c1e38d7a8c 100644 +index 5f46bdcb109ec4af7e1241a278737b3dc41299f5..a62825d8f8c79ac15183b7b1eb9ba0c5e9a1fc6e 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -402,7 +402,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -401,7 +401,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener ServerLoginPacketListenerImpl.this.gameProfile = ServerLoginPacketListenerImpl.this.createFakeProfile(gameprofile); ServerLoginPacketListenerImpl.this.state = ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT; } else { diff --git a/patches/server/0182-API-for-any-mob-to-burn-daylight.patch b/patches/server/0182-API-for-any-mob-to-burn-daylight.patch index f89dc986d..c681bf1f1 100644 --- a/patches/server/0182-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0182-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ 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 79db12259f154fd7dedf1311051c698492e3817b..8ba651d40ed75e30961e63a32b815dd35f7746b6 100644 +index 189c3fe0977ee6d67943421af903ed61968c3d9b..c4f9623696e07ee33e4f42f36126f2b3e7a80865 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4485,5 +4485,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -31,7 +31,7 @@ index 79db12259f154fd7dedf1311051c698492e3817b..8ba651d40ed75e30961e63a32b815dd3 // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5a742e95da47208366e791a10ce1e82d0c3524b4..b2036c0bd97126290c581b0c48e25d8f9d809584 100644 +index fde87b5a2c3b3d94facf02ba9538685cc1f26651..2d1f5dfbaee60cac7cd24ca90dedea893e93e128 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -266,6 +266,7 @@ public abstract class LivingEntity extends Entity { @@ -91,7 +91,7 @@ index 5a742e95da47208366e791a10ce1e82d0c3524b4..b2036c0bd97126290c581b0c48e25d8f public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 473e2a1a8104669eed3db862560e67b426297aba..210a7c737261a42101f3d22b8a2464639c75b17a 100644 +index 45e00fc1a5a695db0bf711e8f826722c814b481b..46eafe918a660fba8b18b6565a395bf6043b3978 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1673,17 +1673,7 @@ public abstract class Mob extends LivingEntity { @@ -114,7 +114,7 @@ index 473e2a1a8104669eed3db862560e67b426297aba..210a7c737261a42101f3d22b8a246463 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 4188d8b564999ba3befa53e78f103a6d2777845f..fffdea563dbe48ce8c1b13cbe0d052940fa9f571 100644 +index 8cc4f6a4e8ef66c4e799a0e5bdb4ddc5466007e6..4505b61f10c3aad3d0ab144cea5ef6efc6ad7357 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -65,6 +65,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -211,7 +211,7 @@ index 47e4f62d177c14ceffeb13a3fee5bfa342da7184..bcbce83f9e304809fb946f80c9dd32c4 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index e7e4d87fb8a5276fd617afc4e0b925100abf3f76..42919b2267eed71e29830a96afdd3be19d6b6f68 100644 +index f7689ba01ec6d7f3483be831026e0c5f995459e9..836ca1a47524088c78c6c72a9479c7ffabfbee10 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -275,10 +275,10 @@ index e7e4d87fb8a5276fd617afc4e0b925100abf3f76..42919b2267eed71e29830a96afdd3be1 // Paper end private static enum AttackPhase { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index a68bced3a278f082680994a13920f97d82cdbd42..8f88e320d7165cb56172d6a1bfa4bf3c5c2a9162 100644 +index f2900d76e9577c83be377500f7d7e7f438a56683..0748babe61be5e5082132af6c4a3bc82612b70b3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -93,11 +93,12 @@ public class Zombie extends Monster { +@@ -94,11 +94,12 @@ public class Zombie extends Monster { private int inWaterTime; public int conversionTime; private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field @@ -287,12 +287,12 @@ index a68bced3a278f082680994a13920f97d82cdbd42..8f88e320d7165cb56172d6a1bfa4bf3c public Zombie(EntityType type, Level world) { super(type, world); - this.breakDoorGoal = new BreakDoorGoal(this, com.google.common.base.Predicates.in(world.paperConfig.entitiesDifficultyBreakDoors.getOrDefault(type, world.paperConfig.entitiesDifficultyBreakDoors.get(EntityType.ZOMBIE)))); // Paper + this.breakDoorGoal = new BreakDoorGoal(this, com.google.common.base.Predicates.in(world.paperConfig().entities.behavior.doorBreakingDifficulty.getOrDefault(type, world.paperConfig().entities.behavior.doorBreakingDifficulty.get(EntityType.ZOMBIE)))); // Paper + this.setShouldBurnInDay(true); // Purpur } public Zombie(Level world) { -@@ -294,30 +295,7 @@ public class Zombie extends Monster { +@@ -295,30 +296,7 @@ public class Zombie extends Monster { @Override public void aiStep() { @@ -324,7 +324,7 @@ index a68bced3a278f082680994a13920f97d82cdbd42..8f88e320d7165cb56172d6a1bfa4bf3c super.aiStep(); } -@@ -355,6 +333,7 @@ public class Zombie extends Monster { +@@ -356,6 +334,7 @@ public class Zombie extends Monster { } @@ -332,7 +332,7 @@ index a68bced3a278f082680994a13920f97d82cdbd42..8f88e320d7165cb56172d6a1bfa4bf3c public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - use api value instead } -@@ -484,7 +463,7 @@ public class Zombie extends Monster { +@@ -485,7 +464,7 @@ public class Zombie extends Monster { nbt.putBoolean("CanBreakDoors", this.canBreakDoors()); nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); @@ -341,7 +341,7 @@ index a68bced3a278f082680994a13920f97d82cdbd42..8f88e320d7165cb56172d6a1bfa4bf3c } @Override -@@ -498,7 +477,7 @@ public class Zombie extends Monster { +@@ -499,7 +478,7 @@ public class Zombie extends Monster { } // Paper start if (nbt.contains("Paper.ShouldBurnInDay")) { diff --git a/patches/server/0187-Flying-Fall-Damage-API.patch b/patches/server/0187-Flying-Fall-Damage-API.patch index e28e86d4f..9b335e6ed 100644 --- a/patches/server/0187-Flying-Fall-Damage-API.patch +++ b/patches/server/0187-Flying-Fall-Damage-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Flying Fall Damage API diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index fa3a2ef8ec1f2b7c22a27acfddda12cb5e666fe9..e8b1dd7f413a27fa5d495a03bc725cead85a2c34 100644 +index d9fe4f09e48f67fd4b79528a38fcaef9b94269d8..38b1807c7abf7278b2d00be1e1c8e3e3b42fabce 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity { @@ -26,10 +26,10 @@ index fa3a2ef8ec1f2b7c22a27acfddda12cb5e666fe9..e8b1dd7f413a27fa5d495a03bc725cea } else { if (fallDistance >= 2.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 1948eda5fd4d6b8d8a9bdb8ee36fd9f12764525a..3747a3b47735a26a86651677579c20a5eb6a915f 100644 +index 120625dc6e748fb1bd12334848911e8d1d85679a..d7560a3a65129a4de219caafe8126bfd0f4db6ad 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2819,5 +2819,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2805,5 +2805,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) { getHandle().spawnInvulnerableTime = spawnInvulnerableTime; } diff --git a/patches/server/0198-Add-uptime-command.patch b/patches/server/0198-Add-uptime-command.patch index ea5d8f976..c95954055 100644 --- a/patches/server/0198-Add-uptime-command.patch +++ b/patches/server/0198-Add-uptime-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 9db941587e870b2a9d0378652d62f4f2c2c385bd..174d4e18743f4388ac6aec6875adf6ac88f32bcd 100644 +index c6a97b3fa04c683a92a8d838f98e73b59bb7558a..2fbb65c685ac88c77d54f27a5981a132fb44e370 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -208,6 +208,7 @@ public class Commands { @@ -17,10 +17,10 @@ index 9db941587e870b2a9d0378652d62f4f2c2c385bd..174d4e18743f4388ac6aec6875adf6ac } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8a6b839ce55bc352dd5a38883c2bf8240f7420bf..3cbfbfeccb6603dc8dc60d85b8db19b61a736b72 100644 +index 90b192ea540c99df4d9ba8713f126cd7f1cdc81d..d6faf01b6225fec11a4290592ac6ddf674ca6ce2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -279,6 +279,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6b9def09a1f7ccd6370c960723dea079addddeb5..41be109438f5cadebcf3088ff8cb6bdde2c1044b 100644 +index e0026d35131fa0b7029a9d23bda22bf27c234744..988fdfae38f0e9f472a7a5fddcf41a25484bafbe 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1405,6 +1405,19 @@ public final class CraftServer implements Server { +@@ -1404,6 +1404,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0230-Halloween-options-and-optimizations.patch b/patches/server/0230-Halloween-options-and-optimizations.patch index 6307a1c29..77af0718a 100644 --- a/patches/server/0230-Halloween-options-and-optimizations.patch +++ b/patches/server/0230-Halloween-options-and-optimizations.patch @@ -26,12 +26,12 @@ index 9c8f26a7510c43e24b49660546d524f7bed85a5e..0a859842e16e2cd2dfc25f0fa9920966 LocalDate localdate = LocalDate.now(); int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index fffdea563dbe48ce8c1b13cbe0d052940fa9f571..085b3b29942639dede102c8228e1124bb2e1be8f 100644 +index 4505b61f10c3aad3d0ab144cea5ef6efc6ad7357..e542407894f58fb8c0339a7a6d2e7b2cb5891eb4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -140,11 +140,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); - this.setCanPickUpLoot(this.level.paperConfig.skeletonsAlwaysCanPickUpLoot || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper + this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { - LocalDate localdate = LocalDate.now(); - int i = localdate.get(ChronoField.DAY_OF_MONTH); @@ -43,10 +43,10 @@ index fffdea563dbe48ce8c1b13cbe0d052940fa9f571..085b3b29942639dede102c8228e1124b this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 8f88e320d7165cb56172d6a1bfa4bf3c5c2a9162..5b91419948b8c08805fdf9c8bb70fd98eaa2ca7c 100644 +index 0748babe61be5e5082132af6c4a3bc82612b70b3..5b7a6fa9692933ceb40c36e2c684a98d2ba51d57 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -585,11 +585,7 @@ public class Zombie extends Monster { +@@ -586,11 +586,7 @@ public class Zombie extends Monster { } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { diff --git a/patches/server/0232-UPnP-Port-Forwarding.patch b/patches/server/0232-UPnP-Port-Forwarding.patch index f5159d86a..2956eac7b 100644 --- a/patches/server/0232-UPnP-Port-Forwarding.patch +++ b/patches/server/0232-UPnP-Port-Forwarding.patch @@ -5,11 +5,11 @@ 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 3cbfbfeccb6603dc8dc60d85b8db19b61a736b72..1facde28d476bbdb86e33aac3d4f2754fe89c36f 100644 +index d6faf01b6225fec11a4290592ac6ddf674ca6ce2..d88acaff65e5e19ce1afbbdb39459b07fda08ffc 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop playersInRange = reducedRange ? playerchunk.playersInMobSpawnRange : playerchunk.playersInChunkTickRange; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53d0ccf95a6e07a00918f05ddaeeca699737d2eb..0e06db15572bf7d23d61f93c0b6de1b78ea4f990 100644 +index a6bd9ced7805d4c0f0185feca2afe87e198b6f98..bd2b4cbb3286ef72e40a8089aa41230826203959 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -286,7 +286,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0257-Max-joins-per-second.patch b/patches/server/0257-Max-joins-per-second.patch index 4210a9603..d518257eb 100644 --- a/patches/server/0257-Max-joins-per-second.patch +++ b/patches/server/0257-Max-joins-per-second.patch @@ -6,19 +6,19 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 7030c38980dbebfd374c2369294555650cf7880b..7a7b93d46650faa16f2e6df36c5363cf47db75ba 100644 +index f76c52e4661ef740dc924b0704a9ce28982294f1..f08c24920aebe5a84927024fdd14d954053129d3 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -517,11 +517,20 @@ public class Connection extends SimpleChannelInboundHandler> { - private static final int MAX_PER_TICK = com.destroystokyo.paper.PaperConfig.maxJoinsPerTick; // Paper +@@ -516,11 +516,20 @@ public class Connection extends SimpleChannelInboundHandler> { + private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper private static int joinAttemptsThisTick; // Paper private static int currTick; // Paper + private static int tickSecond; // Purpur public void tick() { this.flushQueue(); // Paper start - if (currTick != MinecraftServer.currentTick) { - currTick = MinecraftServer.currentTick; + if (currTick != net.minecraft.server.MinecraftServer.currentTick) { + currTick = net.minecraft.server.MinecraftServer.currentTick; + // Purpur start + if (org.purpurmc.purpur.PurpurConfig.maxJoinsPerSecond) { + if (++tickSecond > 20) { diff --git a/patches/server/0262-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0262-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 3e6fa370f..30f693bc7 100644 --- a/patches/server/0262-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0262-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,12 +5,12 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 1b6d426b44e200b3634c0a9ac7c3a315841ada40..76fdea60535e357b380ebaf76f9739ea78347de8 100644 +index 18389f46902bb9879ac6d734723e9a720724dc48..b2b8663a9cff08bacdab91c7bb014ba654241ada 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java @@ -83,6 +83,6 @@ public abstract class WaterAnimal extends PathfinderMob { - i = world.getMinecraftWorld().paperConfig.waterAnimalMaxSpawnHeight != null ? world.getMinecraftWorld().paperConfig.waterAnimalMaxSpawnHeight : i; - j = world.getMinecraftWorld().paperConfig.waterAnimalMinSpawnHeight != null ? world.getMinecraftWorld().paperConfig.waterAnimalMinSpawnHeight : j; + i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); + j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); // Paper end - return pos.getY() >= j && pos.getY() <= i && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); + return ((reason == MobSpawnType.SPAWNER && world.getMinecraftWorld().purpurConfig.spawnerFixMC238526) || (pos.getY() >= j && pos.getY() <= i)) && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); // Purpur