From 47dc2e92f5d4edca7b2d4df246cfa4c80008333d Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sat, 26 Nov 2022 18:48:36 -0600 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@55a16d8 Fix Varint21FrameDecoder cached length buf usage PaperMC/Paper@e6e37ba Add api to resolve components (#7648) PaperMC/Paper@7168438 [ci skip] Rework workflows to support optional paperclip build (#8583) PaperMC/Paper@da230d5 More vanilla friendly methods to update trades (#8478) PaperMC/Paper@8aff07a Add /paper dumplisteners command (#8507) PaperMC/Paper@b8919a7 pr command action fixes (#8591) PaperMC/Paper@185fa48 Fix chest relooting mechanics (#8580) PaperMC/Paper@b4beac0 Fixes potential issues arising from optimizing getPlayerByUUID (#8585) PaperMC/Paper@f637b1a Fix async entity add due to fungus trees (#7626) PaperMC/Paper@414ea80 ItemStack damage API (#7801) PaperMC/Paper@d98c370 Add displayName methods for advancements (#8584) PaperMC/Paper@44bb599 Add Tick TemporalUnit (#5445) PaperMC/Paper@9f7eef8 Friction API (#6611) PaperMC/Paper@4048d3e Allow using degrees for ArmorStand rotations (#7847) PaperMC/Paper@f59c802 Schoolable Fish API (#7089) PaperMC/Paper@21b964a Added ability to control player's insomnia and phantoms spawning (#6500) PaperMC/Paper@f1583fc Add `/paper dumplisteners tofile` and increase detail of command output (#8592) --- gradle.properties | 2 +- .../0013-LivingEntity-safeFallDistance.patch | 6 +- .../0019-ItemStack-convenience-methods.patch | 6 +- ...0022-LivingEntity-broadcastItemBreak.patch | 4 +- patches/api/0023-Item-entity-immunities.patch | 4 +- ...034-API-for-any-mob-to-burn-daylight.patch | 4 +- .../api/0045-Lobotomize-stuck-villagers.patch | 4 +- patches/api/0048-Remove-Timings.patch | 7 +- patches/api/0056-Fire-Immunity-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 32 ++-- .../server/0002-Fix-pufferfish-issues.patch | 4 +- patches/server/0003-Rebrand.patch | 6 +- patches/server/0004-Purpur-config-files.patch | 10 +- patches/server/0008-Ridables.patch | 22 +-- ...-Configurable-entity-base-attributes.patch | 16 +- patches/server/0012-AFK-API.patch | 12 +- .../0015-LivingEntity-safeFallDistance.patch | 10 +- ...-settings-suppressing-pointless-logs.patch | 4 +- .../0029-Zombie-horse-naturally-spawn.patch | 4 +- ...able-loot-drops-on-death-by-cramming.patch | 6 +- ...urable-void-damage-height-and-damage.patch | 4 +- .../0065-Implement-elytra-settings.patch | 4 +- .../server/0066-Item-entity-immunities.patch | 14 +- .../0072-Add-phantom-spawning-options.patch | 40 ++--- ...leport-to-spawn-if-outside-world-bor.patch | 6 +- patches/server/0079-Squid-EAR-immunity.patch | 6 +- .../server/0080-Phantoms-burn-in-light.patch | 10 +- .../0081-Configurable-villager-breeding.patch | 8 +- .../0083-Totems-work-in-inventory.patch | 6 +- ...4-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...0093-LivingEntity-broadcastItemBreak.patch | 4 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 6 +- ...sable-zombie-aggressiveness-towards-.patch | 10 +- patches/server/0100-Flying-squids-Oh-my.patch | 6 +- .../0102-Configurable-daylight-cycle.patch | 10 +- ...e-entity-breeding-times-configurable.patch | 42 ++--- .../0115-Snow-Golem-rate-of-fire-config.patch | 6 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 8 +- ...fied-Piglin-death-always-counting-as.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 6 +- ...21-Configurable-default-collar-color.patch | 8 +- .../server/0122-Phantom-flames-on-swoop.patch | 6 +- .../0125-Striders-give-saddle-back.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 46 +++--- ...0131-Add-EntityTeleportHinderedEvent.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 142 ++++++++-------- ...ither-Ender-Dragon-can-ride-vehicles.patch | 6 +- patches/server/0140-One-Punch-Man.patch | 6 +- ...urable-ravager-griefable-blocks-list.patch | 6 +- .../0151-Config-for-skipping-night.patch | 6 +- ...0152-Add-config-for-villager-trading.patch | 14 +- patches/server/0154-Drowning-Settings.patch | 8 +- .../0163-Piglin-portal-spawn-modifier.patch | 6 +- ...5-Config-for-wither-explosion-radius.patch | 6 +- .../0166-Gamemode-extra-permissions.patch | 4 +- .../0170-Configurable-mob-blindness.patch | 6 +- ...182-API-for-any-mob-to-burn-daylight.patch | 18 +- ...ake-lightning-rod-range-configurable.patch | 4 +- ...92-Shulker-spawn-from-bullet-options.patch | 6 +- ...onfigurable-hunger-starvation-damage.patch | 4 +- ...omizable-sleeping-actionbar-messages.patch | 4 +- ...0205-Silk-touchable-budding-amethyst.patch | 4 +- .../0211-Toggle-for-kinetic-damage.patch | 6 +- ...izeable-Zombie-Villager-curing-times.patch | 8 +- ...0215-Toggle-for-Wither-s-spawn-sound.patch | 6 +- .../0218-Conduit-behavior-configuration.patch | 4 +- .../server/0219-Cauldron-fill-chances.patch | 4 +- .../0221-Shulker-change-color-with-dye.patch | 6 +- ...ain-and-thunder-should-stop-on-sleep.patch | 8 +- ...or-beds-to-explode-on-villager-sleep.patch | 6 +- ...ion-to-disable-zombie-villagers-cure.patch | 8 +- .../0239-Mobs-always-drop-experience.patch | 156 +++++++++--------- ...t-spiders-from-climbing-world-border.patch | 6 +- ...aring-jeb-produces-random-color-wool.patch | 6 +- .../0246-Mob-head-visibility-percent.patch | 14 +- patches/server/0253-Allow-void-trading.patch | 6 +- .../0255-Configurable-phantom-size.patch | 6 +- ...nfigurable-minimum-demand-for-trades.patch | 8 +- .../0259-Lobotomize-stuck-villagers.patch | 12 +- ...tion-for-villager-display-trade-item.patch | 6 +- ...fig-for-mob-last-hurt-by-player-time.patch | 8 +- ...urable-search-radius-for-villagers-t.patch | 10 +- .../0275-Skeletons-eat-wither-roses.patch | 6 +- patches/server/0287-Remove-Timings.patch | 32 ++-- .../server/0288-Remove-Mojang-Profiler.patch | 48 +++--- ...295-Add-skeleton-bow-accuracy-option.patch | 6 +- .../0306-Milk-Keeps-Beneficial-Effects.patch | 6 +- patches/server/0311-Fire-Immunity-API.patch | 8 +- 90 files changed, 546 insertions(+), 565 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2f7e4c7aa..a1ea3c51a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19.2-R0.1-SNAPSHOT -paperCommit = 3ab194e1858c292a9f4a2df42ff833c9c91df902 +paperCommit = f1583fcd7414bde1ee2efc2b1395a82cdb78b8a2 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0013-LivingEntity-safeFallDistance.patch b/patches/api/0013-LivingEntity-safeFallDistance.patch index bb03a2759..93bc905e9 100644 --- a/patches/api/0013-LivingEntity-safeFallDistance.patch +++ b/patches/api/0013-LivingEntity-safeFallDistance.patch @@ -5,12 +5,12 @@ 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 c9a44e8024f903da83181ee752c971bab22c8895..77861d44e3a0f7271f637751caaf3ffdd26ca046 100644 +index 97336be470a9d545d93f78e683a793f328013ad8..ce3a648542d7bcccefe3a505f79a62e88be878e7 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1016,4 +1016,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1059,4 +1059,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ - void knockback(double strength, double directionX, double directionZ); + void damageItemStack(org.bukkit.inventory.@NotNull EquipmentSlot slot, int amount); // Paper end + + // Purpur start diff --git a/patches/api/0019-ItemStack-convenience-methods.patch b/patches/api/0019-ItemStack-convenience-methods.patch index 9972df1dd..91da19406 100644 --- a/patches/api/0019-ItemStack-convenience-methods.patch +++ b/patches/api/0019-ItemStack-convenience-methods.patch @@ -49,7 +49,7 @@ index cb00e050cd5fff3a037a32ac34e02eeea3827357..6c82d84c190dee87cc72ed0d06f08934 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index b8a344fd900dcbd4b28085a54b85b16c742e9c6f..91444a8bb400d1db36df118c8c24645c26fa72be 100644 +index 870c0ddd101094a3bce1ebf5ec4d42c51053db84..2cd247a315586b35b73e4396d850ca1d347eea92 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -16,6 +16,18 @@ import org.bukkit.inventory.meta.ItemMeta; @@ -71,8 +71,8 @@ index b8a344fd900dcbd4b28085a54b85b16c742e9c6f..91444a8bb400d1db36df118c8c24645c /** * Represents a stack of items. -@@ -978,4 +990,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor - return Bukkit.getUnsafe().isValidRepairItemStack(toBeRepaired, this); +@@ -992,4 +1004,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor + return livingEntity.damageItemStack(this, amount); } // Paper end + diff --git a/patches/api/0022-LivingEntity-broadcastItemBreak.patch b/patches/api/0022-LivingEntity-broadcastItemBreak.patch index ccc8b101c..d6b7b9f2a 100644 --- a/patches/api/0022-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0022-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 77861d44e3a0f7271f637751caaf3ffdd26ca046..dc69ce69a6cc7c2ae6023033dd445807c26bf052 100644 +index ce3a648542d7bcccefe3a505f79a62e88be878e7..bb363d8c651393ee9845bcbd6a95c9d57e1cfcbb 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1031,5 +1031,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1074,5 +1074,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param safeFallDistance Safe fall distance */ void setSafeFallDistance(float safeFallDistance); diff --git a/patches/api/0023-Item-entity-immunities.patch b/patches/api/0023-Item-entity-immunities.patch index 6f3ca0f81..9fd92a3af 100644 --- a/patches/api/0023-Item-entity-immunities.patch +++ b/patches/api/0023-Item-entity-immunities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/org/bukkit/entity/Item.java b/src/main/java/org/bukkit/entity/Item.java -index d0bef15785493b512ff0f7414c1d58d38fead581..fd213c026fdfb3030d0c37f651a88857ca038cba 100644 +index 58017fce436cdbda255f7172fbdadb726d4b113c..05600fc8bf2a61aca8094029bc4c208a710da952 100644 --- a/src/main/java/org/bukkit/entity/Item.java +++ b/src/main/java/org/bukkit/entity/Item.java -@@ -153,4 +153,62 @@ public interface Item extends Entity { +@@ -153,4 +153,62 @@ public interface Item extends Entity, io.papermc.paper.entity.Frictional { // Pa */ public void setHealth(int health); // Paper end diff --git a/patches/api/0034-API-for-any-mob-to-burn-daylight.patch b/patches/api/0034-API-for-any-mob-to-burn-daylight.patch index b684b7ca8..cf5e8bf00 100644 --- a/patches/api/0034-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0034-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 83c74245e75b8895404fe4b7214c686a308e00b5..28be71aa677ed8cb9a9d06b3aba7af40 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index dc69ce69a6cc7c2ae6023033dd445807c26bf052..1460f87718bdbdbde634b3e412adaa8d11e8e5fd 100644 +index bb363d8c651393ee9845bcbd6a95c9d57e1cfcbb..1da4521fe1930ce66e4d9931d059282d3a66e20d 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1038,5 +1038,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1081,5 +1081,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/0045-Lobotomize-stuck-villagers.patch b/patches/api/0045-Lobotomize-stuck-villagers.patch index 1b0592425..5c60b6171 100644 --- a/patches/api/0045-Lobotomize-stuck-villagers.patch +++ b/patches/api/0045-Lobotomize-stuck-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java -index d61855b83da0776fe910dee8cde184c720571a71..b7b7963c07f9859df980017d0515ab437f7d9d10 100644 +index c61e7e41aeb3d4f5f4ac47da8890051d8e97340d..12b08318f78c8144cc809dbccf0feabdd31f0ee2 100644 --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -297,4 +297,14 @@ public interface Villager extends AbstractVillager { +@@ -328,4 +328,14 @@ public interface Villager extends AbstractVillager { */ public void clearReputations(); // Paper end diff --git a/patches/api/0048-Remove-Timings.patch b/patches/api/0048-Remove-Timings.patch index 951b200c7..2a5ad8866 100644 --- a/patches/api/0048-Remove-Timings.patch +++ b/patches/api/0048-Remove-Timings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove Timings diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java -index 4e6e1b8e8aeb07e34536941d2cbfc25e5cfa6c27..5f8aab2cb734fcea7e2b4d4b2803170a7beddb87 100644 +index 34e43e56ccc663e05b9cae36643e8df5eee5cb17..2c15b67149d014fdce2dd74a550013d83b6e44c8 100644 --- a/src/main/java/co/aikar/timings/TimedEventExecutor.java +++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java -@@ -76,8 +76,8 @@ public class TimedEventExecutor implements EventExecutor { +@@ -76,9 +76,9 @@ public class TimedEventExecutor implements EventExecutor { executor.execute(listener, event); return; } @@ -18,7 +18,8 @@ index 4e6e1b8e8aeb07e34536941d2cbfc25e5cfa6c27..5f8aab2cb734fcea7e2b4d4b2803170a - } + //} // Purpur } - } + + @Override diff --git a/src/main/java/co/aikar/timings/Timing.java b/src/main/java/co/aikar/timings/Timing.java index a21e5ead5024fd0058c5e3302d8201dd249d32bc..505908e987a032a801ae03d7fb020dfb662bf81b 100644 --- a/src/main/java/co/aikar/timings/Timing.java diff --git a/patches/api/0056-Fire-Immunity-API.patch b/patches/api/0056-Fire-Immunity-API.patch index 3e9031f87..65c54ccb2 100644 --- a/patches/api/0056-Fire-Immunity-API.patch +++ b/patches/api/0056-Fire-Immunity-API.patch @@ -28,7 +28,7 @@ index 28be71aa677ed8cb9a9d06b3aba7af40f0992f68..3959765b110b6fed91348c11ff85e302 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/Item.java b/src/main/java/org/bukkit/entity/Item.java -index fd213c026fdfb3030d0c37f651a88857ca038cba..35e7684cf8d9d5eea4b88ada24ff252ba225bd62 100644 +index 05600fc8bf2a61aca8094029bc4c208a710da952..932e65f3aff0d7b15663ef9855b8b74dcb066dd6 100644 --- a/src/main/java/org/bukkit/entity/Item.java +++ b/src/main/java/org/bukkit/entity/Item.java @@ -1,6 +1,7 @@ @@ -39,7 +39,7 @@ index fd213c026fdfb3030d0c37f651a88857ca038cba..35e7684cf8d9d5eea4b88ada24ff252b import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -@@ -187,7 +188,9 @@ public interface Item extends Entity { +@@ -187,7 +188,9 @@ public interface Item extends Entity, io.papermc.paper.entity.Frictional { // Pa * Set whether or not this item is immune to fire * * @param immuneToFire True to make immune to fire diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 6e0aa09c5..0687486dd 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1714,10 +1714,10 @@ index 2358bb1788cfb902bac9b3b7588954af2d2cd823..163f14b4e1ca99d75e5d8e14190f7b91 this.wasOnGround = this.entity.isOnGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index feb0a6d6a90850977b393440881c472c317a9323..fde970ada330e3e2fd481c7687c8499129bd929c 100644 +index 79aa3374fd47cd57d2e0810bb5afebbdb38a1892..77d538ab79b31cf43620e560cdf2876a26b2bb7f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -708,6 +708,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -709,6 +709,7 @@ public class ServerLevel extends Level implements WorldGenLevel { org.spigotmc.ActivationRange.activateEntities(this); // Spigot timings.entityTick.startTiming(); // Spigot this.entityTickList.forEach((entity) -> { @@ -1725,7 +1725,7 @@ index feb0a6d6a90850977b393440881c472c317a9323..fde970ada330e3e2fd481c7687c84991 if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); -@@ -727,7 +728,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -728,7 +729,20 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("tick"); @@ -1747,7 +1747,7 @@ index feb0a6d6a90850977b393440881c472c317a9323..fde970ada330e3e2fd481c7687c84991 gameprofilerfiller.pop(); } } -@@ -794,9 +808,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -795,9 +809,11 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -1760,7 +1760,7 @@ index feb0a6d6a90850977b393440881c472c317a9323..fde970ada330e3e2fd481c7687c84991 public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -807,7 +823,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -808,7 +824,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -1769,7 +1769,7 @@ index feb0a6d6a90850977b393440881c472c317a9323..fde970ada330e3e2fd481c7687c84991 blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); -@@ -831,7 +847,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -832,7 +848,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.popPush("iceandsnow"); @@ -2118,7 +2118,7 @@ index 72516335570d7137a62ec8667a6e8f06f024692f..b44322c337bcded94c60e1761a389101 public final String id; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3bfa0c6a0d82ed980b3289051892a6d1745ebb69..84caca55518464ac4fdf7dfe766bcaf00a9da227 100644 +index 11d7c42d65b91bf57b7bba7812aa17e60e018c67..77a96dd66e2c39495f23b4219dfdbb0820233434 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2129,7 +2129,7 @@ index 3bfa0c6a0d82ed980b3289051892a6d1745ebb69..84caca55518464ac4fdf7dfe766bcaf0 public abstract class LivingEntity extends Entity { -@@ -398,8 +397,7 @@ public abstract class LivingEntity extends Entity { +@@ -399,8 +398,7 @@ public abstract class LivingEntity extends Entity { if (this.isAlive()) { boolean flag = this instanceof net.minecraft.world.entity.player.Player; @@ -2139,7 +2139,7 @@ index 3bfa0c6a0d82ed980b3289051892a6d1745ebb69..84caca55518464ac4fdf7dfe766bcaf0 this.hurt(DamageSource.IN_WALL, 1.0F); } else if (flag && !this.level.getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level.getWorldBorder().getDistanceToBorder(this) + this.level.getWorldBorder().getDamageSafeZone(); -@@ -1313,6 +1311,15 @@ public abstract class LivingEntity extends Entity { +@@ -1328,6 +1326,15 @@ public abstract class LivingEntity extends Entity { return this.getHealth() <= 0.0F; } @@ -2155,7 +2155,7 @@ index 3bfa0c6a0d82ed980b3289051892a6d1745ebb69..84caca55518464ac4fdf7dfe766bcaf0 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -1906,6 +1913,20 @@ public abstract class LivingEntity extends Entity { +@@ -1921,6 +1928,20 @@ public abstract class LivingEntity extends Entity { return this.lastClimbablePos; } @@ -2176,7 +2176,7 @@ index 3bfa0c6a0d82ed980b3289051892a6d1745ebb69..84caca55518464ac4fdf7dfe766bcaf0 public boolean onClimbable() { if (this.isSpectator()) { return false; -@@ -3607,7 +3628,10 @@ public abstract class LivingEntity extends Entity { +@@ -3622,7 +3643,10 @@ public abstract class LivingEntity extends Entity { Vec3 vec3d1 = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); // Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists @@ -2456,10 +2456,10 @@ index a4690391df0aa26abea1ad92e6143eb19c5d1143..3c3453638e117609190787efbf5d87fc 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 fcc5444a1268931a0fd2df1e6bbbc17cfd5a61e0..16a55f94bda9f959548772c8916b4dc3eb045d47 100644 +index c8d8fdef7b8abc0f59b7d19462825ae30c8d4f48..8a5efb6c81bbe85b67a6bb83c0c4afdf995121d0 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -252,10 +252,16 @@ public class ItemEntity extends Entity { +@@ -257,10 +257,16 @@ public class ItemEntity extends Entity { if (entityitem.isMergable()) { // Paper Start - Fix items merging through walls if (this.level.paperConfig().fixes.fixItemsMergingThroughWalls) { @@ -2551,7 +2551,7 @@ index 27bd70dc30c8472e5a80f3273f9233a0392f831d..b3158b1a7772f1254dd081ff6d3278a9 this.level.getProfiler().pop(); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 10b45ec24a5a0867106d1694312385ad1e267f43..93077e8c6b5a35adc6febb749d1d08be172402f1 100644 +index 49f82c954155115b2caa87d7624521a9f7982be2..fa7cede4a0b59efde4949dba4a010aed5cd0a960 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -140,6 +140,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -3574,10 +3574,10 @@ index 0b3b46348ac9195bff1492ffc11fcbff7d3f5c6f..4010052c53f3a2831b4d5aa1c041d858 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 1628913b1e9b91e68dcd942a38da4aed95b12d4a..05cc8f9cdcd7e920bf9503f68efb16cd74a359a2 100644 +index 103ab25119bfcdd21eac7e1deeac025108e3c138..47ff8c22bd9c7220df98268f6db224d1cd66a0ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -430,7 +430,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -435,7 +435,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0002-Fix-pufferfish-issues.patch b/patches/server/0002-Fix-pufferfish-issues.patch index 3e684dcc8..da48b3cda 100644 --- a/patches/server/0002-Fix-pufferfish-issues.patch +++ b/patches/server/0002-Fix-pufferfish-issues.patch @@ -27,10 +27,10 @@ index ed9c8e882739c02d0d04129d251e4c726b422c07..5426e57ed67b0d144818a7e3b917c90d "This can improve performance by a few percent, but has minor gameplay implications."); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index fde970ada330e3e2fd481c7687c8499129bd929c..a32c574e7c2beadea31faec788b65a4361414c7c 100644 +index 77d538ab79b31cf43620e560cdf2876a26b2bb7f..bdc5dc90dc036a5480dfd776d5e6bf5520d1cc73 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -808,7 +808,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -809,7 +809,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch index 182b28105..f9b3710f5 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -271,7 +271,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..aa8212432825db65cf485cd93f734ccd @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 76ee8adfb6cccc15dde748b0796d1de7fc5507f8..d49cbfd8a7cfd636baff5a9c9d5f015bec9adb81 100644 +index 316120a57802c45fb9b02a4daee207a0845c63be..e3c1a7f7e643b8a2f42e76c92087219f984ea8aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -866,7 +866,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -297,10 +297,10 @@ index cdefb2025eedea7e204d70d568adaf1c1ec4c03c..d1526ed7197b883e1d1f07baf285bf5e // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 05cc8f9cdcd7e920bf9503f68efb16cd74a359a2..0b248a987d22da21aa802c5dba00b4f987c365ea 100644 +index 47ff8c22bd9c7220df98268f6db224d1cd66a0ab..b1e11bb17212174e546892cbaa04740e632cd075 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -430,7 +430,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -435,7 +435,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0004-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch index 526958b11..673996d89 100644 --- a/patches/server/0004-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -29,10 +29,10 @@ index 061716934ba0a1f01e4d85d664034f72b3c7a765..acd95cf1dc7f009b63e44e4404e17362 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 0d140dd7d55407b57fc3394ceb2eba5136e4fcaf..ed64b78bc8510fbe8fda9a10b779e91d99313676 100644 +index 81f4e3c869623b6dd2d80886652fa41791fe7032..901edaae2230c48fa0584991ed82498d568d5fc0 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -318,6 +318,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -319,6 +319,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy } } @@ -64,7 +64,7 @@ index 0d140dd7d55407b57fc3394ceb2eba5136e4fcaf..ed64b78bc8510fbe8fda9a10b779e91d if (this.source.acceptsSuccess() && !this.silent) { this.source.sendSystemMessage(message); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 01928849f9dd42a3ea8826b56d419e8c09450f47..a18abdcbc51f3b6fda96a4f6dd8674521338f37f 100644 +index b60c3d4f5ab695e0e449678a8f0ae1eea2f83aab..24b7ae3253b0710954d4a522114fc0617c0ef3b3 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -223,6 +223,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -84,7 +84,7 @@ index 01928849f9dd42a3ea8826b56d419e8c09450f47..a18abdcbc51f3b6fda96a4f6dd867452 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider // Paper end diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 35d6a8fe168caa5b68b471bd78cc95b99758d1b0..0c397d4c1efc7a812ecc02119b9740cbac303a04 100644 +index baf48dc10723cc7c7ececfeb8a05b57aff6ed1bf..eeab93f6a3eea19a58fe1b78e0727f8c109640d0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -174,6 +174,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -105,7 +105,7 @@ index 35d6a8fe168caa5b68b471bd78cc95b99758d1b0..0c397d4c1efc7a812ecc02119b9740cb 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 8fc70e7f75786ad10a97676a04bc0bc91f9526fe..37af56b657fa2d7e17c02f230b66a514b21cf344 100644 +index c42e913376fc76d588070fe130470196429fa3b2..285510a7b25c5979feb5e38391d802570f01e4e3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -966,6 +966,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 7ebaa73b5..c26ab8c36 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -34,7 +34,7 @@ index 10869c6c0697917c412f80dfdc9b211fec0b5b06..f2d589f1ad9b507fca816320472caa45 this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a32c574e7c2beadea31faec788b65a4361414c7c..4cea8ac36f618e86ef4fcbe214e8d95cf3bf6fcf 100644 +index bdc5dc90dc036a5480dfd776d5e6bf5520d1cc73..503bf34f3c9256ed6f0f31f5396d0baeb9ffea59 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -220,6 +220,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -194,7 +194,7 @@ index c1e9b40a4a0f9cdc650caa88b5ea132e06ee2496..882ab40c8cdea8c214cb8344b3ccecdd protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 84caca55518464ac4fdf7dfe766bcaf00a9da227..4ac4c6de004111dde2a7e61b35ff80be2a3eb053 100644 +index 77a96dd66e2c39495f23b4219dfdbb0820233434..6e626aab5c90100de969125c28c12d8d02e68ea0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -220,9 +220,9 @@ public abstract class LivingEntity extends Entity { @@ -210,7 +210,7 @@ index 84caca55518464ac4fdf7dfe766bcaf00a9da227..4ac4c6de004111dde2a7e61b35ff80be protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -287,7 +287,7 @@ public abstract class LivingEntity extends Entity { +@@ -288,7 +288,7 @@ public abstract class LivingEntity extends Entity { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); @@ -219,7 +219,7 @@ index 84caca55518464ac4fdf7dfe766bcaf00a9da227..4ac4c6de004111dde2a7e61b35ff80be 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 { +@@ -339,6 +339,7 @@ public abstract class LivingEntity extends Entity { 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); } @@ -227,7 +227,7 @@ index 84caca55518464ac4fdf7dfe766bcaf00a9da227..4ac4c6de004111dde2a7e61b35ff80be @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2675,7 +2676,7 @@ public abstract class LivingEntity extends Entity { +@@ -2690,7 +2691,7 @@ public abstract class LivingEntity extends Entity { } protected long lastJumpTime = 0L; // Paper @@ -236,7 +236,7 @@ index 84caca55518464ac4fdf7dfe766bcaf00a9da227..4ac4c6de004111dde2a7e61b35ff80be double d0 = (double) this.getJumpPower() + this.getJumpBoostPower(); Vec3 vec3d = this.getDeltaMovement(); // Paper start -@@ -3417,8 +3418,10 @@ public abstract class LivingEntity extends Entity { +@@ -3432,8 +3433,10 @@ public abstract class LivingEntity extends Entity { this.pushEntities(); this.level.getProfiler().pop(); // Paper start @@ -249,7 +249,7 @@ index 84caca55518464ac4fdf7dfe766bcaf00a9da227..4ac4c6de004111dde2a7e61b35ff80be 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()); -@@ -3428,6 +3431,21 @@ public abstract class LivingEntity extends Entity { +@@ -3443,6 +3446,21 @@ public abstract class LivingEntity extends Entity { absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -4778,7 +4778,7 @@ index e0e16d3b4ba0afc3cfc66b93ecf5f889599f48dd..2040da30822f6f24f6de96bd47f2f8cb } diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index fb0a77b4cf1ba47c73c00993bd9b7454240fe5d6..9e5542220eeada8b4f539a5bbbeead670eef4057 100644 +index d1f7d912ad274cf90a912e44d63b39f9387a694b..179fe7f6f4f2305f8e07106f0d7151cd8d69a959 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -78,6 +78,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -5004,7 +5004,7 @@ index b3158b1a7772f1254dd081ff6d3278a92192e896..df55f9a9f684b474a3bff09770694717 public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 93077e8c6b5a35adc6febb749d1d08be172402f1..a6519bf96f39fa69ecb65ef25dba80261bb03323 100644 +index fa7cede4a0b59efde4949dba4a010aed5cd0a960..b5033df0db18ef54077cead642e81715ffb8acc9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -5146,10 +5146,10 @@ index 4132c1113f5437a776e5e3c1cb306904775aed88..1a945a32c3d3705a318ebca72a365931 public void tick() { super.tick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 9368ec01e498f913bc5b7b3e77fe87659090d9b5..9aee601caad5b314cef2e32a57fdb8ab8aeae896 100644 +index 01132b10799034232e7e5cbb460d848601e04012..32169b7dbfe95bdc5ded6d64524e015f1b939e7a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1384,4 +1384,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1390,4 +1390,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return !this.getHandle().level.noCollision(this.getHandle(), aabb); } // Paper End - Collision API diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 2fb5babee..8f108f2ec 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8bcbaafaa8979773bafe6a9af3e4b97b54039bce..ad8e766c1b8262e9130fca3bd753b0cc6628db35 100644 +index 810e0b92e2090c18806297b8c29d4e539ddde68e..b32ce5c62c1a700ee612c4c2177c068e8a2f9f53 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -155,7 +155,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,10 +34,10 @@ index 882ab40c8cdea8c214cb8344b3ccecddb2967c1c..cb79d2c958fbd34f8c8818e7e1c0db88 @Override diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f7d194069b0ef3b4b0a6f360c2b00a2f22d5bcc3..b93edb473c47bd49d0c6f1e39ad36063771672d5 100644 +index 6e626aab5c90100de969125c28c12d8d02e68ea0..86dfb5537f1da7f1e2b8e9bfeb43111b0ac16228 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -288,6 +288,7 @@ public abstract class LivingEntity extends Entity { +@@ -289,6 +289,7 @@ public abstract class LivingEntity extends Entity { this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur @@ -45,7 +45,7 @@ index f7d194069b0ef3b4b0a6f360c2b00a2f22d5bcc3..b93edb473c47bd49d0c6f1e39ad36063 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()); -@@ -303,6 +304,8 @@ public abstract class LivingEntity extends Entity { +@@ -304,6 +305,8 @@ public abstract class LivingEntity extends Entity { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -1313,7 +1313,7 @@ index 9970c2c09b294e601b7cda4f1e8cbf2aed13b0dc..6236a557d2a73dff70141140f79faf85 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index fb291a8a792dfd48c70d38b12b2733566ba62506..70a673f10591eaaecdafa7b7017b3120b7d1c6da 100644 +index 2040da30822f6f24f6de96bd47f2f8cb4cd2a266..7582f5bf8915af14afe4459fe258e4adcfd35346 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -120,6 +120,11 @@ public class Zombie extends Monster { @@ -1338,7 +1338,7 @@ index fb291a8a792dfd48c70d38b12b2733566ba62506..70a673f10591eaaecdafa7b7017b3120 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 9e5542220eeada8b4f539a5bbbeead670eef4057..51ea3307a9264e665cbf8106e4562afe0c2065c5 100644 +index 179fe7f6f4f2305f8e07106f0d7151cd8d69a959..a45f743526ff0894cc730f0e9ff393fb27703d9a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -93,6 +93,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1432,7 +1432,7 @@ index ff149234a8f3e1c94961e41d5bc8117460b301d9..75db61c5aab66234b26f7899229ddca8 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index a6519bf96f39fa69ecb65ef25dba80261bb03323..ef08ec3eb88ee1ab624e2bd38aaff5e8f97720f2 100644 +index b5033df0db18ef54077cead642e81715ffb8acc9..8127b5175ec2ba06fa4127be85978625bb74e53e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -175,6 +175,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1448,7 +1448,7 @@ index a6519bf96f39fa69ecb65ef25dba80261bb03323..ef08ec3eb88ee1ab624e2bd38aaff5e8 @Override diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index bb710e97a515d25a5835805cadfca48b2f1f916a..87d2f596ed2c313dd49f3b0c7a1a33d9288844ff 100644 +index 204567f3ce802a0f757d7270b046f905641b0cfb..f730005269717d805fbcee832a1471c490605684 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -81,6 +81,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/server/0012-AFK-API.patch b/patches/server/0012-AFK-API.patch index 990e8f716..168b94fcb 100644 --- a/patches/server/0012-AFK-API.patch +++ b/patches/server/0012-AFK-API.patch @@ -155,13 +155,13 @@ index 823efad652d8ff9e96b99375b102fef6f017716e..60f89d7c77a5e792e21e93e35ed1670b } // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java -index a00c3d96f2fc7131d1f4afa7af4e41ace3cfce89..5a3e29aedc537c672d11385cec562b2c30761730 100644 +index 72abebff2018cde2922e97ad6478f93da9aed3ec..412963d7af38a53b6010007278d959a5b11b83c3 100644 --- a/src/main/java/net/minecraft/world/entity/EntitySelector.java +++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java -@@ -28,6 +28,7 @@ public final class EntitySelector { +@@ -39,6 +39,7 @@ public final class EntitySelector { + return net.minecraft.util.Mth.clamp(serverPlayer.getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= playerInsomniaTicks; }; - public static final Predicate CAN_BE_COLLIDED_WITH = EntitySelector.NO_SPECTATORS.and(Entity::canBeCollidedWith); - public static Predicate isInsomniac = (player) -> net.minecraft.util.Mth.clamp(((net.minecraft.server.level.ServerPlayer) player).getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= 72000; // Paper + // Paper end + public static Predicate notAfk = (player) -> !player.isAfk(); // Purpur private EntitySelector() {} @@ -200,7 +200,7 @@ index 86c0d7e9775042901d01528f9b55298344ea0ff5..d71250144abcb613598e1b795d096b9c public boolean processClick(InteractionHand hand) { Entity vehicle = getRootVehicle(); diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java -index 87beea39636b641dc5b46c2755a00285b7671ac5..95931a038d3c845048b1ffaadd1e930a0fcb44bb 100644 +index 6e55f383f48e9a304b0acd541728394615dc6478..be4e1462ca8f8ef7a19e3af44d82826b9e9b8ab9 100644 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java +++ b/src/main/java/net/minecraft/world/level/EntityGetter.java @@ -154,7 +154,7 @@ public interface EntityGetter { @@ -305,7 +305,7 @@ index b411ba7283b8d6abf7cf53c3c82b612c801ebbee..657dfaa9cf2990fcade8739d3e1c3f9e public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 4e978e12130d685257f408247c4b61a3909fde80..e8233eb0e69a5263ee9f153a3a2eee3936011262 100644 +index b87756d9a7b04ea2613208984b2583eca3f32af6..7529bca82efe4c33dbf781bcf6f8b583fa54fa95 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -203,6 +203,7 @@ public class ActivationRange diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index f0017ba9b..4b90478f6 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ 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 b93edb473c47bd49d0c6f1e39ad36063771672d5..e570000f7314946fdab54abecea059a4c78a43e8 100644 +index 86dfb5537f1da7f1e2b8e9bfeb43111b0ac16228..da4fe84f640eacc7c1c3da9a6adee4824c1d10fa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -255,6 +255,7 @@ public abstract class LivingEntity extends Entity { @@ -16,7 +16,7 @@ index b93edb473c47bd49d0c6f1e39ad36063771672d5..e570000f7314946fdab54abecea059a4 public boolean forceDrops; public ArrayList drops = new ArrayList(); public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -354,8 +355,8 @@ public abstract class LivingEntity extends Entity { +@@ -355,8 +356,8 @@ public abstract class LivingEntity extends Entity { this.tryAddSoulSpeed(); } @@ -27,7 +27,7 @@ index b93edb473c47bd49d0c6f1e39ad36063771672d5..e570000f7314946fdab54abecea059a4 if (!state.isAir()) { double d1 = Math.min((double) (0.2F + f / 15.0F), 2.5D); -@@ -1991,7 +1992,7 @@ public abstract class LivingEntity extends Entity { +@@ -2006,7 +2007,7 @@ public abstract class LivingEntity extends Entity { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -62,10 +62,10 @@ index 8b1942b396606f0c989645a6ac587fbdd26a3dc5..c1c5e884f00398032196ee71b55b348f // 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 0f2711348db95d0deabf50e9c077aeba77cf61c7..6ea7afee8df8ba80cd6a1fec64eecac4a2f98613 100644 +index e3c1a7f7e643b8a2f42e76c92087219f984ea8aa..810e13a060a7c64f8d0d08a632b378ef8480710e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -984,4 +984,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1043,4 +1043,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0026-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0026-Logger-settings-suppressing-pointless-logs.patch index 3fa259eaa..3047bc66d 100644 --- a/patches/server/0026-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0026-Logger-settings-suppressing-pointless-logs.patch @@ -17,10 +17,10 @@ index a0c19503aabab5378d672a30163d35a5ba05b6c1..897e761be8c1f79562f54101173fbba7 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 80c1e0e47818486a68e0114b063395290365346b..c677a55db62b4d197eeb1bf5d929e24019fed5ec 100644 +index 0d3587e2d454fb0994ecff930b5e496a3999746a..6a3538feee986daf186a09156629d3916e993557 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -295,6 +295,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -296,6 +296,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { // Paper start diff --git a/patches/server/0029-Zombie-horse-naturally-spawn.patch b/patches/server/0029-Zombie-horse-naturally-spawn.patch index 3bef7ae37..076fbec9c 100644 --- a/patches/server/0029-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0029-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4cea8ac36f618e86ef4fcbe214e8d95cf3bf6fcf..14e7aa4f781bda0d964194f9be6935e8bd057931 100644 +index 503bf34f3c9256ed6f0f31f5396d0baeb9ffea59..125faced389b5f467d96dab4e2ac4ffe85c82f50 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -831,9 +831,15 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -832,9 +832,15 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch index a77e8c671..dabe3193b 100644 --- a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0046-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 e570000f7314946fdab54abecea059a4c78a43e8..29d33251d0b712b141c2ed8c78d0913b7b924c3c 100644 +index da4fe84f640eacc7c1c3da9a6adee4824c1d10fa..eaac469c2ccad3536c2e20211f7618d4de3e370c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1750,6 +1750,7 @@ public abstract class LivingEntity extends Entity { +@@ -1765,6 +1765,7 @@ public abstract class LivingEntity extends Entity { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index e570000f7314946fdab54abecea059a4c78a43e8..29d33251d0b712b141c2ed8c78d0913b this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1758,6 +1759,7 @@ public abstract class LivingEntity extends Entity { +@@ -1773,6 +1774,7 @@ public abstract class LivingEntity extends Entity { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0059-Configurable-void-damage-height-and-damage.patch b/patches/server/0059-Configurable-void-damage-height-and-damage.patch index 6fa83c228..5b5ea9a56 100644 --- a/patches/server/0059-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0059-Configurable-void-damage-height-and-damage.patch @@ -18,10 +18,10 @@ index b32ce5c62c1a700ee612c4c2177c068e8a2f9f53..ece73bc2f6d67dde38bb2b42dd2dcf3b && (!(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 2256491ae00f43c3b49b43fcbcf6e0d60141adff..4ffe3171067a448128644a9501b6160625870459 100644 +index eaac469c2ccad3536c2e20211f7618d4de3e370c..519ee9e51dd181c1c1a269151cc832f84e937eed 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2493,7 +2493,7 @@ public abstract class LivingEntity extends Entity { +@@ -2508,7 +2508,7 @@ public abstract class LivingEntity extends Entity { @Override protected void outOfWorld() { diff --git a/patches/server/0065-Implement-elytra-settings.patch b/patches/server/0065-Implement-elytra-settings.patch index d5ca3f6ec..5558ffa91 100644 --- a/patches/server/0065-Implement-elytra-settings.patch +++ b/patches/server/0065-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4ffe3171067a448128644a9501b6160625870459..44af2badf212f740ca7a7b24b960f86fef359588 100644 +index 519ee9e51dd181c1c1a269151cc832f84e937eed..2eeb3ad5d0286c14b0d61e68e398a459c41058cc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3478,7 +3478,16 @@ public abstract class LivingEntity extends Entity { +@@ -3493,7 +3493,16 @@ public abstract class LivingEntity extends Entity { int j = i / 10; if (j % 2 == 0) { diff --git a/patches/server/0066-Item-entity-immunities.patch b/patches/server/0066-Item-entity-immunities.patch index 4085ddc99..c985d1966 100644 --- a/patches/server/0066-Item-entity-immunities.patch +++ b/patches/server/0066-Item-entity-immunities.patch @@ -18,13 +18,13 @@ index 163f14b4e1ca99d75e5d8e14190f7b91cb58e8f3..7880cdcaf12197f6b36777c51b2859f2 public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set 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 16a55f94bda9f959548772c8916b4dc3eb045d47..aa1c929d948cea8f6212330f922eb5f1d9b9bb97 100644 +index 8a5efb6c81bbe85b67a6bb83c0c4afdf995121d0..d7e102024b495067335fe008ec1649708f3a4016 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 { - private int lastTick = MinecraftServer.currentTick - 1; // CraftBukkit +@@ -56,6 +56,12 @@ public class ItemEntity extends Entity { 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 + // Purpur start + public boolean immuneToCactus = false; + public boolean immuneToExplosion = false; @@ -34,7 +34,7 @@ index 16a55f94bda9f959548772c8916b4dc3eb045d47..aa1c929d948cea8f6212330f922eb5f1 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -337,6 +343,15 @@ public class ItemEntity extends Entity { +@@ -342,6 +348,15 @@ public class ItemEntity extends Entity { return false; } else if (!this.getItem().getItem().canBeHurtBy(source)) { return false; @@ -50,7 +50,7 @@ index 16a55f94bda9f959548772c8916b4dc3eb045d47..aa1c929d948cea8f6212330f922eb5f1 } else if (this.level.isClientSide) { return true; } else { -@@ -522,6 +537,12 @@ public class ItemEntity extends Entity { +@@ -543,6 +558,12 @@ public class ItemEntity extends Entity { this.getEntityData().set(ItemEntity.DATA_ITEM, stack); this.getEntityData().markDirty(ItemEntity.DATA_ITEM); // CraftBukkit - SPIGOT-4591, must mark dirty this.despawnRate = level.paperConfig().entities.spawning.altItemDespawnRate.enabled ? level.paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), level.spigotConfig.itemDespawnRate) : level.spigotConfig.itemDespawnRate; // Paper @@ -64,10 +64,10 @@ index 16a55f94bda9f959548772c8916b4dc3eb045d47..aa1c929d948cea8f6212330f922eb5f1 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index fea44ba6a6584b4a510af6a58cab07eecec6b68b..f3bf5199bc7ddf8a3d0dc67a184e7690efa659eb 100644 +index ecec5e17807a760769fc0ea79c2a0161cc5db1ef..3023cadd21947389158f1bfaf9fe84fd0ea80456 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -148,4 +148,46 @@ public class CraftItem extends CraftEntity implements Item { +@@ -160,4 +160,46 @@ public class CraftItem extends CraftEntity implements Item { public EntityType getType() { return EntityType.DROPPED_ITEM; } diff --git a/patches/server/0072-Add-phantom-spawning-options.patch b/patches/server/0072-Add-phantom-spawning-options.patch index 1197f7899..902f35cb1 100644 --- a/patches/server/0072-Add-phantom-spawning-options.patch +++ b/patches/server/0072-Add-phantom-spawning-options.patch @@ -5,21 +5,19 @@ Subject: [PATCH] Add phantom spawning options diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java -index 2093d08bccbfbe096ea24cc4f70cbfdfa07d6a56..8f0add62c1fff6e14e83dc9eb87c5c20c6517b91 100644 +index ee299451437822544f0c79cc878110c959ec5dc4..9cb157bfcbcd309fbe7f763159592a56d2b43ed9 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -41,8 +41,8 @@ public class PhantomSpawner implements CustomSpawner { - if (this.nextTick > 0) { - return 0; - } else { -- this.nextTick += (60 + randomsource.nextInt(60)) * 20; +@@ -51,7 +51,7 @@ public class PhantomSpawner implements CustomSpawner { + int spawnAttemptMaxSeconds = world.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds; + this.nextTick += (spawnAttemptMinSeconds + randomsource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20; + // Paper end - if (world.getSkyDarken() < 5 && world.dimensionType().hasSkyLight()) { -+ this.nextTick += world.purpurConfig.phantomSpawnDelayMin + randomsource.nextInt(world.purpurConfig.phantomSpawnDelayMax - world.purpurConfig.phantomSpawnDelayMin + 1); // Purpur + if (world.getSkyDarken() < world.purpurConfig.phantomSpawnMinSkyDarkness && world.dimensionType().hasSkyLight()) { // Purpur return 0; } else { int i = 0; -@@ -54,22 +54,22 @@ public class PhantomSpawner implements CustomSpawner { +@@ -63,10 +63,10 @@ public class PhantomSpawner implements CustomSpawner { if (!entityhuman.isSpectator() && (!world.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !entityhuman.isCreative())) { // Paper BlockPos blockposition = entityhuman.blockPosition(); @@ -32,13 +30,7 @@ index 2093d08bccbfbe096ea24cc4f70cbfdfa07d6a56..8f0add62c1fff6e14e83dc9eb87c5c20 ServerStatsCounter serverstatisticmanager = ((ServerPlayer) entityhuman).getStats(); int j = Mth.clamp(serverstatisticmanager.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), (int) 1, Integer.MAX_VALUE); boolean flag2 = true; - -- if (randomsource.nextInt(j) >= 72000) { -- BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21)); -+ if (randomsource.nextInt(j) >= world.purpurConfig.phantomSpawnMinTimeSinceSlept) { // Purpur -+ BlockPos blockposition1 = blockposition.above(world.purpurConfig.phantomSpawnMinOverhead + randomsource.nextInt(world.purpurConfig.phantomSpawnMaxOverhead - world.purpurConfig.phantomSpawnMinOverhead + 1)).east(-world.purpurConfig.phantomSpawnOverheadRadius + randomsource.nextInt(world.purpurConfig.phantomSpawnOverheadRadius * 2 + 1)).south(-world.purpurConfig.phantomSpawnOverheadRadius + randomsource.nextInt(world.purpurConfig.phantomSpawnOverheadRadius * 2 + 1)); // Purpur - BlockState iblockdata = world.getBlockState(blockposition1); - FluidState fluid = world.getFluidState(blockposition1); +@@ -78,7 +78,7 @@ public class PhantomSpawner implements CustomSpawner { if (NaturalSpawner.isValidEmptySpawnBlock(world, blockposition1, iblockdata, fluid, EntityType.PHANTOM)) { SpawnGroupData groupdataentity = null; @@ -48,42 +40,30 @@ index 2093d08bccbfbe096ea24cc4f70cbfdfa07d6a56..8f0add62c1fff6e14e83dc9eb87c5c20 for (int l = 0; l < k; ++l) { // Paper start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a216283fd76991539b494afacbaeb011fb8f8ec..b45d0094151d12724705bfa65eef52e5bdcb8426 100644 +index 3a216283fd76991539b494afacbaeb011fb8f8ec..55ea8e64bea557ceac97426b24e4cca96a9c5d0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1058,6 +1058,18 @@ public class PurpurWorldConfig { +@@ -1058,6 +1058,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; -+ public int phantomSpawnDelayMin = 1200; -+ public int phantomSpawnDelayMax = 2400; + public int phantomSpawnMinSkyDarkness = 5; + public boolean phantomSpawnOnlyAboveSeaLevel = true; + public boolean phantomSpawnOnlyWithVisibleSky = true; + public double phantomSpawnLocalDifficultyChance = 3.0D; -+ public int phantomSpawnMinTimeSinceSlept = 72000; -+ public int phantomSpawnMinOverhead = 20; -+ public int phantomSpawnMaxOverhead = 35; -+ public int phantomSpawnOverheadRadius = 10; + public int phantomSpawnMinPerAttempt = 1; + public int phantomSpawnMaxPerAttempt = -1; private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1082,6 +1094,18 @@ public class PurpurWorldConfig { +@@ -1082,6 +1088,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); -+ phantomSpawnDelayMin = getInt("mobs.phantom.spawn.delay.min", phantomSpawnDelayMin); -+ phantomSpawnDelayMax = getInt("mobs.phantom.spawn.delay.max", phantomSpawnDelayMax); + phantomSpawnMinSkyDarkness = getInt("mobs.phantom.spawn.min-sky-darkness", phantomSpawnMinSkyDarkness); + phantomSpawnOnlyAboveSeaLevel = getBoolean("mobs.phantom.spawn.only-above-sea-level", phantomSpawnOnlyAboveSeaLevel); + phantomSpawnOnlyWithVisibleSky = getBoolean("mobs.phantom.spawn.only-with-visible-sky", phantomSpawnOnlyWithVisibleSky); + phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); -+ phantomSpawnMinTimeSinceSlept = getInt("mobs.phantom.spawn.min-time-since-slept", phantomSpawnMinTimeSinceSlept); -+ phantomSpawnMinOverhead = getInt("mobs.phantom.spawn.overhead.min", phantomSpawnMinOverhead); -+ phantomSpawnMaxOverhead = getInt("mobs.phantom.spawn.overhead.max", phantomSpawnMaxOverhead); -+ phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius); + phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); + phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); } diff --git a/patches/server/0078-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0078-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 9bd8a4b05..ceb6e9e86 100644 --- a/patches/server/0078-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0078-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,10 +36,10 @@ index fae43130665255e1b264adc58efeb2a6508efdaa..cb10a4f78f462a60ce356732878b9f98 + // 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 8401577ee010c211c99c174bc70536d606a09b1d..5230e9a58c9fb6f9e9ea9536b2d05cee0a24554a 100644 +index 2eeb3ad5d0286c14b0d61e68e398a459c41058cc..616fb6ef8ec62fad8c910d676ebbe308cbe6da4e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -411,6 +411,7 @@ public abstract class LivingEntity extends Entity { +@@ -412,6 +412,7 @@ public abstract class LivingEntity extends Entity { double d1 = this.level.getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { @@ -48,7 +48,7 @@ index 8401577ee010c211c99c174bc70536d606a09b1d..5230e9a58c9fb6f9e9ea9536b2d05cee } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f33736b1daf1d5721cd08abd66c70a9690124b6..be33d4c0c00804547da3f0aa56b52014343dd804 100644 +index e778648a01e6fe134ab6dc632b4f6809f4af32e1..45cda7ef8678456752cbfb3a98608ef01fa28733 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -247,6 +247,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0079-Squid-EAR-immunity.patch b/patches/server/0079-Squid-EAR-immunity.patch index 34cca1678..fcd5cdf70 100644 --- a/patches/server/0079-Squid-EAR-immunity.patch +++ b/patches/server/0079-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index be33d4c0c00804547da3f0aa56b52014343dd804..7edc474d30256811a04788e01d6f0ceb2404de73 100644 +index 45cda7ef8678456752cbfb3a98608ef01fa28733..85819dd9d93b9c198185cbac1a65217dd8ec2db1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1434,6 +1434,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1422,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index be33d4c0c00804547da3f0aa56b52014343dd804..7edc474d30256811a04788e01d6f0ceb private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1443,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1431,6 +1432,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0080-Phantoms-burn-in-light.patch b/patches/server/0080-Phantoms-burn-in-light.patch index 43002cea7..ce8607ca8 100644 --- a/patches/server/0080-Phantoms-burn-in-light.patch +++ b/patches/server/0080-Phantoms-burn-in-light.patch @@ -53,11 +53,11 @@ index b9d737a20b8cca81fca290c13cb640c17d25bc6e..11cbb89eb062de0cd30158dbfbef1355 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7edc474d30256811a04788e01d6f0ceb2404de73..a5a7fff2375d8216fede6f606fb305907be0b518 100644 +index 85819dd9d93b9c198185cbac1a65217dd8ec2db1..01124f7f92b510e89a5531477a9cdabd3c2592a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1109,6 +1109,9 @@ public class PurpurWorldConfig { - public int phantomSpawnOverheadRadius = 10; +@@ -1103,6 +1103,9 @@ public class PurpurWorldConfig { + public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; + public int phantomBurnInLight = 0; @@ -66,8 +66,8 @@ index 7edc474d30256811a04788e01d6f0ceb2404de73..a5a7fff2375d8216fede6f606fb30590 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1145,6 +1148,9 @@ public class PurpurWorldConfig { - phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius); +@@ -1133,6 +1136,9 @@ public class PurpurWorldConfig { + phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); + phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); diff --git a/patches/server/0081-Configurable-villager-breeding.patch b/patches/server/0081-Configurable-villager-breeding.patch index 44ae7923e..074412b12 100644 --- a/patches/server/0081-Configurable-villager-breeding.patch +++ b/patches/server/0081-Configurable-villager-breeding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable villager breeding diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 2087b4a4fbc4076c5ec59aaf73f1367ffcd0ef7c..09a7af00e05f5369c1c87c51f121ed34d4fd2734 100644 +index 60847bbed4890670ea422a238359d8d9de5c08e7..0db007e61478688ca7198587e3a444ef63e3b65a 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -774,7 +774,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,10 +18,10 @@ index 2087b4a4fbc4076c5ec59aaf73f1367ffcd0ef7c..09a7af00e05f5369c1c87c51f121ed34 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5a7fff2375d8216fede6f606fb305907be0b518..69032e6cc241014ed0a8024757cab66a01235b90 100644 +index 01124f7f92b510e89a5531477a9cdabd3c2592a9..a469231646469604b2ca48f06646dea233db0719 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1594,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1582,6 +1582,7 @@ public class PurpurWorldConfig { public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index a5a7fff2375d8216fede6f606fb305907be0b518..69032e6cc241014ed0a8024757cab66a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1608,6 +1609,7 @@ public class PurpurWorldConfig { +@@ -1596,6 +1597,7 @@ public class PurpurWorldConfig { villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0083-Totems-work-in-inventory.patch b/patches/server/0083-Totems-work-in-inventory.patch index 614309d49..ff8ecb7e9 100644 --- a/patches/server/0083-Totems-work-in-inventory.patch +++ b/patches/server/0083-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 5230e9a58c9fb6f9e9ea9536b2d05cee0a24554a..e5602a601dac4c439542094e5f74d8dc46f85866 100644 +index 616fb6ef8ec62fad8c910d676ebbe308cbe6da4e..211f7455553835bfb7012a95779bb11750a9d621 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1545,6 +1545,18 @@ public abstract class LivingEntity extends Entity { +@@ -1560,6 +1560,18 @@ public abstract class LivingEntity extends Entity { } } @@ -28,7 +28,7 @@ index 5230e9a58c9fb6f9e9ea9536b2d05cee0a24554a..e5602a601dac4c439542094e5f74d8dc EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ad41ae78145e0488676c2addeb0fcdccbfcda85..da29a7a36e9d7bae2fd6d8cd93c236502d24ca3d 100644 +index a2d6192bb20bc2edae00ea903e1d920a65ae1dd4..3ffbab710e050ab71f36417ccf955a1e96ecf379 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -248,6 +248,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0084-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0084-Add-vindicator-johnny-spawn-chance.patch index 625a039b9..a219a4d2a 100644 --- a/patches/server/0084-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0084-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,10 @@ index c3b8bce2d8e1dccb619267923964e06abfed8762..021550a0465dd1fd152b4c2e76301405 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da29a7a36e9d7bae2fd6d8cd93c236502d24ca3d..6cc8176551a6bd90c7b070095263d4f1b2cb7bec 100644 +index 3ffbab710e050ab71f36417ccf955a1e96ecf379..f77772071f28fec0072f4cfa042eaa7505544ff7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1623,6 +1623,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1611,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = false; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index da29a7a36e9d7bae2fd6d8cd93c236502d24ca3d..6cc8176551a6bd90c7b070095263d4f1 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1633,6 +1634,7 @@ public class PurpurWorldConfig { +@@ -1621,6 +1622,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0090-Stop-squids-floating-on-top-of-water.patch b/patches/server/0090-Stop-squids-floating-on-top-of-water.patch index ca0b9439a..390ed17c2 100644 --- a/patches/server/0090-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0090-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index 68cc6f2a78a06293a29317fda72ab3ee79b3533a..cfb2e46b34b2982d6724f18214557fc8 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08eca6afc59d1011e2e3ba184c5d8d5e2f31f094..022d8c904ce5df6c0b1906c99770aa17344bd351 100644 +index 888406adb2f020abbeddf5678a10b955daff2892..b952206a8d846de12458a80a0e969e0dcc649779 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1459,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1447,6 +1447,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 08eca6afc59d1011e2e3ba184c5d8d5e2f31f094..022d8c904ce5df6c0b1906c99770aa17 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1469,6 +1470,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1458,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0093-LivingEntity-broadcastItemBreak.patch b/patches/server/0093-LivingEntity-broadcastItemBreak.patch index c07547ac8..d9756a589 100644 --- a/patches/server/0093-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0093-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 f4888fb501871afb2d9edff7cf1a36cb0c56ac6e..aec6f37ceac8ba9a987edf3eb24bbc06d3b1613a 100644 +index 810e13a060a7c64f8d0d08a632b378ef8480710e..bea0a1441b3f331e1bbaee15a91b279950bca640 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -995,5 +995,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1054,5 +1054,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0094-Customizable-wither-health-and-healing.patch b/patches/server/0094-Customizable-wither-health-and-healing.patch index c2f6db5f9..51c33d3f5 100644 --- a/patches/server/0094-Customizable-wither-health-and-healing.patch +++ b/patches/server/0094-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 46593c26a7a167f22a728c8a87ebcb26ef7b4612..abf4490d8366ec658717868822837509 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f3dc194f2b11a4fddab9b178db248e8154f693d..f5f2bf775390ac019c811e4c26d817749a2f6645 100644 +index d446566cf5d6fc7b4767273e52d5e1d44ba323c2..f8b26b3dad49559f80b4bf9cd9b8952be6c3fd34 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1702,6 +1702,8 @@ public class PurpurWorldConfig { +@@ -1690,6 +1690,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 3f3dc194f2b11a4fddab9b178db248e8154f693d..f5f2bf775390ac019c811e4c26d81774 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1717,6 +1719,8 @@ public class PurpurWorldConfig { +@@ -1705,6 +1707,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0095-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0095-Allow-toggling-special-MobSpawners-per-world.patch index 5a8e96d6f..8b19a8a30 100644 --- a/patches/server/0095-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0095-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0fb639ed10714a5bb83fa1f9901e50f45c69b6a2..444a8207fe3610f4cd5f975c5983efab43ccbfea 100644 +index 125faced389b5f467d96dab4e2ac4ffe85c82f50..b188865b4aa2f33569768359482e2a5fbe11aa28 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -542,7 +542,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -543,7 +543,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -67,7 +67,7 @@ index daa7c4bd8a3f6c28f02b7117b061f0def29e3743..d4699d7eefafffd2d4e0a03d62d5094f if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f5f2bf775390ac019c811e4c26d817749a2f6645..04604557a57a09127e88a2119aa9a63c764de94a 100644 +index f8b26b3dad49559f80b4bf9cd9b8952be6c3fd34..bf187a6544fbbd967baec25f9f78c673b39e35f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -72,6 +72,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 815573dcd..faa77bd7d 100644 --- a/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0098-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index c9901f8c7f3af57cb2e0bec315caa97adcb6f5ea..407377e8791400f73e2e2305cbd38f17c7a5c0f1 100644 +index 8f47d471c29d89bae5ae06a0d495d8c694117b72..9eb4d1a3d8f1d7d1137508086d5e3be3aec31f15 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -135,6 +135,10 @@ public class MobGoalHelper { @@ -46,7 +46,7 @@ index 968392e9dd124f997d5d5996893363ac7ef2c740..1d57ee963416e784a759f2ecee7b7c38 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index eeb01e54125cab3d0803341f21d135068924d786..66b69f9c6cc5cbf235dce888623b6cea98695f6f 100644 +index b9b4b81babbac27ad879197f027fba11aebd4c3c..e9482ebe59cba4cea06392fe97b74e4fb70eceda 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -155,7 +155,19 @@ public class Zombie extends Monster { @@ -71,10 +71,10 @@ index eeb01e54125cab3d0803341f21d135068924d786..66b69f9c6cc5cbf235dce888623b6cea this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6f4f71c9a27fa1c0ab354b9b410fba744787a51a..aab75be19fe6d9364c3214b6760ccddd253d3b1e 100644 +index 5158e2c5469e649133eeb4ac61a3aa55fd40bf77..00f1d1c208ca36c7548e36b1654167f24609c880 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1835,6 +1835,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1823,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index 6f4f71c9a27fa1c0ab354b9b410fba744787a51a..aab75be19fe6d9364c3214b6760ccddd private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1849,6 +1850,7 @@ public class PurpurWorldConfig { +@@ -1837,6 +1838,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0100-Flying-squids-Oh-my.patch b/patches/server/0100-Flying-squids-Oh-my.patch index 3dbbb5e79..8fb58db3f 100644 --- a/patches/server/0100-Flying-squids-Oh-my.patch +++ b/patches/server/0100-Flying-squids-Oh-my.patch @@ -58,7 +58,7 @@ index 709aaa9dc834d91219ce1087d8f89ef5bf3d915c..4850960c7c4f38c7d81b8945f8c87504 float f1 = Mth.cos(f) * 0.2F; float f2 = -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 aab75be19fe6d9364c3214b6760ccddd253d3b1e..7b2a16c2d474b3931ff629ba58f6987f69fadfec 100644 +index 00f1d1c208ca36c7548e36b1654167f24609c880..8ba2e5b8dad303d78123470dbd456f34a58ece96 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -882,10 +882,12 @@ public class PurpurWorldConfig { @@ -74,7 +74,7 @@ index aab75be19fe6d9364c3214b6760ccddd253d3b1e..7b2a16c2d474b3931ff629ba58f6987f } public boolean goatRidable = false; -@@ -1518,6 +1520,7 @@ public class PurpurWorldConfig { +@@ -1506,6 +1508,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index aab75be19fe6d9364c3214b6760ccddd253d3b1e..7b2a16c2d474b3931ff629ba58f6987f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1529,6 +1532,7 @@ public class PurpurWorldConfig { +@@ -1517,6 +1520,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0102-Configurable-daylight-cycle.patch b/patches/server/0102-Configurable-daylight-cycle.patch index bd162cf9a..275d753af 100644 --- a/patches/server/0102-Configurable-daylight-cycle.patch +++ b/patches/server/0102-Configurable-daylight-cycle.patch @@ -31,7 +31,7 @@ index a90befe6b38d6789e200535f688804d85dad13e7..a1f830b27137f660fd2f0d95eb4b6692 } ServerPlayer entityplayer = (ServerPlayer) entityhuman; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6f2ec08bf3f7a2902b07e87bdca247d30ec900fe..ee9b4db369763cc579ac112be35167e0d0af6100 100644 +index b188865b4aa2f33569768359482e2a5fbe11aa28..1689ae9fc4635c42755699b5bff43af2f866fa3e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -212,6 +212,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -43,7 +43,7 @@ index 6f2ec08bf3f7a2902b07e87bdca247d30ec900fe..ee9b4db369763cc579ac112be35167e0 public long lastMidTickExecuteFailure; // Paper - execute chunk tasks mid tick // CraftBukkit start -@@ -622,6 +624,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -623,6 +625,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.chunkTaskScheduler = new io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler(this, io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.workerThreads); // Paper - rewrite chunk system this.entityLookup = new io.papermc.paper.chunk.system.entity.EntityLookup(this, new EntityCallbacks()); // Paper - rewrite chunk system @@ -51,7 +51,7 @@ index 6f2ec08bf3f7a2902b07e87bdca247d30ec900fe..ee9b4db369763cc579ac112be35167e0 } public void setWeatherParameters(int clearDuration, int rainDuration, boolean raining, boolean thundering) { -@@ -793,6 +796,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -794,6 +797,13 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setGameTime(i); this.serverLevelData.getScheduledEvents().tick(this.server, i); if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -65,7 +65,7 @@ index 6f2ec08bf3f7a2902b07e87bdca247d30ec900fe..ee9b4db369763cc579ac112be35167e0 this.setDayTime(this.levelData.getDayTime() + 1L); } -@@ -801,7 +811,21 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -802,7 +812,21 @@ public class ServerLevel extends Level implements WorldGenLevel { public void setDayTime(long timeOfDay) { this.serverLevelData.setDayTime(timeOfDay); @@ -88,7 +88,7 @@ index 6f2ec08bf3f7a2902b07e87bdca247d30ec900fe..ee9b4db369763cc579ac112be35167e0 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a160cfffeb3049f256f56e9df8aab42ebe9ec2f..0a8f9082470b3b70fb21ea620d6dce23120cb65b 100644 +index 75b416957af7955e9dd03fa4fba30b6578660ac6..0d25bdac34cd9c9fbeaf8736a45c4a0ac67acf1a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -125,6 +125,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0108-Make-entity-breeding-times-configurable.patch b/patches/server/0108-Make-entity-breeding-times-configurable.patch index f823238f5..ca92dc130 100644 --- a/patches/server/0108-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0108-Make-entity-breeding-times-configurable.patch @@ -22,7 +22,7 @@ index b3adff55870c673d753f05dee4540bef0d142c7b..bf30980cf41db70e70a0ca4e51d32c33 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 34e82b97c5b294f0a6423581220403a10264da8b..a0c3a27a90e0788b573f0776c25cfc6e0fba5458 100644 +index f185215b826c4b50a819c8454089cb8ccdb0ed3a..2ac88f06ebb79e515cd9934ac1e3e2c8003d9e3c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -39,6 +39,7 @@ public abstract class Animal extends AgeableMob { @@ -95,7 +95,7 @@ index 96dceb9943c4320e0edfba47cc211d60aa92323b..fe266b94d08b8977451f75ec87c19497 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 123aae4d17bc06317c872270e229f6e9c13953e1..0da192e78865b50f87de0d61ce1b39b1899cc954 100644 +index 00bb7f8f8bc3b1369aec7b139745cf3c47b9f0f6..4f69a641686c086245ecc0696a8fd3f75c6b50d1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -62,6 +62,11 @@ public class Cow extends Animal { @@ -491,7 +491,7 @@ index e99ffbf30652e188e88f8e17ed41d39ff25c9f73..c335a32832c6eef95658fbf632b943bb @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724764740e1 100644 +index fe2209f5b5b58d5859cbb1b2008d9236b39c4e54..e9767317eebca72f8ff923fb9b04a95cc1997f52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -505,10 +505,12 @@ public class PurpurWorldConfig { @@ -740,7 +740,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean parrotRidable = false; -@@ -1274,6 +1306,7 @@ public class PurpurWorldConfig { +@@ -1262,6 +1294,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -748,7 +748,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1285,6 +1318,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1306,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -756,7 +756,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean piglinRidable = false; -@@ -1341,6 +1375,7 @@ public class PurpurWorldConfig { +@@ -1329,6 +1363,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -764,7 +764,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1354,6 +1389,7 @@ public class PurpurWorldConfig { +@@ -1342,6 +1377,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -772,7 +772,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean pufferfishRidable = false; -@@ -1376,6 +1412,7 @@ public class PurpurWorldConfig { +@@ -1364,6 +1400,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -780,7 +780,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1388,6 +1425,7 @@ public class PurpurWorldConfig { +@@ -1376,6 +1413,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -788,7 +788,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean ravagerRidable = false; -@@ -1424,6 +1462,7 @@ public class PurpurWorldConfig { +@@ -1412,6 +1450,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = false; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -796,7 +796,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1434,6 +1473,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1461,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -804,7 +804,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean shulkerRidable = false; -@@ -1609,6 +1649,7 @@ public class PurpurWorldConfig { +@@ -1597,6 +1637,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -812,7 +812,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1619,6 +1660,7 @@ public class PurpurWorldConfig { +@@ -1607,6 +1648,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -820,7 +820,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean tadpoleRidable = false; -@@ -1639,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1627,6 +1669,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -828,7 +828,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1656,6 +1699,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1687,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -836,7 +836,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean tropicalFishRidable = false; -@@ -1676,6 +1720,7 @@ public class PurpurWorldConfig { +@@ -1664,6 +1708,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = false; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -844,7 +844,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1686,6 +1731,7 @@ public class PurpurWorldConfig { +@@ -1674,6 +1719,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -852,7 +852,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean vexRidable = false; -@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { +@@ -1703,6 +1749,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -860,7 +860,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1730,6 +1777,7 @@ public class PurpurWorldConfig { +@@ -1718,6 +1765,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -868,7 +868,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 } public boolean vindicatorRidable = false; -@@ -1841,6 +1889,7 @@ public class PurpurWorldConfig { +@@ -1829,6 +1877,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -876,7 +876,7 @@ index d351b955427c00c4fea4157ac2d0eec3c4688b70..da8d0c3b68f0d41a0925b983f0214724 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1851,6 +1900,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1888,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0115-Snow-Golem-rate-of-fire-config.patch b/patches/server/0115-Snow-Golem-rate-of-fire-config.patch index 89d3ab7d7..bc15c126b 100644 --- a/patches/server/0115-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0115-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index b4459d68397cc5bac4f7ef79a2dfb18f3eb24f77..b9025929fcc89e72aa820953b91a6542 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0671853ed91ad046ad02cbb09188766e7afbaa9d..b031d456c6360ca0ff2900a2d8a56f1c6d5b4421 100644 +index 633f8fa200efe91e7a21a3dc669b29f6474d8a29..faf278a00309014f3992f5e69f12b214580e20f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1595,6 +1595,10 @@ public class PurpurWorldConfig { +@@ -1583,6 +1583,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 0671853ed91ad046ad02cbb09188766e7afbaa9d..b031d456c6360ca0ff2900a2d8a56f1c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1608,6 +1612,10 @@ public class PurpurWorldConfig { +@@ -1596,6 +1600,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 412772ea8..b49b42694 100644 --- a/patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0117-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -143,7 +143,7 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 09a7af00e05f5369c1c87c51f121ed34d4fd2734..73bb73cf0f0a20d0218f4080f547e279613f14bf 100644 +index 0db007e61478688ca7198587e3a444ef63e3b65a..179e15adbb6a5999a24dc9bcb8dd51ca24c38bee 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -181,10 +181,10 @@ index b1f20cb356e6b4e89fdddf4e48f2fd932bdb5170..352a7df156c638684a12a864eb5a9d06 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b031d456c6360ca0ff2900a2d8a56f1c6d5b4421..1a575a511b94808399e8b368a1628a52f66abef7 100644 +index faf278a00309014f3992f5e69f12b214580e20f1..fe5d597bccf3669033bdda0d80c8cc22a396f27d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1787,6 +1787,8 @@ public class PurpurWorldConfig { +@@ -1775,6 +1775,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -193,7 +193,7 @@ index b031d456c6360ca0ff2900a2d8a56f1c6d5b4421..1a575a511b94808399e8b368a1628a52 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1803,6 +1805,8 @@ public class PurpurWorldConfig { +@@ -1791,6 +1793,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index d6fb7e8a5..0f82fe487 100644 --- a/patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0118-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 6c1dd723373f9b1b920548de85aeb6cef0120fa7..1f0003fb08a45af02e6d38e28fa548ab } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a575a511b94808399e8b368a1628a52f66abef7..ceadfbae389c77a106c5647ce1703fb731139f40 100644 +index fe5d597bccf3669033bdda0d80c8cc22a396f27d..d70b1172c7eae2a7f8bd4c3c28638e2c1fe59884 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2033,6 +2033,7 @@ public class PurpurWorldConfig { +@@ -2021,6 +2021,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 1a575a511b94808399e8b368a1628a52f66abef7..ceadfbae389c77a106c5647ce1703fb7 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2047,5 +2048,6 @@ public class PurpurWorldConfig { +@@ -2035,5 +2036,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch index bfad29109..e4a713d07 100644 --- a/patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0120-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -222,10 +222,10 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ceadfbae389c77a106c5647ce1703fb731139f40..b567dff45e17a988179d8b07ef1bd04f1db0fd1a 100644 +index d70b1172c7eae2a7f8bd4c3c28638e2c1fe59884..2b2d40f36fa3f4990450bb9e4a81e8abf8b2b2f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1918,6 +1918,8 @@ public class PurpurWorldConfig { +@@ -1906,6 +1906,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -234,7 +234,7 @@ index ceadfbae389c77a106c5647ce1703fb731139f40..b567dff45e17a988179d8b07ef1bd04f public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1929,6 +1931,8 @@ public class PurpurWorldConfig { +@@ -1917,6 +1919,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0121-Configurable-default-collar-color.patch b/patches/server/0121-Configurable-default-collar-color.patch index 5655b0610..71a29fd14 100644 --- a/patches/server/0121-Configurable-default-collar-color.patch +++ b/patches/server/0121-Configurable-default-collar-color.patch @@ -26,7 +26,7 @@ index a731a834098fa78995c7b0445865d3f7fa8700fa..3641599a119d5416b5756a972f9eb7fc public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { Cat entitycat = (Cat) EntityType.CAT.create(world); 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 f862d83db6127804b9254a33a73e6f186a1d1327..ffe8f80cfe3bec8fe79415015f5290749fcb770e 100644 +index b0ea5dda197b6ca88e5d80c16a9007a4abc3c7ac..63d0754427a01fb2bd85b9bf9d6e63d533c6995b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -201,6 +201,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -43,7 +43,7 @@ index f862d83db6127804b9254a33a73e6f186a1d1327..ffe8f80cfe3bec8fe79415015f529074 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b567dff45e17a988179d8b07ef1bd04f1db0fd1a..dc91c3594e462c0ae80f82fd50fad68a58d1d604 100644 +index 2b2d40f36fa3f4990450bb9e4a81e8abf8b2b2f4..5d47a6e938b293bffa5dd27d2155d2048bb0220f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -599,6 +599,7 @@ public class PurpurWorldConfig { @@ -66,7 +66,7 @@ index b567dff45e17a988179d8b07ef1bd04f1db0fd1a..dc91c3594e462c0ae80f82fd50fad68a } public boolean caveSpiderRidable = false; -@@ -1918,6 +1924,7 @@ public class PurpurWorldConfig { +@@ -1906,6 +1912,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = false; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index b567dff45e17a988179d8b07ef1bd04f1db0fd1a..dc91c3594e462c0ae80f82fd50fad68a public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1931,6 +1938,11 @@ public class PurpurWorldConfig { +@@ -1919,6 +1926,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0122-Phantom-flames-on-swoop.patch b/patches/server/0122-Phantom-flames-on-swoop.patch index c735d7d2c..c5baea3d9 100644 --- a/patches/server/0122-Phantom-flames-on-swoop.patch +++ b/patches/server/0122-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 11cbb89eb062de0cd30158dbfbef13554f81cf9f..162f8f6f368266ce238247901277f78c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc91c3594e462c0ae80f82fd50fad68a58d1d604..4cf965cc6ffaef8b5c655a17faa79fde45a0ff15 100644 +index 5d47a6e938b293bffa5dd27d2155d2048bb0220f..079226c0708a33edd2e5f498a5490670e5278e74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1283,6 +1283,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1277,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index dc91c3594e462c0ae80f82fd50fad68a58d1d604..4cf965cc6ffaef8b5c655a17faa79fde private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1322,6 +1323,7 @@ public class PurpurWorldConfig { +@@ -1310,6 +1311,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0125-Striders-give-saddle-back.patch b/patches/server/0125-Striders-give-saddle-back.patch index 7f03cbb26..7dd87683a 100644 --- a/patches/server/0125-Striders-give-saddle-back.patch +++ b/patches/server/0125-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index eb2083d67f9486a24d2f0aa4bf1f5ba8a00e23a3..df9d16a6493a57b6034cd56bf8dbe38f if (!this.level.isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3155dbf8ba8871d32cbe13400bbd5d01a5d47a8f..20099e9f2abac2a34a3ac86d17dd0860fe0d864a 100644 +index 397edb048462b9162ec8d9d62d53c3530d59b36a..ec34d409156e22666c3a5cd4b9dc1546af594d5d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1688,6 +1688,7 @@ public class PurpurWorldConfig { +@@ -1676,6 +1676,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 3155dbf8ba8871d32cbe13400bbd5d01a5d47a8f..20099e9f2abac2a34a3ac86d17dd0860 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1699,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1687,6 +1688,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0129-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0129-Add-mobGriefing-bypass-to-everything-affected.patch index fb928afdd..e1ae622fc 100644 --- a/patches/server/0129-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0129-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 e5602a601dac4c439542094e5f74d8dc46f85866..978eb615088ef84e418fe768b27f43276290ff46 100644 +index 211f7455553835bfb7012a95779bb11750a9d621..7389823c8055f644be63a66d12bada0dddfff009 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1717,7 +1717,7 @@ public abstract class LivingEntity extends Entity { +@@ -1732,7 +1732,7 @@ public abstract class LivingEntity extends Entity { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,7 +18,7 @@ index e5602a601dac4c439542094e5f74d8dc46f85866..978eb615088ef84e418fe768b27f4327 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index bfa4e93b040d9fd84636619dd0012ad60a8b456b..22f4cd68dc7f41441aae803c51adc90eb00e5977 100644 +index 66f64ed2e8245339343d993199b1ace93ce52cee..7273474e296618663d3fbba813891197bc8480f8 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -670,7 +670,7 @@ public abstract class Mob extends LivingEntity { @@ -409,7 +409,7 @@ index 1a12fee99a8b69fc6c01e1e217575c7c19e13155..4907e0acb7d01b7f57b75579e58ce743 return true; // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d28b7a1ea 100644 +index a859dd6915493d7a425d6e4d7e12174178756e71..7106c0fb7b7556162234991e606e01480073195e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,8 +118,11 @@ public class PurpurWorldConfig { @@ -553,7 +553,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean frogRidable = false; -@@ -1368,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1381,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = false; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -561,7 +561,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1378,6 +1404,7 @@ public class PurpurWorldConfig { +@@ -1366,6 +1392,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -569,7 +569,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean piglinBruteRidable = false; -@@ -1400,6 +1427,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1415,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = false; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -577,7 +577,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1410,6 +1438,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1426,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -585,7 +585,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean polarBearRidable = false; -@@ -1456,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1444,6 +1473,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -593,7 +593,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1469,12 +1499,14 @@ public class PurpurWorldConfig { +@@ -1457,12 +1487,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -608,7 +608,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1485,6 +1517,7 @@ public class PurpurWorldConfig { +@@ -1473,6 +1505,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -616,7 +616,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean salmonRidable = false; -@@ -1506,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1494,6 +1527,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -624,7 +624,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1517,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1505,6 +1539,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -632,7 +632,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean shulkerRidable = false; -@@ -1539,6 +1574,7 @@ public class PurpurWorldConfig { +@@ -1527,6 +1562,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = false; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -640,7 +640,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1549,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1537,6 +1573,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -648,7 +648,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean skeletonRidable = false; -@@ -1625,6 +1662,7 @@ public class PurpurWorldConfig { +@@ -1613,6 +1650,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -656,7 +656,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1642,6 +1680,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1668,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -664,7 +664,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean squidRidable = false; -@@ -1817,6 +1856,7 @@ public class PurpurWorldConfig { +@@ -1805,6 +1844,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -672,7 +672,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1835,6 +1875,7 @@ public class PurpurWorldConfig { +@@ -1823,6 +1863,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -680,7 +680,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean vindicatorRidable = false; -@@ -1907,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1895,6 +1936,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -688,7 +688,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1924,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +1954,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -696,7 +696,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d } public boolean witherSkeletonRidable = false; -@@ -1995,6 +2038,7 @@ public class PurpurWorldConfig { +@@ -1983,6 +2026,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -704,7 +704,7 @@ index d0176655802d082a946cf84d06824ff1505ba1bb..48a798236bf46ef076cdd5efa5a6cb5d private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2010,6 +2054,7 @@ public class PurpurWorldConfig { +@@ -1998,6 +2042,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0131-Add-EntityTeleportHinderedEvent.patch b/patches/server/0131-Add-EntityTeleportHinderedEvent.patch index b2a5541b8..c565af370 100644 --- a/patches/server/0131-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0131-Add-EntityTeleportHinderedEvent.patch @@ -78,10 +78,10 @@ index fb77d022ea872deb7f47d033df4a0f201da026c2..0f20be71aebc236bfcb8ace98e0be8ad blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 9aee601caad5b314cef2e32a57fdb8ab8aeae896..fbddb90fdbaa99c5f243b6e93c55fc1f7430e337 100644 +index 32169b7dbfe95bdc5ded6d64524e015f1b939e7a..edfd2d9450805f05df607b5160a0c0ecf9170915 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -564,6 +564,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -570,6 +570,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -93,7 +93,7 @@ index 9aee601caad5b314cef2e32a57fdb8ab8aeae896..fbddb90fdbaa99c5f243b6e93c55fc1f } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c82e2ce3f94f658a0cf66445a4507fc696760820..d588f1b7670af21512295e446c15812cd9e2f6a2 100644 +index 461f2d0a72b01251324a197752a23677ac24beb6..c1c5c0edab6dc204dd0e7de09af31f8b3b95ad86 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1309,6 +1309,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -108,7 +108,7 @@ index c82e2ce3f94f658a0cf66445a4507fc696760820..d588f1b7670af21512295e446c15812c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bd6e5bd2116368e2b60fda1bc5a036b44708682e..88588ca9af08f255e099733c6c0692cde7115394 100644 +index 6d7922ce6a1442a9c4e8968d86ffb494f3616833..565bdd1faedda5d6ed010970a81527d788a05375 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch index 876e5b9f5..a2f4dd0e3 100644 --- a/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0135-Toggle-for-water-sensitive-mob-damage.patch @@ -110,7 +110,7 @@ index 861727f150f28a508d3b1c7067d410f0d696aa89..5b79d821e8b55c8876eadcbe811a2c05 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 0da192e78865b50f87de0d61ce1b39b1899cc954..67a121269eccfcdb71d15e67eab567b488276d83 100644 +index 4f69a641686c086245ecc0696a8fd3f75c6b50d1..c65fdafb5433fe592dc0061bef4c0afbc611ba13 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -67,6 +67,11 @@ public class Cow extends Animal { @@ -395,7 +395,7 @@ index e3c20db7bd003bb63d5b1b296c7aa9d7302548c8..d5a029db2831ea817071830ba30d0f50 public void setHomePos(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index ffe8f80cfe3bec8fe79415015f5290749fcb770e..dd514cbf2f03b688eb4d8cd49052f1775d3adebb 100644 +index 63d0754427a01fb2bd85b9bf9d6e63d533c6995b..c3264daf9af8c3299d6d2ed539d04a43c9bfce7b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -207,6 +207,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -1069,7 +1069,7 @@ index 6236a557d2a73dff70141140f79faf851a2062f0..0d8495a73df5b1b6cd2c7e5cf18cb3eb @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 66b69f9c6cc5cbf235dce888623b6cea98695f6f..cfecf0322ea22b42fa83bafe3cd2f5d74f0d1311 100644 +index e9482ebe59cba4cea06392fe97b74e4fb70eceda..0eaa8119201cae52340a1a58700906eb96e2a99f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -137,6 +137,11 @@ public class Zombie extends Monster { @@ -1085,7 +1085,7 @@ index 66b69f9c6cc5cbf235dce888623b6cea98695f6f..cfecf0322ea22b42fa83bafe3cd2f5d7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 9ad16a0fc968b89863ad5ef442a2e178f3d9a52d..51fe59657b5b4608fc1528086c8692030d243a7a 100644 +index 4dcd0e8198a37df01678a62ada3d75d579c08cff..fd4e34549ff65d0ed82d3bc1e8b7067a53a33d4c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -118,6 +118,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1165,7 +1165,7 @@ index 75db61c5aab66234b26f7899229ddca8896e2086..a44f9a59fbec146df95d89c26df12efb public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 73bb73cf0f0a20d0218f4080f547e279613f14bf..373f74742323367c7fa1984313c99c42c253cfa9 100644 +index 179e15adbb6a5999a24dc9bcb8dd51ca24c38bee..63b2d3635d3882d8e2e55659c99c0165603fdfc1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1181,7 +1181,7 @@ index 73bb73cf0f0a20d0218f4080f547e279613f14bf..373f74742323367c7fa1984313c99c42 @Override diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 6cdb81ef8ca385f4346fd875a21c20c8153cb47b..767ec15ee2dcb421946795c58c3c0b2e3fb86fd4 100644 +index 3f3d7a36eb204114df4a535ef7f2afdcdd5201f7..bef536f773e662050b8d120d41e1c730aeedd447 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -91,6 +91,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -1197,7 +1197,7 @@ index 6cdb81ef8ca385f4346fd875a21c20c8153cb47b..767ec15ee2dcb421946795c58c3c0b2e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087611a7219 100644 +index bfe540637ec08d098a3b9e951b2d88fd4f618f1a..2137335cac886ac967ad318f449b4992e666ba8c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -572,11 +572,13 @@ public class PurpurWorldConfig { @@ -1762,7 +1762,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean phantomRidable = false; -@@ -1345,6 +1417,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1411,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1770,7 +1770,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1385,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1373,6 +1446,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1778,7 +1778,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean pigRidable = false; -@@ -1393,6 +1467,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1455,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1786,7 +1786,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1405,6 +1480,7 @@ public class PurpurWorldConfig { +@@ -1393,6 +1468,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1794,7 +1794,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean piglinRidable = false; -@@ -1412,6 +1488,7 @@ public class PurpurWorldConfig { +@@ -1400,6 +1476,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1802,7 +1802,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1423,12 +1500,14 @@ public class PurpurWorldConfig { +@@ -1411,12 +1488,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1817,7 +1817,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1439,6 +1518,7 @@ public class PurpurWorldConfig { +@@ -1427,6 +1506,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1825,7 +1825,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean pillagerRidable = false; -@@ -1446,6 +1526,7 @@ public class PurpurWorldConfig { +@@ -1434,6 +1514,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1833,7 +1833,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1457,6 +1538,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1526,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1841,7 +1841,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean polarBearRidable = false; -@@ -1466,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1454,6 +1536,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1849,7 +1849,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1480,11 +1563,13 @@ public class PurpurWorldConfig { +@@ -1468,11 +1551,13 @@ public class PurpurWorldConfig { Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1863,7 +1863,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1494,6 +1579,7 @@ public class PurpurWorldConfig { +@@ -1482,6 +1567,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1871,7 +1871,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean rabbitRidable = false; -@@ -1504,6 +1590,7 @@ public class PurpurWorldConfig { +@@ -1492,6 +1578,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1879,7 +1879,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1518,6 +1605,7 @@ public class PurpurWorldConfig { +@@ -1506,6 +1593,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1887,7 +1887,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean ravagerRidable = false; -@@ -1525,6 +1613,7 @@ public class PurpurWorldConfig { +@@ -1513,6 +1601,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1895,7 +1895,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1536,11 +1625,13 @@ public class PurpurWorldConfig { +@@ -1524,11 +1613,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1909,7 +1909,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1550,6 +1641,7 @@ public class PurpurWorldConfig { +@@ -1538,6 +1629,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1917,7 +1917,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean sheepRidable = false; -@@ -1558,6 +1650,7 @@ public class PurpurWorldConfig { +@@ -1546,6 +1638,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1925,7 +1925,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1570,12 +1663,14 @@ public class PurpurWorldConfig { +@@ -1558,12 +1651,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1940,7 +1940,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1586,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1574,6 +1669,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1948,7 +1948,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean silverfishRidable = false; -@@ -1593,6 +1689,7 @@ public class PurpurWorldConfig { +@@ -1581,6 +1677,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1956,7 +1956,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1604,12 +1701,14 @@ public class PurpurWorldConfig { +@@ -1592,12 +1689,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1971,7 +1971,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1620,6 +1719,7 @@ public class PurpurWorldConfig { +@@ -1608,6 +1707,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1979,7 +1979,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean skeletonHorseRidableInWater = true; -@@ -1630,6 +1730,7 @@ public class PurpurWorldConfig { +@@ -1618,6 +1718,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1987,7 +1987,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1645,6 +1746,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1734,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean slimeRidable = false; -@@ -1654,6 +1756,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1744,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1667,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1655,6 +1758,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean snowGolemRidable = false; -@@ -1681,6 +1785,7 @@ public class PurpurWorldConfig { +@@ -1669,6 +1773,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1699,6 +1804,7 @@ public class PurpurWorldConfig { +@@ -1687,6 +1792,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean squidRidable = false; -@@ -1707,6 +1813,7 @@ public class PurpurWorldConfig { +@@ -1695,6 +1801,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1719,12 +1826,14 @@ public class PurpurWorldConfig { +@@ -1707,12 +1814,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1735,12 +1844,14 @@ public class PurpurWorldConfig { +@@ -1723,12 +1832,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1751,6 +1862,7 @@ public class PurpurWorldConfig { +@@ -1739,6 +1850,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean striderRidable = false; -@@ -1759,6 +1871,7 @@ public class PurpurWorldConfig { +@@ -1747,6 +1859,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1771,6 +1884,7 @@ public class PurpurWorldConfig { +@@ -1759,6 +1872,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean tadpoleRidable = false; -@@ -1792,6 +1906,7 @@ public class PurpurWorldConfig { +@@ -1780,6 +1894,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1810,11 +1925,13 @@ public class PurpurWorldConfig { +@@ -1798,11 +1913,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1824,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1812,6 +1929,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean turtleRidable = false; -@@ -1831,6 +1949,7 @@ public class PurpurWorldConfig { +@@ -1819,6 +1937,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1842,6 +1961,7 @@ public class PurpurWorldConfig { +@@ -1830,6 +1949,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean vexRidable = false; -@@ -1849,6 +1969,7 @@ public class PurpurWorldConfig { +@@ -1837,6 +1957,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1860,6 +1981,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1969,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,7 +2151,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean villagerRidable = false; -@@ -1875,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1863,6 +1985,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2159,7 +2159,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1894,6 +2017,7 @@ public class PurpurWorldConfig { +@@ -1882,6 +2005,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2167,7 +2167,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean vindicatorRidable = false; -@@ -1901,6 +2025,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +2013,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1912,6 +2037,7 @@ public class PurpurWorldConfig { +@@ -1900,6 +2025,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean wanderingTraderRidable = false; -@@ -1920,6 +2046,7 @@ public class PurpurWorldConfig { +@@ -1908,6 +2034,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1932,6 +2059,7 @@ public class PurpurWorldConfig { +@@ -1920,6 +2047,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean wardenRidable = false; -@@ -1947,6 +2075,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +2063,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = false; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1957,6 +2086,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +2074,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean witherRidable = false; -@@ -1967,6 +2097,7 @@ public class PurpurWorldConfig { +@@ -1955,6 +2085,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1985,12 +2116,14 @@ public class PurpurWorldConfig { +@@ -1973,12 +2104,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2001,6 +2134,7 @@ public class PurpurWorldConfig { +@@ -1989,6 +2122,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean wolfRidable = false; -@@ -2011,6 +2145,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2133,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2029,12 +2164,14 @@ public class PurpurWorldConfig { +@@ -2017,12 +2152,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2045,6 +2182,7 @@ public class PurpurWorldConfig { +@@ -2033,6 +2170,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean zombieRidable = false; -@@ -2057,6 +2195,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2183,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,7 +2285,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2073,6 +2212,7 @@ public class PurpurWorldConfig { +@@ -2061,6 +2200,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2293,7 +2293,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean zombieHorseRidableInWater = false; -@@ -2084,6 +2224,7 @@ public class PurpurWorldConfig { +@@ -2072,6 +2212,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2301,7 +2301,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2100,6 +2241,7 @@ public class PurpurWorldConfig { +@@ -2088,6 +2229,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean zombieVillagerRidable = false; -@@ -2110,6 +2252,7 @@ public class PurpurWorldConfig { +@@ -2098,6 +2240,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2124,6 +2267,7 @@ public class PurpurWorldConfig { +@@ -2112,6 +2255,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 } public boolean zombifiedPiglinRidable = false; -@@ -2135,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2123,6 +2267,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 4e996becabad942aaaa5ccb097707b0e2fd83adb..7862f9ff2b5179751949a0efedc03087 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2150,5 +2295,6 @@ public class PurpurWorldConfig { +@@ -2138,5 +2283,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index b3604c048..38affb9dc 100644 --- a/patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0138-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,7 +29,7 @@ index 9a4481b48edf666ede780a9d6f875d01f5b422f8..98825928e957cadd1c263bfbee09a137 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af37829b104073589d67d66ab826bb64fb95d7dc..13eb84cf590bbe4c5a71b47f1c08e57b5711f089 100644 +index dafb5e3747902b149040d75568f016141d8d1bc4..7cbb917f49d79ce96b566ab342d98c1891d0f2a0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -917,6 +917,7 @@ public class PurpurWorldConfig { @@ -48,7 +48,7 @@ index af37829b104073589d67d66ab826bb64fb95d7dc..13eb84cf590bbe4c5a71b47f1c08e57b } public boolean endermanRidable = false; -@@ -2129,6 +2131,7 @@ public class PurpurWorldConfig { +@@ -2117,6 +2119,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index af37829b104073589d67d66ab826bb64fb95d7dc..13eb84cf590bbe4c5a71b47f1c08e57b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2148,6 +2151,7 @@ public class PurpurWorldConfig { +@@ -2136,6 +2139,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0140-One-Punch-Man.patch b/patches/server/0140-One-Punch-Man.patch index 1f0463964..c05683afa 100644 --- a/patches/server/0140-One-Punch-Man.patch +++ b/patches/server/0140-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 978eb615088ef84e418fe768b27f43276290ff46..8272135f82a8b42e39f208b4d5758ce7d56d501e 100644 +index 7389823c8055f644be63a66d12bada0dddfff009..9fca48d69a0917aa31e553d5910da77beaf40bab 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2224,6 +2224,20 @@ public abstract class LivingEntity extends Entity { +@@ -2239,6 +2239,20 @@ public abstract class LivingEntity extends Entity { ((ServerPlayer) damagesource.getEntity()).awardStat(Stats.DAMAGE_DEALT_ABSORBED, Math.round(f2 * 10.0F)); } @@ -30,7 +30,7 @@ index 978eb615088ef84e418fe768b27f43276290ff46..8272135f82a8b42e39f208b4d5758ce7 if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3465a47b74cd02dd8af0e297f86c0eddd5f833ed..76d0134835e2ec6747e41371f1f32f1a2cefabe6 100644 +index 90dee3ce858b5c8c526b2094ac53cb1580436f0e..aa05b65c7e0812465508a280d5faa72bf522327b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -345,6 +345,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0149-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0149-Configurable-ravager-griefable-blocks-list.patch index b35fc8fbd..b4ab72c5f 100644 --- a/patches/server/0149-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0149-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 36ad7f33eacc63d84db04225fbffcc32abf24fdc..a6e03d12ecd85992215e1128cd6afd28 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 141aca86c5fe70f3fad838021d93c66d4b630139..37d4e08d6c1c3683514f679a9ab772a28d4010a1 100644 +index 3b3c1ca9c4034ed954d6bd55fb1b42f8a1c3efe1..579c85ff8ac4f77246aba457377d9c24873b35ab 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1681,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1669,6 +1669,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 141aca86c5fe70f3fad838021d93c66d4b630139..37d4e08d6c1c3683514f679a9ab772a2 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1693,6 +1694,23 @@ public class PurpurWorldConfig { +@@ -1681,6 +1682,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0151-Config-for-skipping-night.patch b/patches/server/0151-Config-for-skipping-night.patch index 2d47f8aea..b4df09a15 100644 --- a/patches/server/0151-Config-for-skipping-night.patch +++ b/patches/server/0151-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 656ea698078724362cd1a39d29d40ba763b1c12a..c96ce52b97881d48d81f0cbe6c44aa1c1505e43c 100644 +index 1689ae9fc4635c42755699b5bff43af2f866fa3e..66817fa844fc03d0137a6cd9aab1a41b05d94d1c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -663,7 +663,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -664,7 +664,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index 656ea698078724362cd1a39d29d40ba763b1c12a..c96ce52b97881d48d81f0cbe6c44aa1c j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9649618c5d5721e1ce2fb4f59d22e352b4b614dd..7eb68d2f6a56a1110bba275fbeb91cb8605c0e0a 100644 +index 08a973b2c5195b0d85a28b480dc0f40ed8c9e3e9..686236d4d91e5207904d91e2035a067cf0408fcc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -357,6 +357,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0152-Add-config-for-villager-trading.patch b/patches/server/0152-Add-config-for-villager-trading.patch index 87921d3cf..e19808773 100644 --- a/patches/server/0152-Add-config-for-villager-trading.patch +++ b/patches/server/0152-Add-config-for-villager-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config for villager trading diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 373f74742323367c7fa1984313c99c42c253cfa9..89435b0742064d77c7cc8bb871949acc9852f2c0 100644 +index 63b2d3635d3882d8e2e55659c99c0165603fdfc1..14834853354adb222f99c4a12169fd05e02477da 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -18,7 +18,7 @@ index 373f74742323367c7fa1984313c99c42c253cfa9..89435b0742064d77c7cc8bb871949acc } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 767ec15ee2dcb421946795c58c3c0b2e3fb86fd4..7231230823573c7d00dd82bee480cc787270c383 100644 +index bef536f773e662050b8d120d41e1c730aeedd447..8214506faf26bc973594f1bd8a19e0458be9b544 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -149,7 +149,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -31,10 +31,10 @@ index 767ec15ee2dcb421946795c58c3c0b2e3fb86fd4..7231230823573c7d00dd82bee480cc78 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7eb68d2f6a56a1110bba275fbeb91cb8605c0e0a..91e2410ea09333ae65960ca67414333625857cb5 100644 +index 686236d4d91e5207904d91e2035a067cf0408fcc..5016f11f7de2c210acb70b18a8be3aa727ac69c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2090,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2078,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 7eb68d2f6a56a1110bba275fbeb91cb8605c0e0a..91e2410ea09333ae65960ca674143336 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2110,6 +2111,7 @@ public class PurpurWorldConfig { +@@ -2098,6 +2099,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); @@ -50,7 +50,7 @@ index 7eb68d2f6a56a1110bba275fbeb91cb8605c0e0a..91e2410ea09333ae65960ca674143336 } public boolean vindicatorRidable = false; -@@ -2139,6 +2141,7 @@ public class PurpurWorldConfig { +@@ -2127,6 +2129,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 7eb68d2f6a56a1110bba275fbeb91cb8605c0e0a..91e2410ea09333ae65960ca674143336 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2152,6 +2155,7 @@ public class PurpurWorldConfig { +@@ -2140,6 +2143,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0154-Drowning-Settings.patch b/patches/server/0154-Drowning-Settings.patch index 720b8124e..9b2797fbc 100644 --- a/patches/server/0154-Drowning-Settings.patch +++ b/patches/server/0154-Drowning-Settings.patch @@ -18,10 +18,10 @@ index c8d08fb02eefee08799661423fd4342f05f1b8f2..a3a76273bb6ce1621366cfd8dec22e5b public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 782bfe3a360b7e63f8457cb7b8b5973740d2b8db..a814faa3be41a60eb6c1a27bafd5a9489c6e8687 100644 +index 9fca48d69a0917aa31e553d5910da77beaf40bab..cbaf99b4cd7b6d949695b1a66e66f18329e87148 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -422,7 +422,7 @@ public abstract class LivingEntity extends Entity { +@@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index 782bfe3a360b7e63f8457cb7b8b5973740d2b8db..a814faa3be41a60eb6c1a27bafd5a948 this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -434,7 +434,7 @@ public abstract class LivingEntity extends Entity { +@@ -435,7 +435,7 @@ public abstract class LivingEntity extends Entity { this.level.addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } @@ -40,7 +40,7 @@ index 782bfe3a360b7e63f8457cb7b8b5973740d2b8db..a814faa3be41a60eb6c1a27bafd5a948 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91e2410ea09333ae65960ca67414333625857cb5..efba22df32b2c89360046005a381bf8b9c332f18 100644 +index 5016f11f7de2c210acb70b18a8be3aa727ac69c3..75e3d231ce15c12bfbff81017e43c60b64f2c758 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -167,6 +167,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0163-Piglin-portal-spawn-modifier.patch b/patches/server/0163-Piglin-portal-spawn-modifier.patch index 6a2f769f3..fcdebfc37 100644 --- a/patches/server/0163-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0163-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 65fa00b3d4d35a4125f8de444e77ac54e9e28551..dd9badfb2879def258bf725a5d802f7d pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1ee7134cf9e3bc51fcd4fb7c64f151244f2f34c..83931e389e021af77680f1ca8e82f23f9b9eef32 100644 +index f0c778af2a7eb63cfecca980391d6a79948d195d..c728a5186fb0a4ff5f4a174f51463fe35b346242 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1625,6 +1625,7 @@ public class PurpurWorldConfig { +@@ -1613,6 +1613,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index b1ee7134cf9e3bc51fcd4fb7c64f151244f2f34c..83931e389e021af77680f1ca8e82f23f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1637,6 +1638,7 @@ public class PurpurWorldConfig { +@@ -1625,6 +1626,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0165-Config-for-wither-explosion-radius.patch b/patches/server/0165-Config-for-wither-explosion-radius.patch index e6b00852d..24d0d7688 100644 --- a/patches/server/0165-Config-for-wither-explosion-radius.patch +++ b/patches/server/0165-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index 1654b08f76e02e20a8ce5de618f8def82f1feeeb..7938a81fea35ef79fb1054e7b1117573 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 83931e389e021af77680f1ca8e82f23f9b9eef32..87476d216f4e6ecfc3289fc6f5332187a0a2405a 100644 +index c728a5186fb0a4ff5f4a174f51463fe35b346242..e17584956c12ec4936aa1a2c0de3749e71bf9cb1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2259,6 +2259,7 @@ public class PurpurWorldConfig { +@@ -2247,6 +2247,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 83931e389e021af77680f1ca8e82f23f9b9eef32..87476d216f4e6ecfc3289fc6f5332187 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2279,6 +2280,7 @@ public class PurpurWorldConfig { +@@ -2267,6 +2268,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0166-Gamemode-extra-permissions.patch b/patches/server/0166-Gamemode-extra-permissions.patch index b3622fa2e..9ae8cbb32 100644 --- a/patches/server/0166-Gamemode-extra-permissions.patch +++ b/patches/server/0166-Gamemode-extra-permissions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index ed64b78bc8510fbe8fda9a10b779e91d99313676..e7c51725d5c04cc9da1bd1d2e12392ca07264609 100644 +index 901edaae2230c48fa0584991ed82498d568d5fc0..d38acbb03d74dd237f007f392ec2c3db775cadf7 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -213,6 +213,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -214,6 +214,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy } // CraftBukkit end diff --git a/patches/server/0170-Configurable-mob-blindness.patch b/patches/server/0170-Configurable-mob-blindness.patch index bc5b9e9ec..81d9755e2 100644 --- a/patches/server/0170-Configurable-mob-blindness.patch +++ b/patches/server/0170-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f7473ee8fc0ced687d76ee7d569c1d7cb7ae8f63..bbeeee00e63b1ab72608d723f828a066d0621aec 100644 +index cbaf99b4cd7b6d949695b1a66e66f18329e87148..5fd0ec5cff82bff9f44d03dc4d979eabe4c507e2 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1010,6 +1010,17 @@ public abstract class LivingEntity extends Entity { +@@ -1025,6 +1025,17 @@ public abstract class LivingEntity extends Entity { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } @@ -28,7 +28,7 @@ index f7473ee8fc0ced687d76ee7d569c1d7cb7ae8f63..bbeeee00e63b1ab72608d723f828a066 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b787b34b11f7379249575b058fe3a07a1a7d3d83..d5b2ff0a8527f074b3a0cd145086e5218d557c8a 100644 +index 7c126828d8ce8e988746e06aad41d913985e951e..29fc1c042245c69fbdc4aa282d0f838b8226c9cf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -135,6 +135,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0182-API-for-any-mob-to-burn-daylight.patch b/patches/server/0182-API-for-any-mob-to-burn-daylight.patch index b6b2ac64f..794de70d8 100644 --- a/patches/server/0182-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0182-API-for-any-mob-to-burn-daylight.patch @@ -31,18 +31,18 @@ index a3a76273bb6ce1621366cfd8dec22e5bd3f5c45e..bd76451230bb0b5abb744088b67b7e55 // 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 324ad2c199f2df99248785321e3127a4685a839b..13b912df3d653b8c74e5e9f4bc73790316a2b5c8 100644 +index 5fd0ec5cff82bff9f44d03dc4d979eabe4c507e2..6c506c32814b9e068b92094aab54be7647178c89 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 { - public boolean bukkitPickUpLoot; +@@ -265,6 +265,7 @@ public abstract class LivingEntity extends Entity { 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 + protected boolean shouldBurnInDay = false; public boolean shouldBurnInDay() { return this.shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur @Override public float getBukkitYaw() { -@@ -787,6 +788,7 @@ public abstract class LivingEntity extends Entity { +@@ -793,6 +794,7 @@ public abstract class LivingEntity extends Entity { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -50,7 +50,7 @@ index 324ad2c199f2df99248785321e3127a4685a839b..13b912df3d653b8c74e5e9f4bc737903 } @Override -@@ -862,6 +864,11 @@ public abstract class LivingEntity extends Entity { +@@ -877,6 +879,11 @@ public abstract class LivingEntity extends Entity { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -62,7 +62,7 @@ index 324ad2c199f2df99248785321e3127a4685a839b..13b912df3d653b8c74e5e9f4bc737903 } // CraftBukkit start -@@ -3496,6 +3503,27 @@ public abstract class LivingEntity extends Entity { +@@ -3511,6 +3518,27 @@ public abstract class LivingEntity extends Entity { this.hurt(DamageSource.DROWN, 1.0F); } @@ -351,7 +351,7 @@ index 0eaa8119201cae52340a1a58700906eb96e2a99f..f9e6f1788ae5e02372140a40373b4dec // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index fbddb90fdbaa99c5f243b6e93c55fc1f7430e337..403085673b87291799538f4f3aad2dfe65b35660 100644 +index edfd2d9450805f05df607b5160a0c0ecf9170915..e08cbcb9230889cc86b0726d67038e1cf9914c87 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -205,6 +205,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -367,10 +367,10 @@ index fbddb90fdbaa99c5f243b6e93c55fc1f7430e337..403085673b87291799538f4f3aad2dfe /* * 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 aec6f37ceac8ba9a987edf3eb24bbc06d3b1613a..f2d17cb06fbcd7370ab8465c5c4830f8ba31169a 100644 +index bea0a1441b3f331e1bbaee15a91b279950bca640..32d4960fbee976004d5d1a3a5c29c2e963a8d577 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1001,5 +1001,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1060,5 +1060,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/0188-Make-lightning-rod-range-configurable.patch b/patches/server/0188-Make-lightning-rod-range-configurable.patch index 237d8f5e7..050bc0ac2 100644 --- a/patches/server/0188-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0188-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 45257a5292b4f6e95c2628547233a81ce9e67008..4b86792bfdf02ac8235a981bfca8779527de5b38 100644 +index 66817fa844fc03d0137a6cd9aab1a41b05d94d1c..8567ab80b3eb9a450313862d2ff3832e64240d6f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -974,7 +974,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -975,7 +975,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0192-Shulker-spawn-from-bullet-options.patch b/patches/server/0192-Shulker-spawn-from-bullet-options.patch index a43face8d..f02fc59a2 100644 --- a/patches/server/0192-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0192-Shulker-spawn-from-bullet-options.patch @@ -61,10 +61,10 @@ index 2d3dbc228a6a7b88167a36ba739d9eb2f03472ba..7621978ab3d90d58e8b7c6807e0e0519 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e5f8bc3042d68a10d670e8c42d27bef207a0c14..bd2c7b4b21c6c9812be930162856d72696faad76 100644 +index 8db81be1709fa766bec922b0e4e3c748539a4c1e..bb883af840de5117ee770f78df580eb972106c36 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1915,6 +1915,11 @@ public class PurpurWorldConfig { +@@ -1903,6 +1903,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -76,7 +76,7 @@ index 4e5f8bc3042d68a10d670e8c42d27bef207a0c14..bd2c7b4b21c6c9812be930162856d726 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1926,6 +1931,11 @@ public class PurpurWorldConfig { +@@ -1914,6 +1919,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0195-Configurable-hunger-starvation-damage.patch b/patches/server/0195-Configurable-hunger-starvation-damage.patch index a9bf3788b..f16bad9e8 100644 --- a/patches/server/0195-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0195-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 4c1e9b6f4a52d7b1506b9016cc4d30e583eeab04..0e753dd68d9506a2a4e5ad74e7f4d04c this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb349aa767d20f9639b70f1e50002f91b2e6f0f0..81d9089d366a651062156eb73b57829ed397c8ed 100644 +index 8e00bdc92d2b9a79e47f3f7d530de63d977a043c..8e69c445d7aabe815b2349d1f413859ad7e11510 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2563,4 +2563,9 @@ public class PurpurWorldConfig { +@@ -2551,4 +2551,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0203-Customizable-sleeping-actionbar-messages.patch b/patches/server/0203-Customizable-sleeping-actionbar-messages.patch index 9a85d7303..4feeed142 100644 --- a/patches/server/0203-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0203-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4b86792bfdf02ac8235a981bfca8779527de5b38..6a8c1da4e69f1ceaa74a30c7571af87910fe8562 100644 +index 8567ab80b3eb9a450313862d2ff3832e64240d6f..f9ddff75288aa39e3d62422cca6ce536c20d47b2 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1023,11 +1023,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1024,11 +1024,27 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); diff --git a/patches/server/0205-Silk-touchable-budding-amethyst.patch b/patches/server/0205-Silk-touchable-budding-amethyst.patch index ac644dd9c..ff0af9dd6 100644 --- a/patches/server/0205-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0205-Silk-touchable-budding-amethyst.patch @@ -24,7 +24,7 @@ index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a90 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 63926eb8a662677f08a11b391fdc197aa1fd0255..bec789c0d3209655ed2b2cfb7306d3042dc6d41b 100644 +index 914f4963f61ab707897739bb5075d4d611e357ff..a65143b9c4f32ee8cf8517a3a753c1d4c2b8ec1d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -714,6 +714,11 @@ public class PurpurWorldConfig { @@ -39,7 +39,7 @@ index 63926eb8a662677f08a11b391fdc197aa1fd0255..bec789c0d3209655ed2b2cfb7306d304 public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2728,3 +2733,4 @@ public class PurpurWorldConfig { +@@ -2716,3 +2721,4 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } } diff --git a/patches/server/0211-Toggle-for-kinetic-damage.patch b/patches/server/0211-Toggle-for-kinetic-damage.patch index 4e139b2db..b5198775d 100644 --- a/patches/server/0211-Toggle-for-kinetic-damage.patch +++ b/patches/server/0211-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 13b912df3d653b8c74e5e9f4bc73790316a2b5c8..ce57fb82a5229cccdd2ecac9a80013dec8331c68 100644 +index 6c506c32814b9e068b92094aab54be7647178c89..7cc12e402e3b90a44bcd6d8c2a7607b7cf421bca 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2885,6 +2885,7 @@ public abstract class LivingEntity extends Entity { +@@ -2900,6 +2900,7 @@ public abstract class LivingEntity extends Entity { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index 13b912df3d653b8c74e5e9f4bc73790316a2b5c8..ce57fb82a5229cccdd2ecac9a80013de } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 209e92b0588ddfc820647710e443173b1e78887e..1f0c70c48472b64da299b79402b93ae9c57ba167 100644 +index 18e3d6d7af035dbf6af0417e7470e556d0fcffd2..62976858a7e588b932dd1bb317e428a96cd20423 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -185,12 +185,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0213-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0213-Customizeable-Zombie-Villager-curing-times.patch index d641241e5..51d56c3fb 100644 --- a/patches/server/0213-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0213-Customizeable-Zombie-Villager-curing-times.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizeable Zombie Villager curing times diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 51fe59657b5b4608fc1528086c8692030d243a7a..f0f4542949de4927f15c75d067eb7d213599aa85 100644 +index fd4e34549ff65d0ed82d3bc1e8b7067a53a33d4c..23f154095118de9894e089489aded6b7b7aa96e3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -217,7 +217,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index 51fe59657b5b4608fc1528086c8692030d243a7a..f0f4542949de4927f15c75d067eb7d21 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e33464773cc3d4a82affb83400a80a99be77231..4d2c01a8731d5e789672d5c82e04d996d1e0304f 100644 +index 55196d4ca677deb828f363c3c6e451c57df4fc50..ad20e33d8f972886c040afcd2a14724f87aa9bbf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2714,6 +2714,8 @@ public class PurpurWorldConfig { +@@ -2702,6 +2702,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 1e33464773cc3d4a82affb83400a80a99be77231..4d2c01a8731d5e789672d5c82e04d996 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2729,6 +2731,8 @@ public class PurpurWorldConfig { +@@ -2717,6 +2719,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0215-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0215-Toggle-for-Wither-s-spawn-sound.patch index ea51b148c..6fa746457 100644 --- a/patches/server/0215-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0215-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 29e67a03097a21f3d49e1998dbb125e58fce4368..28da6b021eed7ab9042b03052b0f50d2 // this.world.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a911475cb568abfa491b95abcee6da25cc9b57fc..e53a2c18b68d02f7eeb764198d074e639ec0bfa0 100644 +index b8d54d07d3680e36d55f56e93ac530a8ed630004..0943e2174ac8fe7be2d2b00432b301b33873acd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2559,6 +2559,7 @@ public class PurpurWorldConfig { +@@ -2547,6 +2547,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index a911475cb568abfa491b95abcee6da25cc9b57fc..e53a2c18b68d02f7eeb764198d074e63 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2580,6 +2581,7 @@ public class PurpurWorldConfig { +@@ -2568,6 +2569,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0218-Conduit-behavior-configuration.patch b/patches/server/0218-Conduit-behavior-configuration.patch index 7795fd4e9..74f22fbb3 100644 --- a/patches/server/0218-Conduit-behavior-configuration.patch +++ b/patches/server/0218-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 05eab04e4aec4151018f25b59f92ddbbb4c09f87..3b5c502fc211940dd908f1d276fa11e3 }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 73a0f0d287823871262d31419a135cf179361814..3fee49f9e3036ee80b88165297b0fbce05c4bea7 100644 +index 99a4353ffaf27210e6c18bf269b873db0e8850ca..8083f9dc08cd95b2dc0114a9f29be0ae9b5dfd4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2778,5 +2778,28 @@ public class PurpurWorldConfig { +@@ -2766,5 +2766,28 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0219-Cauldron-fill-chances.patch b/patches/server/0219-Cauldron-fill-chances.patch index 6b969c302..06d1920c8 100644 --- a/patches/server/0219-Cauldron-fill-chances.patch +++ b/patches/server/0219-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index ce4265a9cf01db335a6a88b91ae5e6ff4518ef92..f889729b3bbbe1c82fa8bc7e1ab1f7b0 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3fee49f9e3036ee80b88165297b0fbce05c4bea7..c0656b4e2be7ece9061867fe7e35ab8a9d02d565 100644 +index 8083f9dc08cd95b2dc0114a9f29be0ae9b5dfd4e..97f2bcf02a09cd0f7b4aad1bca0bfe1b0b015c79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2801,5 +2801,16 @@ public class PurpurWorldConfig { +@@ -2789,5 +2789,16 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0221-Shulker-change-color-with-dye.patch b/patches/server/0221-Shulker-change-color-with-dye.patch index 1e13c6dbb..65d679a91 100644 --- a/patches/server/0221-Shulker-change-color-with-dye.patch +++ b/patches/server/0221-Shulker-change-color-with-dye.patch @@ -47,10 +47,10 @@ index ada070d8e1a2d328c02455eb9e5ad056046bcd0a..691b59f784e34b061ea156a3236c09f2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f20936ab60accfdb40c139c4e5c4d67d3e0f5679..87edcfdfafb0acc20e314c4d43fc0fd43c8490b2 100644 +index ca324dfc46a7cd723e2858fb741969c5007e488a..ff7b3c7e08fd5cb2d0b81adb80934094ee66c9a0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2130,6 +2130,7 @@ public class PurpurWorldConfig { +@@ -2118,6 +2118,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -58,7 +58,7 @@ index f20936ab60accfdb40c139c4e5c4d67d3e0f5679..87edcfdfafb0acc20e314c4d43fc0fd4 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2146,6 +2147,7 @@ public class PurpurWorldConfig { +@@ -2134,6 +2135,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0224-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0224-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 04c9c5e32..c12831944 100644 --- a/patches/server/0224-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0224-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6a8c1da4e69f1ceaa74a30c7571af87910fe8562..1ae2b3ce635c6e4b3cdabddda253ec9c925d06cc 100644 +index f9ddff75288aa39e3d62422cca6ce536c20d47b2..6c206c92d24b6202cfb5740c44a942451d73345a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1182,6 +1182,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1183,6 +1183,7 @@ public class ServerLevel extends Level implements WorldGenLevel { private void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 6a8c1da4e69f1ceaa74a30c7571af87910fe8562..1ae2b3ce635c6e4b3cdabddda253ec9c this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1189,6 +1190,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1190,6 +1191,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index 6a8c1da4e69f1ceaa74a30c7571af87910fe8562..1ae2b3ce635c6e4b3cdabddda253ec9c // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 87edcfdfafb0acc20e314c4d43fc0fd43c8490b2..38b1d1f16097676528ef93cdf7f4ab62807dc4c1 100644 +index ff7b3c7e08fd5cb2d0b81adb80934094ee66c9a0..adc279b93abb38d5f89b5411828626352a9a83b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0229-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0229-Option-for-beds-to-explode-on-villager-sleep.patch index 62ebfa157..26da9627a 100644 --- a/patches/server/0229-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0229-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 89435b0742064d77c7cc8bb871949acc9852f2c0..f04778287545e9619ee0359f1e51151d87fca092 100644 +index 14834853354adb222f99c4a12169fd05e02477da..2df655ddf394149e32e00f3f2a352bff41091a1e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1085,6 +1085,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1093,6 +1093,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,7 +22,7 @@ index 89435b0742064d77c7cc8bb871949acc9852f2c0..f04778287545e9619ee0359f1e51151d this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level.getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 58aa6ef663be2c1c5ad242553bb4ad703a94b71d..88189eeea2bae35fa0f396aae7fc3bcfce4cd611 100644 +index 132cc5a42b17640eddd098f883b9c56fa5cb8b92..fee5bdb822bac6934d0ab92a8e092494845fe7d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -725,11 +725,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0235-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0235-Add-option-to-disable-zombie-villagers-cure.patch index 606748da5..673d34b87 100644 --- a/patches/server/0235-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0235-Add-option-to-disable-zombie-villagers-cure.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie villagers cure diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index f0f4542949de4927f15c75d067eb7d213599aa85..780f7d8a44acea8987736544c1991fec4e6ecc84 100644 +index 23f154095118de9894e089489aded6b7b7aa96e3..dd05c4770abe65069148fcccfd1b33e781c237ce 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -211,7 +211,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -18,10 +18,10 @@ index f0f4542949de4927f15c75d067eb7d213599aa85..780f7d8a44acea8987736544c1991fec itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d6da6756ac41714b18e1dd1853ce73a14aac6e26..08116c757ee7a7ce6536ff196e3f3ee5fe57e37e 100644 +index b49fdfae45627a79cd07b3a405f7096a1e10107c..14b69d44fc582bbb6f46cbe4efc2281e65d13562 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2778,6 +2778,7 @@ public class PurpurWorldConfig { +@@ -2766,6 +2766,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index d6da6756ac41714b18e1dd1853ce73a14aac6e26..08116c757ee7a7ce6536ff196e3f3ee5 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2795,6 +2796,7 @@ public class PurpurWorldConfig { +@@ -2783,6 +2784,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0239-Mobs-always-drop-experience.patch b/patches/server/0239-Mobs-always-drop-experience.patch index 0fb8579f6..95c1b1089 100644 --- a/patches/server/0239-Mobs-always-drop-experience.patch +++ b/patches/server/0239-Mobs-always-drop-experience.patch @@ -101,7 +101,7 @@ index 5b79d821e8b55c8876eadcbe811a2c0584e7e02b..de70208403ef6c6c9c82ca4c1fd3b641 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index c7947a476a9986e3849c74f74b4b2135c6cf5984..eb7f9df2246813f74d09102d97579c2ffe63f5fb 100644 +index 204b027e4dba081ac492416d4b13c5bf520fb9bc..c09952d2d5bd1240ed36cd5b03ec071d6a2b87ab 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -80,6 +80,11 @@ public class Cow extends Animal { @@ -389,7 +389,7 @@ index d5a029db2831ea817071830ba30d0f50fd001f8d..539e3d66bb3cf088799625a2b20ab87d public void setHomePos(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index ed33573a96e96d557156fbe2f725e3d65c7d5ec4..22a66e59687ca889965536464b628f45b0e88ec0 100644 +index 60ec90b128a7a9f7862f4705b15dad142cc193f7..80f9788d11a5161c3020837befbebb06172e86e5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -212,6 +212,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -1029,7 +1029,7 @@ index 0d8495a73df5b1b6cd2c7e5cf18cb3eb15bbb729..66b824ac3c24c46014d615b355a8a04e @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 38014afb40ac5781f6724a942d593aee1f060ad8..ef92a631f71a8d44741a46ef7f6b599b4c061c47 100644 +index f86ff39a7b1890624c9bf731a07706307316366f..31b1715a5b62e4bd36d672ad21a3bdfbec8af7d1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -143,6 +143,11 @@ public class Zombie extends Monster { @@ -1045,7 +1045,7 @@ index 38014afb40ac5781f6724a942d593aee1f060ad8..ef92a631f71a8d44741a46ef7f6b599b @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 780f7d8a44acea8987736544c1991fec4e6ecc84..fa9c48aa10d74d4de8f28fd7b99b82d9ce87bde5 100644 +index dd05c4770abe65069148fcccfd1b33e781c237ce..1d0bad8da3d48dce629bfab3cb536358d818a97e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -123,6 +123,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1125,7 +1125,7 @@ index a44f9a59fbec146df95d89c26df12efb79f6179a..760015f7a98e70b735707c77472c084d public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index f04778287545e9619ee0359f1e51151d87fca092..b0674eeea341a725ed774c5de040fe173a6fb833 100644 +index 2df655ddf394149e32e00f3f2a352bff41091a1e..1d3e10d7cd27257e8fd83c3e882b05b9d4374c56 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1141,7 +1141,7 @@ index f04778287545e9619ee0359f1e51151d87fca092..b0674eeea341a725ed774c5de040fe17 @Override diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 7231230823573c7d00dd82bee480cc787270c383..18e3589a46daa3fc0abf7e6f8bfdc18670edd315 100644 +index 8214506faf26bc973594f1bd8a19e0458be9b544..558884b68263f4fd89e5b7e6226faa2b268168da 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -96,6 +96,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -1157,7 +1157,7 @@ index 7231230823573c7d00dd82bee480cc787270c383..18e3589a46daa3fc0abf7e6f8bfdc186 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee114495e056535 100644 +index 2943a6d00d5cc5cbfac00fe7031a473db600606f..22ba2f2c8a83e4372867c251256a4d885dcdb8fd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1004,12 +1004,14 @@ public class PurpurWorldConfig { @@ -1715,7 +1715,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean phantomRidable = false; -@@ -1903,6 +1973,7 @@ public class PurpurWorldConfig { +@@ -1897,6 +1967,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1944,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1932,6 +2003,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean pigRidable = false; -@@ -1953,6 +2025,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +2013,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1966,6 +2039,7 @@ public class PurpurWorldConfig { +@@ -1954,6 +2027,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean piglinRidable = false; -@@ -1975,6 +2049,7 @@ public class PurpurWorldConfig { +@@ -1963,6 +2037,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1988,6 +2063,7 @@ public class PurpurWorldConfig { +@@ -1976,6 +2051,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean piglinBruteRidable = false; -@@ -1995,6 +2071,7 @@ public class PurpurWorldConfig { +@@ -1983,6 +2059,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2006,6 +2083,7 @@ public class PurpurWorldConfig { +@@ -1994,6 +2071,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean pillagerRidable = false; -@@ -2014,6 +2092,7 @@ public class PurpurWorldConfig { +@@ -2002,6 +2080,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2026,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -2014,6 +2093,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean polarBearRidable = false; -@@ -2036,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2024,6 +2104,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2051,12 +2132,14 @@ public class PurpurWorldConfig { +@@ -2039,12 +2120,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2067,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2138,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean rabbitRidable = false; -@@ -2078,6 +2162,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2150,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2093,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2081,6 +2166,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean ravagerRidable = false; -@@ -2102,6 +2188,7 @@ public class PurpurWorldConfig { +@@ -2090,6 +2176,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2131,12 +2218,14 @@ public class PurpurWorldConfig { +@@ -2119,12 +2206,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2147,6 +2236,7 @@ public class PurpurWorldConfig { +@@ -2135,6 +2224,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean sheepRidable = false; -@@ -2156,6 +2246,7 @@ public class PurpurWorldConfig { +@@ -2144,6 +2234,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2169,6 +2260,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2248,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean shulkerRidable = false; -@@ -2182,6 +2274,7 @@ public class PurpurWorldConfig { +@@ -2170,6 +2262,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2199,6 +2292,7 @@ public class PurpurWorldConfig { +@@ -2187,6 +2280,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean silverfishRidable = false; -@@ -2207,6 +2301,7 @@ public class PurpurWorldConfig { +@@ -2195,6 +2289,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2219,6 +2314,7 @@ public class PurpurWorldConfig { +@@ -2207,6 +2302,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean skeletonRidable = false; -@@ -2226,6 +2322,7 @@ public class PurpurWorldConfig { +@@ -2214,6 +2310,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2237,6 +2334,7 @@ public class PurpurWorldConfig { +@@ -2225,6 +2322,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean skeletonHorseRidableInWater = true; -@@ -2248,6 +2346,7 @@ public class PurpurWorldConfig { +@@ -2236,6 +2334,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2264,6 +2363,7 @@ public class PurpurWorldConfig { +@@ -2252,6 +2351,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean slimeRidable = false; -@@ -2274,6 +2374,7 @@ public class PurpurWorldConfig { +@@ -2262,6 +2362,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2288,6 +2389,7 @@ public class PurpurWorldConfig { +@@ -2276,6 +2377,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean snowGolemRidable = false; -@@ -2303,6 +2405,7 @@ public class PurpurWorldConfig { +@@ -2291,6 +2393,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2322,6 +2425,7 @@ public class PurpurWorldConfig { +@@ -2310,6 +2413,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean squidRidable = false; -@@ -2331,6 +2435,7 @@ public class PurpurWorldConfig { +@@ -2319,6 +2423,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2344,6 +2449,7 @@ public class PurpurWorldConfig { +@@ -2332,6 +2437,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean spiderRidable = false; -@@ -2351,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2339,6 +2445,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2362,6 +2469,7 @@ public class PurpurWorldConfig { +@@ -2350,6 +2457,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean strayRidable = false; -@@ -2369,6 +2477,7 @@ public class PurpurWorldConfig { +@@ -2357,6 +2465,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2380,6 +2489,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2477,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean striderRidable = false; -@@ -2389,6 +2499,7 @@ public class PurpurWorldConfig { +@@ -2377,6 +2487,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2402,6 +2513,7 @@ public class PurpurWorldConfig { +@@ -2390,6 +2501,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean tadpoleRidable = false; -@@ -2424,6 +2536,7 @@ public class PurpurWorldConfig { +@@ -2412,6 +2524,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2443,12 +2556,14 @@ public class PurpurWorldConfig { +@@ -2431,12 +2544,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2459,6 +2574,7 @@ public class PurpurWorldConfig { +@@ -2447,6 +2562,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean turtleRidable = false; -@@ -2467,6 +2583,7 @@ public class PurpurWorldConfig { +@@ -2455,6 +2571,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2479,6 +2596,7 @@ public class PurpurWorldConfig { +@@ -2467,6 +2584,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean vexRidable = false; -@@ -2487,6 +2605,7 @@ public class PurpurWorldConfig { +@@ -2475,6 +2593,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2499,6 +2618,7 @@ public class PurpurWorldConfig { +@@ -2487,6 +2606,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean villagerRidable = false; -@@ -2516,6 +2636,7 @@ public class PurpurWorldConfig { +@@ -2504,6 +2624,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2537,6 +2658,7 @@ public class PurpurWorldConfig { +@@ -2525,6 +2646,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean vindicatorRidable = false; -@@ -2545,6 +2667,7 @@ public class PurpurWorldConfig { +@@ -2533,6 +2655,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2557,6 +2680,7 @@ public class PurpurWorldConfig { +@@ -2545,6 +2668,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean wanderingTraderRidable = false; -@@ -2567,6 +2691,7 @@ public class PurpurWorldConfig { +@@ -2555,6 +2679,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2581,6 +2706,7 @@ public class PurpurWorldConfig { +@@ -2569,6 +2694,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean wardenRidable = false; -@@ -2597,6 +2723,7 @@ public class PurpurWorldConfig { +@@ -2585,6 +2711,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2608,6 +2735,7 @@ public class PurpurWorldConfig { +@@ -2596,6 +2723,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean witherRidable = false; -@@ -2622,6 +2750,7 @@ public class PurpurWorldConfig { +@@ -2610,6 +2738,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2644,6 +2773,7 @@ public class PurpurWorldConfig { +@@ -2632,6 +2761,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean witherSkeletonRidable = false; -@@ -2651,6 +2781,7 @@ public class PurpurWorldConfig { +@@ -2639,6 +2769,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2662,6 +2793,7 @@ public class PurpurWorldConfig { +@@ -2650,6 +2781,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean wolfRidable = false; -@@ -2673,6 +2805,7 @@ public class PurpurWorldConfig { +@@ -2661,6 +2793,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2692,6 +2825,7 @@ public class PurpurWorldConfig { +@@ -2680,6 +2813,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean zoglinRidable = false; -@@ -2699,6 +2833,7 @@ public class PurpurWorldConfig { +@@ -2687,6 +2821,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2710,6 +2845,7 @@ public class PurpurWorldConfig { +@@ -2698,6 +2833,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean zombieRidable = false; -@@ -2723,6 +2859,7 @@ public class PurpurWorldConfig { +@@ -2711,6 +2847,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2740,6 +2877,7 @@ public class PurpurWorldConfig { +@@ -2728,6 +2865,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean zombieHorseRidableInWater = false; -@@ -2752,6 +2890,7 @@ public class PurpurWorldConfig { +@@ -2740,6 +2878,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2769,6 +2908,7 @@ public class PurpurWorldConfig { +@@ -2757,6 +2896,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean zombieVillagerRidable = false; -@@ -2783,6 +2923,7 @@ public class PurpurWorldConfig { +@@ -2771,6 +2911,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2801,6 +2942,7 @@ public class PurpurWorldConfig { +@@ -2789,6 +2930,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 } public boolean zombifiedPiglinRidable = false; -@@ -2813,6 +2955,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2943,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index f0d0538c9ea3c3f3119c67c306886dfacbfdc7de..229b4c97f2b05660a5564e4d3ee11449 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2829,6 +2972,7 @@ public class PurpurWorldConfig { +@@ -2817,6 +2960,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0242-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0242-Option-to-prevent-spiders-from-climbing-world-border.patch index 555cd571a..966a2f3e2 100644 --- a/patches/server/0242-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0242-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -39,10 +39,10 @@ index bdd4fc3072f7a5ea504ba35f6a08ae971e83b69f..b9ac8cefefe1f47548166330b7c889df } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 229b4c97f2b05660a5564e4d3ee114495e056535..026dcf93405f70e5249bff9bd574aa195903e706 100644 +index 22ba2f2c8a83e4372867c251256a4d885dcdb8fd..4aa533741c8deb1cde5b8603832878ac8580d326 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2458,6 +2458,7 @@ public class PurpurWorldConfig { +@@ -2446,6 +2446,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; public boolean spiderAlwaysDropExp = false; @@ -50,7 +50,7 @@ index 229b4c97f2b05660a5564e4d3ee114495e056535..026dcf93405f70e5249bff9bd574aa19 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2470,6 +2471,7 @@ public class PurpurWorldConfig { +@@ -2458,6 +2459,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); spiderAlwaysDropExp = getBoolean("mobs.spider.always-drop-exp", spiderAlwaysDropExp); diff --git a/patches/server/0244-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0244-Shearing-jeb-produces-random-color-wool.patch index f2fbfc7b3..8112beaab 100644 --- a/patches/server/0244-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0244-Shearing-jeb-produces-random-color-wool.patch @@ -18,10 +18,10 @@ index 63aeab7204ac954b2908207dc6e743d17aa27f2e..aa6f6e252f6f2933825b97bf1b9679fe if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f0f06e8e4a7a4aac071bff48230ab20f2795f7d2..3fd933c9d8db9ed3ecdc4e7f4d630235603895ce 100644 +index ddca8e220f7624ca09243bd67084420302d098ab..0f0974e00c9878ea476a3689a86772b215dcb2e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2251,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2239,6 +2239,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index f0f06e8e4a7a4aac071bff48230ab20f2795f7d2..3fd933c9d8db9ed3ecdc4e7f4d630235 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2265,6 +2266,7 @@ public class PurpurWorldConfig { +@@ -2253,6 +2254,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/server/0246-Mob-head-visibility-percent.patch b/patches/server/0246-Mob-head-visibility-percent.patch index 60099502f..581e1f9d1 100644 --- a/patches/server/0246-Mob-head-visibility-percent.patch +++ b/patches/server/0246-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 7422b01a63e395cb87f02a1a665f53b11755f5ee..bd0b864f7a1b029f9ebd242adbbe5575e8ce464d 100644 +index 7cc12e402e3b90a44bcd6d8c2a7607b7cf421bca..d9d4a12555d0d791c551944ecdd7beb20aa8d2c6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1014,9 +1014,17 @@ public abstract class LivingEntity extends Entity { +@@ -1029,9 +1029,17 @@ public abstract class LivingEntity extends Entity { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); @@ -29,7 +29,7 @@ index 7422b01a63e395cb87f02a1a665f53b11755f5ee..bd0b864f7a1b029f9ebd242adbbe5575 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86cdae20b7d5355d7757668defafe45462cf1d26..b75311013718fad79e07cb19dab32a83a560d377 100644 +index 3d63043d7d25b52ab57059e3777d9c66af013d42..1daafc12b18e6554972b3457afaa05be33e92734 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1239,6 +1239,7 @@ public class PurpurWorldConfig { @@ -48,7 +48,7 @@ index 86cdae20b7d5355d7757668defafe45462cf1d26..b75311013718fad79e07cb19dab32a83 } public boolean dolphinRidable = false; -@@ -2331,6 +2333,7 @@ public class PurpurWorldConfig { +@@ -2319,6 +2321,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -56,7 +56,7 @@ index 86cdae20b7d5355d7757668defafe45462cf1d26..b75311013718fad79e07cb19dab32a83 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2343,6 +2346,7 @@ public class PurpurWorldConfig { +@@ -2331,6 +2334,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -64,7 +64,7 @@ index 86cdae20b7d5355d7757668defafe45462cf1d26..b75311013718fad79e07cb19dab32a83 } public boolean skeletonHorseRidableInWater = true; -@@ -2870,6 +2874,7 @@ public class PurpurWorldConfig { +@@ -2858,6 +2862,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -72,7 +72,7 @@ index 86cdae20b7d5355d7757668defafe45462cf1d26..b75311013718fad79e07cb19dab32a83 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2888,6 +2893,7 @@ public class PurpurWorldConfig { +@@ -2876,6 +2881,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0253-Allow-void-trading.patch b/patches/server/0253-Allow-void-trading.patch index 49d276877..7ab748162 100644 --- a/patches/server/0253-Allow-void-trading.patch +++ b/patches/server/0253-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1ae2b3ce635c6e4b3cdabddda253ec9c925d06cc..4ba091c3ecb1cf65839b91a459954545214ef15b 100644 +index 6c206c92d24b6202cfb5740c44a942451d73345a..029d8782ad1371dc95ba244d56b20a4801b004b7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2701,7 +2701,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2702,7 +2702,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start @@ -18,7 +18,7 @@ index 1ae2b3ce635c6e4b3cdabddda253ec9c925d06cc..4ba091c3ecb1cf65839b91a459954545 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4ffc47514f141353825f2e4b1db7647fa4520d4..235c264c0bb00e4fe4c9232c010453e31ff6dc79 100644 +index c982a4a287b7b9db5d043543e3a1451f004c7378..f52e6f16607c9f5a15896a0a32a2e49e50e91820 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -424,6 +424,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0255-Configurable-phantom-size.patch b/patches/server/0255-Configurable-phantom-size.patch index 922fdbd60..56717c1e2 100644 --- a/patches/server/0255-Configurable-phantom-size.patch +++ b/patches/server/0255-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 35da78d79ee90acc69600adb78bc81ff75cee752..cf6f7c6c5754ab712e06a7bfb8c1ef8e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 235c264c0bb00e4fe4c9232c010453e31ff6dc79..59b6ec7e2a44cee18da4dfdb43c2beb2da4163f2 100644 +index f52e6f16607c9f5a15896a0a32a2e49e50e91820..6d576d08dc39f09e2d941dd6e715199154337786 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1990,6 +1990,8 @@ public class PurpurWorldConfig { +@@ -1984,6 +1984,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 235c264c0bb00e4fe4c9232c010453e31ff6dc79..59b6ec7e2a44cee18da4dfdb43c2beb2 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2032,6 +2034,13 @@ public class PurpurWorldConfig { +@@ -2020,6 +2022,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0258-Configurable-minimum-demand-for-trades.patch b/patches/server/0258-Configurable-minimum-demand-for-trades.patch index 234c72d7c..50bebef90 100644 --- a/patches/server/0258-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0258-Configurable-minimum-demand-for-trades.patch @@ -9,7 +9,7 @@ This patch adds a config option to allow the minimum demand to instead be configurable. diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index b0674eeea341a725ed774c5de040fe173a6fb833..c985f302812be364c07866727c9d2c2714bec249 100644 +index 1d3e10d7cd27257e8fd83c3e882b05b9d4374c56..302c9b2c063013d8cbd01103e305f16d12f87d51 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -534,7 +534,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -40,10 +40,10 @@ index 8a9a701baabdaf066cd9b28c05430f673fcafb4e..17cc3237c7fc8ceda136b2371fabf6f0 public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59b6ec7e2a44cee18da4dfdb43c2beb2da4163f2..56d1d2477cbf3eb89fc0cc8f59af76515c620719 100644 +index 6d576d08dc39f09e2d941dd6e715199154337786..07e61dbb279740711ac0ba624865a207c55118f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2668,6 +2668,7 @@ public class PurpurWorldConfig { +@@ -2656,6 +2656,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 59b6ec7e2a44cee18da4dfdb43c2beb2da4163f2..56d1d2477cbf3eb89fc0cc8f59af7651 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2690,6 +2691,7 @@ public class PurpurWorldConfig { +@@ -2678,6 +2679,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0259-Lobotomize-stuck-villagers.patch b/patches/server/0259-Lobotomize-stuck-villagers.patch index f3644a924..f4971b80c 100644 --- a/patches/server/0259-Lobotomize-stuck-villagers.patch +++ b/patches/server/0259-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index c985f302812be364c07866727c9d2c2714bec249..ace39b0585c67b2764d75ff9e64d132347157a51 100644 +index 302c9b2c063013d8cbd01103e305f16d12f87d51..c230faeece73b010ad3738e629a7adbc52a06df1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -140,6 +140,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -95,10 +95,10 @@ index c985f302812be364c07866727c9d2c2714bec249..ace39b0585c67b2764d75ff9e64d1323 if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index f0b910df1ee471b4d72d97c6197ab14f2854976e..6ce32a52d621a0c2629568ea07e445f50160d97d 100644 +index 9220b1a7aa30ba59ac8dc6196859923b0675d8ec..3e820092c2b48c37b822a7afbb3f342340eed5c7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -194,4 +194,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { +@@ -222,4 +222,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { getHandle().getGossips().getReputations().clear(); } // Paper end @@ -111,10 +111,10 @@ index f0b910df1ee471b4d72d97c6197ab14f2854976e..6ce32a52d621a0c2629568ea07e445f5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56d1d2477cbf3eb89fc0cc8f59af76515c620719..297e163a17ad30c0d221bafd3b37d8d272609e11 100644 +index 07e61dbb279740711ac0ba624865a207c55118f0..9368139cf5e5638c386a3c17bfad56f32f89029c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2669,6 +2669,8 @@ public class PurpurWorldConfig { +@@ -2657,6 +2657,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -123,7 +123,7 @@ index 56d1d2477cbf3eb89fc0cc8f59af76515c620719..297e163a17ad30c0d221bafd3b37d8d2 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2692,6 +2694,17 @@ public class PurpurWorldConfig { +@@ -2680,6 +2682,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0260-Option-for-villager-display-trade-item.patch b/patches/server/0260-Option-for-villager-display-trade-item.patch index 19ed130e9..9a262c130 100644 --- a/patches/server/0260-Option-for-villager-display-trade-item.patch +++ b/patches/server/0260-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 385f3df7044e3f03f17c3ec7484b268004a3def9..90ba6a3abf62e4b272fada96b554ca31 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 297e163a17ad30c0d221bafd3b37d8d272609e11..542b4164df5069ef2e19a321af4a8c789a624e40 100644 +index 9368139cf5e5638c386a3c17bfad56f32f89029c..96e3a42d67db41460c024527fd00aa043c372451 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2671,6 +2671,7 @@ public class PurpurWorldConfig { +@@ -2659,6 +2659,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 297e163a17ad30c0d221bafd3b37d8d272609e11..542b4164df5069ef2e19a321af4a8c78 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2705,6 +2706,7 @@ public class PurpurWorldConfig { +@@ -2693,6 +2694,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/server/0263-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0263-Config-for-mob-last-hurt-by-player-time.patch index c1566079b..1d8e47925 100644 --- a/patches/server/0263-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0263-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 bd0b864f7a1b029f9ebd242adbbe5575e8ce464d..4cdf6954c8f428df7ca91abd497416797ae246c5 100644 +index d9d4a12555d0d791c551944ecdd7beb20aa8d2c6..0717f59c94f9579e05ed2938e14567be495ad1b0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1440,13 +1440,13 @@ public abstract class LivingEntity extends Entity { +@@ -1455,13 +1455,13 @@ public abstract class LivingEntity extends Entity { } if (entity1 instanceof net.minecraft.world.entity.player.Player) { @@ -25,7 +25,7 @@ index bd0b864f7a1b029f9ebd242adbbe5575e8ce464d..4cdf6954c8f428df7ca91abd49741679 if (entityliving != null && entityliving.getType() == EntityType.PLAYER) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index d726575f8df0176f2ee0b19d224d49d9ee3f248f..9e192788af0b2ae5479c2fae1239b10e1ff45351 100644 +index ea327baa5368afc27402d5863a6e238cea5be732..c56ea02591cae25834de4ca6045437ed59d95073 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -427,7 +427,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -38,7 +38,7 @@ index d726575f8df0176f2ee0b19d224d49d9ee3f248f..9e192788af0b2ae5479c2fae1239b10e // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 485233cfa2a6414812ce7b67e761de6996beb589..bb8d288074da9a0316815cf9af862b2c52936549 100644 +index b43bd45d81773e5eefc492d0ec19b22b9a37c82a..636c6187c7bfca7546e0f385f89ab12222b3343f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0270-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0270-Implement-configurable-search-radius-for-villagers-t.patch index b326dc38f..08ad90ea4 100644 --- a/patches/server/0270-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0270-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index ace39b0585c67b2764d75ff9e64d132347157a51..20668d53625ec88ba3eb2a655ad3f6bc4fb0fd0e 100644 +index c230faeece73b010ad3738e629a7adbc52a06df1..36dedae44ae743e1a5bc170c420e0a847bcb3a50 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1075,6 +1075,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1083,6 +1083,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,10 +18,10 @@ index ace39b0585c67b2764d75ff9e64d132347157a51..20668d53625ec88ba3eb2a655ad3f6bc AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d9f6345190d6efa330a680bc4d46962e47ad50f2..a3185ebf22677b829f966ddfb6f0bab43b0c9196 100644 +index 22bd65554e9bed262b4ca8bbe9afb1aab1c84bc8..a6fa2dc85de9db000cf462a3cff572cadac44a79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2684,6 +2684,8 @@ public class PurpurWorldConfig { +@@ -2672,6 +2672,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index d9f6345190d6efa330a680bc4d46962e47ad50f2..a3185ebf22677b829f966ddfb6f0bab4 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2719,6 +2721,8 @@ public class PurpurWorldConfig { +@@ -2707,6 +2709,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0275-Skeletons-eat-wither-roses.patch b/patches/server/0275-Skeletons-eat-wither-roses.patch index e64614c0f..4e46594ba 100644 --- a/patches/server/0275-Skeletons-eat-wither-roses.patch +++ b/patches/server/0275-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 51c548cd84bd83624fbff3f853a8050dc1e71ecd..2c85d71cfb486d30cb58b3378ebcdf55 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 867df5dba42a37589ec563fa0c6945e3b39151c9..9b90d6faa404e14265f189a594bbcea18de70e37 100644 +index e937e689a46ffedfc54400fade9750aa737f0ce9..f90f561b112e35579be997b387492890b1cdf80e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2377,6 +2377,7 @@ public class PurpurWorldConfig { +@@ -2365,6 +2365,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 867df5dba42a37589ec563fa0c6945e3b39151c9..9b90d6faa404e14265f189a594bbcea1 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2390,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2378,6 +2379,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0287-Remove-Timings.patch b/patches/server/0287-Remove-Timings.patch index 63f50dcf1..f39f1124a 100644 --- a/patches/server/0287-Remove-Timings.patch +++ b/patches/server/0287-Remove-Timings.patch @@ -477,10 +477,10 @@ index 014255019ce3f22e0c8cf8f0a775669f909d18f4..6a11e522c5bd9042dcf89e2538d35444 // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded // Paper start - controlled flush for entity tracker packets diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a764ccfa948 100644 +index 029d8782ad1371dc95ba244d56b20a4801b004b7..7af1b6036fa05533c2e9801988dcf07b51c18f6f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -686,7 +686,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -687,7 +687,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); gameprofilerfiller.popPush("tickPending"); @@ -489,7 +489,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 if (!this.isDebug()) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -695,20 +695,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -696,20 +696,20 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -517,7 +517,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 this.handlingTick = false; gameprofilerfiller.pop(); boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -719,7 +719,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -720,7 +720,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -526,7 +526,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 if (this.dragonFight != null) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -727,7 +727,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -728,7 +728,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -535,7 +535,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 this.entityTickList.forEach((entity) -> { entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { -@@ -768,8 +768,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -769,8 +769,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -546,7 +546,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -931,7 +931,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -932,7 +932,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper start - optimise random block ticking gameprofilerfiller.popPush("randomTick"); @@ -555,7 +555,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -965,7 +965,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -966,7 +966,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise random block ticking @@ -564,7 +564,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 gameprofilerfiller.pop(); } -@@ -1258,8 +1258,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1259,8 +1259,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -575,7 +575,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1275,7 +1275,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1276,7 +1276,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -584,7 +584,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1298,8 +1298,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1299,8 +1299,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -595,7 +595,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1329,7 +1329,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1330,7 +1330,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -604,7 +604,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 } } else { passenger.stopRiding(); -@@ -1349,14 +1349,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1350,14 +1350,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -622,7 +622,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1368,7 +1368,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1369,7 +1369,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryHolder, this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -631,7 +631,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 } // Paper end -@@ -1382,7 +1382,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1383,7 +1383,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit @@ -640,7 +640,7 @@ index 4ba091c3ecb1cf65839b91a459954545214ef15b..c94246d19a0d2f2a87f74d6ca4b14a76 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1392,11 +1392,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1393,11 +1393,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } diff --git a/patches/server/0288-Remove-Mojang-Profiler.patch b/patches/server/0288-Remove-Mojang-Profiler.patch index 9d0a33d17..5af2e2f1d 100644 --- a/patches/server/0288-Remove-Mojang-Profiler.patch +++ b/patches/server/0288-Remove-Mojang-Profiler.patch @@ -538,10 +538,10 @@ index 6a11e522c5bd9042dcf89e2538d354448e501fbe..3bee0bfc481ffe3ea1860c5b23ad2efb } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941ad885a78 100644 +index 7af1b6036fa05533c2e9801988dcf07b51c18f6f..4921c791c7900210e6dd96e03256ea529fd1d03d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -653,12 +653,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -654,12 +654,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise checkDespawn @@ -557,7 +557,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 this.advanceWeatherCycle(); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; -@@ -685,32 +685,32 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -686,32 +686,32 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); @@ -598,7 +598,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag) { -@@ -718,12 +718,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -719,12 +719,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag || this.emptyTime++ < 300) { @@ -614,7 +614,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -734,9 +734,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -735,9 +735,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else { @@ -626,7 +626,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -748,7 +748,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -749,7 +749,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -635,7 +635,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 // Pufferfish start - copied from this.guardEntityTick try { this.tickNonPassenger(entity); // Pufferfish - changed -@@ -763,22 +763,22 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -764,22 +764,22 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end } // Pufferfish end @@ -663,7 +663,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 } @Override -@@ -860,9 +860,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -861,9 +861,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -675,7 +675,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -894,7 +894,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -895,7 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -684,7 +684,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking // Paper start - optimise chunk ticking this.getRandomBlockPosition(j, 0, k, 15, blockposition); -@@ -930,7 +930,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -931,7 +931,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking @@ -693,7 +693,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); -@@ -966,7 +966,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -967,7 +967,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -702,7 +702,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 } public Optional findLightningRod(BlockPos pos) { -@@ -1262,19 +1262,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1263,19 +1263,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -727,7 +727,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1303,12 +1303,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1304,12 +1304,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -744,7 +744,7 @@ index c94246d19a0d2f2a87f74d6ca4b14a764ccfa948..2833d47fd1e8913d2160cbf48f34e941 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1320,7 +1320,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1321,7 +1321,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -1139,10 +1139,10 @@ index bf55ce8f12650037fab0a2133cc1c047a891b5bb..0981acb2a87bb2535a0b447c4f23e14b } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f4035bfb6a4 100644 +index 0717f59c94f9579e05ed2938e14567be495ad1b0..45f11b6ae25a2f509b788c185dcf9cf33ef2271e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -396,7 +396,7 @@ public abstract class LivingEntity extends Entity { +@@ -397,7 +397,7 @@ public abstract class LivingEntity extends Entity { } super.baseTick(); @@ -1151,7 +1151,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 if (this.fireImmune() || this.level.isClientSide) { this.clearFire(); } -@@ -500,7 +500,7 @@ public abstract class LivingEntity extends Entity { +@@ -501,7 +501,7 @@ public abstract class LivingEntity extends Entity { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1160,7 +1160,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 } public boolean canSpawnSoulSpeedParticle() { -@@ -3090,10 +3090,10 @@ public abstract class LivingEntity extends Entity { +@@ -3105,10 +3105,10 @@ public abstract class LivingEntity extends Entity { } this.run += (f3 - this.run) * 0.3F; @@ -1174,7 +1174,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3105,7 +3105,7 @@ public abstract class LivingEntity extends Entity { +@@ -3120,7 +3120,7 @@ public abstract class LivingEntity extends Entity { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1183,7 +1183,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3398,19 +3398,19 @@ public abstract class LivingEntity extends Entity { +@@ -3413,19 +3413,19 @@ public abstract class LivingEntity extends Entity { } this.setDeltaMovement(d4, d5, d6); @@ -1208,7 +1208,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 if (this.jumping && this.isAffectedByFluids()) { double d7; -@@ -3437,8 +3437,8 @@ public abstract class LivingEntity extends Entity { +@@ -3452,8 +3452,8 @@ public abstract class LivingEntity extends Entity { this.noJumpDelay = 0; } @@ -1219,7 +1219,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3447,8 +3447,8 @@ public abstract class LivingEntity extends Entity { +@@ -3462,8 +3462,8 @@ public abstract class LivingEntity extends Entity { // SpigotTimings.timerEntityAIMove.startTiming(); // Spigot // Paper this.travel(new Vec3((double) this.xxa, (double) this.yya, (double) this.zza)); // SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot // Paper @@ -1230,7 +1230,7 @@ index cd70cf663f0fb2ddcbd637e8260dc994f3be258b..d0c8c39ff78637de14bfdfef78d74f40 boolean flag1 = this.getType().is(EntityTypeTags.FREEZE_HURTS_EXTRA_TYPES); int i; -@@ -3468,15 +3468,15 @@ public abstract class LivingEntity extends Entity { +@@ -3483,15 +3483,15 @@ public abstract class LivingEntity extends Entity { this.hurt(DamageSource.FREEZE, (float) i); } @@ -1638,7 +1638,7 @@ index df55f9a9f684b474a3bff0977069471727b242f4..5dab2eea9e9c50e41c7971daefc3bbe8 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 20668d53625ec88ba3eb2a655ad3f6bc4fb0fd0e..b1a4b83fc248ae2f0a8852e60f9cd4486535390a 100644 +index 36dedae44ae743e1a5bc170c420e0a847bcb3a50..4c98f1dc73bdce5c87f77f27507f1ed1f710243d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -337,7 +337,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/patches/server/0295-Add-skeleton-bow-accuracy-option.patch b/patches/server/0295-Add-skeleton-bow-accuracy-option.patch index 454b90444..a8bbf2a64 100644 --- a/patches/server/0295-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0295-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index e542407894f58fb8c0339a7a6d2e7b2cb5891eb4..0cfe5cb3ce0ac8554bbdb68c66583693 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13c7cdbe4a08b3b452d6e53275ada5c81ae401b5..2cd4b04bf1820b28050f3af492186135b9b69712 100644 +index 38555330148ee325645d23f0bb39901f5f96495a..5461424bb336a0822af97c6b7ad128482196e68a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2397,6 +2397,8 @@ public class PurpurWorldConfig { +@@ -2385,6 +2385,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 13c7cdbe4a08b3b452d6e53275ada5c81ae401b5..2cd4b04bf1820b28050f3af492186135 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2411,6 +2413,18 @@ public class PurpurWorldConfig { +@@ -2399,6 +2401,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0306-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0306-Milk-Keeps-Beneficial-Effects.patch index ef08553e6..6c7e52934 100644 --- a/patches/server/0306-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0306-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 d0c8c39ff78637de14bfdfef78d74f4035bfb6a4..61a162007b1773ca707d88972d0fcda2c98c5614 100644 +index 45f11b6ae25a2f509b788c185dcf9cf33ef2271e..f23829690d2be20af50256e4d985e3e342415d54 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1095,6 +1095,7 @@ public abstract class LivingEntity extends Entity { +@@ -1110,6 +1110,7 @@ public abstract class LivingEntity extends Entity { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -30,7 +30,7 @@ index 558884b68263f4fd89e5b7e6226faa2b268168da..cdbd13212b366d9601d4b100fde43cef this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77460b3c96f1b595bc398afe6507a0104d24b673..33d7c132b19095598eb681da8487a072f1dccab6 100644 +index 85a6092ea0ab280506f04ac0f19d0f05d6d6dfd2..7a187be41ad0024cb9c515fc0bab249051be4b9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -131,6 +131,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0311-Fire-Immunity-API.patch b/patches/server/0311-Fire-Immunity-API.patch index 4ad84d48b..169a5fb25 100644 --- a/patches/server/0311-Fire-Immunity-API.patch +++ b/patches/server/0311-Fire-Immunity-API.patch @@ -50,10 +50,10 @@ index 0981acb2a87bb2535a0b447c4f23e14befcc81d3..a9a915efb5b270b3f13cb7493f59b36d } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 403085673b87291799538f4f3aad2dfe65b35660..10208b3be330e8a02a4b248a3861ba978e64aab4 100644 +index e08cbcb9230889cc86b0726d67038e1cf9914c87..ede4d01f59de68326c65bb1b08ce29ddb6fc94d5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1415,5 +1415,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1421,5 +1421,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { public boolean isRidableInWater() { return getHandle().rideableUnderWater(); } @@ -70,10 +70,10 @@ index 403085673b87291799538f4f3aad2dfe65b35660..10208b3be330e8a02a4b248a3861ba97 // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index f3bf5199bc7ddf8a3d0dc67a184e7690efa659eb..1ef853dafeb62d77936a3561522e10885334c23b 100644 +index 3023cadd21947389158f1bfaf9fe84fd0ea80456..2042d65e9470fca2c35e492d2f8bb4dbf11813cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -170,9 +170,14 @@ public class CraftItem extends CraftEntity implements Item { +@@ -182,9 +182,14 @@ public class CraftItem extends CraftEntity implements Item { return item.immuneToExplosion; }