From b21daa9622f317fd52962d33e8ce9305364c07cf Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 5 Jul 2023 20:32:26 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e16fefb [ci skip] add 'accepted' to Done project category (#9429) PaperMC/Paper@171ba7c Move Log4j plugins to own source set (#9428) PaperMC/Paper@4356758 Call missing BlockDispenseEvents (#8518) PaperMC/Paper@c0936a7 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9440) PaperMC/Paper@12c9700 Fix ThrownEggHatchEvent#setHatching (#9448) --- gradle.properties | 2 +- patches/api/0003-Purpur-config-files.patch | 4 +- patches/api/0005-Purpur-client-support.patch | 4 +- .../api/0008-Allow-inventory-resizing.patch | 4 +- patches/api/0010-AFK-API.patch | 4 +- patches/api/0011-Bring-back-server-name.patch | 8 +- .../0013-LivingEntity-safeFallDistance.patch | 4 +- patches/api/0014-Lagging-threshold.patch | 8 +- .../api/0016-Player-invulnerabilities.patch | 4 +- ...0021-LivingEntity-broadcastItemBreak.patch | 4 +- ...031-API-for-any-mob-to-burn-daylight.patch | 4 +- .../api/0036-Extended-OfflinePlayer-API.patch | 4 +- ...the-ability-to-add-combustible-items.patch | 8 +- patches/api/0045-Debug-Marker-API.patch | 12 +- patches/api/0046-Add-death-screen-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 58 ++--- patches/server/0003-Rebrand.patch | 20 +- patches/server/0004-Purpur-config-files.patch | 12 +- .../server/0005-Purpur-client-support.patch | 8 +- .../0007-Component-related-conveniences.patch | 4 +- patches/server/0008-Ridables.patch | 201 +++++++++--------- ...-Configurable-entity-base-attributes.patch | 88 ++++---- .../0010-Barrels-and-enderchests-6-rows.patch | 6 +- patches/server/0011-Llama-API.patch | 10 +- patches/server/0012-AFK-API.patch | 8 +- .../server/0013-Bring-back-server-name.patch | 4 +- .../0015-LivingEntity-safeFallDistance.patch | 18 +- patches/server/0016-Lagging-threshold.patch | 6 +- .../0018-Player-invulnerabilities.patch | 6 +- ...bit-naturally-spawn-toast-and-killer.patch | 4 +- patches/server/0035-Cows-eat-mushrooms.patch | 8 +- ...able-loot-drops-on-death-by-cramming.patch | 6 +- ...derman-and-creeper-griefing-controls.patch | 24 +-- ...urable-void-damage-height-and-damage.patch | 6 +- .../0056-Add-canSaveToDisk-to-Entity.patch | 6 +- ...g-mends-most-damages-equipment-first.patch | 4 +- ...0060-Add-5-second-tps-average-in-tps.patch | 6 +- .../0061-Implement-elytra-settings.patch | 10 +- .../server/0062-Item-entity-immunities.patch | 12 +- ...leport-to-spawn-if-outside-world-bor.patch | 4 +- .../0079-Totems-work-in-inventory.patch | 4 +- .../0082-Dispensers-place-anvils-option.patch | 14 +- ...o-disable-dolphin-treasure-searching.patch | 4 +- .../server/0085-Short-enderman-height.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 8 +- ...tities-can-use-portals-configuration.patch | 6 +- ...0089-LivingEntity-broadcastItemBreak.patch | 4 +- patches/server/0096-Flying-squids-Oh-my.patch | 22 +- ...re-add-farmland-mechanics-from-Alpha.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 8 +- ...e-entity-breeding-times-configurable.patch | 58 ++--- ...llowing-Endermen-to-despawn-even-whi.patch | 4 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 20 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 18 +- ...16-Configurable-default-collar-color.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 68 +++--- ...0126-Add-EntityTeleportHinderedEvent.patch | 4 +- .../0127-Farmland-trampling-changes.patch | 4 +- .../server/0129-Fix-stuck-in-portals.patch | 6 +- ...oggle-for-water-sensitive-mob-damage.patch | 78 +++---- ...31-Config-to-always-tame-in-Creative.patch | 16 +- .../0132-End-crystal-explosion-options.patch | 9 +- patches/server/0135-One-Punch-Man.patch | 4 +- ...an-aggressiveness-towards-Endermites.patch | 4 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 4 +- ...142-Config-to-disable-Llama-caravans.patch | 4 +- ...ig-to-make-Creepers-explode-on-death.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 20 +- ...0145-Sneak-to-bulk-process-composter.patch | 8 +- patches/server/0149-Drowning-Settings.patch | 10 +- ...-Config-to-allow-for-unsafe-enchants.patch | 6 +- ...0-Config-for-wither-explosion-radius.patch | 4 +- .../0165-Configurable-mob-blindness.patch | 4 +- ...h-to-impact-Creeper-explosion-radius.patch | 12 +- ...ee-can-work-when-raining-or-at-night.patch | 4 +- ...177-API-for-any-mob-to-burn-daylight.patch | 16 +- .../0178-Config-MobEffect-by-world.patch | 10 +- .../0180-Add-toggle-for-sand-duping-fix.patch | 6 +- ...ggle-for-end-portal-safe-teleporting.patch | 4 +- ...86-Shulker-spawn-from-bullet-options.patch | 6 +- .../server/0192-Tool-actionable-options.patch | 8 +- ...93-Store-placer-on-Block-when-placed.patch | 8 +- ...e-Enderman-teleport-on-projectile-hi.patch | 4 +- .../0201-Toggle-for-kinetic-damage.patch | 4 +- .../0212-Extended-OfflinePlayer-API.patch | 8 +- ...the-ability-to-add-combustible-items.patch | 4 +- ...turally-aggressive-to-players-chance.patch | 10 +- ...turally-aggressive-to-players-chance.patch | 10 +- ...-Halloween-options-and-optimizations.patch | 6 +- ...xtinguish-fire-blocks-with-snowballs.patch | 8 +- .../0229-Mobs-always-drop-experience.patch | 74 +++---- .../server/0230-Potion-NamespacedKey.patch | 8 +- .../0235-Mob-head-visibility-percent.patch | 4 +- ...-Stop-bees-from-dying-after-stinging.patch | 4 +- ...fig-for-mob-last-hurt-by-player-time.patch | 8 +- ...dd-toggle-for-enchant-level-clamping.patch | 6 +- ...0267-Add-toggle-for-RNG-manipulation.patch | 8 +- .../server/0272-Remove-Mojang-Profiler.patch | 36 ++-- patches/server/0274-Add-Bee-API.patch | 8 +- patches/server/0275-Debug-Marker-API.patch | 10 +- .../server/0279-Add-death-screen-API.patch | 4 +- patches/server/0287-Language-API.patch | 4 +- .../0288-Milk-Keeps-Beneficial-Effects.patch | 4 +- patches/server/0294-Added-got-ram-event.patch | 4 +- .../server/0306-Shears-can-defuse-TNT.patch | 4 +- 105 files changed, 679 insertions(+), 695 deletions(-) diff --git a/gradle.properties b/gradle.properties index 06a362eee..1a93d5cae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.1-R0.1-SNAPSHOT mcVersion = 1.20.1 -paperCommit = f2c1e1366ad4139614eafe677daf35aa873718f0 +paperCommit = 12c970097d5044bf4124169745ad63efffc4a4ad org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0003-Purpur-config-files.patch b/patches/api/0003-Purpur-config-files.patch index bb15b08cb..94bb0abf0 100644 --- a/patches/api/0003-Purpur-config-files.patch +++ b/patches/api/0003-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 5b225bbb128893d67251a96ab318035802a0cf76..861e193e7c1fe1b8e69e22b5c80f391701446bc5 100644 +index 6b72eccdcb6f75534a4267a1dd0a4cc2f39e917b..0a07aaff7859e01acaae05e343df08585d0db63f 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2007,6 +2007,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2030,6 +2030,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0005-Purpur-client-support.patch b/patches/api/0005-Purpur-client-support.patch index bae65ccae..3ec0b0b25 100644 --- a/patches/api/0005-Purpur-client-support.patch +++ b/patches/api/0005-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 0b4f9dee48f8d49977dc9a5f104ee062ca2cbfae..82b91f7c5c853d467d64d2c7ec1c61296b4ccd4a 100644 +index d0297f47f18cabf857cf4ce04c529b46525c0f75..f71e4cc7509db77de9656485cf3f1368ea8ce45b 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3121,4 +3121,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3153,4 +3153,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0008-Allow-inventory-resizing.patch b/patches/api/0008-Allow-inventory-resizing.patch index 43e3c9122..a93bb8a10 100644 --- a/patches/api/0008-Allow-inventory-resizing.patch +++ b/patches/api/0008-Allow-inventory-resizing.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow inventory resizing diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java -index daddb12947e61ee69c100b422f6d07d49f76d724..27a182c18db825836b3d3d3c87503bfc5ae0957e 100644 +index cbce826add9dc2b3187c7bea00c27b785d7517df..3a98de6407d9a6307f89c207be1f09e639385ebe 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryType.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryType.java -@@ -152,7 +152,7 @@ public enum InventoryType { +@@ -151,7 +151,7 @@ public enum InventoryType { SMITHING_NEW(4, "Upgrade Gear"), ; diff --git a/patches/api/0010-AFK-API.patch b/patches/api/0010-AFK-API.patch index 9a2c3d29e..849e8ecfc 100644 --- a/patches/api/0010-AFK-API.patch +++ b/patches/api/0010-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 82b91f7c5c853d467d64d2c7ec1c61296b4ccd4a..c78517538d9ec1706f90e25fc20af06bc9b2679a 100644 +index f71e4cc7509db77de9656485cf3f1368ea8ce45b..a38673326d7732e4067dc6aa1af4d0bf2901e843 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3129,5 +3129,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3161,5 +3161,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @return True if Player uses Purpur Client */ public boolean usesPurpurClient(); diff --git a/patches/api/0011-Bring-back-server-name.patch b/patches/api/0011-Bring-back-server-name.patch index e14d7737b..5afb0ca88 100644 --- a/patches/api/0011-Bring-back-server-name.patch +++ b/patches/api/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 1ab3d8aee3101ca08d9adf5d9ff9f83de911594c..cd91cb8362dd7eee06f3a8ffc8777143031a33e8 100644 +index b243db56756c67cd2c41d7768898d01539f9260a..acdfd691f56de28285f1bf919fbbc7c31f6ea33b 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2635,4 +2635,15 @@ public final class Bukkit { +@@ -2662,4 +2662,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index 1ab3d8aee3101ca08d9adf5d9ff9f83de911594c..cd91cb8362dd7eee06f3a8ffc8777143 + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 00039fb8d6df939c5a1812f5afc61f34ef31c448..bd41630486f3f7820a0b3b9d6333c66e7b735ac1 100644 +index 0a07aaff7859e01acaae05e343df08585d0db63f..f8fbd64640c9d0035d7c79ce6a568b485f095f87 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2302,4 +2302,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2325,4 +2325,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch index 4a97ee4b0..dc208aa25 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0013-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 9712f7140933d7fc87c5838c173e2d818b70cfde..c2d2490516df766ff5c6bcc739798218b0f8015b 100644 +index 19e58e62ae442ef9be02ca7fa2f55e370a54afa4..c5dcfd380206603c2979aa02e7094fef27348eab 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1159,4 +1159,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1192,4 +1192,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0014-Lagging-threshold.patch index 4f0c16b6c..3b3fe3269 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index cd91cb8362dd7eee06f3a8ffc8777143031a33e8..fb8cc238252fa59243414382ef1c2f41a1c4864f 100644 +index acdfd691f56de28285f1bf919fbbc7c31f6ea33b..df4a4bc5d5423fa966910db1719dabd665eb8d71 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2645,5 +2645,14 @@ public final class Bukkit { +@@ -2672,5 +2672,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index cd91cb8362dd7eee06f3a8ffc8777143031a33e8..fb8cc238252fa59243414382ef1c2f41 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index bd41630486f3f7820a0b3b9d6333c66e7b735ac1..6a894f4e99a048602f03da0c9c22166516ce0a8f 100644 +index f8fbd64640c9d0035d7c79ce6a568b485f095f87..3fb416b31132596a6c336eed62ccc5fa69f35497 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2310,5 +2310,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2333,5 +2333,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0016-Player-invulnerabilities.patch b/patches/api/0016-Player-invulnerabilities.patch index 5547dacfe..de6dd9c5c 100644 --- a/patches/api/0016-Player-invulnerabilities.patch +++ b/patches/api/0016-Player-invulnerabilities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c78517538d9ec1706f90e25fc20af06bc9b2679a..4a0b01b068a32e00d1244bfabde202330218b237 100644 +index a38673326d7732e4067dc6aa1af4d0bf2901e843..79d996d9347d4c837401352fda9b7ac673e29b0f 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3148,5 +3148,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3180,5 +3180,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Reset the idle timer back to 0 */ void resetIdleTimer(); diff --git a/patches/api/0021-LivingEntity-broadcastItemBreak.patch b/patches/api/0021-LivingEntity-broadcastItemBreak.patch index 1fa720073..ebc874b8b 100644 --- a/patches/api/0021-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0021-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index c2d2490516df766ff5c6bcc739798218b0f8015b..deb92fd00f9cce906158c2dc9569620ba0eda411 100644 +index c5dcfd380206603c2979aa02e7094fef27348eab..accefccca9993edd00f72b4e5779fce0b3ee628f 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1174,5 +1174,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1207,5 +1207,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0031-API-for-any-mob-to-burn-daylight.patch b/patches/api/0031-API-for-any-mob-to-burn-daylight.patch index 86d69f410..1db69079e 100644 --- a/patches/api/0031-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0031-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 84000002d89c0fb692d1c44f449ad3dcdd2b7576..964ec7bd70fcdfcffd51b310cdea84c7 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index deb92fd00f9cce906158c2dc9569620ba0eda411..0e6024430fde305a9cc4294037b2bd820676e096 100644 +index accefccca9993edd00f72b4e5779fce0b3ee628f..994e026d68fcda9a4c34a8b161a06623f4437dff 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1181,5 +1181,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1214,5 +1214,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/api/0036-Extended-OfflinePlayer-API.patch b/patches/api/0036-Extended-OfflinePlayer-API.patch index 081d08804..57f727462 100644 --- a/patches/api/0036-Extended-OfflinePlayer-API.patch +++ b/patches/api/0036-Extended-OfflinePlayer-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 72175dcae49f75b494ab70958053ed994a8828f4..df642a55003517040be795b44a8bf107dd88810b 100644 +index 4d014215dce2c2ff09a2701accf2db144603c55a..8cb7000bc5e4e3c987cb0ac73d113eedb141e178 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -460,4 +460,114 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio +@@ -476,4 +476,114 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio */ @Nullable public Location getLastDeathLocation(); diff --git a/patches/api/0037-Added-the-ability-to-add-combustible-items.patch b/patches/api/0037-Added-the-ability-to-add-combustible-items.patch index 5ed8d9069..a2a360488 100644 --- a/patches/api/0037-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0037-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index fb8cc238252fa59243414382ef1c2f41a1c4864f..29a98d93f9cb3dbace116b69e37ec56f8762a966 100644 +index df4a4bc5d5423fa966910db1719dabd665eb8d71..79f78fdd7dc7c7ced0659e3740b14beff990b46e 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2654,5 +2654,24 @@ public final class Bukkit { +@@ -2681,5 +2681,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index fb8cc238252fa59243414382ef1c2f41a1c4864f..29a98d93f9cb3dbace116b69e37ec56f // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 6a894f4e99a048602f03da0c9c22166516ce0a8f..7a698e55630893aac51ee81ccc3dd35f195f88e1 100644 +index 3fb416b31132596a6c336eed62ccc5fa69f35497..05136ca2556454df3dbeeb2f67105c5bfdad445f 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2317,5 +2317,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2340,5 +2340,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0045-Debug-Marker-API.patch b/patches/api/0045-Debug-Marker-API.patch index 60481185c..7badebd06 100644 --- a/patches/api/0045-Debug-Marker-API.patch +++ b/patches/api/0045-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 29a98d93f9cb3dbace116b69e37ec56f8762a966..e26e0c6bc3d8e735f489cdcd0a5b93d6688c2c5f 100644 +index 79f78fdd7dc7c7ced0659e3740b14beff990b46e..478ba6da9befbc2983578d732e35f37a53789df0 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2673,5 +2673,89 @@ public final class Bukkit { +@@ -2700,5 +2700,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 29a98d93f9cb3dbace116b69e37ec56f8762a966..e26e0c6bc3d8e735f489cdcd0a5b93d6 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 7a698e55630893aac51ee81ccc3dd35f195f88e1..66052e2f0dcd8250a196c3b61423ecdbf0dd1f41 100644 +index 05136ca2556454df3dbeeb2f67105c5bfdad445f..916b9a9f05c0e83109bc9a4eb1692e2ed6e81eaf 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2332,5 +2332,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2355,5 +2355,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); @@ -260,10 +260,10 @@ index 1fba792419ea6b5e8c640a2599e4b2dd16ee87d0..bf39c6602cfca70a6352519fa26059cd /** diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 4a0b01b068a32e00d1244bfabde202330218b237..3dd1cde47e7d3ed0cb5b6c06c071a827b4175359 100644 +index 79d996d9347d4c837401352fda9b7ac673e29b0f..1916730689e8decf16fc1328775ac985ce417256 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3169,5 +3169,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3201,5 +3201,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * @param invulnerableTicks Invulnerable ticks remaining */ void setSpawnInvulnerableTicks(int invulnerableTicks); diff --git a/patches/api/0046-Add-death-screen-API.patch b/patches/api/0046-Add-death-screen-API.patch index 08bf35f51..3f20ce650 100644 --- a/patches/api/0046-Add-death-screen-API.patch +++ b/patches/api/0046-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 3dd1cde47e7d3ed0cb5b6c06c071a827b4175359..5b0035bf5edf15a5ee4528d0933f78d9d586fa2f 100644 +index 1916730689e8decf16fc1328775ac985ce417256..0c7b2434d7ae0314f9603e04f1bedd67f3b22b66 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3239,5 +3239,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3271,5 +3271,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM * Clears all debug block highlights */ void clearBlockHighlights(); diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index f97f1aa11..7a0e08394 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,11 +20,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 6d3d573ffc118e7f4d76422dc014a7df0384bb49..0664722c38d4218aae81af4977f7c5c0723195f7 100644 +index 57f2c414dbfe127c193002fbc8eeb22e94e9cb55..3e651dd361ce4a0ccb20d624dc878e16b3bb62f5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -7,8 +7,12 @@ plugins { - } +@@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { + val alsoShade: Configuration by configurations.creating dependencies { - implementation(project(":paper-api")) @@ -38,7 +38,7 @@ index 6d3d573ffc118e7f4d76422dc014a7df0384bb49..0664722c38d4218aae81af4977f7c5c0 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -44,6 +48,13 @@ dependencies { +@@ -52,6 +56,13 @@ dependencies { runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") @@ -52,7 +52,7 @@ index 6d3d573ffc118e7f4d76422dc014a7df0384bb49..0664722c38d4218aae81af4977f7c5c0 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("junit:junit:4.13.2") testImplementation("org.hamcrest:hamcrest-library:1.3") -@@ -52,6 +63,14 @@ dependencies { +@@ -60,6 +71,14 @@ dependencies { } val craftbukkitPackageVersion = "1_20_R1" // Paper @@ -67,7 +67,7 @@ index 6d3d573ffc118e7f4d76422dc014a7df0384bb49..0664722c38d4218aae81af4977f7c5c0 tasks.jar { archiveClassifier.set("dev") -@@ -64,7 +83,7 @@ tasks.jar { +@@ -72,7 +91,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -1668,7 +1668,7 @@ index 488a253e218409b5f0b4a872cee0928578fa7582..6e3b2863f04419ee6914ac3fd4f12a4f private void getFullChunk(long pos, Consumer chunkConsumer) { diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index acaf9f392660d618472aea7bce967d374eb5d549..4c5f90fdb534d8aeb7dd077a13b1ebed016e4947 100644 +index 81d0b2933040a451441f660f9e46199ae3b111e3..37c10d6a392d0400a7024bdd5214eb5e83aa3e82 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -180,7 +180,8 @@ public class ServerEntity { @@ -1791,7 +1791,7 @@ index 9d46536f80b5b3e6641fd377c02166a431edfd77..8a1fde50b82a8b0718ae04124c2611b7 @Override diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2a609e43370e68943c580083f7f7d8c9b0972955..309a3e42ec48a1a7684b62ea372bfa984df6a0fb 100644 +index b777547cb9f8edf4e7b3c2cfb894f8cd1b1a35a5..85d6635da9e7cb896d5d507dd9f8fb5d092a740e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1219,6 +1219,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -1935,7 +1935,7 @@ index 04b1531572e8fff1e46fe1c94e7fc863841e0f66..47ddc42f2b63d9d3fae5ae6ea93d4183 int LARGE_MAX_STACK_SIZE = 64; int DEFAULT_DISTANCE_LIMIT = 8; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6abaf7ef99800a238b29dbbb85de8c970c0806a7..e4beab69b116874baf29cfbbad6b9cd102ad92c4 100644 +index 3ffb92a82e17af467afb18c81accc482a93d6a6f..4cf49d758209a8364c8f58cd4e1249d7ae6eb489 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2021,7 +2021,7 @@ index 6abaf7ef99800a238b29dbbb85de8c970c0806a7..e4beab69b116874baf29cfbbad6b9cd1 this.baseTick(); } -@@ -4306,16 +4340,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4289,16 +4323,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -2047,7 +2047,7 @@ index 6abaf7ef99800a238b29dbbb85de8c970c0806a7..e4beab69b116874baf29cfbbad6b9cd1 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4323,14 +4359,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4306,14 +4342,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2115,7 +2115,7 @@ index 6abaf7ef99800a238b29dbbb85de8c970c0806a7..e4beab69b116874baf29cfbbad6b9cd1 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4352,9 +4435,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4335,9 +4418,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // CraftBukkit end } } @@ -2142,10 +2142,10 @@ index 9afc81ccb237c3655d64cdbe8a0db9a4d7791043..aa5cec6d56d7a8e80861aa4c9b4a74ca private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 064bd3f2615009b3f15f3a5006f0b5f7a7ba6bf5..33befdab713753d14bfe0e79e96dd925dad331c2 100644 +index e11d7283662834047b2ff81a2fd25a4263792deb..e9a31314424d9db911cd9806741222397c3072d7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -143,7 +143,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; +@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; // CraftBukkit end @@ -2153,7 +2153,7 @@ index 064bd3f2615009b3f15f3a5006f0b5f7a7ba6bf5..33befdab713753d14bfe0e79e96dd925 public abstract class LivingEntity extends Entity implements Attackable { -@@ -415,7 +414,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -414,7 +413,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this instanceof net.minecraft.world.entity.player.Player; if (!this.level().isClientSide) { @@ -2162,7 +2162,7 @@ index 064bd3f2615009b3f15f3a5006f0b5f7a7ba6bf5..33befdab713753d14bfe0e79e96dd925 this.hurt(this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1370,6 +1369,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1369,6 +1368,15 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } @@ -2178,7 +2178,7 @@ index 064bd3f2615009b3f15f3a5006f0b5f7a7ba6bf5..33befdab713753d14bfe0e79e96dd925 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -1975,6 +1983,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1965,6 +1973,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -2199,7 +2199,7 @@ index 064bd3f2615009b3f15f3a5006f0b5f7a7ba6bf5..33befdab713753d14bfe0e79e96dd925 public boolean onClimbable() { if (this.isSpectator()) { return false; -@@ -3661,7 +3683,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3651,7 +3673,10 @@ public abstract class LivingEntity extends Entity implements Attackable { Vec3 vec3d1 = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); // Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists @@ -2371,10 +2371,10 @@ index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..d25307ae8bbdf10ae067ec70fc2cb957 return false; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 940cd932e74bc2e6754186731d7aa6f10d56eb68..92a9770fabc6a8175245fef92753c52bc18d16ac 100644 +index 5beaa849a250ea005733250ad3edfa8382224667..2c91fe46355c9a201507de5577f693ed4f5fb974 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -251,13 +251,22 @@ public class Bat extends AmbientCreature { +@@ -237,13 +237,22 @@ public class Bat extends AmbientCreature { } } @@ -2463,10 +2463,10 @@ index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..6ed4ac06c76b8d0d6e8db778cade15db this.level().getProfiler().pop(); this.level().getProfiler().push("tadpoleActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 528e7ba29dcd38726b2c1bbc1d8ac208c64ba9df..2c7193e967b4cb5a7c98a760286a2c3791152359 100644 +index 247aca0b612f5079a0596350e8311c385df8ab1c..7f21d1d400c8a5615ed1a787dcb0680338f8c28d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -188,9 +188,11 @@ public class Goat extends Animal { +@@ -189,9 +189,11 @@ public class Goat extends Animal { return (Brain) super.getBrain(); // CraftBukkit - decompile error } @@ -2479,10 +2479,10 @@ index 528e7ba29dcd38726b2c1bbc1d8ac208c64ba9df..2c7193e967b4cb5a7c98a760286a2c37 this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); 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 3d41dbe0285f8fec8adae1e93010cf464df9b08c..63f8f2dfc2afddcf3c4960d60e65cb8e29507223 100644 +index 52196431a6538872755344859a0454a0e50c3b6e..80fc7918cb294b0d88a293bd6a920441cb55c3ad 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -269,10 +269,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -270,10 +270,16 @@ public class ItemEntity extends Entity implements TraceableEntity { if (entityitem.isMergable()) { // Paper Start - Fix items merging through walls if (this.level().paperConfig().fixes.fixItemsMergingThroughWalls) { @@ -2500,10 +2500,10 @@ index 3d41dbe0285f8fec8adae1e93010cf464df9b08c..63f8f2dfc2afddcf3c4960d60e65cb8e // Paper End this.tryToMerge(entityitem); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 5519ccf558c09f32e19b35f4b403fc9ed966ed65..54a9529ea92889d57e348307a35097f715a13501 100644 +index 39eb9301626b191958ce42daa34b1ff3241cea80..eaf45b502a698e26a703b93e62989a338479496e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -322,11 +322,17 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -326,11 +326,17 @@ public class EnderMan extends Monster implements NeutralMob { private boolean teleport(double x, double y, double z) { BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(x, y, z); @@ -3506,10 +3506,10 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0859f11567aecc8cae993a1409cfac7c53ab3dd5..7036f8b170ce040accaa2fe637758c6695bdafe8 100644 +index a05c1bc8874ef5e380544a6a344c848e37da49c4..bc9a4dc04589d4241560f73ae8c64f2fb8f6a4ca 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -261,7 +261,7 @@ import javax.annotation.Nullable; // Paper +@@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -3518,7 +3518,7 @@ index 0859f11567aecc8cae993a1409cfac7c53ab3dd5..7036f8b170ce040accaa2fe637758c66 private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); -@@ -1136,6 +1136,11 @@ public final class CraftServer implements Server { +@@ -1139,6 +1139,11 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch index cde5ceed3..f2634ffba 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 0664722c38d4218aae81af4977f7c5c0723195f7..4b0eee46d899cb641988ef7a3b5b61e938b76c71 100644 +index 3e651dd361ce4a0ccb20d624dc878e16b3bb62f5..240394b1d9dd1449674a299aa73fa155be2d3d82 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -7,12 +7,12 @@ plugins { - } +@@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { + val alsoShade: Configuration by configurations.creating dependencies { - implementation(project(":pufferfish-api")) // Pufferfish // Paper @@ -25,7 +25,7 @@ index 0664722c38d4218aae81af4977f7c5c0723195f7..4b0eee46d899cb641988ef7a3b5b61e9 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -48,6 +48,10 @@ dependencies { +@@ -56,6 +56,10 @@ dependencies { runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") @@ -36,7 +36,7 @@ index 0664722c38d4218aae81af4977f7c5c0723195f7..4b0eee46d899cb641988ef7a3b5b61e9 // Pufferfish start implementation("org.yaml:snakeyaml:1.32") implementation ("com.github.carleslc.Simple-YAML:Simple-Yaml:1.8.4") { -@@ -83,7 +87,7 @@ tasks.jar { +@@ -91,7 +95,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -45,7 +45,7 @@ index 0664722c38d4218aae81af4977f7c5c0723195f7..4b0eee46d899cb641988ef7a3b5b61e9 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -155,7 +159,7 @@ fun TaskContainer.registerRunTask( +@@ -168,7 +172,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -199,10 +199,10 @@ index 7ca6c81afc99d42d2f39b4b6d7f5e8a18b58fba3..34737c730d724d4be67d480587a17792 public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7036f8b170ce040accaa2fe637758c6695bdafe8..db0e77f8b5da34b0a757d6c39900698fea6e03a8 100644 +index bc9a4dc04589d4241560f73ae8c64f2fb8f6a4ca..08c5f45c044f6c882a985fbc071ff7616d0df4c1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -261,7 +261,7 @@ import javax.annotation.Nullable; // Paper +@@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -239,10 +239,10 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 19212795df4024cfb2b9f56e1efcd4c9f20d1d83..6097a5ca2b2aa7675e1db326190c77747db7d41e 100644 +index 6095d43e08bc1ffc4e9a4796fc7adbd07d69d716..7e81ed767bab14eeba1492a05c7ce43cfc2abd5b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -885,7 +885,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { return EntityCategory.WATER; } diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 5c002cb8f..0150f6f3a 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -112,10 +112,10 @@ index 5eca99fbd23ff0d35607bd185b011d6f9a30d0f0..6a9f5e3f8c72363b91b23729df5e9878 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 db0e77f8b5da34b0a757d6c39900698fea6e03a8..8f4e0d7a75634e4b12163b423ba6af76bde74de3 100644 +index 08c5f45c044f6c882a985fbc071ff7616d0df4c1..0bc0718dc37cc087b99d35f076f804ca734a555f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1053,6 +1053,7 @@ public final class CraftServer implements Server { +@@ -1056,6 +1056,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -123,7 +123,7 @@ index db0e77f8b5da34b0a757d6c39900698fea6e03a8..8f4e0d7a75634e4b12163b423ba6af76 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)) -@@ -1068,6 +1069,7 @@ public final class CraftServer implements Server { +@@ -1071,6 +1072,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -131,7 +131,7 @@ index db0e77f8b5da34b0a757d6c39900698fea6e03a8..8f4e0d7a75634e4b12163b423ba6af76 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1083,6 +1085,7 @@ public final class CraftServer implements Server { +@@ -1086,6 +1088,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -139,7 +139,7 @@ index db0e77f8b5da34b0a757d6c39900698fea6e03a8..8f4e0d7a75634e4b12163b423ba6af76 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2855,6 +2858,18 @@ public final class CraftServer implements Server { +@@ -2869,6 +2872,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -159,7 +159,7 @@ index db0e77f8b5da34b0a757d6c39900698fea6e03a8..8f4e0d7a75634e4b12163b423ba6af76 public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index d4f6935a1bea77e5118bfd538f9b1358c21591a7..2df1ac332a0860b974a0f9a5697aa246f6d8b5f6 100644 +index daed278d1bcf84ee42749f24e311b22b70015d79..2775c0e10c5081bb6b9e38d58dd57d08bf63ec89 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -173,6 +173,14 @@ public class Main { diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index 425f93a73..51a33aae3 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-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 9d46536f80b5b3e6641fd377c02166a431edfd77..16b742fdaf5524b22cedb4d5ba047559e3ac8371 100644 +index 8a1fde50b82a8b0718ae04124c2611b7cff4bcd6..d4e03454b07550621dd1a56e4eaa40f3b49d8c2f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -277,6 +277,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index 9d46536f80b5b3e6641fd377c02166a431edfd77..16b742fdaf5524b22cedb4d5ba047559 private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 309a3e42ec48a1a7684b62ea372bfa984df6a0fb..9c5a1d58acd782658a5239b324806e0ca2f969e3 100644 +index 85d6635da9e7cb896d5d507dd9f8fb5d092a740e..bd6798a03a1349de4b5589b05cef167034250c1e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3508,6 +3508,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -43,10 +43,10 @@ index 309a3e42ec48a1a7684b62ea372bfa984df6a0fb..9c5a1d58acd782658a5239b324806e0c 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 59c00045ec903a635966f16cf33e5b4110262953..2323ac04ea0bc4c5492d3c25348fd9b12e82845e 100644 +index 5b201d2c21f04e0223970035e0631f8f92ea0d3a..1c5dc1727b1731ddfd2f6b0e36618b780b9aa930 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3151,4 +3151,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3180,4 +3180,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end diff --git a/patches/server/0007-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch index 10d963ee0..b3c1dfb34 100644 --- a/patches/server/0007-Component-related-conveniences.patch +++ b/patches/server/0007-Component-related-conveniences.patch @@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1aa184cf7a97364d7b9e4d628c0a6c1dc769ba6e..6f743a7dcb36eb8c638cd82f1e52c10215346b60 100644 +index 4cf49d758209a8364c8f58cd4e1249d7ae6eb489..ccfdfb49b0bca84de676f5df4c373096455c9707 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4058,6 +4058,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4041,6 +4041,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return SlotAccess.NULL; } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 6952ed393..3882f6272 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -66,7 +66,7 @@ index a0577dcae567230c12b52ed02072745513c7a4d5..23235b98907ff26afb22d37326b072ba 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 9c5a1d58acd782658a5239b324806e0ca2f969e3..3c1afd3fc37ad0540beb07798f8ecf0cd6acc80f 100644 +index bd6798a03a1349de4b5589b05cef167034250c1e..8c62cc52c2d2aaa1dd1f191114e188c22e4f40a2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2811,6 +2811,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -79,7 +79,7 @@ index 9c5a1d58acd782658a5239b324806e0ca2f969e3..3c1afd3fc37ad0540beb07798f8ecf0c if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3caebf722bf8ebadf49da7c36170e245600ea7b5..25c190ac148ccc37904346cca859ba10f17c878c 100644 +index ccfdfb49b0bca84de676f5df4c373096455c9707..bb3edddf4c9b2a04f6b9219be741a523e4192c0c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -376,7 +376,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -91,21 +91,21 @@ index 3caebf722bf8ebadf49da7c36170e245600ea7b5..25c190ac148ccc37904346cca859ba10 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2957,6 +2957,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2941,6 +2941,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.passengers = ImmutableList.copyOf(list); } + // Purpur start -+ if (isRidable() && this.passengers.get(0) == entity && entity instanceof Player player) { ++ if (isRidable() && this.passengers.get(0) == passenger && passenger instanceof Player player) { + onMount(player); + this.rider = player; + } + // Purpur end + - this.gameEvent(GameEvent.ENTITY_MOUNT, entity); + this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } - return true; // CraftBukkit -@@ -2998,6 +3005,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + } +@@ -2981,6 +2988,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Spigot end @@ -120,7 +120,7 @@ index 3caebf722bf8ebadf49da7c36170e245600ea7b5..25c190ac148ccc37904346cca859ba10 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4906,4 +4921,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4889,4 +4904,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -191,10 +191,10 @@ index 759713f7c646aaf1a918c87a2834a1d405385dad..c6a06e07f0b4bb29b5f4c70dfa53ff6d 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 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2def8def8 100644 +index e9a31314424d9db911cd9806741222397c3072d7..3c2892b9b2ade76d9d4b081ad5bce4991df11dda 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -219,9 +219,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -207,7 +207,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2 protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -287,7 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -286,7 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); @@ -216,7 +216,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2 this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -338,6 +338,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -337,6 +337,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS); } @@ -224,7 +224,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2696,7 +2697,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2686,7 +2687,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper @@ -233,7 +233,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2 Vec3 vec3d = this.getDeltaMovement(); // Paper start long time = System.nanoTime(); -@@ -3468,8 +3469,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3458,8 +3459,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start @@ -246,7 +246,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3479,6 +3482,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3469,6 +3472,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -527,7 +527,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5 --this.lookAtCooldown; this.getYRotD().ifPresent((yaw) -> { diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfdb83f737d 100644 +index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5bbd38a03 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions; @@ -538,7 +538,7 @@ index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfd import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; -@@ -41,12 +42,59 @@ public class Bat extends AmbientCreature { +@@ -43,12 +44,59 @@ public class Bat extends AmbientCreature { public Bat(EntityType type, Level world) { super(type, world); @@ -598,7 +598,7 @@ index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfd @Override public boolean isFlapping() { return !this.isResting() && this.tickCount % Bat.TICKS_PER_FLAP == 0; -@@ -96,7 +144,7 @@ public class Bat extends AmbientCreature { +@@ -98,7 +146,7 @@ public class Bat extends AmbientCreature { protected void pushEntities() {} public static AttributeSupplier.Builder createAttributes() { @@ -607,7 +607,7 @@ index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfd } public boolean isResting() { -@@ -128,6 +176,14 @@ public class Bat extends AmbientCreature { +@@ -130,6 +178,14 @@ public class Bat extends AmbientCreature { @Override protected void customServerAiStep() { @@ -679,7 +679,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a double d = this.wantedX - this.fish.getX(); double e = this.wantedY - this.fish.getY(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea026411845 100644 +index 55026e1731e41b4e3e4c6a8fef5d96a32051a556..706ae64b894709601dccfb621d3c215f073e98e9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -43,6 +43,7 @@ import net.minecraft.world.entity.EntityType; @@ -690,7 +690,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0 import net.minecraft.world.entity.NeutralMob; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.Pose; -@@ -142,6 +143,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -147,6 +148,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType type, Level world) { super(type, world); this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, 20, 60); @@ -698,7 +698,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0 // Paper start - apply gravity to bees when they get stuck in the void, fixes MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -150,11 +152,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -155,11 +157,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -723,7 +723,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0 } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end -@@ -166,6 +181,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -171,6 +186,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); } @@ -764,7 +764,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0 @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -180,6 +229,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -185,6 +234,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -772,7 +772,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0 this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.399999976158142D, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); -@@ -195,6 +245,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -200,6 +250,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal()); this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); @@ -780,7 +780,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0 this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -877,16 +928,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -881,16 +932,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -916,10 +916,10 @@ index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..e2a98b45e56a368de19bb65e304370a5 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561915a7903 100644 +index 0263acf81330ada1bb8ae7d52a3b04e08d0c4dcb..11082cf272b72123d8917baa9a0d0e5367dca66b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -41,9 +41,27 @@ public class Cow extends Animal { +@@ -42,9 +42,27 @@ public class Cow extends Animal { super(type, world); } @@ -947,7 +947,7 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561 this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -84,6 +102,7 @@ public class Cow extends Animal { +@@ -85,6 +103,7 @@ public class Cow extends Animal { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -955,8 +955,8 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561 ItemStack itemstack = player.getItemInHand(hand); if (itemstack.is(Items.BUCKET) && !this.isBaby()) { -@@ -91,7 +110,7 @@ public class Cow extends Animal { - org.bukkit.event.player.PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand); +@@ -92,7 +111,7 @@ public class Cow extends Animal { + PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand); if (event.isCancelled()) { - return InteractionResult.PASS; @@ -965,10 +965,10 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561 // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f367342852185974 100644 +index 4ec6dc8ddcb940091956fdf014f43832db287d8d..c268b50d43a45a5f80fd776e56484d872d494013 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -78,14 +78,82 @@ public class Dolphin extends WaterAnimal { +@@ -82,14 +82,82 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -1052,7 +1052,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428 @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -160,6 +228,7 @@ public class Dolphin extends WaterAnimal { +@@ -164,6 +232,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -1060,7 +1060,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); -@@ -170,6 +239,7 @@ public class Dolphin extends WaterAnimal { +@@ -174,6 +243,7 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); @@ -1068,7 +1068,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428 this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } -@@ -221,7 +291,7 @@ public class Dolphin extends WaterAnimal { +@@ -225,7 +295,7 @@ public class Dolphin extends WaterAnimal { @Override protected boolean canRide(Entity entity) { @@ -1077,7 +1077,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428 } @Override -@@ -256,6 +326,11 @@ public class Dolphin extends WaterAnimal { +@@ -260,6 +330,11 @@ public class Dolphin extends WaterAnimal { @Override public void tick() { super.tick(); @@ -1090,7 +1090,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 844083101e9763330af0175388f6cdda27a97ecc..c56aaf2d0460d5a4432f893300140d071a95cc38 100644 +index 62604ed2e82afd3603ccac5d9c6e285c431542b1..e0a21a0e8ff29f5b634fcb312881a1a93c6c3a44 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -141,6 +141,44 @@ public class Fox extends Animal implements VariantHolder { @@ -1297,7 +1297,7 @@ index a04374f91f2fbb31219d86b6ae63bcf8fdf7318c..7b0e3b46e3d318ee856d53cfc5532f34 Pair pair = (Pair) optional.get(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 8974c3cdae25bef239a908ce688e153d902c48c5..9f1187f5af0594da1c8450a05e0181815375c782 100644 +index 924ea172cab5178e5754bfe09cc7b83c1a66faa6..c25549d516072bdb362f78efce3da730e08f3ccc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -68,6 +68,23 @@ public class Ocelot extends Animal { @@ -1340,10 +1340,10 @@ index 8974c3cdae25bef239a908ce688e153d902c48c5..9f1187f5af0594da1c8450a05e018181 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b5f6b102f 100644 +index f43c4fed59c4c75540008284ddb197d9a6b5487b..cc12b93b5c95202c4e3417e3a35e5f5c361b9767 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -108,6 +108,32 @@ public class Panda extends Animal { +@@ -111,6 +111,32 @@ public class Panda extends Animal { } @@ -1376,7 +1376,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b @Override public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); -@@ -269,6 +295,7 @@ public class Panda extends Animal { +@@ -272,6 +298,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1384,7 +1384,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true)); -@@ -284,6 +311,7 @@ public class Panda extends Animal { +@@ -287,6 +314,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); @@ -1392,7 +1392,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } -@@ -630,7 +658,7 @@ public class Panda extends Animal { +@@ -633,7 +661,7 @@ public class Panda extends Animal { ItemStack itemstack = player.getItemInHand(hand); if (this.isScared()) { @@ -1401,7 +1401,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level().isClientSide); -@@ -647,7 +675,7 @@ public class Panda extends Animal { +@@ -650,7 +678,7 @@ public class Panda extends Animal { this.setInLove(player); } else { if (this.level().isClientSide || this.isSitting() || this.isInWater()) { @@ -1410,7 +1410,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b } this.tryToSit(); -@@ -666,7 +694,7 @@ public class Panda extends Animal { +@@ -669,7 +697,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1419,7 +1419,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b } } -@@ -706,7 +734,7 @@ public class Panda extends Animal { +@@ -709,7 +737,7 @@ public class Panda extends Animal { return !this.isOnBack() && !this.isScared() && !this.isEating() && !this.isRolling() && !this.isSitting(); } @@ -1428,7 +1428,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b private final Panda panda; -@@ -716,9 +744,9 @@ public class Panda extends Animal { +@@ -719,9 +747,9 @@ public class Panda extends Animal { } @Override @@ -1441,7 +1441,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b } } diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 3cc7af656433117991547476c118b58cff95e8e2..39c5da4e037f57cca0316804d0e363c32a441c6b 100644 +index e1874aaa0065a6e8e6ae043713c22f08b58b5e21..dc6bc1ecb11a8d1776be488de4df7243d196f330 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -129,12 +129,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { +@@ -86,6 +86,7 @@ public class Rabbit extends Animal implements VariantHolder { private boolean wasOnGround; private int jumpDelayTicks; public int moreCarrotTicks; @@ -1673,8 +1673,8 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 public Rabbit(EntityType type, Level world) { super(type, world); -@@ -91,6 +92,51 @@ public class Rabbit extends Animal implements VariantHolder { - this.initializePathFinderGoals(); // CraftBukkit - moved code +@@ -93,9 +94,55 @@ public class Rabbit extends Animal implements VariantHolder { + this.moveControl = new Rabbit.RabbitMoveControl(this); } + // Purpur start @@ -1722,10 +1722,6 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 + } + // Purpur end + - // CraftBukkit start - code from constructor - public void initializePathFinderGoals(){ - this.setSpeedModifier(0.0D); -@@ -100,6 +146,7 @@ public class Rabbit extends Animal implements VariantHolder { @Override public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -1733,7 +1729,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8D)); -@@ -114,6 +161,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -110,6 +157,14 @@ public class Rabbit extends Animal implements VariantHolder { @Override protected float getJumpPower() { @@ -1748,7 +1744,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 float f = 0.3F; if (this.horizontalCollision || this.moveControl.hasWanted() && this.moveControl.getWantedY() > this.getY() + 0.5D) { -@@ -138,7 +193,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -134,7 +189,7 @@ public class Rabbit extends Animal implements VariantHolder { } @Override @@ -1757,7 +1753,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 super.jumpFromGround(); double d0 = this.moveControl.getSpeedModifier(); -@@ -188,6 +243,13 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -184,6 +239,13 @@ public class Rabbit extends Animal implements VariantHolder { @Override public void customServerAiStep() { @@ -1771,7 +1767,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 if (this.jumpDelayTicks > 0) { --this.jumpDelayTicks; } -@@ -472,7 +534,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -468,7 +530,7 @@ public class Rabbit extends Animal implements VariantHolder { } } @@ -1780,7 +1776,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640 private final Rabbit rabbit; private double nextJumpSpeed; -@@ -483,14 +545,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -479,14 +541,14 @@ public class Rabbit extends Animal implements VariantHolder { } @Override @@ -1854,7 +1850,7 @@ index c0e89262c596fbdd0bb3c3f76baccb17a1bb5fcd..0e2f10fa133281477ab96ba743266ade this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 96bfba9d3ccdbf95b8eea4038bf42e6b1430181d..190d123a87ef8ca84e5e0cc485a5cc65fe5ed8e8 100644 +index 8adcfc8f6772a32b5915e4a07100e8eb735f907a..04927f5f06d6dc14ad01319dd22583632c2c511b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -54,12 +54,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -1916,10 +1912,10 @@ index 96bfba9d3ccdbf95b8eea4038bf42e6b1430181d..190d123a87ef8ca84e5e0cc485a5cc65 } diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..fa635fa6828c4d7e0fd80ae00cc21e5598542703 100644 +index f60c4cd0543fd5d50fa7e2c1a9e8381227adb540..7fa03dbc442942b70f374096e346d54089d8f0a0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -50,9 +50,32 @@ public class Squid extends WaterAnimal { +@@ -48,9 +48,32 @@ public class Squid extends WaterAnimal { this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } @@ -1952,7 +1948,7 @@ index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..fa635fa6828c4d7e0fd80ae00cc21e55 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -244,6 +267,38 @@ public class Squid extends WaterAnimal { +@@ -298,6 +321,37 @@ public class Squid extends WaterAnimal { @Override public void tick() { @@ -1987,10 +1983,9 @@ index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..fa635fa6828c4d7e0fd80ae00cc21e55 + return; + } + // Purpur end -+ int i = this.squid.getNoActionTime(); - if (i > 100) { + this.squid.setMovementVector(0.0F, 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7fb90908f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java @@ -2015,7 +2010,7 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 098ae9d8fa3e7cad8473a877decba771f6bd1b36..e8d4fa852f22b7de191dcf26b52f19cb81967fa0 100644 +index d3c15d029d5f003cba3c89f7ea1f3ed4f943f2bd..46b71439efdab39c28d29684913bec2a1ba6491a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -83,6 +83,23 @@ public class Turtle extends Animal { @@ -2097,10 +2092,10 @@ index 098ae9d8fa3e7cad8473a877decba771f6bd1b36..e8d4fa852f22b7de191dcf26b52f19cb this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 27c4dd3605373f08078048fe923a8f6f4d3ccf3b..cb2b8c7cbbe882ae0ca876edaa66bea1d5cd141d 100644 +index 57ceec70bb150afaa66962090b142048d5b50c2f..40d647d6b3132f8273d43a1addcb8c8116c7ec19 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -102,9 +102,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -103,9 +103,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.setPathfindingMalus(BlockPathTypes.DANGER_POWDER_SNOW, -1.0F); } @@ -2133,7 +2128,7 @@ index 27c4dd3605373f08078048fe923a8f6f4d3ccf3b..cb2b8c7cbbe882ae0ca876edaa66bea1 this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); -@@ -116,6 +139,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -117,6 +140,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.goalSelector.addGoal(9, new BegGoal(this, 8.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(10, new RandomLookAroundGoal(this)); @@ -2453,10 +2448,10 @@ index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..af8438ae8c805d3276ef2d82eb39b088 this.level().getProfiler().pop(); this.level().getProfiler().push("tadpoleActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 2c7193e967b4cb5a7c98a760286a2c3791152359..1d9e2c93fa08d6f2f16b81021477294a6de3ce04 100644 +index 7f21d1d400c8a5615ed1a787dcb0680338f8c28d..ec956339b02fc9da53563d67c0eeaa91a3c3a8ee 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -89,6 +89,23 @@ public class Goat extends Animal { +@@ -90,6 +90,23 @@ public class Goat extends Animal { return InstrumentItem.create(Items.GOAT_HORN, (Holder) holderset.getRandomElement(randomsource).get()); } @@ -2480,7 +2475,7 @@ index 2c7193e967b4cb5a7c98a760286a2c3791152359..1d9e2c93fa08d6f2f16b81021477294a @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -192,7 +209,7 @@ public class Goat extends Animal { +@@ -193,7 +210,7 @@ public class Goat extends Animal { @Override protected void customServerAiStep() { this.level().getProfiler().push("goatBrain"); @@ -2490,10 +2485,10 @@ index 2c7193e967b4cb5a7c98a760286a2c3791152359..1d9e2c93fa08d6f2f16b81021477294a this.level().getProfiler().pop(); this.level().getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 79b6e241f425622fdc575b77d8dce7061c0ab783..b948f8ac7072afa7a60cdbb2775b0e2fa0a052e9 100644 +index 9b35a50eb99551f28d45fd5114e0401b4c54646e..55bc8ccc459b093ad48790932381228e24a24f14 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -144,12 +144,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -147,12 +147,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, protected AbstractHorse(EntityType type, Level world) { super(type, world); @@ -2516,7 +2511,7 @@ index 79b6e241f425622fdc575b77d8dce7061c0ab783..b948f8ac7072afa7a60cdbb2775b0e2f this.goalSelector.addGoal(1, new PanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D, AbstractHorse.class)); -@@ -160,6 +170,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -163,6 +173,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, if (this.canPerformRearing()) { this.goalSelector.addGoal(9, new RandomStandGoal(this)); } @@ -2561,7 +2556,7 @@ index 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 3bbb1455773570e3f7f6b8b144d3c589e2705b81..e05f917c462ba5bfb114e402b4f5309f421651fb 100644 +index d28089c37707f323f73e60cb0ebed4e3cdf8c0fd..42d5b435728aa497dc34f0ac984e8637fe96343d 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 @@ -76,7 +76,51 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); } -@@ -322,6 +399,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -324,6 +401,7 @@ public class Creeper extends Monster implements PowerableMob { com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited); if (event.callEvent()) { this.entityData.set(Creeper.DATA_IS_IGNITED, event.isIgnited()); @@ -3461,10 +3456,10 @@ index 8f481e11815d7162dd62a2b850b3d2af6d904519..16486ece9fc415d875ff94d9b806b0b5 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74cf15702bb 100644 +index eaf45b502a698e26a703b93e62989a338479496e..d88ad3f0513f9ab2ffc738b6389cf268f085ca6d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -92,9 +92,27 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -96,9 +96,27 @@ public class EnderMan extends Monster implements NeutralMob { this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); } @@ -3492,7 +3487,7 @@ index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74c this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); -@@ -102,6 +120,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -106,6 +124,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this)); this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); @@ -3500,7 +3495,7 @@ index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74c this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); -@@ -283,7 +302,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -287,7 +306,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep() { @@ -3509,7 +3504,7 @@ index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74c float f = this.getLightLevelDependentMagicValue(); if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper -@@ -404,6 +423,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -408,6 +427,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; @@ -4102,10 +4097,10 @@ index cec545c3baa6599d47b9cf1a4b97de8771062a22..31d204d8d81ccc30371070af3678d82d this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 75d661c23cde1ba09ea0b673860c9659c32ef77e..4aa0f1a4848411a83b5d211e799c30e743b148fe 100644 +index 842146548fc42c3b67a1196620b096d6c500b88d..3919ed8b4d91b9d58acbdd72740565352e7c52ec 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -65,14 +65,39 @@ public class Ravager extends Raider { +@@ -68,14 +68,39 @@ public class Ravager extends Raider { this.setPathfindingMalus(BlockPathTypes.LEAVES, 0.0F); } @@ -4145,7 +4140,7 @@ index 75d661c23cde1ba09ea0b673860c9659c32ef77e..4aa0f1a4848411a83b5d211e799c30e7 this.targetSelector.addGoal(2, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> { -@@ -150,7 +175,7 @@ public class Ravager extends Raider { +@@ -153,7 +178,7 @@ public class Ravager extends Raider { @Override public void aiStep() { super.aiStep(); @@ -4155,7 +4150,7 @@ index 75d661c23cde1ba09ea0b673860c9659c32ef77e..4aa0f1a4848411a83b5d211e799c30e7 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index cdccbe68fb591181517893a5dd1e93489b578f4d..d4b318fc6382cd043e34db0d12d78e3561023dd5 100644 +index d2073de07bdad71b20e05046577b16649123967b..3e5548d0489b13b4a1d5c22c9d3bf19ead87928e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -98,12 +98,31 @@ public class Shulker extends AbstractGolem implements VariantHolder { @@ -222,7 +222,7 @@ index 7b0e3b46e3d318ee856d53cfc5532f3432447438..780a11339d2492dd607e3ef91867ffbb public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 9f1187f5af0594da1c8450a05e0181815375c782..e67c8756455d1388069dc41e8d968800b631be4e 100644 +index c25549d516072bdb362f78efce3da730e08f3ccc..20da70182312f4c30e21528add44540ea2b60e42 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -85,6 +85,11 @@ public class Ocelot extends Animal { @@ -238,10 +238,10 @@ index 9f1187f5af0594da1c8450a05e0181815375c782..e67c8756455d1388069dc41e8d968800 return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 490a2b416366136c082371d39beaa65b5f6b102f..b475b278dcedef881b8612f615a057719e3466be 100644 +index cc12b93b5c95202c4e3417e3a35e5f5c361b9767..81f502b19cfcfcd39f3d3b5754b6bce9c2645ccb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -134,6 +134,12 @@ public class Panda extends Animal { +@@ -137,6 +137,12 @@ public class Panda extends Animal { } // Purpur end @@ -254,7 +254,7 @@ index 490a2b416366136c082371d39beaa65b5f6b102f..b475b278dcedef881b8612f615a05771 @Override public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); -@@ -635,7 +641,10 @@ public class Panda extends Animal { +@@ -638,7 +644,10 @@ public class Panda extends Animal { public void setAttributes() { if (this.isWeak()) { @@ -267,7 +267,7 @@ index 490a2b416366136c082371d39beaa65b5f6b102f..b475b278dcedef881b8612f615a05771 if (this.isLazy()) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 39c5da4e037f57cca0316804d0e363c32a441c6b..361299312e883ca8377790fba5a89227e1c8b82f 100644 +index dc6bc1ecb11a8d1776be488de4df7243d196f330..1e0d8d276ef5eb2cc11a1effb5808de7f8f211d5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -191,6 +191,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { + } + wasOnGround = onGround; } - // Purpur end - ++ + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.rabbitMaxHealth); + } -+ - // CraftBukkit start - code from constructor - public void initializePathFinderGoals(){ - this.setSpeedModifier(0.0D); + // Purpur end + + @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java index 87c442fb198cad8671ad1419e589a5a67c4fdca8..742805994f29a18af444912b10af631d2c60cacf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java @@ -379,7 +379,7 @@ index 0e2f10fa133281477ab96ba743266ade4d5f2119..3d212b09258b9777079d4bc7ce950f52 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 190d123a87ef8ca84e5e0cc485a5cc65fe5ed8e8..a8b411cc3dd1f61b4f949862a077e87e26e424de 100644 +index 04927f5f06d6dc14ad01319dd22583632c2c511b..3ffd9dd16c80399842ba138ed60abd66cd312dcb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -71,6 +71,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -395,10 +395,10 @@ index 190d123a87ef8ca84e5e0cc485a5cc65fe5ed8e8..a8b411cc3dd1f61b4f949862a077e87e protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index fa635fa6828c4d7e0fd80ae00cc21e5598542703..42ca9df0735b4f928fbbf1e695d1756f77be52fc 100644 +index 7fa03dbc442942b70f374096e346d54089d8f0a0..913b66be2111da862e706d4978825c64cfe8b00b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -72,6 +72,11 @@ public class Squid extends WaterAnimal { +@@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { } // Purpur end @@ -427,7 +427,7 @@ index 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index e8d4fa852f22b7de191dcf26b52f19cb81967fa0..9aa764686433ad8d58191f96ab22d30154058af7 100644 +index 46b71439efdab39c28d29684913bec2a1ba6491a..6ae82b6293f236fc926f411de2badc496b35399b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -100,6 +100,11 @@ public class Turtle extends Animal { @@ -443,10 +443,10 @@ index e8d4fa852f22b7de191dcf26b52f19cb81967fa0..9aa764686433ad8d58191f96ab22d301 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index cb2b8c7cbbe882ae0ca876edaa66bea1d5cd141d..c9ad084ce93eb618261221c7e19450c06fb8a5f5 100644 +index 40d647d6b3132f8273d43a1addcb8c8116c7ec19..1a27e811169a58515c796344ffa1bb3c46d1014a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -124,6 +124,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -125,6 +125,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end @@ -503,10 +503,10 @@ index 76a38d235de3499ca19c3ccacd9289c7355012db..5ec8815cc69f5abe03a29224650edfb1 protected SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index b948f8ac7072afa7a60cdbb2775b0e2fa0a052e9..05405f22fa9001560eb3a6701f3bb0179a584fae 100644 +index 55bc8ccc459b093ad48790932381228e24a24f14..296cc895fbd090b4d43807f4ca393f6dd853e0ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -157,6 +157,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -160,6 +160,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, } // Purpur end @@ -551,7 +551,7 @@ index b948f8ac7072afa7a60cdbb2775b0e2fa0a052e9..05405f22fa9001560eb3a6701f3bb017 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur -@@ -1264,7 +1302,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -1266,7 +1304,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, entityData = new AgeableMob.AgeableMobGroupData(0.2F); } @@ -613,7 +613,7 @@ index 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464e protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 e05f917c462ba5bfb114e402b4f5309f421651fb..9ba0218910d7e5db9e735c50f2e60b5a1073816b 100644 +index 42d5b435728aa497dc34f0ac984e8637fe96343d..967d1ff37ecc9a2cf81a1a6be8ceeb96b42ff847 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 @@ -122,6 +122,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder 676.0D) { 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 9ba0218910d7e5db9e735c50f2e60b5a1073816b..071089e3ec438c323ea715e74911df4a465a7017 100644 +index 967d1ff37ecc9a2cf81a1a6be8ceeb96b42ff847..72fe2dd69a9ae51e14ec91a83eac2dd74bd76cca 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 @@ -73,6 +73,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); -@@ -169,7 +170,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder) server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -3157,5 +3162,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3186,5 +3191,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } diff --git a/patches/server/0013-Bring-back-server-name.patch b/patches/server/0013-Bring-back-server-name.patch index 29d0f4c5c..238e445cc 100644 --- a/patches/server/0013-Bring-back-server-name.patch +++ b/patches/server/0013-Bring-back-server-name.patch @@ -17,10 +17,10 @@ index 818289e831e3dad29345c43265e2efd7689bc500..1ea3012995c738c67b31e997c138f824 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 8f4e0d7a75634e4b12163b423ba6af76bde74de3..667262ec2a7b53a87e31505e58eff92510ab590b 100644 +index 0bc0718dc37cc087b99d35f076f804ca734a555f..8a98fab3e5052eb170653b869479a15f46643a20 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3083,4 +3083,11 @@ public final class CraftServer implements Server { +@@ -3097,4 +3097,11 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index 8ccd9d202..080d73092 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 766ee0148da5554d4c1f675af595668f2de99f60..18b84dc559a942848bef7a7622f411ce0352c08b 100644 +index 0d07e666f4da002a353d03844d62a0e3aac44d9d..92745269118d8a0cb91cbbebdd7700f7737d2b9a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -254,6 +254,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { private boolean skipDropExperience; // CraftBukkit start public int expToDrop; @@ -16,7 +16,7 @@ index 766ee0148da5554d4c1f675af595668f2de99f60..18b84dc559a942848bef7a7622f411ce public boolean forceDrops; public ArrayList drops = new ArrayList(); public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -354,7 +355,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.tryAddSoulSpeed(); } @@ -25,7 +25,7 @@ index 766ee0148da5554d4c1f675af595668f2de99f60..18b84dc559a942848bef7a7622f411ce double d1 = this.getX(); double d2 = this.getY(); double d3 = this.getZ(); -@@ -369,7 +370,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable { d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; } @@ -34,7 +34,7 @@ index 766ee0148da5554d4c1f675af595668f2de99f60..18b84dc559a942848bef7a7622f411ce double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2064,7 +2065,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2054,7 +2055,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -44,10 +44,10 @@ index 766ee0148da5554d4c1f675af595668f2de99f60..18b84dc559a942848bef7a7622f411ce } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 05405f22fa9001560eb3a6701f3bb0179a584fae..8bf1105601f000142246554d177965d1dc6a3339 100644 +index 296cc895fbd090b4d43807f4ca393f6dd853e0ce..8400f02a37bdef4a9f92879a6b186ebe1f2f145e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -381,7 +381,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -384,7 +384,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @Override protected int calculateFallDamage(float fallDistance, float damageMultiplier) { @@ -69,10 +69,10 @@ index 3f7d21a5be726d301e1bcaa11f1788b51c23a7cd..db95323da1aef267aa4fbe56aaff63cb // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 6097a5ca2b2aa7675e1db326190c77747db7d41e..859ed524f3836320a078cb3e987753d40da77170 100644 +index 7e81ed767bab14eeba1492a05c7ce43cfc2abd5b..c4e94cea3d97d4da342123e10e62ac61a74957f1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1072,4 +1072,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1099,4 +1099,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0016-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch index 7d3bec2c0..cae2930e3 100644 --- a/patches/server/0016-Lagging-threshold.patch +++ b/patches/server/0016-Lagging-threshold.patch @@ -5,7 +5,7 @@ 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 a2b85017236f95b97d5d8017b0ff52db7537f090..303d08e0756525d25c450ae6e2a6083e4e5aa600 100644 +index 80c085498d9b61bae2e06df873c1ad66cc7d8ae5..59da6baab74e0a40e93fa02ce4ce274524af9765 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -307,6 +307,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { +@@ -468,10 +468,23 @@ public class Rabbit extends Animal implements VariantHolder { } this.setVariant(entityrabbit_variant); diff --git a/patches/server/0035-Cows-eat-mushrooms.patch b/patches/server/0035-Cows-eat-mushrooms.patch index 7254633dd..0b0b4e9f8 100644 --- a/patches/server/0035-Cows-eat-mushrooms.patch +++ b/patches/server/0035-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index d26a44d634fe02e595654e573d02243b5eb66086..b94ec05ffa0a6f9e7368731d360319ffe1b10e3f 100644 +index 621fe1c08dda65934437eeab679b6e5cd2d11d3d..28c7e240b7dd1957ccb6a45608b1d052a32dc18a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -24,7 +24,7 @@ index d26a44d634fe02e595654e573d02243b5eb66086..b94ec05ffa0a6f9e7368731d360319ff import net.minecraft.world.level.block.state.BlockState; // CraftBukkit start import org.bukkit.craftbukkit.event.CraftEventFactory; -@@ -69,6 +71,7 @@ public class Cow extends Animal { +@@ -70,6 +72,7 @@ public class Cow extends Animal { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); @@ -32,7 +32,7 @@ index d26a44d634fe02e595654e573d02243b5eb66086..b94ec05ffa0a6f9e7368731d360319ff this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); -@@ -124,6 +127,10 @@ public class Cow extends Animal { +@@ -125,6 +128,10 @@ public class Cow extends Animal { player.setItemInHand(hand, itemstack1); return InteractionResult.sidedSuccess(this.level().isClientSide); @@ -43,7 +43,7 @@ index d26a44d634fe02e595654e573d02243b5eb66086..b94ec05ffa0a6f9e7368731d360319ff } else { return super.mobInteract(player, hand); } -@@ -139,4 +146,69 @@ public class Cow extends Animal { +@@ -140,4 +147,69 @@ public class Cow extends Animal { protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return this.isBaby() ? dimensions.height * 0.95F : 1.3F; } diff --git a/patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch index 043370d7f..ae73dc236 100644 --- a/patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 18b84dc559a942848bef7a7622f411ce0352c08b..2123b296b69f05601b0a6c51c8ad58ca263997f8 100644 +index 92745269118d8a0cb91cbbebdd7700f7737d2b9a..b3699225e2dc77c6d201e361c8d447395c3f3e62 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1811,6 +1811,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1801,6 +1801,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 18b84dc559a942848bef7a7622f411ce0352c08b..2123b296b69f05601b0a6c51c8ad58ca this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1819,6 +1820,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1809,6 +1810,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch index 6926dad8a..84a3e2205 100644 --- a/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0049-Add-enderman-and-creeper-griefing-controls.patch @@ -5,23 +5,23 @@ Subject: [PATCH] Add enderman and creeper griefing controls 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 4f374a2b1aab20fe2523df716a9d622c28749b7a..04143ca4d451132e6dcd764508e55c567994497d 100644 +index 9042337dcd8279ccaa416d3cd440c0f0d5a85d40..0ef939a6bc9c0c491c0b71799ea583cb76c6d2fb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -361,7 +361,7 @@ public class Creeper extends Monster implements PowerableMob { - this.level().getCraftServer().getPluginManager().callEvent(event); +@@ -362,7 +362,7 @@ public class Creeper extends Monster implements PowerableMob { if (!event.isCancelled()) { - this.dead = true; -- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); -+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // Purpur - this.discard(); - this.spawnLingeringCloud(); - } else { + // CraftBukkit end + this.dead = true; +- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit ++ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Purpur + this.discard(); + this.spawnLingeringCloud(); + // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 585cd908cc6f83007dc9edcd332a99664080b6d6..da14c848694c7fa86ea3af082d39e11234fb57c6 100644 +index abf975d7f28832aba1fbb9d326f464d4ba3c63d2..41eafe7e8e2b73d97152376ce482c39d747c97f3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -536,6 +536,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -540,6 +540,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { @@ -29,7 +29,7 @@ index 585cd908cc6f83007dc9edcd332a99664080b6d6..da14c848694c7fa86ea3af082d39e112 return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0); } -@@ -583,6 +584,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -585,6 +586,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { diff --git a/patches/server/0055-Configurable-void-damage-height-and-damage.patch b/patches/server/0055-Configurable-void-damage-height-and-damage.patch index 1928fcd58..d2caff62b 100644 --- a/patches/server/0055-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0055-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 000cd8cfab7b298feaf6cf00b29f5e65b0c7a2bd..3bf477438d30f6ea3bbf3cbc33cf0b5743452ffd 100644 +index 2f66eeaba87af74e5820ad496b9e8b7440c47c80..11d1d0402f65c2ae8ea77a0bfa188fe46c9a3a7e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -914,7 +914,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -18,10 +18,10 @@ index 000cd8cfab7b298feaf6cf00b29f5e65b0c7a2bd..3bf477438d30f6ea3bbf3cbc33cf0b57 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // 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 2123b296b69f05601b0a6c51c8ad58ca263997f8..0d891511e9c34afbb970a2b2a560f6cd18d04faa 100644 +index b3699225e2dc77c6d201e361c8d447395c3f3e62..b8e6d0bd2ba18d7e0bf7cd78db8f98d4f1467d71 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2506,7 +2506,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2496,7 +2496,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { diff --git a/patches/server/0056-Add-canSaveToDisk-to-Entity.patch b/patches/server/0056-Add-canSaveToDisk-to-Entity.patch index 5b8fd007d..3e7f4d7e9 100644 --- a/patches/server/0056-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0056-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 3bf477438d30f6ea3bbf3cbc33cf0b5743452ffd..03811b4dca610cf0fa3dc6ca0cc7f47d6f8b77ee 100644 +index 11d1d0402f65c2ae8ea77a0bfa188fe46c9a3a7e..7f3fafff2b13f4bc544147d3157d66786c4d895c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -492,6 +492,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,10 +20,10 @@ index 3bf477438d30f6ea3bbf3cbc33cf0b5743452ffd..03811b4dca610cf0fa3dc6ca0cc7f47d return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 71916a0e55f12a2cbb2bee85ededd15126e1c451..cead7873795c5277634db3c5ee29a125e48bbb90 100644 +index 937f57d8af629c4e913d7ccabf6adab15f91d3d0..f40ab9d5b18c189ba9b572e49243640bd44362d1 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -113,6 +113,11 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -115,6 +115,11 @@ public class WitherSkull extends AbstractHurtingProjectile { return target != this.getRider() && super.canHitEntity(target); } diff --git a/patches/server/0059-Mending-mends-most-damages-equipment-first.patch b/patches/server/0059-Mending-mends-most-damages-equipment-first.patch index 691860c74..8f986ab3e 100644 --- a/patches/server/0059-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0059-Mending-mends-most-damages-equipment-first.patch @@ -18,10 +18,10 @@ index eca634792d2a7cc649675e3394e84dbaf1453905..2bd576849403bc2cfae298c221061619 if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index adb7220be617d6d9f2cdd7fbe4fa2dd24cc7d142..7db5657885b76885d48d0f231a4aad7b77724868 100644 +index ae9b821d71d2868ba4eb3c73558fdcd6caf264e3..11d6c0a2089ff8e95b94ded88ae11360ffd9c01e 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -578,6 +578,16 @@ public final class ItemStack { +@@ -579,6 +579,16 @@ public final class ItemStack { return this.isDamageableItem() && this.getDamageValue() > 0; } diff --git a/patches/server/0060-Add-5-second-tps-average-in-tps.patch b/patches/server/0060-Add-5-second-tps-average-in-tps.patch index 55f5ef8a0..060507ea4 100644 --- a/patches/server/0060-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0060-Add-5-second-tps-average-in-tps.patch @@ -27,7 +27,7 @@ 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 3ff9cc3371601d3db513ebb35271d9bc1207af4b..6e37a7b628466397b6b29b507f7aff555a2063b2 100644 +index 1b192ce469ace3379ae10cd64b25118a58627e75..977dd212701e981a92b6c72f31fdc590ff38633f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,7 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { @@ -66,7 +66,7 @@ index 7db5657885b76885d48d0f231a4aad7b77724868..190a446ba6c41a8da7e11b953c8fb2cb int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -662,6 +662,12 @@ public final class ItemStack { +@@ -663,6 +663,12 @@ public final class ItemStack { if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent breakCallback.accept(entity); Item item = this.getItem(); diff --git a/patches/server/0062-Item-entity-immunities.patch b/patches/server/0062-Item-entity-immunities.patch index 53bb6cd5c..2a4ad21d8 100644 --- a/patches/server/0062-Item-entity-immunities.patch +++ b/patches/server/0062-Item-entity-immunities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index e921b6db8905a8676a45e36564d877075afb081f..1a4658db86e89d57b0a52923773a0983ff60989c 100644 +index 37c10d6a392d0400a7024bdd5214eb5e83aa3e82..a0fcbb72947ddb5526da4a4c354cd4c6ee65184c 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -70,7 +70,7 @@ public class ServerEntity { @@ -18,10 +18,10 @@ index e921b6db8905a8676a45e36564d877075afb081f..1a4658db86e89d57b0a52923773a0983 public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> 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 63f8f2dfc2afddcf3c4960d60e65cb8e29507223..7bda44003604b8a0ae8dd571c7f3e79eb42a4822 100644 +index 80fc7918cb294b0d88a293bd6a920441cb55c3ad..d045877bfb0f364a43c8448cad21cc39d0565964 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 implements TraceableEntity { +@@ -56,6 +56,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public boolean canMobPickup = true; // Paper private int despawnRate = -1; // Paper public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper @@ -34,7 +34,7 @@ index 63f8f2dfc2afddcf3c4960d60e65cb8e29507223..7bda44003604b8a0ae8dd571c7f3e79e public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -353,6 +359,15 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -358,6 +364,15 @@ public class ItemEntity extends Entity implements TraceableEntity { return false; } else if (!this.getItem().getItem().canBeHurtBy(source)) { return false; @@ -50,9 +50,9 @@ index 63f8f2dfc2afddcf3c4960d60e65cb8e29507223..7bda44003604b8a0ae8dd571c7f3e79e } else if (this.level().isClientSide) { return true; } else { -@@ -551,6 +566,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -555,6 +570,12 @@ public class ItemEntity extends Entity implements TraceableEntity { + // com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit // Paper - Remove check this.getEntityData().set(ItemEntity.DATA_ITEM, stack); - this.getEntityData().markDirty(ItemEntity.DATA_ITEM); // CraftBukkit - SPIGOT-4591, must mark dirty this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper + // Purpur start + if (level().purpurConfig.itemImmuneToCactus.contains(stack.getItem())) immuneToCactus = true; diff --git a/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index a076623ee..222f793f7 100644 --- a/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0074-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,10 +36,10 @@ index 373f3f7643bd3ee49f3b10f9e963b39b28c39894..91df087b49d39b318af85dcbcf2db600 + // 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 ada73c400539f55f7fb6203eb32c58b772dc666f..414156a66c41f6515b7fe27d16546691c14fd52a 100644 +index 35e3cac34a6a508fbf3971cff9ac07db48ddeaae..8c0ef795691aa17e9522b2deda794bcdf38c64b6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -428,6 +428,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable { double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { diff --git a/patches/server/0079-Totems-work-in-inventory.patch b/patches/server/0079-Totems-work-in-inventory.patch index 2f9027da5..877e4c90f 100644 --- a/patches/server/0079-Totems-work-in-inventory.patch +++ b/patches/server/0079-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 414156a66c41f6515b7fe27d16546691c14fd52a..3b342b2349ba5f1228c8a597d6176060009a4d94 100644 +index 8c0ef795691aa17e9522b2deda794bcdf38c64b6..6edb9c371d77fa52b08f0eaf738d0cb4b0af86ce 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1600,6 +1600,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1590,6 +1590,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } diff --git a/patches/server/0082-Dispensers-place-anvils-option.patch b/patches/server/0082-Dispensers-place-anvils-option.patch index 930334b92..074adf536 100644 --- a/patches/server/0082-Dispensers-place-anvils-option.patch +++ b/patches/server/0082-Dispensers-place-anvils-option.patch @@ -5,18 +5,10 @@ Subject: [PATCH] Dispensers place anvils option diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e22f105d6 100644 +index 70aade6a8d36f8376cc567800258ea6fabb0607f..d44fde7e44cc862253fe577eb0753524ab7a39dc 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -52,6 +52,7 @@ import net.minecraft.world.item.SpawnEggItem; - import net.minecraft.world.item.alchemy.PotionUtils; - import net.minecraft.world.item.alchemy.Potions; - import net.minecraft.world.level.Level; -+import net.minecraft.world.level.block.AnvilBlock; - import net.minecraft.world.level.block.BaseFireBlock; - import net.minecraft.world.level.block.BeehiveBlock; - import net.minecraft.world.level.block.Block; -@@ -1166,6 +1167,23 @@ public interface DispenseItemBehavior { +@@ -1186,6 +1186,23 @@ public interface DispenseItemBehavior { } } }); @@ -30,7 +22,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e + BlockPos pos = dispenser.getPos().relative(facing); + BlockState state = level.getBlockState(pos); + if (state.isAir()) { -+ level.setBlockAndUpdate(pos, Blocks.ANVIL.defaultBlockState().setValue(AnvilBlock.FACING, facing.getAxis() == Direction.Axis.Y ? Direction.NORTH : facing.getClockWise())); ++ level.setBlockAndUpdate(pos, Blocks.ANVIL.defaultBlockState().setValue(net.minecraft.world.level.block.AnvilBlock.FACING, facing.getAxis() == Direction.Axis.Y ? Direction.NORTH : facing.getClockWise())); + stack.shrink(1); + } + return stack; diff --git a/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch index 181bde154..3ca8af280 100644 --- a/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0084-Add-option-to-disable-dolphin-treasure-searching.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable dolphin treasure searching diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 08e9fd3581578195e5df079b086811c5964fd17a..7b2674233d0b8582243448c49d1c47271544d0b8 100644 +index 0ae0f8cc64578d0c51fb050b8e726e483a17e50f..f7d5ad85eccedd30209e758aa52c24010531ec48 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal { +@@ -485,6 +485,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { diff --git a/patches/server/0085-Short-enderman-height.patch b/patches/server/0085-Short-enderman-height.patch index d01992b8a..56df0e185 100644 --- a/patches/server/0085-Short-enderman-height.patch +++ b/patches/server/0085-Short-enderman-height.patch @@ -19,10 +19,10 @@ index 08beb4c4dfcb0986cdebb4d0cacc25e4e9c17674..e413aa4650297ce2109beb6319f52fb4 private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index da14c848694c7fa86ea3af082d39e11234fb57c6..92c28c7cdfc987afc5f5281a77f218fdfab441b0 100644 +index 41eafe7e8e2b73d97152376ce482c39d747c97f3..fef88df5d11943b5e8b1234678ede7a9e36205ff 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -429,6 +429,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -433,6 +433,7 @@ public class EnderMan extends Monster implements NeutralMob { if (this.isInvulnerableTo(source)) { return false; } else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage @@ -31,7 +31,7 @@ index da14c848694c7fa86ea3af082d39e11234fb57c6..92c28c7cdfc987afc5f5281a77f218fd boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e829e215d1fe80cdaf9162268011912081f4c5ee..db4c85cae58805cfa2a460e33a13e85abc8e593d 100644 +index 17270d303cc41822ca4073ea0bb23c05b0409121..59a338d430602a651db8b576538b9c8417979d4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -244,6 +244,12 @@ public class PurpurConfig { diff --git a/patches/server/0086-Stop-squids-floating-on-top-of-water.patch b/patches/server/0086-Stop-squids-floating-on-top-of-water.patch index aa739b975..0f1b26649 100644 --- a/patches/server/0086-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0086-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 03811b4dca610cf0fa3dc6ca0cc7f47d6f8b77ee..59f0880a4ccdea2f0c95e0411bf149d76e866678 100644 +index 7f3fafff2b13f4bc544147d3157d66786c4d895c..36b375a67b1bc9baa4f3cef8e63bd9f6448f1335 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4372,6 +4372,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4355,6 +4355,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); } @@ -22,10 +22,10 @@ index 03811b4dca610cf0fa3dc6ca0cc7f47d6f8b77ee..59f0880a4ccdea2f0c95e0411bf149d7 if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip return false; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 42ca9df0735b4f928fbbf1e695d1756f77be52fc..de0a015cc944c36358fc34a3142ecbf9d2a332b5 100644 +index 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308bbb8ccf8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -77,6 +77,12 @@ public class Squid extends WaterAnimal { +@@ -75,6 +75,12 @@ public class Squid extends WaterAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.squidMaxHealth); } diff --git a/patches/server/0088-Entities-can-use-portals-configuration.patch b/patches/server/0088-Entities-can-use-portals-configuration.patch index bd8ceec68..a4b9d9600 100644 --- a/patches/server/0088-Entities-can-use-portals-configuration.patch +++ b/patches/server/0088-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 59f0880a4ccdea2f0c95e0411bf149d76e866678..625cee30e80123d502851bbfb30c89903c2d0fbb 100644 +index 36b375a67b1bc9baa4f3cef8e63bd9f6448f1335..7884f5ef86fc560349689ae5f034799f50ad811b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3079,7 +3079,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3062,7 +3062,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 59f0880a4ccdea2f0c95e0411bf149d76e866678..625cee30e80123d502851bbfb30c8990 if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3775,7 +3775,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3758,7 +3758,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean canChangeDimensions() { diff --git a/patches/server/0089-LivingEntity-broadcastItemBreak.patch b/patches/server/0089-LivingEntity-broadcastItemBreak.patch index 7b802981c..cda7639b1 100644 --- a/patches/server/0089-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0089-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 859ed524f3836320a078cb3e987753d40da77170..a26a622a4782b2f1227ffac215561c86e6c1b0cb 100644 +index c4e94cea3d97d4da342123e10e62ac61a74957f1..3e261a1617ff9e0d2f4745769f819292d19200c4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1083,5 +1083,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1110,5 +1110,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0096-Flying-squids-Oh-my.patch b/patches/server/0096-Flying-squids-Oh-my.patch index fee89a4a2..ad0431fb3 100644 --- a/patches/server/0096-Flying-squids-Oh-my.patch +++ b/patches/server/0096-Flying-squids-Oh-my.patch @@ -21,10 +21,10 @@ index 730958dab7f074930cdccb88a89aa26e2b6a112b..b1ba0f24dd6f1ec4c60208564e4eb84b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index de0a015cc944c36358fc34a3142ecbf9d2a332b5..1431d7f295614641c1a5a5197f4bac3fd0cd9d71 100644 +index f68c18b6645981126329b58379946308bbb8ccf8..80bdc93cba675d6c1286618f14fc33e0344c601f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -83,6 +83,15 @@ public class Squid extends WaterAnimal { +@@ -81,6 +81,15 @@ public class Squid extends WaterAnimal { return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck); } @@ -40,23 +40,23 @@ index de0a015cc944c36358fc34a3142ecbf9d2a332b5..1431d7f295614641c1a5a5197f4bac3f @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -155,6 +164,7 @@ public class Squid extends WaterAnimal { +@@ -153,6 +162,7 @@ public class Squid extends WaterAnimal { } if (this.isInWaterOrBubble()) { + if (canFly()) setNoGravity(!wasTouchingWater); // Purpur - if (this.tentacleMovement < 3.1415927F) { - float f = this.tentacleMovement / 3.1415927F; - -@@ -314,7 +324,7 @@ public class Squid extends WaterAnimal { - + if (this.tentacleMovement < (float)Math.PI) { + float f = this.tentacleMovement / (float)Math.PI; + this.tentacleAngle = Mth.sin(f * f * (float)Math.PI) * (float)Math.PI * 0.25F; +@@ -366,7 +376,7 @@ public class Squid extends WaterAnimal { + int i = this.squid.getNoActionTime(); if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); - } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.wasTouchingWater || !this.squid.hasMovementVector()) { + } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.isInWater() || !this.squid.hasMovementVector()) { // Purpur - float f = this.squid.getRandom().nextFloat() * 6.2831855F; - float f1 = Mth.cos(f) * 0.2F; - float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; + float f = this.squid.getRandom().nextFloat() * ((float)Math.PI * 2F); + float g = Mth.cos(f) * 0.2F; + float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 3dad224fe58084b7b37863d44f25aa206bc632c6..1e218cf6b6675cb606c7832e90bcd952ce97db3a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0102-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0102-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 1307efd21..6917d7622 100644 --- a/patches/server/0102-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0102-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index d446b440e2bc5b73362fc3d30a10d2e52fde68e1..d4e3a32a0f9b49bff64cb43d77727ce3cae95f09 100644 +index 1776906e886edd511bfbe96b8a345438a3cd66f8..7efae60a9a9269703a1fa7cd280b5b96557ec73e 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -115,6 +115,14 @@ public class FarmBlock extends Block { @@ -20,7 +20,7 @@ index d446b440e2bc5b73362fc3d30a10d2e52fde68e1..d4e3a32a0f9b49bff64cb43d77727ce3 + } + } + // Purpur end - if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { + if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0103-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0103-Add-adjustable-breeding-cooldown-to-config.patch index f33647287..e9a40612a 100644 --- a/patches/server/0103-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0103-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 1430f598073aab7387cf5985a7b3a84d3f53548c..9f6728184dffc4b5a93900ac6e8411f967eed26d 100644 +index c2f61ed153260692c96af4f20bc5b7d55cbbc380..43f01ce3064fdc0bb46beab6ea001942f1506200 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -151,7 +151,7 @@ public abstract class Animal extends AgeableMob { +@@ -154,7 +154,7 @@ public abstract class Animal extends AgeableMob { if (this.isFood(itemstack)) { int i = this.getAge(); @@ -17,7 +17,7 @@ index 1430f598073aab7387cf5985a7b3a84d3f53548c..9f6728184dffc4b5a93900ac6e8411f9 this.usePlayerItem(player, hand, itemstack); this.setInLove(player); return InteractionResult.SUCCESS; -@@ -233,12 +233,20 @@ public abstract class Animal extends AgeableMob { +@@ -236,12 +236,20 @@ public abstract class Animal extends AgeableMob { AgeableMob entityageable = this.getBreedOffspring(world, other); if (entityageable != null) { @@ -39,7 +39,7 @@ index 1430f598073aab7387cf5985a7b3a84d3f53548c..9f6728184dffc4b5a93900ac6e8411f9 + // CraftBukkit start - call EntityBreedEvent + // Purpur end int experience = this.getRandom().nextInt(7) + 1; - org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); + EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java index 6b661982b217ae120d72ede3e19e82fbd3ebb69e..290d9fbeb71675d897b78d5c2b98ab477ce9f5fd 100644 diff --git a/patches/server/0104-Make-entity-breeding-times-configurable.patch b/patches/server/0104-Make-entity-breeding-times-configurable.patch index 0bb5fd22a..0564b10ab 100644 --- a/patches/server/0104-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0104-Make-entity-breeding-times-configurable.patch @@ -5,27 +5,27 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 0951c04533e7c39b969d041271684355770b53c2..02d4ba2ccdce99ca97614baa7c8e49213126af96 100644 +index 645d204fe2c727637a6a547aad7d4db1279628ae..8be2f612c9e8a64b0aad6bb54450cdfb12b3c19e 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -@@ -123,8 +123,10 @@ public class VillagerMakeLove extends Behavior { +@@ -127,8 +127,10 @@ public class VillagerMakeLove extends Behavior { return Optional.empty(); } - // CraftBukkit end + // Move age setting down - parent.setAge(6000); - partner.setAge(6000); + // Purpur start + parent.setAge(world.purpurConfig.villagerBreedingTicks); + partner.setAge(world.purpurConfig.villagerBreedingTicks); + // Purpur end - world.addFreshEntityWithPassengers(entityvillager2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason + world.addFreshEntityWithPassengers(entityvillager2, CreatureSpawnEvent.SpawnReason.BREEDING); + // CraftBukkit end world.broadcastEntityEvent(entityvillager2, (byte) 12); - return Optional.of(entityvillager2); diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 9f6728184dffc4b5a93900ac6e8411f967eed26d..15feb1baed21b2ed3fb90d68aa9b2b97aa664b15 100644 +index 43f01ce3064fdc0bb46beab6ea001942f1506200..8773b1072016a3bbf025959e9ab827704ec17fc6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -40,6 +40,7 @@ public abstract class Animal extends AgeableMob { +@@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @Nullable public UUID loveCause; public ItemStack breedItem; // CraftBukkit - Add breedItem variable @@ -33,7 +33,7 @@ index 9f6728184dffc4b5a93900ac6e8411f967eed26d..15feb1baed21b2ed3fb90d68aa9b2b97 protected Animal(EntityType type, Level world) { super(type, world); -@@ -274,8 +275,10 @@ public abstract class Animal extends AgeableMob { +@@ -277,8 +278,10 @@ public abstract class Animal extends AgeableMob { entityplayer.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); } // Paper @@ -47,10 +47,10 @@ index 9f6728184dffc4b5a93900ac6e8411f967eed26d..15feb1baed21b2ed3fb90d68aa9b2b97 entityanimal.resetLove(); worldserver.broadcastEntityEvent(this, (byte) 18); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index aaf6f76cefc71f714bc9aeddc22149110ee76197..944497d617f3c6474e51fa8146dd9f0c407b1b48 100644 +index e7f95639a442cf602fef0ed7aec0f5f96aa6fd92..fd917f72b4b4d4af1ae36feab38deac2657c95d4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -471,6 +471,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -476,6 +476,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.beeMaxHealth); } @@ -95,10 +95,10 @@ index 0f49705e3c7adf033cee9d0746319885c830224f..86b910cbb8d0e19dc9ae53078e730495 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index b94ec05ffa0a6f9e7368731d360319ffe1b10e3f..371cab208ee0a31a90248272f88249eceaf9eb59 100644 +index 28c7e240b7dd1957ccb6a45608b1d052a32dc18a..f9cce30eef4a5bffeb27c48a6c7ee361803560c5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -65,6 +65,11 @@ public class Cow extends Animal { +@@ -66,6 +66,11 @@ public class Cow extends Animal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); } @@ -111,7 +111,7 @@ index b94ec05ffa0a6f9e7368731d360319ffe1b10e3f..371cab208ee0a31a90248272f88249ec protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 7e191d8bb56d0b6591b3a60dfe07004d025eedfa..989dc460d8a21b8e54ff4464998c2b02a6a9dd37 100644 +index cedc4dac776dde310dbf1a22272ce54b14ca2c9e..2cf00af66b73e1891fadcabcf83307873cbed710 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -186,6 +186,11 @@ public class Fox extends Animal implements VariantHolder { @@ -156,7 +156,7 @@ index b27c0f21354a78025f9d1664c560fb8799bced91..7fd50f60aab2fa49a8227f313352a2ee public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index e67c8756455d1388069dc41e8d968800b631be4e..e2f59c296d4f839983071da319b19e4e175a88fd 100644 +index 20da70182312f4c30e21528add44540ea2b60e42..11c1bebcf6751e4b2ce9b1f5d53ad0a54d7f0be9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -90,6 +90,11 @@ public class Ocelot extends Animal { @@ -172,10 +172,10 @@ index e67c8756455d1388069dc41e8d968800b631be4e..e2f59c296d4f839983071da319b19e4e return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index b475b278dcedef881b8612f615a057719e3466be..68e94b94dd89c2b3fc546819c7a221a3b6706005 100644 +index 81f502b19cfcfcd39f3d3b5754b6bce9c2645ccb..7052601a8a4253459c552c2d721c90f3fb36de10 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -140,6 +140,11 @@ public class Panda extends Animal { +@@ -143,6 +143,11 @@ public class Panda extends Animal { setAttributes(); } @@ -188,7 +188,7 @@ index b475b278dcedef881b8612f615a057719e3466be..68e94b94dd89c2b3fc546819c7a221a3 public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 361299312e883ca8377790fba5a89227e1c8b82f..280d20c3380ca244f0587b2c6811b5facd494ba6 100644 +index 1e0d8d276ef5eb2cc11a1effb5808de7f8f211d5..8b349259676ab8c891bf019c93ea62f7a84c4866 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -196,6 +196,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { + public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.rabbitMaxHealth); } - ++ + @Override + public int getPurpurBreedTime() { + return this.level().purpurConfig.rabbitBreedingTicks; + } -+ - // CraftBukkit start - code from constructor - public void initializePathFinderGoals(){ - this.setSpeedModifier(0.0D); + // Purpur end + + @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java index 3d212b09258b9777079d4bc7ce950f529cdce69e..c3b79c109e895cb4460571c8816b210455126f1d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -268,7 +268,7 @@ index 3d212b09258b9777079d4bc7ce950f529cdce69e..c3b79c109e895cb4460571c8816b2104 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 9aa764686433ad8d58191f96ab22d30154058af7..cded4a8baa6815f9d6a3107173f9654136d5943a 100644 +index 6ae82b6293f236fc926f411de2badc496b35399b..4a5cc7eaac2bc093a0f5a457b93b6f4560d739ca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -105,6 +105,11 @@ public class Turtle extends Animal { @@ -284,10 +284,10 @@ index 9aa764686433ad8d58191f96ab22d30154058af7..cded4a8baa6815f9d6a3107173f96541 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index c9ad084ce93eb618261221c7e19450c06fb8a5f5..074f1860e755348a5a3a8e9df383896656cee9af 100644 +index 1a27e811169a58515c796344ffa1bb3c46d1014a..d8c73365915e67b38292c96a9601f983f121bdf9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -129,6 +129,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -130,6 +130,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wolfMaxHealth); } @@ -346,10 +346,10 @@ index f189e0493286d58fbe16a30912b3a1dc4cd4c3e5..840b61241c44e92b3053157492f4389f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 1d9e2c93fa08d6f2f16b81021477294a6de3ce04..046a6cc61a9b823fe736bdfb15a338f8502f17f9 100644 +index ec956339b02fc9da53563d67c0eeaa91a3c3a8ee..d7580f06f2f619cb283faa61bdd4e7cc127fc08b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -106,6 +106,11 @@ public class Goat extends Animal { +@@ -107,6 +107,11 @@ public class Goat extends Animal { } // Purpur end @@ -394,7 +394,7 @@ index 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa159 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 071089e3ec438c323ea715e74911df4a465a7017..5f7e564154bccd1329ad1966a8ce388282107183 100644 +index 72fe2dd69a9ae51e14ec91a83eac2dd74bd76cca..ad9d061979f5856cba9769b91357b3c75cd9a794 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 @@ -138,6 +138,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder { +@@ -40,6 +40,7 @@ public class HarvestFarmland extends Behavior { private long nextOkStartTime; private int timeWorkedSoFar; private final List validFarmlandAroundVillager = Lists.newArrayList(); @@ -19,7 +19,7 @@ index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..f9665eaade08b6ac4f728a65acba025e public HarvestFarmland() { super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.SECONDARY_JOB_SITE, MemoryStatus.VALUE_PRESENT)); -@@ -47,9 +48,10 @@ public class HarvestFarmland extends Behavior { +@@ -48,9 +49,10 @@ public class HarvestFarmland extends Behavior { protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; @@ -31,7 +31,7 @@ index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..f9665eaade08b6ac4f728a65acba025e BlockPos.MutableBlockPos blockposition_mutableblockposition = entity.blockPosition().mutable(); this.validFarmlandAroundVillager.clear(); -@@ -80,6 +82,7 @@ public class HarvestFarmland extends Behavior { +@@ -81,6 +83,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(pos.below()).getBlock(); @@ -39,17 +39,15 @@ index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..f9665eaade08b6ac4f728a65acba025e return block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata) || iblockdata.isAir() && block1 instanceof FarmBlock; } -@@ -105,7 +108,7 @@ public class HarvestFarmland extends Behavior { +@@ -106,20 +109,20 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(this.aboveFarmlandPos.below()).getBlock(); - if (block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata)) { + if (block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata) && !this.clericWartFarmer || this.clericWartFarmer && block == Blocks.NETHER_WART && iblockdata.getValue(net.minecraft.world.level.block.NetherWartBlock.AGE) == 3) { // Purpur - // CraftBukkit start - if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, this.aboveFarmlandPos, Blocks.AIR.defaultBlockState()).isCancelled()) { - world.destroyBlock(this.aboveFarmlandPos, true, entity); -@@ -113,14 +116,14 @@ public class HarvestFarmland extends Behavior { - // CraftBukkit end + if (CraftEventFactory.callEntityChangeBlockEvent(entity, this.aboveFarmlandPos, Blocks.AIR.defaultBlockState())) { // CraftBukkit + world.destroyBlock(this.aboveFarmlandPos, true, entity); + } // CraftBukkit } - if (iblockdata.isAir() && block1 instanceof FarmBlock && entity.hasFarmSeeds()) { @@ -65,7 +63,7 @@ index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..f9665eaade08b6ac4f728a65acba025e Item item = itemstack.getItem(); if (item instanceof BlockItem) { -@@ -138,7 +141,7 @@ public class HarvestFarmland extends Behavior { +@@ -135,7 +138,7 @@ public class HarvestFarmland extends Behavior { } if (flag) { diff --git a/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch index 9749ed631..cbf56e5d6 100644 --- a/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0115-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc38a40ea4a 100644 +index d8c73365915e67b38292c96a9601f983f121bdf9..f39b278bc520a4785e9fa472bccd836ad1daac85 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; @@ -55,7 +55,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.pathfinder.BlockPathTypes; -@@ -83,6 +90,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -84,6 +91,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { return entitytypes == EntityType.SHEEP || entitytypes == EntityType.RABBIT || entitytypes == EntityType.FOX; }; @@ -93,7 +93,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 private static final float START_HEALTH = 8.0F; private static final float TAME_HEALTH = 20.0F; private float interestedAngle; -@@ -134,6 +172,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -135,6 +173,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { return this.level().purpurConfig.wolfBreedingTicks; } @@ -131,7 +131,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -141,6 +210,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -142,6 +211,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); @@ -139,7 +139,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false)); -@@ -154,7 +224,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -155,7 +225,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -148,7 +148,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -199,6 +269,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -182,6 +252,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putByte("CollarColor", (byte) this.getCollarColor().getId()); @@ -156,7 +156,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 this.addPersistentAngerSaveData(nbt); } -@@ -208,6 +279,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -191,6 +262,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { if (nbt.contains("CollarColor", 99)) { this.setCollarColor(DyeColor.byId(nbt.getInt("CollarColor"))); } @@ -167,7 +167,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 this.readPersistentAngerSaveData(this.level(), nbt); } -@@ -252,6 +327,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -235,6 +310,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void tick() { super.tick(); if (this.isAlive()) { @@ -179,7 +179,7 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc3 this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; -@@ -463,6 +543,19 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -450,6 +530,19 @@ public class Wolf extends TamableAnimal implements NeutralMob { } return InteractionResult.SUCCESS; diff --git a/patches/server/0116-Configurable-default-collar-color.patch b/patches/server/0116-Configurable-default-collar-color.patch index 9ee843243..59cd75ab1 100644 --- a/patches/server/0116-Configurable-default-collar-color.patch +++ b/patches/server/0116-Configurable-default-collar-color.patch @@ -26,10 +26,10 @@ index ffa2128b63e5e45c2a41e31a6b8b6e8df0bf9be4..956f125c9ae62537570bb9870be66872 @Override public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index aa484d03ed31f6c60c0b4456a4047bc38a40ea4a..89627025c0b5464900a5ea818c7aaf5d676f7a5f 100644 +index f39b278bc520a4785e9fa472bccd836ad1daac85..8d71d0ad4bf8e0df8ded9ebce6f39e66dd632bb5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -203,6 +203,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -204,6 +204,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { return super.finalizeSpawn(world, difficulty, type, data, nbt); } diff --git a/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch index 6cfe49c00..226042f49 100644 --- a/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0124-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3b342b2349ba5f1228c8a597d6176060009a4d94..1b4b1bd79fa4aa9f1dcd4e2833c3897952e7d0de 100644 +index 6edb9c371d77fa52b08f0eaf738d0cb4b0af86ce..04b98c7c738682f5c1da27a6873a814eaca5d14b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1778,7 +1778,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1768,7 +1768,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -31,10 +31,10 @@ index 4e5a261ccb7fb63b82ac7194598729fd60a20840..d24f94f2c27523af10184cae27157169 List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); Iterator iterator = list.iterator(); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index f9665eaade08b6ac4f728a65acba025e783dbd08..5a807bce1db30cfc753caa588cd0ef632881d0dd 100644 +index 46a7cd845682d54e178e7e6573bfe855a54b78a9..9434d63cd80fec0aa4b6448c1ce462e2d9d56f0a 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -46,7 +46,7 @@ public class HarvestFarmland extends Behavior { +@@ -47,7 +47,7 @@ public class HarvestFarmland extends Behavior { } protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { @@ -57,29 +57,29 @@ index 4253b3b1263a7ae5a2f5f3a34674dfea615a81ea..a987c94fd321f51241c405659d6a0b23 @Override diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index abf796c3369da6b73c8587dfc05f56d0b8933fde..95dc62687d10e5c6f54baadda4a725094c52c07f 100644 +index 77542bbdfdc2bf0ec1527ad8551493e1d89da40c..865c6d91b854e3afc2482dab3b041856bafbb1e6 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -@@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal { +@@ -68,7 +68,7 @@ public class EatBlockGoal extends Goal { + BlockPos blockposition = this.mob.blockPosition(); if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) { - // CraftBukkit -- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { -+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur +- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit ++ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur this.level.destroyBlock(blockposition, false); } -@@ -79,7 +79,7 @@ public class EatBlockGoal extends Goal { +@@ -77,7 +77,7 @@ public class EatBlockGoal extends Goal { + BlockPos blockposition1 = blockposition.below(); if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) { - // CraftBukkit -- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state -+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state // Purpur +- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state ++ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state // Purpur this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java -index 0035461aff86fa3f44c860e7d77589b974446048..8c08457b5a9ade9b602851c9a12b015e1b4b5a36 100644 +index 509317a26c79f453335df1c19dc4c9ec570046af..8e4d673e4f2d7f50ea5ed13794da08b1d20e6665 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java @@ -40,7 +40,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -92,7 +92,7 @@ index 0035461aff86fa3f44c860e7d77589b974446048..8c08457b5a9ade9b602851c9a12b015e } else if (this.nextStartTick > 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 989dc460d8a21b8e54ff4464998c2b02a6a9dd37..aa190c36d32aef0413e6bf89621fa9b42be16d82 100644 +index 2cf00af66b73e1891fadcabcf83307873cbed710..2a6f6753ce9b7ab899256edc181a92c19021822b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -1377,7 +1377,7 @@ public class Fox extends Animal implements VariantHolder { @@ -105,10 +105,10 @@ index 989dc460d8a21b8e54ff4464998c2b02a6a9dd37..aa190c36d32aef0413e6bf89621fa9b4 if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { 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 5443affd9dd8d27e32768c2df5a624b5cd7b1bec..e66a3860e4a14a5a50e95eb53ff67e8d6e6f0db7 100644 +index 6b07750c2bd2aa828f3a0a1ccf30520723f5d62b..c08b854da55a7b06147b627955cd1f94ccc65325 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -637,7 +637,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -633,7 +633,7 @@ public class Rabbit extends Animal implements VariantHolder { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,7 +118,7 @@ index 5443affd9dd8d27e32768c2df5a624b5cd7b1bec..e66a3860e4a14a5a50e95eb53ff67e8d } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index ecc0f221fca332b6f4d8feb72dbafc52e1002a23..dc6b0446336b8d689f8273c9ffe1d3c27cf1281a 100644 +index d3da7487f911ff791dca5f7b546dccda751fe44c..84e0a41620fd52af0cd22dc92fd13ee4efd206fb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -144,7 +144,7 @@ index 81cf89bc57af0f43d05ba93256255155bf0c4d53..2b0aac1e4291549efa6391cb3b414921 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index a78755905acdf1d942ad7e6f5df3ab3fc34ad551..a23d3bb3011f6cf19e0198aac1e3e448c1a73a13 100644 +index 0b33ddf80381c312d02d93e31c9513e3c5214aed..9fb3fffd53f37b06811de6907a71e9fd9f4eb2b8 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 @@ -485,7 +485,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -157,10 +157,10 @@ index a78755905acdf1d942ad7e6f5df3ab3fc34ad551..a23d3bb3011f6cf19e0198aac1e3e448 j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 1ff3c526ed34cbece3321de67aa90137f4380133..fed9d13ff3fd87b22a2d974f94de3da37362b65a 100644 +index 306ea8ef2c51f6815691865739696b3e78f7a987..488296bee4ae01ef139e02ab0d3580147e001715 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -538,7 +538,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -542,7 +542,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index 1ff3c526ed34cbece3321de67aa90137f4380133..fed9d13ff3fd87b22a2d974f94de3da3 } @Override -@@ -586,7 +594,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -588,7 +596,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -208,10 +208,10 @@ index f71a70a72ba0bb01c26291ad9dbdd3b01bbf6ee7..ea2a2c56f94d03b73a5e3a06f91aee7f } else { List list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 990a4ef6e2eccc228b06ba4cb3aadfce0733de5f..e62cb511e78c272346a8735081d1b4b93a6d3c5d 100644 +index 1a919c29d0c601296e5c6c0bf0ebd95de55eda0a..34d259ae3dbaefdb4a7e2fffd63d72b8b247f053 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -190,7 +190,7 @@ public class Ravager extends Raider { +@@ -193,7 +193,7 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); } @@ -221,10 +221,10 @@ index 990a4ef6e2eccc228b06ba4cb3aadfce0733de5f..e62cb511e78c272346a8735081d1b4b9 AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 0a78b3231700ff4ec4bc6ab9d3cbaebc261601e1..dbde54c4a616d6baba672a470b9886c9714133b9 100644 +index 5539cc692ea3ca89d7c1661a139ddf02c9076818..31a48501d59297c51eee9c7bd836ab2d119fe3b7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -208,7 +208,7 @@ public class Silverfish extends Monster { +@@ -210,7 +210,7 @@ public class Silverfish extends Monster { continue; } // CraftBukkit end @@ -233,7 +233,7 @@ index 0a78b3231700ff4ec4bc6ab9d3cbaebc261601e1..dbde54c4a616d6baba672a470b9886c9 world.destroyBlock(blockposition1, true, this.silverfish); } else { world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); -@@ -246,7 +246,7 @@ public class Silverfish extends Monster { +@@ -248,7 +248,7 @@ public class Silverfish extends Monster { } else { RandomSource randomsource = this.mob.getRandom(); @@ -322,20 +322,20 @@ index 57fdcdaf54fd1c92a6e51a3a81789029096e5abe..822dd4265ce02252afadbc652064450b if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index c463adf131c4ca6e38f18d4efd94f4629bcfafe9..cf7007cabe4ba7505f2728e79e4c56e2d1bc878b 100644 +index decb8caa67bc5f4525e4d92fedf465a17171fceb..5ba5a510b30917235e135ccda1b7c98cb7dd93ec 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -168,7 +168,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @Override public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper -- if (entity instanceof Ravager && !CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // CraftBukkit -+ if (entity instanceof Ravager && !CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))).isCancelled()) { // CraftBukkit // Purpur +- if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit ++ if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur world.destroyBlock(pos, true, entity); } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index d4e3a32a0f9b49bff64cb43d77727ce3cae95f09..090d232af0183c9c9ffeb4e75125514d827648f2 100644 +index 7efae60a9a9269703a1fa7cd280b5b96557ec73e..e7b5f54d2fc53878e9466ccca972df21f10a7d67 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -101,7 +101,7 @@ public class FarmBlock extends Block { @@ -348,15 +348,15 @@ index d4e3a32a0f9b49bff64cb43d77727ce3cae95f09..090d232af0183c9c9ffeb4e75125514d org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java -index 518d3832c36c9ecf1ed9267ffc1f926dc84b7989..af5933b886abf3fd17bfdb8c1cb1ea63f6f2a757 100644 +index 7e04ecba2a14be0f0d47c917368abd2a2bd64a05..5c944e39e611201c6ae4dad14511a54c451204f6 100644 --- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java @@ -72,7 +72,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { if (!world.isClientSide) { // CraftBukkit start if (entity.isOnFire() && entity.mayInteract(world, pos)) { -- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player)).isCancelled()) { -+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !((world.purpurConfig.powderSnowBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || entity instanceof Player)).isCancelled()) { +- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player))) { ++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !((world.purpurConfig.powderSnowBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || entity instanceof Player))) { return; } // CraftBukkit end diff --git a/patches/server/0126-Add-EntityTeleportHinderedEvent.patch b/patches/server/0126-Add-EntityTeleportHinderedEvent.patch index a20ae1ece..60ec64675 100644 --- a/patches/server/0126-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0126-Add-EntityTeleportHinderedEvent.patch @@ -89,10 +89,10 @@ index 7d744d5b6a9e593e657233b2192f2837bf360deb..98f7d917f8377927472414bee79d2de4 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5e5797761735ce24a8dd2cb934b385756dbcb32d..9596e95da0866d7372da53f069cf561f7b1ec978 100644 +index 249ab7ef332c87a3fcac6e7cc4402ddaa1f4d50c..70144e8fb966f0c1d7aa4737d5af553c1a53340b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1340,6 +1340,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1346,6 +1346,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/patches/server/0127-Farmland-trampling-changes.patch b/patches/server/0127-Farmland-trampling-changes.patch index 3937cef5c..26777b1f0 100644 --- a/patches/server/0127-Farmland-trampling-changes.patch +++ b/patches/server/0127-Farmland-trampling-changes.patch @@ -12,7 +12,7 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 090d232af0183c9c9ffeb4e75125514d827648f2..1064a13f37b991e60213b052e252a183b8340449 100644 +index e7b5f54d2fc53878e9466ccca972df21f10a7d67..56e66fcd840d0d3681ba671d1ffc51b232631461 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -116,12 +116,20 @@ public class FarmBlock extends Block { @@ -34,7 +34,7 @@ index 090d232af0183c9c9ffeb4e75125514d827648f2..1064a13f37b991e60213b052e252a183 + } + } // Purpur end - if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { + if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index b32d2e03de557521af596cc8e7ea05c3d00c1ee6..71d7ce7154d10f4fba78114583f560492492f2ae 100644 diff --git a/patches/server/0129-Fix-stuck-in-portals.patch b/patches/server/0129-Fix-stuck-in-portals.patch index c7a172886..bf2fe3ffe 100644 --- a/patches/server/0129-Fix-stuck-in-portals.patch +++ b/patches/server/0129-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c177b6ebf0e2d10d19674094a4fed8637d305bda..81bfdafb84c543938375a1a90dab49a8452f78d8 100644 +index 6408bc1749c08fe5255c054bf4342e0870db2a20..7c1b92611f175156116554b5d33636ecc888701d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index c177b6ebf0e2d10d19674094a4fed8637d305bda..81bfdafb84c543938375a1a90dab49a8 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5aaf8ffac3695f090b739d3f05847a37b58140b5..3f4b14ebbab07864b3fe00ecaf3094ee48946b24 100644 +index e4822d29f61f086e4967fcda8e7efd5b485b3d6b..6bedb5af6da75a49a1caa8bced73008bac559d50 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3076,12 +3076,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3059,12 +3059,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch index 1923d7126..2240c0bbd 100644 --- a/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0130-Toggle-for-water-sensitive-mob-damage.patch @@ -21,10 +21,10 @@ index b1ba0f24dd6f1ec4c60208564e4eb84bdcd457f4..1a67f46b57e398d23fbc495ee81ae62e protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 42ab8b3828f66e84cf0d89169fe28867f387be6b..7b731e6d5f50904b211c58cc3a3e0cf350f39e91 100644 +index c283900e6c43fda62428a6e6d8b70e512458e779..c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -290,6 +290,11 @@ public class Bat extends AmbientCreature { +@@ -276,6 +276,11 @@ public class Bat extends AmbientCreature { this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level().purpurConfig.batAttackKnockback); } @@ -37,10 +37,10 @@ index 42ab8b3828f66e84cf0d89169fe28867f387be6b..7b731e6d5f50904b211c58cc3a3e0cf3 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 944497d617f3c6474e51fa8146dd9f0c407b1b48..33f9b39d770262dd56ef17b0ec59c3175be32ff6 100644 +index fd917f72b4b4d4af1ae36feab38deac2657c95d4..bfafbc90c710514e1a5699f76381f593c8790c3b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -175,7 +175,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -180,7 +180,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); @@ -49,7 +49,7 @@ index 944497d617f3c6474e51fa8146dd9f0c407b1b48..33f9b39d770262dd56ef17b0ec59c317 this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); -@@ -476,6 +476,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -481,6 +481,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level().purpurConfig.beeBreedingTicks; } @@ -110,10 +110,10 @@ index 3d61c2d5da103de68242c16d85c703813979d179..2343325fa9a771de7b9445cda24a2bcd public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 371cab208ee0a31a90248272f88249eceaf9eb59..c6e5278641fb4a246a8df988fdf5068a044e2c4e 100644 +index f9cce30eef4a5bffeb27c48a6c7ee361803560c5..8d714c029cf3b62af1ff8140a82ed3ae463e0e18 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -70,6 +70,11 @@ public class Cow extends Animal { +@@ -71,6 +71,11 @@ public class Cow extends Animal { return this.level().purpurConfig.cowBreedingTicks; } @@ -126,10 +126,10 @@ index 371cab208ee0a31a90248272f88249eceaf9eb59..c6e5278641fb4a246a8df988fdf5068a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 7b2674233d0b8582243448c49d1c47271544d0b8..6006b9c996a8070336c4471f2a915d70c6371c76 100644 +index f7d5ad85eccedd30209e758aa52c24010531ec48..ac507f0b030a8f0cc8c67240062b4b9d52edaa64 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -159,6 +159,11 @@ public class Dolphin extends WaterAnimal { +@@ -163,6 +163,11 @@ public class Dolphin extends WaterAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.dolphinMaxHealth); } @@ -142,7 +142,7 @@ index 7b2674233d0b8582243448c49d1c47271544d0b8..6006b9c996a8070336c4471f2a915d70 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index aa190c36d32aef0413e6bf89621fa9b42be16d82..1cc0f08a1b63a6786d62fb1ee120e47f1b622d52 100644 +index 2a6f6753ce9b7ab899256edc181a92c19021822b..ed7d057bc12ca0e3d808320a008c902ebb27e1ca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -191,6 +191,11 @@ public class Fox extends Animal implements VariantHolder { @@ -190,7 +190,7 @@ index 7fd50f60aab2fa49a8227f313352a2ee251904c8..56fb35206af7e04a78eba489d4441351 public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index e2f59c296d4f839983071da319b19e4e175a88fd..851ffdc7156ac9a49692cbcd9f0c9c1887aae971 100644 +index 11c1bebcf6751e4b2ce9b1f5d53ad0a54d7f0be9..19ef910a77804b60c25449d084f140210778adf4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -95,6 +95,11 @@ public class Ocelot extends Animal { @@ -206,10 +206,10 @@ index e2f59c296d4f839983071da319b19e4e175a88fd..851ffdc7156ac9a49692cbcd9f0c9c18 return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 68e94b94dd89c2b3fc546819c7a221a3b6706005..ae4108c833e6dba02b19dd3e6271530e5e46cecc 100644 +index 7052601a8a4253459c552c2d721c90f3fb36de10..efdcfd3885d61cb3ec8db45d1f7f5a64e9c2ac24 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -145,6 +145,11 @@ public class Panda extends Animal { +@@ -148,6 +148,11 @@ public class Panda extends Animal { return this.level().purpurConfig.pandaBreedingTicks; } @@ -222,7 +222,7 @@ index 68e94b94dd89c2b3fc546819c7a221a3b6706005..ae4108c833e6dba02b19dd3e6271530e public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 280d20c3380ca244f0587b2c6811b5facd494ba6..a2dafa064697219fcfe7824ba3ca81396063ecb2 100644 +index 8b349259676ab8c891bf019c93ea62f7a84c4866..583cbd4e891647d974b3ca4fc51d4aae6d2acb88 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -201,6 +201,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { + public int getPurpurBreedTime() { return this.level().purpurConfig.rabbitBreedingTicks; } - ++ + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.rabbitTakeDamageFromWater; + } -+ - // CraftBukkit start - code from constructor - public void initializePathFinderGoals(){ - this.setSpeedModifier(0.0D); + // Purpur end + + @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java index 742805994f29a18af444912b10af631d2c60cacf..e101c3bf425902908c43ffa18867fb83a5e1f16e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java @@ -334,7 +334,7 @@ index c3b79c109e895cb4460571c8816b210455126f1d..35decea07efa8ca9f7ed896be9b8f3eb protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index dc6b0446336b8d689f8273c9ffe1d3c27cf1281a..2acd9fdd1b311f00cc5fae7d879427ededdeecec 100644 +index 84e0a41620fd52af0cd22dc92fd13ee4efd206fb..a1efde792eaa3f80cd0c7c48e38bbd07e1eb5c9d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -116,7 +116,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -347,10 +347,10 @@ index dc6b0446336b8d689f8273c9ffe1d3c27cf1281a..2acd9fdd1b311f00cc5fae7d879427ed @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 1431d7f295614641c1a5a5197f4bac3fd0cd9d71..80192e663bf8998d38fb3933894608327e50c46c 100644 +index 80bdc93cba675d6c1286618f14fc33e0344c601f..57b37ac40b4ffe6c5e27548755aaa15da89a0f0b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -92,6 +92,11 @@ public class Squid extends WaterAnimal { +@@ -90,6 +90,11 @@ public class Squid extends WaterAnimal { return this.wasTouchingWater || canFly(); } @@ -379,7 +379,7 @@ index 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index cded4a8baa6815f9d6a3107173f9654136d5943a..9f8891a3eacf461071ce7ad2a277c78048171d51 100644 +index 4a5cc7eaac2bc093a0f5a457b93b6f4560d739ca..df9a7975959393ab2e81fa7c3878afd034ef7f90 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -110,6 +110,11 @@ public class Turtle extends Animal { @@ -395,10 +395,10 @@ index cded4a8baa6815f9d6a3107173f9654136d5943a..9f8891a3eacf461071ce7ad2a277c780 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 89627025c0b5464900a5ea818c7aaf5d676f7a5f..0ab3e4a854fd1c5369fc734981d16fa6b844807f 100644 +index 8d71d0ad4bf8e0df8ded9ebce6f39e66dd632bb5..f3c3db958c359b3b032bd54c7732f16fce108ec3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -209,6 +209,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -210,6 +210,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { super.tame(player); } @@ -427,10 +427,10 @@ index acf44bf3d22d7b2ac7a02b3167cf577403942908..6aaf20501558f1710be0adca9c144414 public Map getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 046a6cc61a9b823fe736bdfb15a338f8502f17f9..6a917ef18f1f3797903e6f8b4516c0df8757c573 100644 +index d7580f06f2f619cb283faa61bdd4e7cc127fc08b..83a3a87caba237b382e4409339e98b6b99a005b7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -111,6 +111,11 @@ public class Goat extends Animal { +@@ -112,6 +112,11 @@ public class Goat extends Animal { return this.level().purpurConfig.goatBreedingTicks; } @@ -475,7 +475,7 @@ index 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 5f7e564154bccd1329ad1966a8ce388282107183..2c5f4ead1141269a029176140c4df848c75b9620 100644 +index ad9d061979f5856cba9769b91357b3c75cd9a794..b7450d182ecf10ef17ac9eb3fce04e4334013c91 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 @@ -143,6 +143,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); this.setMaxUpStep(1.0F); @@ -685,7 +685,7 @@ index fed9d13ff3fd87b22a2d974f94de3da37362b65a..1f95363385c5ae9ce06495db5bebfec8 } // Purpur start -@@ -302,7 +302,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -306,7 +306,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -855,10 +855,10 @@ index 6a6349c7002439965422aa4979682b4ce6dfba1e..1f64dc8442de75447c17ae4fd5483345 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index e62cb511e78c272346a8735081d1b4b93a6d3c5d..6180ebf48c64fc004f33ecc382953e72f2fb7578 100644 +index 34d259ae3dbaefdb4a7e2fffd63d72b8b247f053..756bcc3b5489a8af1a9b9ef403fdcd7b39b07693 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -93,6 +93,11 @@ public class Ravager extends Raider { +@@ -96,6 +96,11 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.ravagerMaxHealth); } @@ -871,7 +871,7 @@ index e62cb511e78c272346a8735081d1b4b93a6d3c5d..6180ebf48c64fc004f33ecc382953e72 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 73c1c023e2c0511bca866cfbef86a9f4fa688592..8680668d97cbb737a72315ff5d3a68b30d14ffa6 100644 +index 7d96ba5adeddf52ed712e320d5f56a37f30e138a..27b05a4657ba201096973640d7a8cbabdd69f053 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -120,6 +120,11 @@ public class Shulker extends AbstractGolem implements VariantHolder 0 && this.horse.getRandom().nextInt(j) < i && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { -+ if ((this.horse.level().purpurConfig.alwaysTameInCreative && ((Player) entity).getAbilities().instabuild) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // Purpur +- if (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent ++ if ((this.horse.level().purpurConfig.alwaysTameInCreative && ((Player) entity).getAbilities().instabuild) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // CraftBukkit - fire EntityTameEvent // Purpur this.horse.tameWithName((Player) entity); return; } @@ -33,7 +33,7 @@ index 1554e4a0e068e06ec121adf56421f8332132f062..7f1763b820a0c5dc69bdf6cdf14a97a2 this.setOrderedToSit(true); this.level().broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index a2dafa064697219fcfe7824ba3ca81396063ecb2..08935a1f2c4a3f43483719686e5baab5063cdfce 100644 +index 583cbd4e891647d974b3ca4fc51d4aae6d2acb88..4c64feca8d78b907406cc409bd6beef4b3bd35f3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -334,7 +334,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { EntityType entityType = entity.getType(); 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 2c5f4ead1141269a029176140c4df848c75b9620..26ed1eef3b38e643dfc6738e4b7880c9d1c9dc20 100644 +index b7450d182ecf10ef17ac9eb3fce04e4334013c91..fac46dd905f9a634cff393494f6ff0404eb17fb7 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 -@@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53eebe175f4787f5fb88dda11b4d301824d6aa70..9d0e7b1982acb5bb48cfc5b804bcc4cc4ac93fd8 100644 +index aab99783b9fd6c181f30b2672d5957438a1fc620..61dd24478dc1f955a3c67e81858aa7cec023b4de 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -32,10 +32,10 @@ index 53eebe175f4787f5fb88dda11b4d301824d6aa70..9d0e7b1982acb5bb48cfc5b804bcc4cc return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3cfa9cad7d59a6542ef64dcc0f3fbec346ab5b90..65e543bb44d94bcaa4abaa3272fb7f3e9b35fea8 100644 +index cdae47c490555efad0eb2d2ae6498888aeaf21bd..972c0e43e3f099706b9ee744551d43d31ffb3fa7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -264,6 +264,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper @@ -43,7 +43,7 @@ index 3cfa9cad7d59a6542ef64dcc0f3fbec346ab5b90..65e543bb44d94bcaa4abaa3272fb7f3e @Override public float getBukkitYaw() { -@@ -805,6 +806,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -804,6 +805,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -51,7 +51,7 @@ index 3cfa9cad7d59a6542ef64dcc0f3fbec346ab5b90..65e543bb44d94bcaa4abaa3272fb7f3e } @Override -@@ -889,6 +891,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -888,6 +890,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -63,7 +63,7 @@ index 3cfa9cad7d59a6542ef64dcc0f3fbec346ab5b90..65e543bb44d94bcaa4abaa3272fb7f3e } // CraftBukkit start -@@ -3547,6 +3554,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3537,6 +3544,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -369,10 +369,10 @@ index 98f7d917f8377927472414bee79d2de4269ec0bc..1445f52031104baf81e2b5373a400a58 /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index a26a622a4782b2f1227ffac215561c86e6c1b0cb..f4ab4d016a467dbd3232726a3ab500be083d4747 100644 +index 3e261a1617ff9e0d2f4745769f819292d19200c4..bbf741ab97d43eaa0eade0e2f1edc7c6adc83636 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1089,5 +1089,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1116,5 +1116,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0178-Config-MobEffect-by-world.patch b/patches/server/0178-Config-MobEffect-by-world.patch index 1e1fe03d8..ce38491cd 100644 --- a/patches/server/0178-Config-MobEffect-by-world.patch +++ b/patches/server/0178-Config-MobEffect-by-world.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config MobEffect by world diff --git a/src/main/java/net/minecraft/world/effect/MobEffect.java b/src/main/java/net/minecraft/world/effect/MobEffect.java -index bcce17f884b57e619749351b7b2047f0a5f9be71..878f3da0067f89f47141f41c733bef67f0987929 100644 +index 53cc6befb752affcfec65e18365f6d369448d407..01850fc596a85974287ff6750427186d21acac41 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffect.java +++ b/src/main/java/net/minecraft/world/effect/MobEffect.java -@@ -60,16 +60,16 @@ public class MobEffect { +@@ -59,16 +59,16 @@ public class MobEffect { public void applyEffectTick(LivingEntity entity, int amplifier) { if (this == MobEffects.REGENERATION) { if (entity.getHealth() < entity.getMaxHealth()) { @@ -30,15 +30,15 @@ index bcce17f884b57e619749351b7b2047f0a5f9be71..878f3da0067f89f47141f41c733bef67 } else if (this == MobEffects.SATURATION && entity instanceof Player) { if (!entity.level().isClientSide) { // CraftBukkit start -@@ -79,7 +79,7 @@ public class MobEffect { +@@ -76,7 +76,7 @@ public class MobEffect { + int oldFoodLevel = entityhuman.getFoodData().foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, amplifier + 1 + oldFoodLevel); - if (!event.isCancelled()) { - entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F); + entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, entity.level().purpurConfig.humanSaturationRegenAmount); // Purpur } - ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); + ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 3f4631c2107145248a1fff538b1bf8fa9d4483d7..782279ff7a53d185d5de58f35e3328e487808ba2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0180-Add-toggle-for-sand-duping-fix.patch b/patches/server/0180-Add-toggle-for-sand-duping-fix.patch index 48396d93b..ace4bde92 100644 --- a/patches/server/0180-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0180-Add-toggle-for-sand-duping-fix.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for sand duping fix diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index eff81e846f696349b3bd3d26c02442f157b169f0..bdadc6bb8c0ddcbf4ec1a9d2b4267c9e7308c016 100644 +index 18eaccb39a4c81338a8cbebe3de03934913ac2a4..7ad5583f05b608d5a34a33fb77c5bf91f25de9a1 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -131,7 +131,7 @@ public class FallingBlockEntity extends Entity { +@@ -133,7 +133,7 @@ public class FallingBlockEntity extends Entity { @Override public void tick() { // Paper start - fix sand duping @@ -17,7 +17,7 @@ index eff81e846f696349b3bd3d26c02442f157b169f0..bdadc6bb8c0ddcbf4ec1a9d2b4267c9e return; } // Paper end - fix sand duping -@@ -148,7 +148,7 @@ public class FallingBlockEntity extends Entity { +@@ -150,7 +150,7 @@ public class FallingBlockEntity extends Entity { this.move(MoverType.SELF, this.getDeltaMovement()); // Paper start - fix sand duping diff --git a/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch index 154df2cb4..9b1c50e4d 100644 --- a/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0181-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9d0e7b1982acb5bb48cfc5b804bcc4cc4ac93fd8..196c8b43d096289f02293f8958d591e9738e3826 100644 +index 61dd24478dc1f955a3c67e81858aa7cec023b4de..75eb55794b3f025d065a4025bfbf415ac669b967 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3150,7 +3150,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3133,7 +3133,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); diff --git a/patches/server/0186-Shulker-spawn-from-bullet-options.patch b/patches/server/0186-Shulker-spawn-from-bullet-options.patch index 3120d9b22..33ea1be66 100644 --- a/patches/server/0186-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0186-Shulker-spawn-from-bullet-options.patch @@ -13,10 +13,10 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 8680668d97cbb737a72315ff5d3a68b30d14ffa6..48fcfef45ab149328573f4e80c8f0289f9eebbe8 100644 +index 27b05a4657ba201096973640d7a8cbabdd69f053..a0b19ffbdb64c40d8b92ed82104dde323b466190 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -513,12 +513,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { diff --git a/patches/server/0192-Tool-actionable-options.patch b/patches/server/0192-Tool-actionable-options.patch index f773d8086..74d25438e 100644 --- a/patches/server/0192-Tool-actionable-options.patch +++ b/patches/server/0192-Tool-actionable-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tool actionable options diff --git a/src/main/java/net/minecraft/world/item/AxeItem.java b/src/main/java/net/minecraft/world/item/AxeItem.java -index 9c7d0b9cc2fa98d5785c914c0183f7d4b5b1c1ea..89a4ab17ca8d2aa1f52b041c610d7de19bf55e66 100644 +index 18898e16ec42f6b694b06e09d9174b60d62450d7..20f33b77b4a9494be227456bc742a029eb0af59b 100644 --- a/src/main/java/net/minecraft/world/item/AxeItem.java +++ b/src/main/java/net/minecraft/world/item/AxeItem.java @@ -33,29 +33,32 @@ public class AxeItem extends DiggerItem { @@ -43,11 +43,11 @@ index 9c7d0b9cc2fa98d5785c914c0183f7d4b5b1c1ea..89a4ab17ca8d2aa1f52b041c610d7de1 } if (optional4.isPresent()) { -+ org.purpurmc.purpur.tool.Actionable actionable = optional4.get(); ++ org.purpurmc.purpur.tool.Actionable actionable = optional4.get(); // Purpur + BlockState state = actionable.into().withPropertiesOf(blockState); // Purpur // Paper start - EntityChangeBlockEvent -- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, optional4.get()).isCancelled()) { -+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, state).isCancelled()) { // Purpur +- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, optional4.get())) { ++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, state)) { // Purpur return InteractionResult.PASS; } // Paper end diff --git a/patches/server/0193-Store-placer-on-Block-when-placed.patch b/patches/server/0193-Store-placer-on-Block-when-placed.patch index 2a103d5b0..47df15920 100644 --- a/patches/server/0193-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0193-Store-placer-on-Block-when-placed.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 43ed450fbd7472495b1965dcbdc7ad107ba91dcc..f950ca76771a290307db728c7d35819fb37a21b5 100644 +index a314bd08b2beaf867057cdb2accdfeef2a56a837..d846d5bdc92138b6b6c44a2e47578199bb68f858 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -421,6 +421,7 @@ public final class ItemStack { +@@ -422,6 +422,7 @@ public final class ItemStack { world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 for (BlockState blockstate : blocks) { blockstate.update(true, false); @@ -16,9 +16,9 @@ index 43ed450fbd7472495b1965dcbdc7ad107ba91dcc..f950ca76771a290307db728c7d35819f } world.preventPoiUpdated = false; -@@ -450,6 +451,7 @@ public final class ItemStack { +@@ -451,6 +452,7 @@ public final class ItemStack { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically - block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, itemactioncontext); // Paper - pass itemactioncontext + block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, context); // Paper - pass context } + block.getBlock().forgetPlacer(); // Purpur diff --git a/patches/server/0199-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0199-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index b4d96d71c..0c1c9af62 100644 --- a/patches/server/0199-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0199-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 2d09b2c15833d1a724df15894bee18825ecafcee..bf9b9f3de67ff918e0a2288b3582af5e77e54b04 100644 +index b78c18c2c6a791539b87b9c0a5947ca0f731755c..869f7488f420f23941754d484546901cd25bcd6f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -444,6 +444,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -448,6 +448,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { flag1 = flag && this.hurtWithCleanWater(source, (ThrownPotion) source.getDirectEntity(), amount); diff --git a/patches/server/0201-Toggle-for-kinetic-damage.patch b/patches/server/0201-Toggle-for-kinetic-damage.patch index d731fed75..6451ac133 100644 --- a/patches/server/0201-Toggle-for-kinetic-damage.patch +++ b/patches/server/0201-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 65e543bb44d94bcaa4abaa3272fb7f3e9b35fea8..558f56e7e559b5fcb712bdf3515704ad77dfe665 100644 +index 972c0e43e3f099706b9ee744551d43d31ffb3fa7..21d6851cb903f214db92109a6c16bb7367e40e1c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2900,6 +2900,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2890,6 +2890,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/server/0212-Extended-OfflinePlayer-API.patch b/patches/server/0212-Extended-OfflinePlayer-API.patch index 0558d98c6..1007172dd 100644 --- a/patches/server/0212-Extended-OfflinePlayer-API.patch +++ b/patches/server/0212-Extended-OfflinePlayer-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 714afc98b5150907b45a00060be4e41582333204..312a6d90c0a09570aef24c205dc2ff277dcd4279 100644 +index 2856b861a1207ef94ae5671c5898f08fedd14475..ce5d0f6b08f6c6f7272f53a939fa9c741637a628 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -549,4 +549,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -548,4 +548,213 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa manager.save(); } } @@ -223,10 +223,10 @@ index 714afc98b5150907b45a00060be4e41582333204..312a6d90c0a09570aef24c205dc2ff27 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9596e95da0866d7372da53f069cf561f7b1ec978..a3c02fd97c745229be98a172e6f65ad8172ec94c 100644 +index 70144e8fb966f0c1d7aa4737d5af553c1a53340b..a4fd43722384b9b6dff269ff70ea545715a85ec2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2388,6 +2388,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2418,6 +2418,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0213-Added-the-ability-to-add-combustible-items.patch b/patches/server/0213-Added-the-ability-to-add-combustible-items.patch index ccb3f337e..fdaed1f5b 100644 --- a/patches/server/0213-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0213-Added-the-ability-to-add-combustible-items.patch @@ -51,10 +51,10 @@ index ca2052804ad829a1528a9c5a0a792275beead113..997d0fab71eacc6466ffe3bc8f6349e5 private int maxStack = MAX_STACK; public List 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 131f87a5007bc533f5129bab07044d52d2e94612..96e8c253cb39822c2b856cf06e78406106ce431c 100644 +index 6ed43bd792f932a0a976f9402e70ddb1f2862b5d..2138d98b83bfee76d0c67272b8e10d14f2da7a3f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1527,6 +1527,19 @@ public final class CraftServer implements Server { +@@ -1530,6 +1530,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0217-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0217-Dolphins-naturally-aggressive-to-players-chance.patch index 25d2bc55b..74fda9432 100644 --- a/patches/server/0217-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0217-Dolphins-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 6006b9c996a8070336c4471f2a915d70c6371c76..3755ffc395ec4644a2263c59cdacfdbab258d4c8 100644 +index ac507f0b030a8f0cc8c67240062b4b9d52edaa64..4713e550d26c3235ee7ca227ce7e0ff31ff4321c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -78,6 +78,7 @@ public class Dolphin extends WaterAnimal { +@@ -82,6 +82,7 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -16,7 +16,7 @@ index 6006b9c996a8070336c4471f2a915d70c6371c76..3755ffc395ec4644a2263c59cdacfdba private int spitCooldown; // Purpur public Dolphin(EntityType type, Level world) { -@@ -169,6 +170,7 @@ public class Dolphin extends WaterAnimal { +@@ -173,6 +174,7 @@ public class Dolphin extends WaterAnimal { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); @@ -24,7 +24,7 @@ index 6006b9c996a8070336c4471f2a915d70c6371c76..3755ffc395ec4644a2263c59cdacfdba return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } -@@ -238,6 +240,7 @@ public class Dolphin extends WaterAnimal { +@@ -242,6 +244,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -32,7 +32,7 @@ index 6006b9c996a8070336c4471f2a915d70c6371c76..3755ffc395ec4644a2263c59cdacfdba this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); -@@ -245,12 +248,13 @@ public class Dolphin extends WaterAnimal { +@@ -249,12 +252,13 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10)); diff --git a/patches/server/0218-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0218-Cows-naturally-aggressive-to-players-chance.patch index d192e23fb..623b70baa 100644 --- a/patches/server/0218-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0218-Cows-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index c6e5278641fb4a246a8df988fdf5068a044e2c4e..30e87b71ad237d76ec5adb4976edeca909e429ef 100644 +index 8d714c029cf3b62af1ff8140a82ed3ae463e0e18..37f073e821a1b0f8efe89a7d88ce732cda402dff 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -38,6 +38,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack; +@@ -39,6 +39,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; // CraftBukkit end public class Cow extends Animal { @@ -16,7 +16,7 @@ index c6e5278641fb4a246a8df988fdf5068a044e2c4e..30e87b71ad237d76ec5adb4976edeca9 public Cow(EntityType type, Level world) { super(type, world); -@@ -63,6 +64,7 @@ public class Cow extends Animal { +@@ -64,6 +65,7 @@ public class Cow extends Animal { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); @@ -24,7 +24,7 @@ index c6e5278641fb4a246a8df988fdf5068a044e2c4e..30e87b71ad237d76ec5adb4976edeca9 } @Override -@@ -75,11 +77,18 @@ public class Cow extends Animal { +@@ -76,11 +78,18 @@ public class Cow extends Animal { return this.level().purpurConfig.cowTakeDamageFromWater; } @@ -43,7 +43,7 @@ index c6e5278641fb4a246a8df988fdf5068a044e2c4e..30e87b71ad237d76ec5adb4976edeca9 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -87,10 +96,11 @@ public class Cow extends Animal { +@@ -88,10 +97,11 @@ public class Cow extends Animal { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); diff --git a/patches/server/0220-Halloween-options-and-optimizations.patch b/patches/server/0220-Halloween-options-and-optimizations.patch index 695bfe3cf..135a838af 100644 --- a/patches/server/0220-Halloween-options-and-optimizations.patch +++ b/patches/server/0220-Halloween-options-and-optimizations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 7b731e6d5f50904b211c58cc3a3e0cf350f39e91..acd453eefe78eb29c914ee2ce93202dfec9e8d63 100644 +index c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25..c103c3da165ec4a9717400fdf278de2a667edd2a 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -314,7 +314,7 @@ public class Bat extends AmbientCreature { +@@ -300,7 +300,7 @@ public class Bat extends AmbientCreature { int i = world.getMaxLocalRawBrightness(pos); byte b0 = 4; @@ -17,7 +17,7 @@ index 7b731e6d5f50904b211c58cc3a3e0cf350f39e91..acd453eefe78eb29c914ee2ce93202df b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -328,6 +328,7 @@ public class Bat extends AmbientCreature { +@@ -314,6 +314,7 @@ public class Bat extends AmbientCreature { private static boolean isSpookySeason = false; private static final int ONE_HOUR = 20 * 60 * 60; private static int lastSpookyCheck = -ONE_HOUR; diff --git a/patches/server/0224-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0224-options-to-extinguish-fire-blocks-with-snowballs.patch index ecbdcd0c7..4704bd900 100644 --- a/patches/server/0224-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0224-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] options to extinguish fire blocks with snowballs diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java -index b90cedad282e95a067aca176fafa9f72a726f520..9a8a1e773f247f4c4af4e9789deb70cd5b7889c5 100644 +index b90cedad282e95a067aca176fafa9f72a726f520..440d3d72d8b2dac14f83a83caa5ae9dbf3e979b6 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java @@ -57,6 +57,36 @@ public class Snowball extends ThrowableItemProjectile { @@ -24,15 +24,15 @@ index b90cedad282e95a067aca176fafa9f72a726f520..9a8a1e773f247f4c4af4e9789deb70cd + net.minecraft.world.level.block.state.BlockState iblockdata = this.level().getBlockState(blockposition); + + if (this.level().purpurConfig.snowballExtinguishesFire && this.level().getBlockState(blockposition1).is(net.minecraft.world.level.block.Blocks.FIRE)) { -+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition1, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()).isCancelled()) { ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition1, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState())) { + this.level().removeBlock(blockposition1, false); + } + } else if (this.level().purpurConfig.snowballExtinguishesCandles && net.minecraft.world.level.block.AbstractCandleBlock.isLit(iblockdata)) { -+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.AbstractCandleBlock.LIT, false)).isCancelled()) { ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.AbstractCandleBlock.LIT, false))) { + net.minecraft.world.level.block.AbstractCandleBlock.extinguish(null, iblockdata, this.level(), blockposition); + } + } else if (this.level().purpurConfig.snowballExtinguishesCampfires && net.minecraft.world.level.block.CampfireBlock.isLitCampfire(iblockdata)) { -+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false)).isCancelled()) { ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false))) { + this.level().levelEvent(null, 1009, blockposition, 0); + net.minecraft.world.level.block.CampfireBlock.dowse(this.getOwner(), this.level(), blockposition, iblockdata); + this.level().setBlockAndUpdate(blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false)); diff --git a/patches/server/0229-Mobs-always-drop-experience.patch b/patches/server/0229-Mobs-always-drop-experience.patch index a966042c1..1d642d11d 100644 --- a/patches/server/0229-Mobs-always-drop-experience.patch +++ b/patches/server/0229-Mobs-always-drop-experience.patch @@ -21,10 +21,10 @@ index 1a67f46b57e398d23fbc495ee81ae62e0d84d3dc..43cdda0cb26c5d5cc9025199eb71673d protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index acd453eefe78eb29c914ee2ce93202dfec9e8d63..f670c1aa00ebbad111b64d1b23255188288a91f2 100644 +index c103c3da165ec4a9717400fdf278de2a667edd2a..1eab1393a2636c4a247f25dae317cea60cc7021c 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -295,6 +295,11 @@ public class Bat extends AmbientCreature { +@@ -281,6 +281,11 @@ public class Bat extends AmbientCreature { return this.level().purpurConfig.batTakeDamageFromWater; } @@ -37,10 +37,10 @@ index acd453eefe78eb29c914ee2ce93202dfec9e8d63..f670c1aa00ebbad111b64d1b23255188 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 318e51509338a7cf22dfeb1a923638d8df2b5c2f..fad2da0ba194d349de73777a7ab43bb6447298e7 100644 +index 0ee62562d36292d48226a3b20ac54aafe6d12394..ac4ca4de2be18a08268b24dfe259cfd136b1a4da 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -481,6 +481,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -486,6 +486,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level().purpurConfig.beeTakeDamageFromWater; } @@ -101,10 +101,10 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 30e87b71ad237d76ec5adb4976edeca909e429ef..6aeb3a6ac9665a0c4b929d0f034f177df88109e0 100644 +index 37f073e821a1b0f8efe89a7d88ce732cda402dff..3cee7d5656b2df2997ceaee3489c02ce881e6875 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -83,6 +83,11 @@ public class Cow extends Animal { +@@ -84,6 +84,11 @@ public class Cow extends Animal { return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } @@ -117,10 +117,10 @@ index 30e87b71ad237d76ec5adb4976edeca909e429ef..6aeb3a6ac9665a0c4b929d0f034f177d protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 3755ffc395ec4644a2263c59cdacfdbab258d4c8..dcb23409b8492200771c515a83d086b39777972f 100644 +index 4713e550d26c3235ee7ca227ce7e0ff31ff4321c..91e9a872b0282f50e2389ab21798fc06da8dbd6a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -165,6 +165,11 @@ public class Dolphin extends WaterAnimal { +@@ -169,6 +169,11 @@ public class Dolphin extends WaterAnimal { return this.level().purpurConfig.dolphinTakeDamageFromWater; } @@ -133,7 +133,7 @@ index 3755ffc395ec4644a2263c59cdacfdbab258d4c8..dcb23409b8492200771c515a83d086b3 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 1cc0f08a1b63a6786d62fb1ee120e47f1b622d52..d9d4341c4511f4982f691eeea80ef17de759291a 100644 +index ed7d057bc12ca0e3d808320a008c902ebb27e1ca..ca3096abbd54745af591101c7b306ed87f212954 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -196,6 +196,11 @@ public class Fox extends Animal implements VariantHolder { @@ -181,7 +181,7 @@ index 56fb35206af7e04a78eba489d444135176188a20..1b0a0e36baa0f664f06b2d166aa907b3 public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 851ffdc7156ac9a49692cbcd9f0c9c1887aae971..b02f881bd5d8dc2cc5c37d7cf89536e69d8a0e3a 100644 +index 19ef910a77804b60c25449d084f140210778adf4..c72d5e7c2a19c5690a8065c95c75f0415358c2a9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -100,6 +100,11 @@ public class Ocelot extends Animal { @@ -197,10 +197,10 @@ index 851ffdc7156ac9a49692cbcd9f0c9c1887aae971..b02f881bd5d8dc2cc5c37d7cf89536e6 return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index ae4108c833e6dba02b19dd3e6271530e5e46cecc..92638ac85237e4532024fbf75c7d5d38dcd8b4bc 100644 +index efdcfd3885d61cb3ec8db45d1f7f5a64e9c2ac24..bd7c5f6768a54a3d8ffd585d91414e65936991da 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -150,6 +150,11 @@ public class Panda extends Animal { +@@ -153,6 +153,11 @@ public class Panda extends Animal { return this.level().purpurConfig.pandaTakeDamageFromWater; } @@ -213,7 +213,7 @@ index ae4108c833e6dba02b19dd3e6271530e5e46cecc..92638ac85237e4532024fbf75c7d5d38 public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index bfae3b94ab035e1c27c988cfcc3b449c7266efd3..8526556c42a411414b322553c295fb430ceffa71 100644 +index 6e8fc61b04796da5a8820812b5e88110f774b77a..0e20d9ed5b25f5aaab68dc3a4fa4e63ced280969 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -206,6 +206,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder { + public boolean isSensitiveToWater() { return this.level().purpurConfig.rabbitTakeDamageFromWater; } - ++ + @Override + protected boolean isAlwaysExperienceDropper() { + return this.level().purpurConfig.rabbitAlwaysDropExp; + } -+ - // CraftBukkit start - code from constructor - public void initializePathFinderGoals(){ - this.setSpeedModifier(0.0D); + // Purpur end + + @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java index e101c3bf425902908c43ffa18867fb83a5e1f16e..382e47f26ee94506cb76463a677351b9bdcf8040 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java @@ -325,7 +325,7 @@ index 35decea07efa8ca9f7ed896be9b8f3eb5afbf082..a1b323ecba25910e97f154e487acc949 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index e33364beff36e255989520d5d076729c9c8ed1fe..dd4d3dbda72a3bf0aabce0f999121f401f85b8a4 100644 +index 20f2fd0edf290d448d06e4772b5947fc7865c20b..fc8526af7e1df15794b4560b58e7f6a47508aa08 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -86,6 +86,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -341,10 +341,10 @@ index e33364beff36e255989520d5d076729c9c8ed1fe..dd4d3dbda72a3bf0aabce0f999121f40 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 80192e663bf8998d38fb3933894608327e50c46c..beef2f6a42eebeaf5761bac841300f780bfdf4f2 100644 +index 57b37ac40b4ffe6c5e27548755aaa15da89a0f0b..88c238e492b1081d1a64a3b6f05d7baa17e5d8c9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -97,6 +97,11 @@ public class Squid extends WaterAnimal { +@@ -95,6 +95,11 @@ public class Squid extends WaterAnimal { return this.level().purpurConfig.squidTakeDamageFromWater; } @@ -373,7 +373,7 @@ index b16d075581a352714f86f1b87805f24c9e336aa3..87b6f6b10ba6e3d9c6a42298a2019a52 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 9f8891a3eacf461071ce7ad2a277c78048171d51..7787b121def6525642672dfd67fae9ac0e010f52 100644 +index df9a7975959393ab2e81fa7c3878afd034ef7f90..1502f13acd0a104efe470e605826213ea92af191 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -115,6 +115,11 @@ public class Turtle extends Animal { @@ -389,10 +389,10 @@ index 9f8891a3eacf461071ce7ad2a277c78048171d51..7787b121def6525642672dfd67fae9ac this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index b2902e01ff2e9add8258bfd0b32d000209208f52..e7558511e0690d80ff444e71b7524d564d68842b 100644 +index c967302542eeac0bad33c3b53b7d5b2aea7defbb..64bceae4d06b35fcbecb0daca2496ba30e39d995 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -214,6 +214,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -215,6 +215,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { return this.level().purpurConfig.wolfTakeDamageFromWater; } @@ -421,10 +421,10 @@ index 6aaf20501558f1710be0adca9c14441448698541..51b475191113cf3cae5e776b0dfbcd02 public Map getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 6a917ef18f1f3797903e6f8b4516c0df8757c573..df08f220b7c25fd9e7daa6a23816cb8d6ff4c003 100644 +index 83a3a87caba237b382e4409339e98b6b99a005b7..0f8af63a88e425e5e66f68133b6c604caefc6977 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -116,6 +116,11 @@ public class Goat extends Animal { +@@ -117,6 +117,11 @@ public class Goat extends Animal { return this.level().purpurConfig.goatTakeDamageFromWater; } @@ -469,7 +469,7 @@ index f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); 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 26ed1eef3b38e643dfc6738e4b7880c9d1c9dc20..70ac8c2fef15587d57f37c72db7913fd89f05d31 100644 +index fac46dd905f9a634cff393494f6ff0404eb17fb7..a9f36af3e07f74b3d11697d5fad9f0a469844779 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 @@ -148,6 +148,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder getActivePotionEffects() { List effects = new ArrayList(); for (MobEffectInstance handle : this.getHandle().activeEffects.values()) { diff --git a/patches/server/0235-Mob-head-visibility-percent.patch b/patches/server/0235-Mob-head-visibility-percent.patch index 83c3fa8fe..7b6b1eefe 100644 --- a/patches/server/0235-Mob-head-visibility-percent.patch +++ b/patches/server/0235-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 558f56e7e559b5fcb712bdf3515704ad77dfe665..03ddc48436567fd3449bc8f489f8b7751eaa42c6 100644 +index 21d6851cb903f214db92109a6c16bb7367e40e1c..aff8b1b0683e52038b6d92e052a012c9198bf8ce 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1041,9 +1041,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); diff --git a/patches/server/0238-Stop-bees-from-dying-after-stinging.patch b/patches/server/0238-Stop-bees-from-dying-after-stinging.patch index 535a43fa8..29eebe12d 100644 --- a/patches/server/0238-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0238-Stop-bees-from-dying-after-stinging.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop bees from dying after stinging diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index fad2da0ba194d349de73777a7ab43bb6447298e7..2afe5a4f3abaa3f9883b13fa3895e1e15ed68d3a 100644 +index ac4ca4de2be18a08268b24dfe259cfd136b1a4da..e837500019157129007841c847d807ebae10db04 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -434,6 +434,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -439,6 +439,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.hurt(this.damageSources().drown(), 1.0F); } diff --git a/patches/server/0251-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0251-Config-for-mob-last-hurt-by-player-time.patch index a0729246b..542b93206 100644 --- a/patches/server/0251-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0251-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 03ddc48436567fd3449bc8f489f8b7751eaa42c6..428c99b98b8161eac82c651a477ba478b4ee0ce7 100644 +index aff8b1b0683e52038b6d92e052a012c9198bf8ce..ec3a9946b7387754c8f5a15ce6268a7fa666db02 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1512,13 +1512,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1502,13 +1502,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,10 +25,10 @@ index 03ddc48436567fd3449bc8f489f8b7751eaa42c6..428c99b98b8161eac82c651a477ba478 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 54b428e98c54f7e130b91840fa4736078992d8e9..73bad77ae58ce6f817c60b28d5f40d637717531b 100644 +index 96a3cf0b0bf1057da7fd37bc8d9953fec7d5eca6..14c22d5247c8b449ea5dd89292764df491892fde 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -440,7 +440,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; diff --git a/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch index ee2ddf1bb..a4edc00b0 100644 --- a/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0254-Add-toggle-for-enchant-level-clamping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index f950ca76771a290307db728c7d35819fb37a21b5..10dbd8a58d20319a671b34d9e4a7ff5d8bce7c62 100644 +index d846d5bdc92138b6b6c44a2e47578199bb68f858..500d5bfb80d39d5030c17bd419ea07dabcf9ff67 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1196,7 +1196,7 @@ public final class ItemStack { +@@ -1197,7 +1197,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); @@ -31,7 +31,7 @@ index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235e @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3db04bc9611a76b939758ebaac8596e05860f365..3de2e7a17e1234367e4ec6d944b1145781aefeba 100644 +index 97e9621b52a6620b1768807c3352d2ef0d2f29a8..ff204d0c97452e299ef03fe193c32495e32e1098 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -395,6 +395,7 @@ public class PurpurConfig { diff --git a/patches/server/0267-Add-toggle-for-RNG-manipulation.patch b/patches/server/0267-Add-toggle-for-RNG-manipulation.patch index 75254199b..243abecbb 100644 --- a/patches/server/0267-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0267-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 196c8b43d096289f02293f8958d591e9738e3826..0be80982b8bdcbb884aeb9a257693f0035928bef 100644 +index 75eb55794b3f025d065a4025bfbf415ac669b967..5cc1a1550807399c2d7329f521dd2a97e0a42d4b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -615,7 +615,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,14 +20,14 @@ index 196c8b43d096289f02293f8958d591e9738e3826..0be80982b8bdcbb884aeb9a257693f00 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index beef2f6a42eebeaf5761bac841300f780bfdf4f2..41797940d89fec55cb7de4c63eb3ea5cdb4be967 100644 +index 88c238e492b1081d1a64a3b6f05d7baa17e5d8c9..dd7f2beabf0edad4143ac2365ac04a22edf1f75e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -46,7 +46,7 @@ public class Squid extends WaterAnimal { +@@ -44,7 +44,7 @@ public class Squid extends WaterAnimal { public Squid(EntityType type, Level world) { super(type, world); -- //this.random.setSeed((long) this.getId()); // Paper - we set the random to shared, do not clobber the seed +- //this.random.setSeed((long)this.getId()); // Paper - we set the random to shared, do not clobber the seed + if (!world.purpurConfig.entitySharedRandom) this.random.setSeed((long) this.getId()); // Paper - we set the random to shared, do not clobber the seed // Purpur this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } diff --git a/patches/server/0272-Remove-Mojang-Profiler.patch b/patches/server/0272-Remove-Mojang-Profiler.patch index 5ecb8a693..15ba0cb06 100644 --- a/patches/server/0272-Remove-Mojang-Profiler.patch +++ b/patches/server/0272-Remove-Mojang-Profiler.patch @@ -819,7 +819,7 @@ index c8c43454a936dd04d71fd82c955191f709a6c010..3ab54ab8d0a5ccf1abaa53cf3ce5b25f this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 13f07c874cdf9a8063ce8f72d2402d27e6a1e7e5..4ad3916e687f9f7aa7fb6fe7bb45f236ac20b810 100644 +index 6eb223cc49a7409b94806255118a3bf04aea6d9e..84c4d7525cbd8f83f464f5116fcba8267421ebfa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -410,7 +410,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -1045,7 +1045,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb865a332a 100644 +index 5cc1a1550807399c2d7329f521dd2a97e0a42d4b..6361b13871bae7ae46a12f6e21e9a055f842fb51 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -438,7 +438,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1122,7 +1122,7 @@ index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb } } // Paper start - detailed watchdog information -@@ -3117,7 +3117,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3100,7 +3100,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1131,7 +1131,7 @@ index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3135,7 +3135,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3118,7 +3118,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } // Paper // CraftBukkit end @@ -1140,7 +1140,7 @@ index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb } this.isInsidePortal = false; -@@ -3606,14 +3606,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3589,14 +3589,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1157,7 +1157,7 @@ index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3647,7 +3647,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3630,7 +3630,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.unRide(); // CraftBukkit end @@ -1166,7 +1166,7 @@ index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3670,10 +3670,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3653,10 +3653,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.removeAfterChangingDimensions(); @@ -1180,10 +1180,10 @@ index 6234c23572fd3b4bd0dbd0991d7e6904c54809ff..86eead008cc45e3603021de79dfa48bb } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c59a23687 100644 +index ec3a9946b7387754c8f5a15ce6268a7fa666db02..9012b5b918bca409166db9eb29c201a793886dbb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -411,7 +411,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1192,7 +1192,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -514,7 +514,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -513,7 +513,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1201,7 +1201,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c } public boolean canSpawnSoulSpeedParticle() { -@@ -3133,10 +3133,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3123,10 +3123,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1215,7 +1215,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3148,7 +3148,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3138,7 +3138,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1224,7 +1224,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3437,19 +3437,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3427,19 +3427,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d4, d5, d6); @@ -1249,7 +1249,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c if (this.jumping && this.isAffectedByFluids()) { double d7; -@@ -3476,8 +3476,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3466,8 +3466,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1260,7 +1260,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3504,8 +3504,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3494,8 +3494,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1271,7 +1271,7 @@ index 428c99b98b8161eac82c651a477ba478b4ee0ce7..f8b920d7b7afff39a62c8a8a08512a7c if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3522,15 +3522,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3512,15 +3512,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1593,10 +1593,10 @@ index af8438ae8c805d3276ef2d82eb39b08880fcc8a1..6b012bea26e8ef0c04571f43da67f6e1 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index df08f220b7c25fd9e7daa6a23816cb8d6ff4c003..1a989f9fbeaf51b9dc3ba32e1f6fb838db5af13e 100644 +index 0f8af63a88e425e5e66f68133b6c604caefc6977..31cfc2c8c5188a266c9e9993e5cf322e000df397 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -223,13 +223,14 @@ public class Goat extends Animal { +@@ -224,13 +224,14 @@ public class Goat extends Animal { private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { diff --git a/patches/server/0274-Add-Bee-API.patch b/patches/server/0274-Add-Bee-API.patch index 63ccebb40..9103ece8b 100644 --- a/patches/server/0274-Add-Bee-API.patch +++ b/patches/server/0274-Add-Bee-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Bee API diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 2afe5a4f3abaa3f9883b13fa3895e1e15ed68d3a..2677e7899aa98fc04070f5bbbc40da6117d89efa 100644 +index e837500019157129007841c847d807ebae10db04..6c04c8e7776b2830ac368229da834532e8ce163e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -803,6 +803,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -807,6 +807,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { if (optional.isPresent()) { Bee.this.savedFlowerPos = (BlockPos) optional.get(); Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D); @@ -16,7 +16,7 @@ index 2afe5a4f3abaa3f9883b13fa3895e1e15ed68d3a..2677e7899aa98fc04070f5bbbc40da61 return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -859,6 +860,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -863,6 +864,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -24,7 +24,7 @@ index 2afe5a4f3abaa3f9883b13fa3895e1e15ed68d3a..2677e7899aa98fc04070f5bbbc40da61 } @Override -@@ -905,6 +907,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -909,6 +911,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setWantedPos(); } diff --git a/patches/server/0275-Debug-Marker-API.patch b/patches/server/0275-Debug-Marker-API.patch index ab2c7fe68..81859ec2d 100644 --- a/patches/server/0275-Debug-Marker-API.patch +++ b/patches/server/0275-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 96e8c253cb39822c2b856cf06e78406106ce431c..52c5efb011fa751f2a4dff7b69fde2a42fc71e12 100644 +index 2138d98b83bfee76d0c67272b8e10d14f2da7a3f..9ff6d2ae803e4ebab0d76c8eb20b6524b7d77786 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1538,6 +1538,42 @@ public final class CraftServer implements Server { +@@ -1541,6 +1541,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } @@ -52,7 +52,7 @@ index 96e8c253cb39822c2b856cf06e78406106ce431c..52c5efb011fa751f2a4dff7b69fde2a4 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index a3d28fffdfa4b3a4db3009395eb2842a53949d0d..1fc38937f514de993439487bb5ec492b49a2ad0b 100644 +index 4720939d138300ed410871e40d3d2800224a7987..f30c6e09adb3a6aa485357f859fc2a22227350c9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -2294,6 +2294,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -99,10 +99,10 @@ index a3d28fffdfa4b3a4db3009395eb2842a53949d0d..1fc38937f514de993439487bb5ec492b @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a3c02fd97c745229be98a172e6f65ad8172ec94c..5c2a0f5e76e77b0d73b73ab893d253e86f0f8433 100644 +index a4fd43722384b9b6dff269ff70ea545715a85ec2..16935f8df9446fbf9cde68dd4c7989d983e4d11d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3218,5 +3218,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3247,5 +3247,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) { getHandle().spawnInvulnerableTime = spawnInvulnerableTime; } diff --git a/patches/server/0279-Add-death-screen-API.patch b/patches/server/0279-Add-death-screen-API.patch index f65a365b6..618d2b43c 100644 --- a/patches/server/0279-Add-death-screen-API.patch +++ b/patches/server/0279-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5c2a0f5e76e77b0d73b73ab893d253e86f0f8433..3d2c4ba68b1fdc10d7592164e1fab9b3a6458187 100644 +index 16935f8df9446fbf9cde68dd4c7989d983e4d11d..e21cd8c4015cd726bb10d51545d52c3010381848 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3261,5 +3261,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3290,5 +3290,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket(ClientboundCustomPayloadPacket.DEBUG_GAME_TEST_CLEAR, new FriendlyByteBuf(io.netty.buffer.Unpooled.buffer()))); } diff --git a/patches/server/0287-Language-API.patch b/patches/server/0287-Language-API.patch index a7424e90a..729227d0b 100644 --- a/patches/server/0287-Language-API.patch +++ b/patches/server/0287-Language-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 52c5efb011fa751f2a4dff7b69fde2a42fc71e12..da88daa4f5458c9e98cd1f4925745ed7c9242c6a 100644 +index 9ff6d2ae803e4ebab0d76c8eb20b6524b7d77786..81aee45085a29ceb8e36d7948432e2ca688978c0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -393,6 +393,20 @@ public final class CraftServer implements Server { +@@ -396,6 +396,20 @@ public final class CraftServer implements Server { this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); Bukkit.setServer(this); diff --git a/patches/server/0288-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0288-Milk-Keeps-Beneficial-Effects.patch index 2b6b72913..6e120cdbd 100644 --- a/patches/server/0288-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0288-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f8b920d7b7afff39a62c8a8a08512a7c59a23687..0bd2d45e336a26b3831f16590b419ddb22f7fa57 100644 +index 9012b5b918bca409166db9eb29c201a793886dbb..0b08cf7b26731ffd6f3909342f4e3a92fe0c813e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1125,6 +1125,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1124,6 +1124,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); diff --git a/patches/server/0294-Added-got-ram-event.patch b/patches/server/0294-Added-got-ram-event.patch index 38efc1ae3..bd0d587a1 100644 --- a/patches/server/0294-Added-got-ram-event.patch +++ b/patches/server/0294-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 1a989f9fbeaf51b9dc3ba32e1f6fb838db5af13e..07b76abf75057bc6ba5731e8c0a10d1153598928 100644 +index 31cfc2c8c5188a266c9e9993e5cf322e000df397..b04af8b72357b455597d80592c8b8b0c9da744cd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -422,6 +422,7 @@ public class Goat extends Animal { +@@ -423,6 +423,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/server/0306-Shears-can-defuse-TNT.patch b/patches/server/0306-Shears-can-defuse-TNT.patch index 126324094..d2c9bd5c2 100644 --- a/patches/server/0306-Shears-can-defuse-TNT.patch +++ b/patches/server/0306-Shears-can-defuse-TNT.patch @@ -8,10 +8,10 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t By default the option is disabled to avoid breaking any possible vanilla mechanics. diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index bf3301eb1341ba9d482e10873447c42bd670f5ed..98c12ca547685c189e11c79a6fd3e6d1448539b8 100644 +index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed325b658da 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -@@ -174,4 +174,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -175,4 +175,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end